Get desktop application:
View/edit binary Protocol Buffers messages
RPCs from a client (iOS, Android, or web) to identity service This service will assert authenticity of a device by verifying the access token through an interceptor, thus avoiding the need to explicitly pass the credentials on every request
Replenish one-time preKeys
As OPKs get exhausted, they need to be refreshed
Rotate a device's prekey and prekey signature Rotated for deniability of older messages
Called by clients to get all device keys associated with a user in order to open a new channel of communication on any of their devices. Specially, this will return the following per device: - Identity keys (both Content and Notif Keys) - Prekey (including prekey signature) - One-time Prekey
Map is keyed on devices' public ed25519 key used for signing
Called by receivers of a communication request. The reponse will return identity keys (both content and notif keys) and related prekeys per device, but will not contain one-time keys. Additionally, the response will contain the other user's username.
Map is keyed on devices' public ed25519 key used for signing
Called by clients to get required keys for opening a connection to a user's keyserver
Called by user to update password
Initiate PAKE registration with new password
Initiate PAKE login with old password
Identifier used to correlate start request with finish request
Continue PAKE registration on server with new password
Continue PAKE login on server with old password
Identifier used to correlate start and finish request
Complete PAKE registration with new password
Complete PAKE login with old password
Called by user to log out (clears device's keys and access token)
Called by a ssecondary device to log out (clear its keys and access token)
Called by a primary device to log out (clear all devices' keys and tokens)
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<primary_device_id: string>] "timestamp": <UTC timestamp in milliseconds: int>, }), "curPrimarySignature": "base64-encoded primary device signature" } When the primary device logs out, it removes all secondary devices from the device list, and sends up a new singleton device list consisting of just itself.
Called by a user to delete their own account
First user must log in
Message sent to initiate PAKE login
Identifier used to correlate requests in the same workflow
If login is successful, the user's account will be deleted
Identifier used to correlate requests in the same workflow
Called by Comm staff to delete user accounts. Usage is strictly limited to accounts flagged for violating terms of service.
Called by Comm staff to reset user passwords. Usage is strictly limited to accounts that have requested a password reset.
Initiate PAKE registration with new password
when true, user is reset to unsigned device list without password change
Identifier used to correlate start request with finish request
Continue PAKE registration on server with new password
Identifier used to correlate start and finish request
Complete PAKE registration with new password
Returns device list history
User whose device lists we want to retrieve
UTC timestamp in milliseconds If none, whole device list history will be retrieved
A list of stringified JSON objects of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<device_id: string>, ...] "timestamp": <UTC timestamp in milliseconds: int>, }) }
Returns current device list for a set of users
keys are user_id values are JSON-stringified device list payloads (see GetDeviceListResponse message for payload structure)
keys are user IDs
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<device_id: string>, ...] "timestamp": <UTC timestamp in milliseconds: int>, }) }
Called by an existing user to link their Farcaster account
Called by an existing user to unlink their Farcaster account
user IDs for which we want to get the identity
reserved usernames or wallet addresses
Updates current device PlatformDetails stored on Identity Service. It doesn't require any input - all values are passed via request metadata.
Used in:
Used in:
, ,this is wallet address for Ethereum users
Used in:
Information needed when establishing communication to someone else's device
Used in:
,Information needed by a device to establish communcation when responding to a request. The device receiving a request only needs the content key and prekey.
Used as request type in: IdentityClientService.GetKeyserverKeys, IdentityClientService.GetOutboundKeysForUser
platform details for single device
Used in:
platform details for user's devices
Used in:
keys are device IDs