syntax = "proto3"; import "sync_settings.proto"; import 'application_metadata_message.proto'; option go_package = "./;protobuf"; package protobuf; /* `FetchingBackedUpDataDetails` is used to describe how many messages a single backup data structure consists of */ message FetchingBackedUpDataDetails { uint32 data_number = 1; uint32 total_number = 2; } message Backup { uint64 clock = 1; string id = 2; /* this is what we already had */ repeated SyncInstallationContactV2 contacts = 3; repeated SyncCommunity communities = 4; /* newly added details to be backed up to and fetched from waku */ FetchingBackedUpDataDetails contactsDetails = 5; FetchingBackedUpDataDetails communitiesDetails = 6; BackedUpProfile profile = 7; FetchingBackedUpDataDetails profileDetails = 8; SyncSetting setting = 9; FetchingBackedUpDataDetails settingsDetails = 10; } message MultiAccount { string name = 1; int64 timestamp = 2; string identicon = 3; repeated ColourHash color_hash = 4; int64 colorId = 5; string keycard_pairing = 6; string key_uid = 7; repeated IdentityImage images = 8; message ColourHash { repeated int64 index = 1; } message IdentityImage { string key_uid = 1; string name = 2; bytes payload = 3; int64 width = 4; int64 height = 5; int64 filesize = 6; int64 resize_target = 7; uint64 clock = 8; } } message LocalPairingPayload { repeated Key keys = 1; MultiAccount multiaccount = 2; string password = 3; message Key { string name = 1; bytes data = 2; } } message PairInstallation { uint64 clock = 1; string installation_id = 2; string device_type = 3; string name = 4; // following fields used for local pairing uint32 version = 5; } message SyncInstallationContact { uint64 clock = 1; string id = 2; string profile_image = 3; string ens_name = 4; uint64 last_updated = 5; repeated string system_tags = 6; string local_nickname = 7; } message SyncInstallationContactV2 { uint64 last_updated_locally = 1; string id = 2; string profile_image = 3; string ens_name = 4; uint64 last_updated = 5; repeated string system_tags = 6; string local_nickname = 7; bool added = 9; bool blocked = 10; bool muted = 11; bool removed = 12; bool has_added_us = 13; int64 verification_status = 14; int64 trust_status = 15; int64 contact_request_local_state = 16; int64 contact_request_local_clock = 17; int64 contact_request_remote_state = 18; int64 contact_request_remote_clock = 19; string display_name = 20; } message SyncInstallationAccount { uint64 clock = 1; string profile_image = 2; uint64 last_updated = 3; } message SyncInstallationPublicChat { uint64 clock = 1; string id = 2; } message SyncCommunity { uint64 clock = 1; bytes id = 2; bytes private_key = 3; bytes description = 4; bool joined = 5; bool verified = 6; bool muted = 7; repeated SyncCommunityRequestsToJoin requests_to_join = 8; SyncCommunitySettings settings = 9; bool encrypted = 10; bool spectated = 11; bytes encryption_keys = 12; } message SyncCommunityRequestsToJoin { bytes id = 1; string public_key = 2; uint64 clock = 3; string ens_name = 4; string chat_id = 5; bytes community_id = 6; uint64 state = 7; } message SyncInstallation { repeated SyncInstallationContact contacts = 1; repeated SyncInstallationPublicChat public_chats = 2; SyncInstallationAccount account = 3; repeated SyncCommunity communities = 4; } message SyncChatRemoved { uint64 clock = 1; string id = 2; } message SyncChatMessagesRead { uint64 clock = 1; string id = 2; } message SyncActivityCenterRead { uint64 clock = 1; repeated bytes ids = 2; } message SyncActivityCenterAccepted { uint64 clock = 1; repeated bytes ids = 2; } message SyncActivityCenterDismissed { uint64 clock = 1; repeated bytes ids = 2; } message SyncBookmark { uint64 clock = 1; string url = 2; string name = 3; string image_url = 4; bool removed = 5; uint64 deleted_at = 6; } message SyncClearHistory { string chat_id = 1; uint64 cleared_at = 2; } message SyncProfilePicture { string name = 1; bytes payload = 2; uint32 width = 3; uint32 height = 4; uint32 file_size = 5; uint32 resize_target = 6; uint64 clock = 7; } message SyncProfilePictures { string key_uid = 1; repeated SyncProfilePicture pictures = 2; } message SyncWalletAccount { uint64 clock = 1; bytes address = 2; bool wallet = 3; bool chat = 4; string type = 5; string storage = 6; string path = 7; bytes publicKey = 8; string name = 9; string color = 10; bool hidden = 11; bool removed = 12; } message SyncWalletAccounts { repeated SyncWalletAccount accounts = 1; } message SyncSavedAddress { bytes address = 1; string name = 2; bool favourite = 3; uint64 chain_id = 4; bool removed = 5; uint64 update_clock = 7; } message SyncCommunitySettings { uint64 clock = 1; string community_id = 2; bool history_archive_support_enabled = 3; } message SyncTrustedUser { uint64 clock = 1; string id = 2; TrustStatus status = 3; enum TrustStatus { UNKNOWN = 0; TRUSTED = 1; UNTRUSTWORTHY = 2; } } message SyncVerificationRequest { uint64 clock = 1; string from = 2; string to = 3; string challenge = 4; uint64 requested_at = 5; string response = 6; uint64 replied_at = 7; VerificationStatus verification_status = 8; string id = 9; enum VerificationStatus { UNKNOWN = 0; PENDING = 1; ACCEPTED = 2; DECLINED = 3; CANCELED = 4; } } message SyncContactRequestDecision { uint64 clock = 1; string requestId = 2; DecisionStatus decision_status = 3; enum DecisionStatus { ACCEPTED = 0; DECLINED = 1; } } /* `BackedUpProfile` is used to describe profile of logged in user */ message BackedUpProfile { string key_uid = 1; string display_name = 2; uint64 display_name_clock = 3; repeated SyncProfilePicture pictures = 4; } message RawMessage { bytes payload = 1; ApplicationMetadataMessage.Type messageType = 2; } message SyncRawMessage { repeated RawMessage rawMessages = 1; // we need these to be able to login bytes subAccountsJsonBytes = 2; bytes settingsJsonBytes = 3; } message SyncKeycard { string uid = 1; string name = 2; bool locked = 3; string key_uid = 4; repeated bytes addresses = 5; uint64 clock = 6; } message SyncKeycardAction { Action action = 1; string oldKeycardUid = 2; SyncKeycard keycard = 3; enum Action { KEYCARD_ADDED = 0; ACCOUNTS_ADDED = 1; KEYCARD_DELETED = 2; ACCOUNTS_REMOVED = 3; LOCKED = 4; UNLOCKED = 5; UID_UPDATED = 6; NAME_CHANGED = 7; } } message SyncAllKeycards { repeated SyncKeycard keycards = 1; uint64 clock = 2; }