syntax = "proto3"; package meowlib; option go_package = "forge.redroom.link/yves/meowlib"; // structure for sending a message intended for server use in protobuf format message PackedServerMessage { string From = 1; bytes Payload = 2; bytes Signature = 3; } // structure for sending a message to be forwarded to another user in protobuf format message PackedUserMessage { string From = 1; string Destination=2; bytes Payload=3; bytes Signature=4; } // structure defining a message encrypted, then sent in a "packedmessage" payload message ToServerMessage { string Type = 1; // Type string ServerPubKey = 2 ; // My pub key for the server to send me an encrypter answer bytes Payload = 3 ; // optional payload for server message ConversationRequest { // Structure for requestion incoming messages string lookupKey = 1; // lookup key for a conversation string LastServerUuidOK = 2; // Last Server message UUID received (send me all after that one) bool PublishOnline = 3; // ?? Publish my online status for that contact ? string lookupSignature = 4; // prove that I own the private key by signing that block } repeated ConversationRequest PullRequest = 7; message PostedMessage{ string lookupKey= 1; repeated PackedUserMessage Messages = 2; } repeated PostedMessage Messages = 9; string NextServerKey = 10; string Url = 11; } // structure defining a from serve receiver message decrypted from a "packedmessage" payload message FromServerMessage { string Type = 1; // Type string ServerPubKey = 2 ; // My pub key for the server to send me an encrypter answer bytes Payload = 3 ; // uint64 ServerReceived = 4 ; string ServerUuid = 5 ; message ConversationResponse { repeated string MessageUuids = 1; } map PullResponse = 8; message PostedMessage{ string lookupKey= 1; repeated PackedUserMessage Messages = 2; } repeated PostedMessage Messages = 9; string NextServerKey = 10; string Url = 11; } message Server { string Name = 1; string Description=2; string PublicKey = 3; string Url = 4; int32 ConfidenceLevel = 5; } message ContactCard { string name=1; string contactPublicKey =2; string encryptionPublicKey= 3; string lookupPublicKey =4; repeated Server PullServers =5; } message MinimalContact { string name=1; string publicKey=2; repeated Server TrustedServers = 3; } message UserMessage { string Destination = 1; string From = 2; string Type = 3; bytes Data = 4; message ConversationStatus { string LocalUuid = 1; uint64 LocalSequence = 2 ; uint64 Sent = 3 ; uint64 Received = 4; uint64 Processed = 5; string NextCkey = 6; // contact key bool NextCkeyAck = 7; // false when proposing a new id, true for accepting it string NextEkey = 8; // encryption key bool NextKeyEkeyAck = 9; // false when proposing a new key, true for accpeting it string NextLkey = 10; // lookup key bool NextLkeyAck = 11; // false when proposing a new id, true for accepting it } ConversationStatus Status = 5; MinimalContact contact = 6; message Group{ string name=1; repeated MinimalContact members = 2; } Group group = 7; }