API

Notifications and protocols

Your notifications, and an organization's notification protocols.

See Notifications and Caity by phone for how events, channels, quiet hours and protocols work.

Every route below, with its parameters, request and response, errors and samples, is in the API reference.

RouteWhat it does
GET /v1/me/notifications/devicesThe app's push registrations on your phones (deviceId is the phone's install id; rows of the withdrawn product apps too, until they're removed), with appId, platform, and the name, model, osVersion and appVersion the app sent. No push tokens.
PUT /v1/me/notifications/devices/:deviceIdRegisters or refreshes a mobile app's Expo push token on this phone (token, platform, appId, optional name, model, osVersion, appVersion, and opensSealed from an Android build that decrypts end-to-end pushes itself, which then gets them as data-only messages). A mobile app's token ties the registration to its sign-in, so signing the app out removes it, and appId must be that app. People only, not assistants. Only the one app (appId home) registers: a withdrawn product app gets 410.
DELETE /v1/me/notifications/devices/:deviceIdRemoves an app's push registration on this phone (appId, default caity: a withdrawn app may remove its own). Signing the app out removes it too. People only, not assistants.
GET /v1/me/notifications/live-activitiesYour iPhone Live Activity registrations: per phone and app (home; maps and vehicles from the withdrawn apps until they expire), the push-to-start entry (kind: start) and each running flight activity (kind: activity, with orgId, hex, watchId or local), the APNs environment and, on the push-to-start entry, the flight activities the app last reported running (running). No tokens.
PUT /v1/me/notifications/live-activities/start/:installIdRegisters the app's push-to-start token on this iPhone (token in hex, appId home: a withdrawn app gets 410, environment production or development, bundleId, and running: the hexes of the flight activities running in the app, sent again whenever they change), so a flight watch can start a Live Activity at takeoff. From the signed-in iPhone app only; tied to its sign-in.
DELETE /v1/me/notifications/live-activities/start/:installIdRemoves the app's push-to-start token on this phone (appId). Signing the app out removes it too.
PUT /v1/me/notifications/live-activities/:activityIdRegisters a running flight Live Activity's update token (token, appId, environment, bundleId, installId, orgId, hex, and watchId or local: true for one started with Track live). Needs maps:read in the org; from the signed-in iPhone app only.
DELETE /v1/me/notifications/live-activities/:activityIdThe activity ended or was dismissed on the phone: no more updates (installId, appId). stopped=1: the person stopped a flight's in the app, so no fresh one takes its place, as one swiped away gets.
GET /v1/me/notifications/settingsWhat reaches the person where, event by event, with the app each belongs to (the phone groups them by app: Home → Notifications). The same settings as ID → Notifications. textsOff: the event never texts or calls (Maps' events while Admin's "SMS for Maps alerts" is off), so the apps don't offer either.
PUT /v1/me/notifications/settings/prefsQuiet hours, the time zone, important senders and calendar reminders (the events' channels stay as they are); people only, from their own apps. Cleaned as ID cleans them (cleanPrefs).
PUT /v1/me/notifications/settings/eventsSome events' channels (the rest stay as they are); people only, from their own apps.
GET /v1/me/notifications/web-pushWeb push in your browsers: the key browsers subscribe with (publicKey, null where the stage has none) and your subscriptions, one per app per browser (subId, app, label, createdAt, lastUsedAt). No endpoints or keys.
POST /v1/me/notifications/web-pushTurns on web push for one app in this browser (the header's bell): the browser's endpoint and keys (p256dh, auth), the web app, the browser's id (browserId, so a notice shows once per browser) and a label. Endpoints must be a browser push service's. A browser signed in as someone else moves to you. Answers the subId. People only, not assistants; 503 where the stage has no web push key.
DELETE /v1/me/notifications/web-push/:subIdTurns off one of your web push subscriptions (the SHA-256 of its endpoint, base64url). Signing out of the app does it too.
GET /v1/me/notificationsYour notifications, newest first (cursor, limit): title, body, link, read, and whether one waits for an acknowledgement (escalating alerts). app: only that mobile app's notices (home: every app's). People only.
POST /v1/me/notifications/readMarks notifications read (noticeIds, up to 100).
POST /v1/me/notifications/:noticeId/ackAcknowledges a notification: its escalation (later texts or calls) stops. acked: false when it already was.
GET /v1/orgs/:orgId/notify/protocols/templatesReady-made notification protocols (production on-call, meeting guard, invitation chaser, VIP mail, service desk SLA, agent jobs).
GET /v1/orgs/:orgId/notify/protocolsThe organization's notification protocols with their rules and what each is attached to.
POST /v1/orgs/:orgId/notify/protocolsCreates a protocol from { template } or { name, description?, enabled?, rules } (rules: events, optional match on event attributes, steps with minutes and channels, roles, overrideQuietHours, beforeEvent). Owners and admins.
GET /v1/orgs/:orgId/notify/protocols/:protocolIdOne protocol with its attachments.
PUT /v1/orgs/:orgId/notify/protocols/:protocolIdReplaces a protocol's name, description, on/off and rules. Owners and admins.
DELETE /v1/orgs/:orgId/notify/protocols/:protocolIdDeletes a protocol and its attachments. Owners and admins.
POST /v1/orgs/:orgId/notify/protocols/:protocolId/attachmentsAttaches the protocol to { type, id, label? }: the whole organization (org) or a Serverless App Service, Issues space, calendar, mailbox or agent. Events about it then follow the protocol. Owners and admins.
DELETE /v1/orgs/:orgId/notify/protocols/:protocolId/attachments/:resourceType/:targetIdDetaches the protocol from that resource. Owners and admins.