twonly-app/lib/src/model/protobuf/client/messages.proto
otsmr e7301020f6
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
fix: group auto rentry when it was deleted
2026-06-16 15:04:51 +02:00

220 lines
No EOL
6.2 KiB
Protocol Buffer

syntax = "proto3";
message Message {
enum Type {
SENDER_DELIVERY_RECEIPT = 0;
PLAINTEXT_CONTENT = 1;
CIPHERTEXT = 2;
PREKEY_BUNDLE = 3;
TEST_NOTIFICATION = 4;
}
Type type = 1;
string receipt_id = 2;
optional bytes encrypted_content = 3;
optional PlaintextContent plaintext_content = 4;
}
message PlaintextContent {
optional DecryptionErrorMessage decryption_error_message = 1;
optional RetryErrorMessage retry_control_error = 2;
message RetryErrorMessage { }
message DecryptionErrorMessage {
enum Type {
UNKNOWN = 0;
PREKEY_UNKNOWN = 1;
}
Type type = 1;
}
}
message EncryptedContent {
optional string group_id = 2;
optional bool is_direct_chat = 3;
/// This can be added, so the receiver can check weather he is up to date with the current profile
optional int64 sender_profile_counter = 4;
optional bytes sender_user_discovery_version = 21;
optional bool ask_for_friend_promotions = 25;
optional MessageUpdate message_update = 5;
optional Media media = 6;
optional MediaUpdate media_update = 7;
optional ContactUpdate contact_update = 8;
optional ContactRequest contact_request = 9;
optional FlameSync flame_sync = 10;
optional PushKeys push_keys = 11;
optional Reaction reaction = 12;
optional TextMessage text_message = 13;
optional GroupCreate group_create = 14;
optional GroupJoin group_join = 15;
optional GroupUpdate group_update = 16;
optional ResendGroupPublicKey resend_group_public_key = 17;
optional ErrorMessages error_messages = 18;
optional AdditionalDataMessage additional_data_message = 19;
optional TypingIndicator typing_indicator = 20;
optional UserDiscoveryRequest user_discovery_request = 22;
optional UserDiscoveryUpdate user_discovery_update = 23;
optional KeyVerificationProof key_verification_proof = 24;
message ErrorMessages {
enum Type {
ERROR_PROCESSING_MESSAGE_CREATED_ACCOUNT_REQUEST_INSTEAD = 0;
UNKNOWN_MESSAGE_TYPE = 2;
SESSION_OUT_OF_SYNC = 3;
GROUP_NOT_FOUND_OR_NOT_A_MEMBER = 4;
}
Type type = 1;
string related_receipt_id = 2;
}
message GroupCreate {
// key for the state stored on the server
bytes state_key = 3;
bytes group_public_key = 4;
optional string group_name = 5;
}
message GroupJoin {
// key for the state stored on the server
bytes group_public_key = 1;
}
message ResendGroupPublicKey {
}
message GroupUpdate {
string group_action_type = 1; // GroupActionType.name
optional int64 affected_contact_id = 2;
optional string new_group_name = 3;
optional int64 new_delete_messages_after_milliseconds = 4;
}
message TextMessage {
string sender_message_id = 1;
string text = 2;
int64 timestamp = 3;
optional string quote_message_id = 4;
}
message AdditionalDataMessage {
string sender_message_id = 1;
int64 timestamp = 2;
string type = 3;
optional bytes additional_message_data = 4;
}
message Reaction {
string target_message_id = 1;
string emoji = 2;
bool remove = 3;
}
message MessageUpdate {
enum Type {
DELETE = 0;
EDIT_TEXT = 1;
OPENED = 2;
}
Type type = 1;
optional string sender_message_id = 2;
repeated string multiple_target_message_ids = 3;
optional string text = 4;
int64 timestamp = 5;
}
message Media {
enum Type {
REUPLOAD = 0;
IMAGE = 1;
VIDEO = 2;
GIF = 3;
AUDIO = 4;
}
string sender_message_id = 1;
Type type = 2;
optional int64 display_limit_in_milliseconds = 3;
bool requires_authentication = 4;
int64 timestamp = 5;
optional string quote_message_id = 6;
optional bytes download_token = 7;
optional bytes encryption_key = 8;
optional bytes encryption_mac = 9;
optional bytes encryption_nonce = 10;
optional bytes additional_message_data = 11;
}
message MediaUpdate {
enum Type {
REOPENED = 0;
STORED = 1;
DECRYPTION_ERROR = 2;
}
Type type = 1;
string target_message_id = 2;
}
message ContactRequest {
enum Type {
REQUEST = 0;
REJECT = 1;
ACCEPT = 2;
}
Type type = 1;
}
message ContactUpdate {
enum Type {
REQUEST = 0;
UPDATE = 1;
}
Type type = 1;
optional bytes avatar_svg_compressed = 2;
optional string username = 3;
optional string display_name = 4;
}
message PushKeys {
enum Type {
REQUEST = 0;
UPDATE = 1;
}
Type type = 1;
optional int64 key_id = 2;
optional bytes key = 3;
optional int64 created_at = 4;
}
message FlameSync {
int64 flame_counter = 1;
int64 last_flame_counter_change = 2;
bool best_friend = 3;
bool force_update = 4;
}
message TypingIndicator {
bool is_typing = 1;
int64 created_at = 2;
}
message UserDiscoveryRequest {
bytes current_version = 1;
}
message UserDiscoveryUpdate {
repeated bytes messages = 1;
}
message KeyVerificationProof {
bytes calculated_mac = 1;
}
}