Get desktop application:
View/edit binary Protocol Buffers messages
Used in:
Who can modify the group title, avatar, disappearing messages timer
Who can add people to the group
Used in:
, , , , ,Any group member can make the modification
Only administrators can make the modification
Used in:
Whether the user has opened and played back the
Whether the user has seen the group story education
sheet. This is a sticky value.
Format: `nickname.discriminator`, e.g. `signalapp.123`
Updated only when username is confirmed or deleted on server.
Whether the user has completed username
onboarding.
Set to true after backups are enabled and one is uploaded.
See zkgroup for integer particular values. Unset if backups are not enabled.
See zkgroup for integer particular values. Unset if backups are not enabled.
Used in:
Identifies an Android Play Store IAP subscription.
Identifies an iOS App Store IAP subscription.
Used in:
Used in:
Used in:
Used in:
32 bytes of entropy used for encryption
16 bytes of encoded UUID provided by the server
color of the QR code itself
Used in:
Used in:
, , , ,Used in:
, , , , , , ,Cross-client identifier for this attachment among all attachments on the owning message.
Next ID: 21
Our parser does not handle reserved in enums: DESKTOP-1569
reserved 4;
If unset - computed as the value of the first byte of SHA-256(msg=CONTACT_ID) modulo the count of colors. Once set the avatar color for a recipient is never recomputed or changed. `CONTACT_ID` is the first available identifier from the list: - ServiceIdToBinary(ACI) - E164 - ServiceIdToBinary(PNI) - Group Id
Used in:
, ,Used in:
, ,Starting index in UTF-16 code units/raw string representation
Length of range in UTF-16 code units/raw string representation
Used in:
Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed by its 16-byte UAK.
Each E164 is an 8-byte big-endian number, as 8 bytes.
If true, the client has more pairs or e164s to send. If false or unset, this is the client's last request, and processing should commence.
If set, a token which allows rate limiting to discount the e164s in the request's prev_e164s, only counting new_e164s. If not set, then rate limiting considers both prev_e164s' and new_e164s' size.
After receiving a new token from the server, send back a message just containing a token_ack.
Request that, if the server allows, both ACI and PNI be returned even if the aci_uak_pairs don't match.
Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI. If the e164 was not found, PNI and ACI are all zeros. If the PNI was found but the ACI was not, the PNI will be non-zero and the ACI will be all zeros. ACI will be returned if one of the returned PNIs has an ACI/UAK pair that matches. Should the request be successful (IE: a successful status returned), |e164_pni_aci_triple| will always equal |e164| of the request, so the entire marshalled size of the response will be (2+32)*|e164|, where the additional 2 bytes are the id/type/length additions of the protobuf marshaling added to each byte array. This avoids any data leakage based on the size of the encrypted output.
A token which allows subsequent calls' rate limiting to discount the e164s sent up in this request, only counting those in the next request's new_e164s.
Used in:
16 bytes
Non-empty when the current user is an admin
When present and non-zero, `adminPasskey`
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
If missing, treat as DROPPABLE.
Used in:
Used in:
Position order of folder, low-to-high from start-to-end
Folder includes all 1:1 chats, unless excluded
Folder includes all group chats, unless excluded
When non-zero, `position` should be set to -1 and `includedRecipients` should be empty
Represents the default "All chats" folder record vs all other custom folders
Used in:
Used in:
Used in:
Used in:
Used in:
Next ID: 25
Used in:
Used in:
Used in:
, , , , ,Used in:
, ,NEXT ID: 24
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
1,000,000,000,000 picoMob per Mob
Used in:
Optional, Refers to the PaymentRequest message, if any.
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
set to the public ratchet key from the SignalMessage if a 1-1 payload fails to decrypt
Used in:
,Contains an encrypted Content
indicates that the message should not be persisted if the recipient is offline
indicates that the content is considered timely by the sender; defaults to true so senders have to opt-out to say something isn't time critical
for number-change synchronization messages, provides the new server-assigned phone number identifier associated with the changed number
indicates that the content is a story.
token sent when reporting spam
Our parser does not handle reserved in enums: DESKTOP-1569
Used in:
content => (version byte | SignalMessage{Content})
reserved 2; reserved "KEY_EXCHANGE";
content => (version byte | PreKeySignalMessage{Content})
legacyMessage => [] AND content => []
legacyMessage => [] AND content => ((version byte | UnidentifiedSenderMessage) OR (version byte | Multi-Recipient Sealed Sender Format))
legacyMessage => [] AND content => (version byte | SenderKeyMessage)
legacyMessage => [] AND content => (marker byte | Content)
Used in:
,GroupPublicParams
Encrypted title
Pointer to encrypted avatar (‘key’ from AvatarUploadAttributes)
Encrypted timer
Current group version number
next: 14
Used in:
,The serialized actions
Server’s signature over serialized actions
Allows clients to decide whether their change logic can successfully apply this diff
Who made the change
The change version number
clients should not provide this value; the server will provide it in the response buffer to ensure the signature is binding to a particular group if clients set it during a request the server will respond with 400.
Members added
Members deleted
Modified member roles
Modified member profile keys
Pending members added
Pending members deleted
Pending invitations accepted
Changed title
Changed avatar
Changed timer
Changed attributes access control
Changed membership access control
change epoch = 1
change epoch = 1
change epoch = 1
change epoch = 1
change epoch = 1
change epoch = 2
change epoch = 3
change epoch = 4
change epoch = 4
change epoch = 5
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
,Used in:
Used in:
Used in:
Used in:
Used in:
Next ID: 5
Used in:
Used in:
Used in:
, ,The UuidCiphertext
The ProfileKeyCiphertext
ProfileKeyCredentialPresentation
The Group.version this member joined at
Used in:
, ,Normal member
Group admin
Used in:
,ms since epoch
Used in:
,Used in:
,The “invited” member
The UID who invited this member
The time the invitation occurred
Used in:
Used in:
Used in:
Signature *by* the PNI identity key *of* the ACI identity key
Used in:
,Encrypted ProvisionMessage
32 bytes
32-bytes
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
16 bytes
32 bytes, used to derive the AES-256 key
aesKey = HKDF( input = packKey, salt = 32 zero bytes, info = "Sticker Pack" )
When displayed sticker packs should be first sorted
in descending order by zero-based `position` and then by ascending `packId` (lexicographically, packId can be treated as a hex string). When installing a sticker pack the client should find the maximum `position` among currently known stickers and use `max_position + 1` as the value for the new `position`.
Timestamp in milliseconds. When present and
Used in:
,Used in:
Used in:
Used in:
,Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Data identifying a conversation. The service ID for 1:1, the group ID for group, or the room ID for an ad-hoc call. See also `CallLogEvent/peerId`.
An identifier for a call. Generated directly for 1:1, or derived from the era ID for group and ad-hoc calls. See also `CallLogEvent/callId`.
Used in:
Used in:
Used in:
Used in:
defaults to UPDATE
Used in:
Used in:
Data identifying a conversation. The service ID for 1:1, the group ID for group, or the room ID for an ad-hoc call. See also `CallEvent/peerId`.
An identifier for a call. Generated directly for 1:1, or derived from the era ID for group and ad-hoc calls. See also `CallEvent/callId`.
Used in:
Used in:
Used in:
Used in:
Used in:
The `clientUuid` from `AttachmentPointer`.
SHA256 hash of the (encrypted, padded, etc.) attachment blob on the CDN.
SHA256 hash of the plaintext content of the attachment.
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
deprecated: this field will be removed in a future release.
Used in:
Used in:
Used in:
Serialized libsignal-client IdentityKeyPair
Serialized libsignal-client SignedPreKeyRecord
Serialized libsignal-client KyberPreKeyRecord
The e164 we have changed our number to
Used in:
Used in:
Used in:
Used in:
Used in:
Used in:
Only set for PNI destinations
Used in:
Used in:
Used in:
Used in:
Used in:
integer representation of hex color
Used in:
deprecated: this field will be removed in a future release.
deprecated: this field will be removed in a future release.
degrees
percent from 0 to 1
Used in:
Used in:
Used in:
Used in:
Show an error immediately; it was important but we can't retry.
Sender will try to resend; delay any error UI if possible
Don't show any error UI at all; this is something sent implicitly like a typing message or a receipt
Used in:
Further cases should line up with Envelope.Type, even though old cases don't.
Used in:
Used in:
Used in:
Used in:
Used in: