Register (or refresh) a push device token for the authenticated user.
Upserts a per-user APNs or web-push device token. The write is scoped to the authenticated user; a credential with no user identity is rejected. Re-registering a live token bumps last-seen and refreshes its mutable fields.
AuthorizationBearer <rsk_live_*>Rensei API key presented as Authorization: Bearer rsk_live_. Required API-key scopes are recorded per operation in x-rensei-required-scopes.
application/json- body
platform*string"apns""webpush"token*string1 <= lengthenvironment?string"production""sandbox"bundleId?string1 <= lengthdeviceLabel?string1 <= length <= 200webPushP256dh?string1 <= lengthwebPushAuth?string1 <= lengthDevice token registered.
application/json- response
id*stringcurl -X POST 'https://app.rensei.ai/api/notifications/devices' \ -H 'Content-Type: application/json' \ -d '{ "platform": "apns", "token": "string"}'{ "id": "string"}Register or rotate an ActivityKit token under a current device binding.
Human identity and organization membership are derived from authentication. The binding must belong to the authenticated human; a binding owned by anyone else is indistinguishable from a missing one. Binding revision and proof must remain current through the token write. Persist the operation identifier and expected token revision before sending; only an identical current operation replays. Use expectedRevision zero for an empty slot or new binding epoch. Push-to-start and activity tokens are distinct; activityId is null only for push-to-start. The receipt never echoes the token and grants no session access; it does not start or follow a session.
Revoke a push device token owned by the authenticated user.
Soft-revokes a device token by `id` or `token`. The revoke is bounded by the caller user id, so a foreign token is a silent no-op.