API reference

Sharing

Share a resource with people, groups, circles or a link, change and pause what each sees, accept offers, and see what is shared with you.
GET/v1/sharing/resources/:rn

What you hold on a resource and where it comes from (you). If you may share it, also who has access (each grant with its rev, preset, limits and whether the owner organization's policy blocks it), its links, invitations to addresses with no account, and the owner organization's policy. No access, or no such resource, is 404.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/sharing/resources/{rn}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  resource: string
  type: string
  app: string
  label: string
  owner: {
    spaceId: string
    kind: "org" | "personal"
    name: null | string
    you: boolean
  }
  you: {
    capabilities: string[]
    via: {
      kind: "role" | "owner" | "container"
      detail?: string
      capabilities: string[]
    } | {
      kind: "link" | "grant"
      resource: string
      inherited: boolean
      principal: string
      source: string
      preset?: string
      capabilities: string[]
      params?: {
        [key: string]: boolean | string | number
      }
      notBefore?: number
      expiresAt?: number
      schedule?: {
        tz: string
        windows: {
          days?: object
          from: string
          to: string
          dates?: object
        }[]
      }
      approval?: string[]
      assistants?: boolean
      paused?: true
    }[]
    canShare: boolean
  }
  grants: null | {
    resource: string
    principal: string
    kind: "user" | "key" | "org" | "link" | "group" | "circle"
    name: null | string
    email: null | string
    deleted: boolean
    source: string
    status: "active" | "pending"
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    includeGuests: boolean
    external: boolean
    blocked: null | string
    acceptBy: null | number
    pausedUntil: null | number
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
    updatedAt: string
    rev: number
  }[]
  links: null | {
    linkId: string
    resource: string
    audience: "org" | "anyone" | "signed_in"
    capabilities: string[]
    preset: null | string
    expiresAt: null | number
    passwordProtected: boolean
    blocked: null | string
    createdBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  invitations: null | {
    invitationId: string
    principal: string
    email: string
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    offerEnds: number
    invitedBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  policy: null | {
    externalSharing: "off" | "accounts" | "links"
    allowedDomains: string[]
    linkMaxDays: null | number
  }
}
POST/v1/sharing/resources/:rn/grants

Shares a resource with a person (by user id or email address), group, circle, organization or key: a preset or a list of capabilities, and optionally notBefore, expiresAt, a weekly schedule, params, assistants, approval and a message. You can give no more than you hold. 201 with { kind: "grant" } (pending when the person must accept) or, for an address with no account, { kind: "invitation" }, which becomes a pending grant when they sign up. 403 external_sharing_off when the owner organization's policy refuses it, 403 capability_not_held_to_grant for more than you hold, 429 past the daily limit.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

Request body

  • principalobject | objectrequired
  • presetstring

    Up to 32 characters.

  • capabilitiesstring[]

    1–32 items. Each up to 32 characters.

  • notBeforeinteger

    > 0.

  • expiresAtinteger

    > 0.

  • scheduleobject
  • schedule.tzstringrequired

    1–64 characters.

  • schedule.windows(object | object)[]required

    1–8 items.

  • paramsobject

    Keys up to 32 characters. Values: string (up to 64 characters), number or boolean.

  • assistantsboolean
  • approvalstring[]

    Up to 32 items. Each up to 32 characters.

  • includeGuestsboolean
  • messagestring

    Up to 500 characters.

  • notifyboolean

Also checked: Unknown fields are rejected.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/sharing/resources/{rn}/grants' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "principal": {}
  }'
Send it from this page with your session or a key.

Response 201

{
  kind: "grant"
  grant: {
    resource: string
    principal: string
    kind: "user" | "key" | "org" | "link" | "group" | "circle"
    name: null | string
    email: null | string
    deleted: boolean
    source: string
    status: "active" | "pending"
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    includeGuests: boolean
    external: boolean
    blocked: null | string
    acceptBy: null | number
    pausedUntil: null | number
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
    updatedAt: string
    rev: number
  }
} | {
  kind: "invitation"
  invitation: {
    invitationId: string
    principal: string
    email: string
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    offerEnds: number
    invitedBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }
}
PATCH/v1/sharing/resources/:rn/grants/:principal

Changes a grant made directly: send the rev you read and the fields to change (null clears notBefore, expiresAt, schedule, params and approval; naming preset replaces the capabilities and settings). The result is held to the same rules as a new grant. 409 stale (with the grant as it is now) when someone changed it first. ?source= picks one when a principal holds several.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

  • principal

    Who a grant is to, URL-encoded: user:usr_…, group:team_…, circle:cir_…, org:org_… or key:key_…. An invitation to an address with no account is named by its invitationId, never its address.

Query parameters

  • sourcestring

    Up to 80 characters.

Request body

  • revintegerrequired

    ≥ 1.

  • presetstring

    Up to 32 characters.

  • capabilitiesstring[]

    1–32 items. Each up to 32 characters.

  • notBeforeintegeror null

    > 0.

  • expiresAtintegeror null

    > 0.

  • scheduleobjector null
  • schedule.tzstringrequired

    1–64 characters.

  • schedule.windows(object | object)[]required

    1–8 items.

  • paramsobjector null

    Keys up to 32 characters. Values: string (up to 64 characters), number or boolean.

  • assistantsboolean
  • approvalstring[]or null

    Up to 32 items. Each up to 32 characters.

  • includeGuestsboolean
  • notifyboolean

Also checked: Unknown fields are rejected.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X PATCH 'https://api.cactive.com.au/v1/sharing/resources/{rn}/grants/{principal}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "rev": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  resource: string
  principal: string
  kind: "user" | "key" | "org" | "link" | "group" | "circle"
  name: null | string
  email: null | string
  deleted: boolean
  source: string
  status: "active" | "pending"
  capabilities: string[]
  preset: null | string
  notBefore: null | number
  expiresAt: null | number
  schedule: null | {
    tz: string
    windows: {
      days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
      from: string
      to: string
      dates?: string[]
    }[]
  }
  params: null | {
    [key: string]: boolean | string | number
  }
  assistants: boolean
  approval: string[]
  includeGuests: boolean
  external: boolean
  blocked: null | string
  acceptBy: null | number
  pausedUntil: null | number
  grantedBy: {
    id: string
    name: null | string
  }
  createdAt: string
  updatedAt: string
  rev: number
}
DELETE/v1/sharing/resources/:rn/grants/:principal

Ends a grant, or withdraws an invitation, for those who may share the resource, and for the grantee leaving. ?source= picks one when a principal holds several; ?rev= makes it conditional (409 stale). The person is told unless ?notify=false. 204.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

  • principal

    Who a grant is to, URL-encoded: user:usr_…, group:team_…, circle:cir_…, org:org_… or key:key_…. An invitation to an address with no account is named by its invitationId, never its address.

Query parameters

  • sourcestring

    Up to 80 characters.

  • revinteger

    ≥ 1. Coerced from a string.

  • notify"true" | "false"

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X DELETE 'https://api.cactive.com.au/v1/sharing/resources/{rn}/grants/{principal}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

PUT/v1/sharing/resources/:rn/grants/:principal/pause

Pauses a grant made directly: { until } (epoch seconds in the future, or forever until it is resumed), with an optional rev. Paused, it gives only what stays on outside a schedule (a car's name and status, not where it is or whether it moves; a person's location gives nothing), and the grantee gets no notice; their requests answer 403 paused. For whoever may change the grant. Audited as share.pause.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

  • principal

    Who a grant is to, URL-encoded: user:usr_…, group:team_…, circle:cir_…, org:org_… or key:key_…. An invitation to an address with no account is named by its invitationId, never its address.

Request body

  • untilinteger | "forever"required

    > 0, ≤ 253402300799.

  • revinteger

    ≥ 1.

Also checked: Unknown fields are rejected.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X PUT 'https://api.cactive.com.au/v1/sharing/resources/{rn}/grants/{principal}/pause' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "until": 1
  }'
Send it from this page with your session or a key.

Response 200

{
  resource: string
  principal: string
  kind: "user" | "key" | "org" | "link" | "group" | "circle"
  name: null | string
  email: null | string
  deleted: boolean
  source: string
  status: "active" | "pending"
  capabilities: string[]
  preset: null | string
  notBefore: null | number
  expiresAt: null | number
  schedule: null | {
    tz: string
    windows: {
      days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
      from: string
      to: string
      dates?: string[]
    }[]
  }
  params: null | {
    [key: string]: boolean | string | number
  }
  assistants: boolean
  approval: string[]
  includeGuests: boolean
  external: boolean
  blocked: null | string
  acceptBy: null | number
  pausedUntil: null | number
  grantedBy: {
    id: string
    name: null | string
  }
  createdAt: string
  updatedAt: string
  rev: number
}
DELETE/v1/sharing/resources/:rn/grants/:principal/pause

Resumes a paused grant at once. Audited as share.resume.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

  • principal

    Who a grant is to, URL-encoded: user:usr_…, group:team_…, circle:cir_…, org:org_… or key:key_…. An invitation to an address with no account is named by its invitationId, never its address.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X DELETE 'https://api.cactive.com.au/v1/sharing/resources/{rn}/grants/{principal}/pause' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  resource: string
  principal: string
  kind: "user" | "key" | "org" | "link" | "group" | "circle"
  name: null | string
  email: null | string
  deleted: boolean
  source: string
  status: "active" | "pending"
  capabilities: string[]
  preset: null | string
  notBefore: null | number
  expiresAt: null | number
  schedule: null | {
    tz: string
    windows: {
      days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
      from: string
      to: string
      dates?: string[]
    }[]
  }
  params: null | {
    [key: string]: boolean | string | number
  }
  assistants: boolean
  approval: string[]
  includeGuests: boolean
  external: boolean
  blocked: null | string
  acceptBy: null | number
  pausedUntil: null | number
  grantedBy: {
    id: string
    name: null | string
  }
  createdAt: string
  updatedAt: string
  rev: number
}
DELETE/v1/sharing/resources/:rn/invitations/:invitationId

Withdraws an invitation to an address with no account, by its id (the address never goes in a URL), for its maker, the owner and role holders. 204.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

  • invitationId

    An invitation's id (gin_…), as GET /v1/sharing/resources/:rn lists it: a share waiting for an address with no account.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X DELETE 'https://api.cactive.com.au/v1/sharing/resources/{rn}/invitations/{invitationId}' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

POST/v1/sharing/resources/:rn/links

Makes a link to a resource: an audience (anyone, signed_in, or org for the owner organization's members), a preset or capabilities the type lets a link carry, an expiresAt within the longest the type allows, and an optional password. 201 with the link and its url, which is shown once and cannot be read again.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

Request body

  • audience"anyone" | "signed_in" | "org"required
  • presetstring

    Up to 32 characters.

  • capabilitiesstring[]

    1–32 items. Each up to 32 characters.

  • expiresAtinteger

    > 0.

  • passwordstring

    Up to 128 characters.

Also checked: Unknown fields are rejected.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/sharing/resources/{rn}/links' \
  -H "Authorization: Bearer $CACTIVE_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "audience": "anyone"
  }'
Send it from this page with your session or a key.

Response 201

{
  link: {
    linkId: string
    resource: string
    audience: "org" | "anyone" | "signed_in"
    capabilities: string[]
    preset: null | string
    expiresAt: null | number
    passwordProtected: boolean
    blocked: null | string
    createdBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }
  url: string
}
GET/v1/sharing/resources/:rn/check

Whether a person (principal=user:usr_…) holds a capability on the resource and where it comes from, for those who may share it and for holders of tenant:read in the owner organization. Nothing is audited: it is a question, not a use.

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

Path parameters

  • rn

    A resource's name, <app>:<type>:<id> (vehicles:vehicle:veh_…), URL-encoded (vehicles%3Avehicle%3Aveh_…). The owner's space is read from the stored resource, never from the name.

Query parameters

  • principalstringrequired

    1–140 characters.

  • capabilitystringrequired

    1–32 characters.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/sharing/resources/{rn}/check?principal=example&capability=example' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  allowed: boolean
  status: number
  code: null | string
  reason: null | string
  capabilities: string[]
  via: {
    kind: "role" | "owner" | "container"
    detail?: string
    capabilities: string[]
  } | {
    kind: "link" | "grant"
    resource: string
    inherited: boolean
    principal: string
    source: string
    preset?: string
    capabilities: string[]
    params?: {
      [key: string]: boolean | string | number
    }
    notBefore?: number
    expiresAt?: number
    schedule?: {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    approval?: string[]
    assistants?: boolean
    paused?: true
  }[]
}
GET/v1/me/shared

What is shared with you, your groups and your circles, newest first within a page (app, type, cursor, limit). Pages follow your principals one after another, so one can be short: carry on while cursor is set. The first page also turns invitations to your address into pending offers.

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

Query parameters

  • appstring

    Up to 32 characters.

  • typestring

    Up to 32 characters.

  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    1–100. Coerced from a string.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/shared' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  items: {
    resource: string
    type: string
    app: string
    label: string
    owner: {
      spaceId: string
      kind: "org" | "personal"
      name: null | string
      you: boolean
    }
    via: {
      principal: string
      source: string
    }
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  cursor: null | string
}
GET/v1/me/shared/pending

Offers waiting for you to accept (people outside your circles and organization share by offer), with what the owner can see of your use to read first (disclosure). They give nothing until accepted and lapse after 30 days.

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

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/shared/pending' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  items: {
    key: string
    resource: string
    type: string
    app: string
    label: string
    owner: {
      spaceId: string
      kind: "org" | "personal"
      name: null | string
      you: boolean
    }
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    approval: string[]
    acceptBy: number
    grantedBy: {
      id: string
      name: null | string
    }
    disclosure: null | string
    createdAt: string
    rev: number
  }[]
}
POST/v1/me/shared/:grantKey/accept

Accepts an offer: it becomes access, ending when the sharer said. 410 offer_lapsed once its 30 days ran out. Recorded in your log and the owner's.

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

Path parameters

  • grantKey

    An offer's key, as GET /v1/me/shared/pending gives it (opaque).

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/me/shared/{grantKey}/accept' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  resource: string
  type: string
  app: string
  label: string
  owner: {
    spaceId: string
    kind: "org" | "personal"
    name: null | string
    you: boolean
  }
  via: {
    principal: string
    source: string
  }
  capabilities: string[]
  preset: null | string
  notBefore: null | number
  expiresAt: null | number
  schedule: null | {
    tz: string
    windows: {
      days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
      from: string
      to: string
      dates?: string[]
    }[]
  }
  params: null | {
    [key: string]: boolean | string | number
  }
  grantedBy: {
    id: string
    name: null | string
  }
  createdAt: string
}
POST/v1/me/shared/:grantKey/decline

Declines an offer; the sharer is told. 204.

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

Path parameters

  • grantKey

    An offer's key, as GET /v1/me/shared/pending gives it (opaque).

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/me/shared/{grantKey}/decline' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/me/sharing/out

What you share from your Personal space: the grants (newest first, paged by cursor) and, on the first page, your links.

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

Query parameters

  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    1–100. Coerced from a string.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/sharing/out' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  grants: {
    resource: string
    principal: string
    kind: "user" | "key" | "org" | "link" | "group" | "circle"
    name: null | string
    email: null | string
    deleted: boolean
    source: string
    status: "active" | "pending"
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    includeGuests: boolean
    external: boolean
    blocked: null | string
    acceptBy: null | number
    pausedUntil: null | number
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
    updatedAt: string
    rev: number
  }[]
  links: {
    linkId: string
    resource: string
    audience: "org" | "anyone" | "signed_in"
    capabilities: string[]
    preset: null | string
    expiresAt: null | number
    passwordProtected: boolean
    blocked: null | string
    createdBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  cursor: null | string
}
GET/v1/me/shared

What is shared with you, your groups and your circles, newest first within a page (app, type, cursor, limit). Pages follow your principals one after another, so one can be short: carry on while cursor is set. The first page also turns invitations to your address into pending offers.

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

Query parameters

  • appstring

    Up to 32 characters.

  • typestring

    Up to 32 characters.

  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    1–100. Coerced from a string.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/shared' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  items: {
    resource: string
    type: string
    app: string
    label: string
    owner: {
      spaceId: string
      kind: "org" | "personal"
      name: null | string
      you: boolean
    }
    via: {
      principal: string
      source: string
    }
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  cursor: null | string
}
GET/v1/me/shared/pending

Offers waiting for you to accept (people outside your circles and organization share by offer), with what the owner can see of your use to read first (disclosure). They give nothing until accepted and lapse after 30 days.

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

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/shared/pending' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  items: {
    key: string
    resource: string
    type: string
    app: string
    label: string
    owner: {
      spaceId: string
      kind: "org" | "personal"
      name: null | string
      you: boolean
    }
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    approval: string[]
    acceptBy: number
    grantedBy: {
      id: string
      name: null | string
    }
    disclosure: null | string
    createdAt: string
    rev: number
  }[]
}
POST/v1/me/shared/:grantKey/accept

Accepts an offer: it becomes access, ending when the sharer said. 410 offer_lapsed once its 30 days ran out. Recorded in your log and the owner's.

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

Path parameters

  • grantKey

    An offer's key, as GET /v1/me/shared/pending gives it (opaque).

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/me/shared/{grantKey}/accept' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  resource: string
  type: string
  app: string
  label: string
  owner: {
    spaceId: string
    kind: "org" | "personal"
    name: null | string
    you: boolean
  }
  via: {
    principal: string
    source: string
  }
  capabilities: string[]
  preset: null | string
  notBefore: null | number
  expiresAt: null | number
  schedule: null | {
    tz: string
    windows: {
      days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
      from: string
      to: string
      dates?: string[]
    }[]
  }
  params: null | {
    [key: string]: boolean | string | number
  }
  grantedBy: {
    id: string
    name: null | string
  }
  createdAt: string
}
POST/v1/me/shared/:grantKey/decline

Declines an offer; the sharer is told. 204.

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

Path parameters

  • grantKey

    An offer's key, as GET /v1/me/shared/pending gives it (opaque).

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:write
curl -X POST 'https://api.cactive.com.au/v1/me/shared/{grantKey}/decline' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 204 with no body

GET/v1/me/sharing/out

What you share from your Personal space: the grants (newest first, paged by cursor) and, on the first page, your links.

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

Query parameters

  • cursorstring

    Up to 2,000 characters.

  • limitinteger

    1–100. Coerced from a string.

Errors

  • 403Sharing isn't available to the phone assistant.
  • 403Sharing is changed by you, not by the assistant.
  • 403Name the chat's space in x-si-org: an organisation or personal.
  • 403You aren't a member of that organisation.
  • 403Sharing needs a signed-in person or an organisation's key.
  • 403Missing scope sharing:read
curl 'https://api.cactive.com.au/v1/me/sharing/out' \
  -H "Authorization: Bearer $CACTIVE_TOKEN"
Send it from this page with your session or a key.

Response 200

{
  grants: {
    resource: string
    principal: string
    kind: "user" | "key" | "org" | "link" | "group" | "circle"
    name: null | string
    email: null | string
    deleted: boolean
    source: string
    status: "active" | "pending"
    capabilities: string[]
    preset: null | string
    notBefore: null | number
    expiresAt: null | number
    schedule: null | {
      tz: string
      windows: {
        days?: ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")[]
        from: string
        to: string
        dates?: string[]
      }[]
    }
    params: null | {
      [key: string]: boolean | string | number
    }
    assistants: boolean
    approval: string[]
    includeGuests: boolean
    external: boolean
    blocked: null | string
    acceptBy: null | number
    pausedUntil: null | number
    grantedBy: {
      id: string
      name: null | string
    }
    createdAt: string
    updatedAt: string
    rev: number
  }[]
  links: {
    linkId: string
    resource: string
    audience: "org" | "anyone" | "signed_in"
    capabilities: string[]
    preset: null | string
    expiresAt: null | number
    passwordProtected: boolean
    blocked: null | string
    createdBy: {
      id: string
      name: null | string
    }
    createdAt: string
  }[]
  cursor: null | string
}