standardnotes-server/packages/grpc/proto/sync.proto
Karol Sójko 5b84f078c6
feat(grpc): add syncing protocol buffers (#930)
* feat(grpc): add syncing protocol buffers

* wip

* feat: syncing implementation

* fix: sendign metadata

* fix: grpc sync request mapping

* fix grpc response mapper
2023-11-20 11:08:16 +01:00

146 lines
4 KiB
Protocol Buffer

syntax = "proto3";
package sync;
message ItemHashRepresentation {
string uuid = 1;
string user_uuid = 2;
optional string content = 3;
optional string content_type = 4;
optional bool deleted = 5;
optional string duplicate_of = 6;
optional string auth_hash = 7;
optional string enc_item_key = 8;
optional string items_key_id = 9;
optional string key_system_identifier = 10;
optional string shared_vault_uuid = 11;
optional string created_at = 12;
optional uint64 created_at_timestamp = 13;
optional string updated_at = 14;
optional uint64 updated_at_timestamp = 15;
}
message ItemConflictRepresentation {
optional ItemRepresentation server_item = 1;
optional ItemHashRepresentation unsaved_item = 2;
string type = 3;
}
message ItemRepresentation {
string uuid = 1;
optional string items_key_id = 2;
optional string duplicate_of = 3;
optional string enc_item_key = 4;
optional string content = 5;
string content_type = 6;
optional string auth_hash = 7;
bool deleted = 8;
string created_at = 9;
uint64 created_at_timestamp = 10;
string updated_at = 11;
uint64 updated_at_timestamp = 12;
optional string updated_with_session = 13;
optional string key_system_identifier = 14;
optional string shared_vault_uuid = 15;
optional string user_uuid = 16;
optional string last_edited_by_uuid = 17;
}
message SavedItemRepresentation {
string uuid = 1;
optional string duplicate_of = 2;
string content_type = 3;
optional string auth_hash = 4;
bool deleted = 5;
string created_at = 6;
uint64 created_at_timestamp = 7;
string updated_at = 8;
uint64 updated_at_timestamp = 9;
optional string key_system_identifier = 10;
optional string shared_vault_uuid = 11;
optional string user_uuid = 12;
optional string last_edited_by_uuid = 13;
}
message MessageRepresentation {
string uuid = 1;
string recipient_uuid = 2;
string sender_uuid = 3;
string encrypted_message = 4;
optional string replaceability_identifier = 5;
uint64 created_at_timestamp = 6;
uint64 updated_at_timestamp = 7;
}
message SharedVaultRepresentation {
string uuid = 1;
string user_uuid = 2;
uint32 file_upload_bytes_used = 3;
uint64 created_at_timestamp = 4;
uint64 updated_at_timestamp = 5;
}
message SharedVaultInviteRepresentation {
string uuid = 1;
string shared_vault_uuid = 2;
string user_uuid = 3;
string sender_uuid = 4;
string encrypted_message = 5;
string permission = 6;
uint64 created_at_timestamp = 7;
uint64 updated_at_timestamp = 8;
}
message NotificationRepresentation {
string uuid = 1;
string user_uuid = 2;
string type = 3;
string payload = 4;
uint64 created_at_timestamp = 5;
uint64 updated_at_timestamp = 6;
}
message ItemHash {
string uuid = 1;
optional string content = 2;
optional string content_type = 3;
optional bool deleted = 4;
optional string duplicate_of = 5;
optional string auth_hash = 6;
optional string enc_item_key = 7;
optional string items_key_id = 8;
optional string key_system_identifier = 9;
optional string shared_vault_uuid = 10;
optional string created_at = 11;
optional uint64 created_at_timestamp = 12;
optional string updated_at = 13;
optional uint64 updated_at_timestamp = 14;
}
message SyncResponse {
repeated ItemRepresentation retrieved_items = 1;
repeated SavedItemRepresentation saved_items = 2;
repeated ItemConflictRepresentation conflicts = 3;
string sync_token = 4;
optional string cursor_token = 5;
repeated MessageRepresentation messages = 6;
repeated SharedVaultRepresentation shared_vaults = 7;
repeated SharedVaultInviteRepresentation shared_vault_invites = 8;
repeated NotificationRepresentation notifications = 9;
}
message SyncRequest {
repeated ItemHash items = 1;
repeated string shared_vault_uuids = 2;
optional bool compute_integrity = 3;
optional string sync_token = 4;
optional string cursor_token = 5;
optional uint32 limit = 6;
optional string content_type = 7;
optional string api_version = 8;
}
service Syncing {
rpc syncItems(SyncRequest) returns (SyncResponse) {}
}