2021-07-20 20:18:35 +00:00
|
|
|
// Copyright 2014-2021 Signal Messenger, LLC
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2018-02-15 19:59:46 +00:00
|
|
|
// Source: https://github.com/signalapp/libsignal-service-java/blob/4684a49b2ed8f32be619e0d0eea423626b6cb2cb/protobuf/SignalService.proto
|
|
|
|
package signalservice;
|
2014-01-15 07:46:05 +00:00
|
|
|
|
2018-02-15 19:59:46 +00:00
|
|
|
option java_package = "org.whispersystems.signalservice.internal.push";
|
|
|
|
option java_outer_classname = "SignalServiceProtos";
|
2014-01-15 07:46:05 +00:00
|
|
|
|
2015-06-01 21:08:21 +00:00
|
|
|
message Envelope {
|
2014-03-12 19:52:19 +00:00
|
|
|
enum Type {
|
2018-10-18 01:01:21 +00:00
|
|
|
UNKNOWN = 0;
|
|
|
|
CIPHERTEXT = 1;
|
|
|
|
KEY_EXCHANGE = 2;
|
|
|
|
PREKEY_BUNDLE = 3;
|
|
|
|
RECEIPT = 5;
|
|
|
|
UNIDENTIFIED_SENDER = 6;
|
2021-05-28 19:11:19 +00:00
|
|
|
|
|
|
|
// Our parser does not handle reserved in enums: DESKTOP-1569
|
|
|
|
// reserved 7;
|
|
|
|
|
|
|
|
PLAINTEXT_CONTENT = 8;
|
2014-03-12 19:52:19 +00:00
|
|
|
}
|
|
|
|
|
2018-10-18 01:01:21 +00:00
|
|
|
optional Type type = 1;
|
|
|
|
optional string source = 2;
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string sourceUuid = 11;
|
2018-10-18 01:01:21 +00:00
|
|
|
optional uint32 sourceDevice = 7;
|
|
|
|
optional string relay = 3;
|
|
|
|
optional uint64 timestamp = 5;
|
|
|
|
optional bytes legacyMessage = 6; // Contains an encrypted DataMessage
|
|
|
|
optional bytes content = 8; // Contains an encrypted Content
|
|
|
|
optional string serverGuid = 9;
|
|
|
|
optional uint64 serverTimestamp = 10;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
2014-03-12 19:52:19 +00:00
|
|
|
|
2015-06-01 21:08:21 +00:00
|
|
|
message Content {
|
2021-05-14 01:18:43 +00:00
|
|
|
optional DataMessage dataMessage = 1;
|
|
|
|
optional SyncMessage syncMessage = 2;
|
|
|
|
optional CallingMessage callingMessage = 3;
|
|
|
|
optional NullMessage nullMessage = 4;
|
|
|
|
optional ReceiptMessage receiptMessage = 5;
|
|
|
|
optional TypingMessage typingMessage = 6;
|
|
|
|
optional bytes senderKeyDistributionMessage = 7;
|
2021-05-28 19:11:19 +00:00
|
|
|
optional bytes decryptionErrorMessage = 8;
|
Feature: Blue check marks for read messages if opted in (#1489)
* Refactor delivery receipt event handler
* Rename the delivery receipt event
For less ambiguity with read receipts.
* Rename synced read event
For less ambiguity with read receipts from other Signal users.
* Add support for incoming receipt messages
Handle ReceiptMessages, which may include encrypted delivery receipts or read
receipts from recipients of our sent messages.
// FREEBIE
* Rename ReadReceipts to ReadSyncs
* Render read messages with blue double checks
* Send read receipts to senders of incoming messages
// FREEBIE
* Move ReadSyncs to their own file
// FREEBIE
* Fixup old comments on read receipts (now read syncs)
And some variable renaming for extra clarity.
// FREEBIE
* Add global setting for read receipts
Don't send read receipt messages unless the setting is enabled.
Don't process read receipts if the setting is disabled.
// FREEBIE
* Sync read receipt setting from mobile
Toggling this setting on your mobile device should sync it to Desktop. When
linking, use the setting in the provisioning message.
// FREEBIE
* Send receipt messages silently
Avoid generating phantom messages on ios
// FREEBIE
* Save recipients on the outgoing message models
For accurate tracking and display of sent/delivered/read state, even if group
membership changes later.
// FREEBIE
* Fix conversation type in profile key update handling
// FREEBIE
* Set recipients on synced sent messages
* Render saved recipients in message detail if available
For older messages, where we did not save the intended set of recipients at the
time of sending, fall back to the current group membership.
// FREEBIE
* Record who has been successfully sent to
// FREEBIE
* Record who a message has been delivered to
* Invert the not-clickable class
* Fix readReceipt setting sync when linking
* Render per recipient sent/delivered/read status
In the message detail view for outgoing messages, render each recipient's
individual sent/delivered/read status with respect to this message, as long as
there are no errors associated with the recipient (ie, safety number changes,
user not registered, etc...) since the error icon is displayed in that case.
*Messages sent before this change may not have per-recipient status lists
and will simply show no status icon.
// FREEBIE
* Add configuration sync request
Send these requests in a one-off fashion when:
1. We have just setup from a chrome app import
2. We have just upgraded to read-receipt support
// FREEBIE
* Expose sendRequestConfigurationSyncMessage
// FREEBIE
* Fix handling of incoming delivery receipts - union with array
FREEBIE
2017-10-04 22:28:43 +00:00
|
|
|
}
|
|
|
|
|
2020-06-04 18:16:19 +00:00
|
|
|
// Everything in CallingMessage must be kept in sync with RingRTC (ringrtc-node).
|
|
|
|
// Whenever you change this, make sure you change textsecure.d.ts and RingRTC.
|
|
|
|
message CallingMessage {
|
2017-02-22 18:20:54 +00:00
|
|
|
message Offer {
|
2020-06-04 18:16:19 +00:00
|
|
|
enum Type {
|
2020-07-29 16:29:57 +00:00
|
|
|
OFFER_AUDIO_CALL = 0;
|
|
|
|
OFFER_VIDEO_CALL = 1;
|
2020-06-04 18:16:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
optional uint64 callId = 1;
|
2020-07-29 16:29:57 +00:00
|
|
|
// Legacy/deprecated; replaced by 'opaque'
|
2020-06-04 18:16:19 +00:00
|
|
|
optional string sdp = 2;
|
2020-07-29 16:29:57 +00:00
|
|
|
optional Type type = 3;
|
|
|
|
optional bytes opaque = 4;
|
2017-02-22 18:20:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Answer {
|
2020-07-29 16:29:57 +00:00
|
|
|
optional uint64 callId = 1;
|
|
|
|
// Legacy/deprecated; replaced by 'opaque'
|
|
|
|
optional string sdp = 2;
|
|
|
|
optional bytes opaque = 3;
|
2017-02-22 18:20:54 +00:00
|
|
|
}
|
|
|
|
|
2020-06-04 18:16:19 +00:00
|
|
|
message IceCandidate {
|
2020-07-29 16:29:57 +00:00
|
|
|
optional uint64 callId = 1;
|
|
|
|
// Legacy/deprecated; remove when old clients are gone.
|
|
|
|
optional string mid = 2;
|
|
|
|
// Legacy/deprecated; remove when old clients are gone.
|
|
|
|
optional uint32 line = 3;
|
|
|
|
// Legacy/deprecated; replaced by 'opaque'
|
|
|
|
optional string sdp = 4;
|
|
|
|
optional bytes opaque = 5;
|
2017-02-22 18:20:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Busy {
|
2020-06-04 18:16:19 +00:00
|
|
|
optional uint64 callId = 1;
|
2017-02-22 18:20:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Hangup {
|
2020-06-04 18:16:19 +00:00
|
|
|
enum Type {
|
2020-07-07 00:37:43 +00:00
|
|
|
HANGUP_NORMAL = 0;
|
|
|
|
HANGUP_ACCEPTED = 1;
|
|
|
|
HANGUP_DECLINED = 2;
|
|
|
|
HANGUP_BUSY = 3;
|
|
|
|
HANGUP_NEED_PERMISSION = 4;
|
2020-06-04 18:16:19 +00:00
|
|
|
}
|
2017-02-22 18:20:54 +00:00
|
|
|
|
2020-06-04 18:16:19 +00:00
|
|
|
optional uint64 callId = 1;
|
|
|
|
optional Type type = 2;
|
|
|
|
optional uint32 deviceId = 3;
|
|
|
|
}
|
2017-02-22 18:20:54 +00:00
|
|
|
|
2020-11-13 19:57:55 +00:00
|
|
|
message Opaque {
|
2021-08-20 16:06:15 +00:00
|
|
|
enum Urgency {
|
|
|
|
DROPPABLE = 0;
|
|
|
|
HANDLE_IMMEDIATELY = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional bytes data = 1;
|
|
|
|
optional Urgency urgency = 2;
|
2020-11-13 19:57:55 +00:00
|
|
|
}
|
|
|
|
|
2020-06-04 18:16:19 +00:00
|
|
|
optional Offer offer = 1;
|
|
|
|
optional Answer answer = 2;
|
|
|
|
repeated IceCandidate iceCandidates = 3;
|
|
|
|
optional Hangup legacyHangup = 4;
|
|
|
|
optional Busy busy = 5;
|
|
|
|
optional Hangup hangup = 7;
|
|
|
|
optional bool supportsMultiRing = 8;
|
|
|
|
optional uint32 destinationDeviceId = 9;
|
2020-11-13 19:57:55 +00:00
|
|
|
optional Opaque opaque = 10;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
2015-02-13 01:42:07 +00:00
|
|
|
|
2015-06-01 21:08:21 +00:00
|
|
|
message DataMessage {
|
2014-03-12 19:52:19 +00:00
|
|
|
enum Flags {
|
2018-02-15 19:59:46 +00:00
|
|
|
END_SESSION = 1;
|
2016-09-20 21:36:57 +00:00
|
|
|
EXPIRATION_TIMER_UPDATE = 2;
|
2017-09-11 16:50:35 +00:00
|
|
|
PROFILE_KEY_UPDATE = 4;
|
2014-01-15 07:46:05 +00:00
|
|
|
}
|
|
|
|
|
2018-04-06 21:59:26 +00:00
|
|
|
message Quote {
|
|
|
|
message QuotedAttachment {
|
|
|
|
optional string contentType = 1;
|
|
|
|
optional string fileName = 2;
|
|
|
|
optional AttachmentPointer thumbnail = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional uint64 id = 1;
|
2021-04-05 20:39:38 +00:00
|
|
|
reserved /* author */ 2; // removed
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string authorUuid = 5;
|
2018-04-06 21:59:26 +00:00
|
|
|
optional string text = 3;
|
|
|
|
repeated QuotedAttachment attachments = 4;
|
2020-09-16 22:42:48 +00:00
|
|
|
repeated BodyRange bodyRanges = 6;
|
2018-04-06 21:59:26 +00:00
|
|
|
}
|
|
|
|
|
2018-04-27 16:32:31 +00:00
|
|
|
message Contact {
|
|
|
|
message Name {
|
|
|
|
optional string givenName = 1;
|
|
|
|
optional string familyName = 2;
|
|
|
|
optional string prefix = 3;
|
|
|
|
optional string suffix = 4;
|
|
|
|
optional string middleName = 5;
|
|
|
|
optional string displayName = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
message Phone {
|
|
|
|
enum Type {
|
|
|
|
HOME = 1;
|
|
|
|
MOBILE = 2;
|
|
|
|
WORK = 3;
|
|
|
|
CUSTOM = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional string value = 1;
|
|
|
|
optional Type type = 2;
|
|
|
|
optional string label = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message Email {
|
|
|
|
enum Type {
|
|
|
|
HOME = 1;
|
|
|
|
MOBILE = 2;
|
|
|
|
WORK = 3;
|
|
|
|
CUSTOM = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional string value = 1;
|
|
|
|
optional Type type = 2;
|
|
|
|
optional string label = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PostalAddress {
|
|
|
|
enum Type {
|
|
|
|
HOME = 1;
|
|
|
|
WORK = 2;
|
|
|
|
CUSTOM = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional Type type = 1;
|
|
|
|
optional string label = 2;
|
|
|
|
optional string street = 3;
|
|
|
|
optional string pobox = 4;
|
|
|
|
optional string neighborhood = 5;
|
|
|
|
optional string city = 6;
|
|
|
|
optional string region = 7;
|
|
|
|
optional string postcode = 8;
|
|
|
|
optional string country = 9;
|
|
|
|
}
|
|
|
|
|
|
|
|
message Avatar {
|
|
|
|
optional AttachmentPointer avatar = 1;
|
|
|
|
optional bool isProfile = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional Name name = 1;
|
|
|
|
repeated Phone number = 3;
|
|
|
|
repeated Email email = 4;
|
|
|
|
repeated PostalAddress address = 5;
|
|
|
|
optional Avatar avatar = 6;
|
|
|
|
optional string organization = 7;
|
|
|
|
}
|
|
|
|
|
2019-01-16 03:03:56 +00:00
|
|
|
message Preview {
|
|
|
|
optional string url = 1;
|
|
|
|
optional string title = 2;
|
|
|
|
optional AttachmentPointer image = 3;
|
2020-08-29 01:27:45 +00:00
|
|
|
optional string description = 4;
|
|
|
|
optional uint64 date = 5;
|
2019-01-16 03:03:56 +00:00
|
|
|
}
|
|
|
|
|
2019-05-16 22:32:11 +00:00
|
|
|
message Sticker {
|
2020-07-07 00:56:56 +00:00
|
|
|
optional bytes packId = 1;
|
|
|
|
optional bytes packKey = 2;
|
|
|
|
optional uint32 stickerId = 3;
|
|
|
|
optional AttachmentPointer data = 4;
|
2021-10-05 22:10:08 +00:00
|
|
|
optional string emoji = 5;
|
2019-05-16 22:32:11 +00:00
|
|
|
}
|
|
|
|
|
2019-12-16 17:45:57 +00:00
|
|
|
message Reaction {
|
|
|
|
optional string emoji = 1;
|
|
|
|
optional bool remove = 2;
|
2021-03-31 19:48:10 +00:00
|
|
|
reserved /* targetAuthorE164 */ 3; // removed
|
2019-12-16 17:45:57 +00:00
|
|
|
optional string targetAuthorUuid = 4;
|
|
|
|
optional uint64 targetTimestamp = 5;
|
|
|
|
}
|
|
|
|
|
2020-04-29 21:24:12 +00:00
|
|
|
message Delete {
|
|
|
|
optional uint64 targetSentTimestamp = 1;
|
|
|
|
}
|
|
|
|
|
2020-09-16 22:42:48 +00:00
|
|
|
message BodyRange {
|
|
|
|
optional uint32 start = 1;
|
|
|
|
optional uint32 length = 2;
|
|
|
|
|
|
|
|
// oneof associatedValue {
|
|
|
|
optional string mentionUuid = 3;
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
|
2020-11-16 19:58:54 +00:00
|
|
|
message GroupCallUpdate {
|
2020-12-02 01:49:08 +00:00
|
|
|
optional string eraId = 1;
|
2020-11-16 19:58:54 +00:00
|
|
|
}
|
|
|
|
|
2019-06-10 21:40:02 +00:00
|
|
|
enum ProtocolVersion {
|
|
|
|
option allow_alias = true;
|
|
|
|
|
2021-10-27 22:18:25 +00:00
|
|
|
INITIAL = 0;
|
|
|
|
MESSAGE_TIMERS = 1;
|
|
|
|
VIEW_ONCE = 2;
|
|
|
|
VIEW_ONCE_VIDEO = 3;
|
|
|
|
REACTIONS = 4;
|
2020-04-17 22:51:39 +00:00
|
|
|
CDN_SELECTOR_ATTACHMENTS = 5;
|
2021-10-27 22:18:25 +00:00
|
|
|
MENTIONS = 6;
|
|
|
|
PAYMENTS = 7;
|
|
|
|
CURRENT = 7;
|
2019-06-10 21:40:02 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
optional string body = 1;
|
|
|
|
repeated AttachmentPointer attachments = 2;
|
|
|
|
optional GroupContext group = 3;
|
2020-04-14 18:32:11 +00:00
|
|
|
optional GroupContextV2 groupV2 = 15;
|
2019-06-10 21:40:02 +00:00
|
|
|
optional uint32 flags = 4;
|
|
|
|
optional uint32 expireTimer = 5;
|
|
|
|
optional bytes profileKey = 6;
|
|
|
|
optional uint64 timestamp = 7;
|
|
|
|
optional Quote quote = 8;
|
|
|
|
repeated Contact contact = 9;
|
|
|
|
repeated Preview preview = 10;
|
|
|
|
optional Sticker sticker = 11;
|
|
|
|
optional uint32 requiredProtocolVersion = 12;
|
2019-08-05 20:53:15 +00:00
|
|
|
optional bool isViewOnce = 14;
|
2019-12-16 17:45:57 +00:00
|
|
|
optional Reaction reaction = 16;
|
2020-04-29 21:24:12 +00:00
|
|
|
optional Delete delete = 17;
|
2020-09-16 22:42:48 +00:00
|
|
|
repeated BodyRange bodyRanges = 18;
|
2020-11-16 19:58:54 +00:00
|
|
|
optional GroupCallUpdate groupCallUpdate = 19;
|
2018-02-15 19:59:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message NullMessage {
|
|
|
|
optional bytes padding = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ReceiptMessage {
|
|
|
|
enum Type {
|
|
|
|
DELIVERY = 0;
|
|
|
|
READ = 1;
|
2021-06-29 20:11:10 +00:00
|
|
|
VIEWED = 2;
|
2018-02-15 19:59:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
optional Type type = 1;
|
|
|
|
repeated uint64 timestamp = 2;
|
|
|
|
}
|
|
|
|
|
2018-11-14 19:10:32 +00:00
|
|
|
message TypingMessage {
|
|
|
|
enum Action {
|
|
|
|
STARTED = 0;
|
|
|
|
STOPPED = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional uint64 timestamp = 1;
|
|
|
|
optional Action action = 2;
|
|
|
|
optional bytes groupId = 3;
|
|
|
|
}
|
|
|
|
|
2018-02-15 19:59:46 +00:00
|
|
|
message Verified {
|
|
|
|
enum State {
|
|
|
|
DEFAULT = 0;
|
|
|
|
VERIFIED = 1;
|
|
|
|
UNVERIFIED = 2;
|
|
|
|
}
|
|
|
|
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string destination = 1;
|
|
|
|
optional string destinationUuid = 5;
|
|
|
|
optional bytes identityKey = 2;
|
|
|
|
optional State state = 3;
|
|
|
|
optional bytes nullMessage = 4;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message SyncMessage {
|
|
|
|
message Sent {
|
2018-10-18 01:01:21 +00:00
|
|
|
message UnidentifiedDeliveryStatus {
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string destination = 1;
|
|
|
|
optional string destinationUuid = 3;
|
|
|
|
optional bool unidentified = 2;
|
2018-10-18 01:01:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
optional string destination = 1;
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string destinationUuid = 7;
|
2018-10-18 01:01:21 +00:00
|
|
|
optional uint64 timestamp = 2;
|
|
|
|
optional DataMessage message = 3;
|
|
|
|
optional uint64 expirationStartTimestamp = 4;
|
|
|
|
repeated UnidentifiedDeliveryStatus unidentifiedStatus = 5;
|
2019-05-09 15:38:05 +00:00
|
|
|
optional bool isRecipientUpdate = 6 [default = false];
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Contacts {
|
2017-06-19 15:35:19 +00:00
|
|
|
optional AttachmentPointer blob = 1;
|
2018-02-15 19:59:46 +00:00
|
|
|
optional bool complete = 2 [default = false];
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
2015-06-22 21:45:42 +00:00
|
|
|
message Groups {
|
|
|
|
optional AttachmentPointer blob = 1;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
2016-09-07 00:12:45 +00:00
|
|
|
message Blocked {
|
2020-07-07 00:56:56 +00:00
|
|
|
repeated string numbers = 1;
|
|
|
|
repeated string uuids = 3;
|
|
|
|
repeated bytes groupIds = 2;
|
2016-09-07 00:12:45 +00:00
|
|
|
}
|
|
|
|
|
2015-06-19 22:34:41 +00:00
|
|
|
message Request {
|
|
|
|
enum Type {
|
Feature: Blue check marks for read messages if opted in (#1489)
* Refactor delivery receipt event handler
* Rename the delivery receipt event
For less ambiguity with read receipts.
* Rename synced read event
For less ambiguity with read receipts from other Signal users.
* Add support for incoming receipt messages
Handle ReceiptMessages, which may include encrypted delivery receipts or read
receipts from recipients of our sent messages.
// FREEBIE
* Rename ReadReceipts to ReadSyncs
* Render read messages with blue double checks
* Send read receipts to senders of incoming messages
// FREEBIE
* Move ReadSyncs to their own file
// FREEBIE
* Fixup old comments on read receipts (now read syncs)
And some variable renaming for extra clarity.
// FREEBIE
* Add global setting for read receipts
Don't send read receipt messages unless the setting is enabled.
Don't process read receipts if the setting is disabled.
// FREEBIE
* Sync read receipt setting from mobile
Toggling this setting on your mobile device should sync it to Desktop. When
linking, use the setting in the provisioning message.
// FREEBIE
* Send receipt messages silently
Avoid generating phantom messages on ios
// FREEBIE
* Save recipients on the outgoing message models
For accurate tracking and display of sent/delivered/read state, even if group
membership changes later.
// FREEBIE
* Fix conversation type in profile key update handling
// FREEBIE
* Set recipients on synced sent messages
* Render saved recipients in message detail if available
For older messages, where we did not save the intended set of recipients at the
time of sending, fall back to the current group membership.
// FREEBIE
* Record who has been successfully sent to
// FREEBIE
* Record who a message has been delivered to
* Invert the not-clickable class
* Fix readReceipt setting sync when linking
* Render per recipient sent/delivered/read status
In the message detail view for outgoing messages, render each recipient's
individual sent/delivered/read status with respect to this message, as long as
there are no errors associated with the recipient (ie, safety number changes,
user not registered, etc...) since the error icon is displayed in that case.
*Messages sent before this change may not have per-recipient status lists
and will simply show no status icon.
// FREEBIE
* Add configuration sync request
Send these requests in a one-off fashion when:
1. We have just setup from a chrome app import
2. We have just upgraded to read-receipt support
// FREEBIE
* Expose sendRequestConfigurationSyncMessage
// FREEBIE
* Fix handling of incoming delivery receipts - union with array
FREEBIE
2017-10-04 22:28:43 +00:00
|
|
|
UNKNOWN = 0;
|
|
|
|
CONTACTS = 1;
|
|
|
|
GROUPS = 2;
|
|
|
|
BLOCKED = 3;
|
|
|
|
CONFIGURATION = 4;
|
2020-07-07 00:56:56 +00:00
|
|
|
KEYS = 5;
|
2015-06-19 22:34:41 +00:00
|
|
|
}
|
2017-06-08 22:57:25 +00:00
|
|
|
|
2015-06-19 22:34:41 +00:00
|
|
|
optional Type type = 1;
|
|
|
|
}
|
2017-06-08 22:57:25 +00:00
|
|
|
|
2020-07-07 00:56:56 +00:00
|
|
|
message Keys {
|
|
|
|
optional bytes storageService = 1;
|
|
|
|
}
|
|
|
|
|
2016-02-20 00:28:08 +00:00
|
|
|
message Read {
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string sender = 1;
|
|
|
|
optional string senderUuid = 3;
|
|
|
|
optional uint64 timestamp = 2;
|
2016-02-20 00:28:08 +00:00
|
|
|
}
|
2015-06-19 22:34:41 +00:00
|
|
|
|
2021-07-06 18:21:05 +00:00
|
|
|
message Viewed {
|
|
|
|
optional string senderE164 = 1;
|
|
|
|
optional string senderUuid = 3;
|
|
|
|
optional uint64 timestamp = 2;
|
|
|
|
}
|
|
|
|
|
2018-02-15 19:59:46 +00:00
|
|
|
message Configuration {
|
2020-07-07 00:56:56 +00:00
|
|
|
optional bool readReceipts = 1;
|
|
|
|
optional bool unidentifiedDeliveryIndicators = 2;
|
|
|
|
optional bool typingIndicators = 3;
|
2021-05-14 01:18:43 +00:00
|
|
|
reserved 4;
|
2020-07-07 00:56:56 +00:00
|
|
|
optional uint32 provisioningVersion = 5;
|
2020-09-28 23:46:31 +00:00
|
|
|
optional bool linkPreviews = 6;
|
Feature: Blue check marks for read messages if opted in (#1489)
* Refactor delivery receipt event handler
* Rename the delivery receipt event
For less ambiguity with read receipts.
* Rename synced read event
For less ambiguity with read receipts from other Signal users.
* Add support for incoming receipt messages
Handle ReceiptMessages, which may include encrypted delivery receipts or read
receipts from recipients of our sent messages.
// FREEBIE
* Rename ReadReceipts to ReadSyncs
* Render read messages with blue double checks
* Send read receipts to senders of incoming messages
// FREEBIE
* Move ReadSyncs to their own file
// FREEBIE
* Fixup old comments on read receipts (now read syncs)
And some variable renaming for extra clarity.
// FREEBIE
* Add global setting for read receipts
Don't send read receipt messages unless the setting is enabled.
Don't process read receipts if the setting is disabled.
// FREEBIE
* Sync read receipt setting from mobile
Toggling this setting on your mobile device should sync it to Desktop. When
linking, use the setting in the provisioning message.
// FREEBIE
* Send receipt messages silently
Avoid generating phantom messages on ios
// FREEBIE
* Save recipients on the outgoing message models
For accurate tracking and display of sent/delivered/read state, even if group
membership changes later.
// FREEBIE
* Fix conversation type in profile key update handling
// FREEBIE
* Set recipients on synced sent messages
* Render saved recipients in message detail if available
For older messages, where we did not save the intended set of recipients at the
time of sending, fall back to the current group membership.
// FREEBIE
* Record who has been successfully sent to
// FREEBIE
* Record who a message has been delivered to
* Invert the not-clickable class
* Fix readReceipt setting sync when linking
* Render per recipient sent/delivered/read status
In the message detail view for outgoing messages, render each recipient's
individual sent/delivered/read status with respect to this message, as long as
there are no errors associated with the recipient (ie, safety number changes,
user not registered, etc...) since the error icon is displayed in that case.
*Messages sent before this change may not have per-recipient status lists
and will simply show no status icon.
// FREEBIE
* Add configuration sync request
Send these requests in a one-off fashion when:
1. We have just setup from a chrome app import
2. We have just upgraded to read-receipt support
// FREEBIE
* Expose sendRequestConfigurationSyncMessage
// FREEBIE
* Fix handling of incoming delivery receipts - union with array
FREEBIE
2017-10-04 22:28:43 +00:00
|
|
|
}
|
|
|
|
|
2019-05-16 22:32:11 +00:00
|
|
|
message StickerPackOperation {
|
|
|
|
enum Type {
|
|
|
|
INSTALL = 0;
|
|
|
|
REMOVE = 1;
|
|
|
|
}
|
2020-07-07 00:56:56 +00:00
|
|
|
|
2019-05-16 22:32:11 +00:00
|
|
|
optional bytes packId = 1;
|
|
|
|
optional bytes packKey = 2;
|
|
|
|
optional Type type = 3;
|
|
|
|
}
|
|
|
|
|
2019-08-05 20:53:15 +00:00
|
|
|
message ViewOnceOpen {
|
2020-03-05 21:14:58 +00:00
|
|
|
optional string sender = 1;
|
|
|
|
optional string senderUuid = 3;
|
|
|
|
optional uint64 timestamp = 2;
|
2019-06-26 19:33:13 +00:00
|
|
|
}
|
|
|
|
|
2020-05-27 21:37:06 +00:00
|
|
|
message MessageRequestResponse {
|
|
|
|
enum Type {
|
|
|
|
UNKNOWN = 0;
|
|
|
|
ACCEPT = 1;
|
|
|
|
DELETE = 2;
|
|
|
|
BLOCK = 3;
|
|
|
|
BLOCK_AND_DELETE = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional string threadE164 = 1;
|
|
|
|
optional string threadUuid = 2;
|
|
|
|
optional bytes groupId = 3;
|
|
|
|
optional Type type = 4;
|
|
|
|
}
|
|
|
|
|
2020-07-07 00:56:56 +00:00
|
|
|
message FetchLatest {
|
|
|
|
enum Type {
|
|
|
|
UNKNOWN = 0;
|
|
|
|
LOCAL_PROFILE = 1;
|
|
|
|
STORAGE_MANIFEST = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
optional Type type = 1;
|
|
|
|
}
|
|
|
|
|
2020-05-27 21:37:06 +00:00
|
|
|
optional Sent sent = 1;
|
|
|
|
optional Contacts contacts = 2;
|
|
|
|
optional Groups groups = 3;
|
|
|
|
optional Request request = 4;
|
|
|
|
repeated Read read = 5;
|
|
|
|
optional Blocked blocked = 6;
|
|
|
|
optional Verified verified = 7;
|
|
|
|
optional Configuration configuration = 9;
|
|
|
|
optional bytes padding = 8;
|
|
|
|
repeated StickerPackOperation stickerPackOperation = 10;
|
|
|
|
optional ViewOnceOpen viewOnceOpen = 11;
|
2020-07-07 00:56:56 +00:00
|
|
|
optional FetchLatest fetchLatest = 12;
|
|
|
|
optional Keys keys = 13;
|
2020-05-27 21:37:06 +00:00
|
|
|
optional MessageRequestResponse messageRequestResponse = 14;
|
2021-07-06 18:21:05 +00:00
|
|
|
reserved 15; // not yet added
|
|
|
|
repeated Viewed viewed = 16;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message AttachmentPointer {
|
2017-05-10 22:16:19 +00:00
|
|
|
enum Flags {
|
|
|
|
VOICE_MESSAGE = 1;
|
2021-03-29 21:26:20 +00:00
|
|
|
BORDERLESS = 2;
|
2021-06-08 20:15:31 +00:00
|
|
|
// Our parser does not handle reserved in enums: DESKTOP-1569
|
2021-06-23 16:13:47 +00:00
|
|
|
// reserved 4;
|
|
|
|
GIF = 8;
|
2017-05-10 22:16:19 +00:00
|
|
|
}
|
2017-06-08 22:57:25 +00:00
|
|
|
|
2020-04-17 22:51:39 +00:00
|
|
|
oneof attachment_identifier {
|
|
|
|
fixed64 cdnId = 1;
|
|
|
|
string cdnKey = 15;
|
|
|
|
}
|
|
|
|
optional string contentType = 2;
|
|
|
|
optional bytes key = 3;
|
|
|
|
optional uint32 size = 4;
|
|
|
|
optional bytes thumbnail = 5;
|
|
|
|
optional bytes digest = 6;
|
|
|
|
optional string fileName = 7;
|
|
|
|
optional uint32 flags = 8;
|
|
|
|
optional uint32 width = 9;
|
|
|
|
optional uint32 height = 10;
|
|
|
|
optional string caption = 11;
|
|
|
|
optional string blurHash = 12;
|
|
|
|
optional uint64 uploadTimestamp = 13;
|
|
|
|
optional uint32 cdnNumber = 14;
|
|
|
|
// Next ID: 16
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message GroupContext {
|
|
|
|
enum Type {
|
2017-06-08 22:59:36 +00:00
|
|
|
UNKNOWN = 0;
|
|
|
|
UPDATE = 1;
|
|
|
|
DELIVER = 2;
|
|
|
|
QUIT = 3;
|
|
|
|
REQUEST_INFO = 4;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
2020-03-05 21:14:58 +00:00
|
|
|
|
|
|
|
optional bytes id = 1;
|
|
|
|
optional Type type = 2;
|
|
|
|
optional string name = 3;
|
|
|
|
repeated string membersE164 = 4;
|
2020-07-24 20:20:58 +00:00
|
|
|
// field 6 was removed; do not use
|
2020-03-05 21:14:58 +00:00
|
|
|
optional AttachmentPointer avatar = 5;
|
2015-06-01 21:08:21 +00:00
|
|
|
}
|
|
|
|
|
2020-04-14 18:32:11 +00:00
|
|
|
message GroupContextV2 {
|
|
|
|
optional bytes masterKey = 1;
|
|
|
|
optional uint32 revision = 2;
|
|
|
|
optional bytes groupChange = 3;
|
|
|
|
}
|
|
|
|
|
2017-06-09 22:00:54 +00:00
|
|
|
message ContactDetails {
|
2017-06-09 21:58:55 +00:00
|
|
|
message Avatar {
|
|
|
|
optional string contentType = 1;
|
|
|
|
optional uint32 length = 2;
|
|
|
|
}
|
|
|
|
|
2020-03-10 00:43:09 +00:00
|
|
|
optional string number = 1;
|
|
|
|
optional string uuid = 9;
|
|
|
|
optional string name = 2;
|
|
|
|
optional Avatar avatar = 3;
|
|
|
|
optional string color = 4;
|
|
|
|
optional Verified verified = 5;
|
|
|
|
optional bytes profileKey = 6;
|
|
|
|
optional bool blocked = 7;
|
|
|
|
optional uint32 expireTimer = 8;
|
|
|
|
optional uint32 inboxPosition = 10;
|
2015-06-22 21:45:42 +00:00
|
|
|
}
|
|
|
|
|
2017-06-09 22:00:54 +00:00
|
|
|
message GroupDetails {
|
2017-06-09 21:58:55 +00:00
|
|
|
message Avatar {
|
|
|
|
optional string contentType = 1;
|
|
|
|
optional uint32 length = 2;
|
|
|
|
}
|
|
|
|
|
2020-03-05 21:14:58 +00:00
|
|
|
message Member {
|
|
|
|
optional string uuid = 1;
|
|
|
|
optional string e164 = 2;
|
|
|
|
}
|
|
|
|
|
2020-03-10 00:43:09 +00:00
|
|
|
optional bytes id = 1;
|
|
|
|
optional string name = 2;
|
|
|
|
repeated string membersE164 = 3;
|
|
|
|
repeated Member members = 9;
|
|
|
|
optional Avatar avatar = 4;
|
|
|
|
optional bool active = 5 [default = true];
|
|
|
|
optional uint32 expireTimer = 6;
|
|
|
|
optional string color = 7;
|
|
|
|
optional bool blocked = 8;
|
|
|
|
optional uint32 inboxPosition = 10;
|
2015-01-15 20:42:32 +00:00
|
|
|
}
|