{
  "files": [
    {
      "name": "messengertypes/messengertypes.proto",
      "description": "",
      "package": "berty.messenger.v1",
      "hasEnums": false,
      "hasExtensions": false,
      "hasMessages": true,
      "hasServices": true,
      "enums": [
        {
          "name": "Type",
          "longName": "AppMessage.Type",
          "fullName": "berty.messenger.v1.AppMessage.Type",
          "description": "",
          "values": [
            {
              "name": "Undefined",
              "number": "0",
              "description": ""
            },
            {
              "name": "TypeUserMessage",
              "number": "1",
              "description": ""
            },
            {
              "name": "TypeGroupInvitation",
              "number": "3",
              "description": ""
            },
            {
              "name": "TypeSetGroupInfo",
              "number": "4",
              "description": ""
            },
            {
              "name": "TypeSetUserInfo",
              "number": "5",
              "description": ""
            },
            {
              "name": "TypeAcknowledge",
              "number": "6",
              "description": ""
            },
            {
              "name": "TypeAccountDirectoryServiceRegistered",
              "number": "8",
              "description": ""
            },
            {
              "name": "TypeAccountDirectoryServiceUnregistered",
              "number": "9",
              "description": ""
            },
            {
              "name": "TypeServiceAddToken",
              "number": "10",
              "description": ""
            },
            {
              "name": "TypeServiceRemoveToken",
              "number": "11",
              "description": ""
            },
            {
              "name": "TypePushSetDeviceToken",
              "number": "12",
              "description": ""
            },
            {
              "name": "TypePushSetServer",
              "number": "13",
              "description": ""
            },
            {
              "name": "TypePushSetMemberToken",
              "number": "14",
              "description": ""
            }
          ]
        },
        {
          "name": "Kind",
          "longName": "BertyLink.Kind",
          "fullName": "berty.messenger.v1.BertyLink.Kind",
          "description": "",
          "values": [
            {
              "name": "UnknownKind",
              "number": "0",
              "description": ""
            },
            {
              "name": "ContactInviteV1Kind",
              "number": "1",
              "description": ""
            },
            {
              "name": "GroupV1Kind",
              "number": "2",
              "description": ""
            },
            {
              "name": "EncryptedV1Kind",
              "number": "3",
              "description": ""
            },
            {
              "name": "MessageV1Kind",
              "number": "4",
              "description": ""
            }
          ]
        },
        {
          "name": "State",
          "longName": "Contact.State",
          "fullName": "berty.messenger.v1.Contact.State",
          "description": "",
          "values": [
            {
              "name": "Undefined",
              "number": "0",
              "description": ""
            },
            {
              "name": "IncomingRequest",
              "number": "1",
              "description": ""
            },
            {
              "name": "OutgoingRequestEnqueued",
              "number": "2",
              "description": ""
            },
            {
              "name": "OutgoingRequestSent",
              "number": "3",
              "description": ""
            },
            {
              "name": "Accepted",
              "number": "4",
              "description": ""
            }
          ]
        },
        {
          "name": "Type",
          "longName": "Conversation.Type",
          "fullName": "berty.messenger.v1.Conversation.Type",
          "description": "",
          "values": [
            {
              "name": "Undefined",
              "number": "0",
              "description": ""
            },
            {
              "name": "AccountType",
              "number": "1",
              "description": ""
            },
            {
              "name": "ContactType",
              "number": "2",
              "description": ""
            },
            {
              "name": "MultiMemberType",
              "number": "3",
              "description": ""
            }
          ]
        },
        {
          "name": "Type",
          "longName": "StreamEvent.Notified.Type",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.Type",
          "description": "",
          "values": [
            {
              "name": "Unknown",
              "number": "0",
              "description": ""
            },
            {
              "name": "TypeBasic",
              "number": "1",
              "description": ""
            },
            {
              "name": "TypeMessageReceived",
              "number": "2",
              "description": ""
            },
            {
              "name": "TypeContactRequestSent",
              "number": "3",
              "description": ""
            },
            {
              "name": "TypeContactRequestReceived",
              "number": "4",
              "description": ""
            },
            {
              "name": "TypeGroupInvitation",
              "number": "5",
              "description": ""
            }
          ]
        },
        {
          "name": "Transport",
          "longName": "StreamEvent.PeerStatusConnected.Transport",
          "fullName": "berty.messenger.v1.StreamEvent.PeerStatusConnected.Transport",
          "description": "",
          "values": [
            {
              "name": "Unknown",
              "number": "0",
              "description": ""
            },
            {
              "name": "LAN",
              "number": "1",
              "description": ""
            },
            {
              "name": "WAN",
              "number": "2",
              "description": ""
            },
            {
              "name": "Proximity",
              "number": "3",
              "description": ""
            }
          ]
        },
        {
          "name": "Type",
          "longName": "StreamEvent.Type",
          "fullName": "berty.messenger.v1.StreamEvent.Type",
          "description": "",
          "values": [
            {
              "name": "Undefined",
              "number": "0",
              "description": ""
            },
            {
              "name": "TypeListEnded",
              "number": "1",
              "description": ""
            },
            {
              "name": "TypeConversationUpdated",
              "number": "2",
              "description": ""
            },
            {
              "name": "TypeConversationDeleted",
              "number": "3",
              "description": ""
            },
            {
              "name": "TypeInteractionUpdated",
              "number": "4",
              "description": ""
            },
            {
              "name": "TypeInteractionDeleted",
              "number": "5",
              "description": ""
            },
            {
              "name": "TypeContactUpdated",
              "number": "6",
              "description": ""
            },
            {
              "name": "TypeAccountUpdated",
              "number": "7",
              "description": ""
            },
            {
              "name": "TypeMemberUpdated",
              "number": "8",
              "description": ""
            },
            {
              "name": "TypeDeviceUpdated",
              "number": "9",
              "description": ""
            },
            {
              "name": "TypeNotified",
              "number": "10",
              "description": ""
            },
            {
              "name": "TypeConversationPartialLoad",
              "number": "12",
              "description": ""
            },
            {
              "name": "TypePeerStatusConnected",
              "number": "13",
              "description": ""
            },
            {
              "name": "TypePeerStatusReconnecting",
              "number": "14",
              "description": ""
            },
            {
              "name": "TypePeerStatusDisconnected",
              "number": "15",
              "description": ""
            },
            {
              "name": "TypePeerStatusGroupAssociated",
              "number": "16",
              "description": ""
            },
            {
              "name": "TypeServiceTokenAdded",
              "number": "17",
              "description": ""
            }
          ]
        }
      ],
      "extensions": [],
      "messages": [
        {
          "name": "Account",
          "longName": "Account",
          "fullName": "berty.messenger.v1.Account",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "service_tokens",
              "description": "",
              "label": "repeated",
              "type": "ServiceToken",
              "longType": "ServiceToken",
              "fullType": "berty.messenger.v1.ServiceToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "replicate_new_groups_automatically",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "auto_share_push_token_flag",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_device_token",
              "description": "",
              "label": "",
              "type": "PushDeviceToken",
              "longType": "PushDeviceToken",
              "fullType": "berty.messenger.v1.PushDeviceToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_server_records",
              "description": "",
              "label": "repeated",
              "type": "PushServerRecord",
              "longType": "PushServerRecord",
              "fullType": "berty.messenger.v1.PushServerRecord",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "muted_until",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "hide_in_app_notifications",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "hide_push_previews",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "verified_credentials",
              "description": "",
              "label": "repeated",
              "type": "AccountVerifiedCredential",
              "longType": "AccountVerifiedCredential",
              "fullType": "berty.messenger.v1.AccountVerifiedCredential",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_service_records",
              "description": "",
              "label": "repeated",
              "type": "AccountDirectoryServiceRecord",
              "longType": "AccountDirectoryServiceRecord",
              "fullType": "berty.messenger.v1.AccountDirectoryServiceRecord",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountDirectoryServiceRecord",
          "longName": "AccountDirectoryServiceRecord",
          "fullName": "berty.messenger.v1.AccountDirectoryServiceRecord",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifier_proof_issuer",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "registration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "revoked",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_unregister_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountGet",
          "longName": "AccountGet",
          "fullName": "berty.messenger.v1.AccountGet",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "AccountGet.Reply",
          "fullName": "berty.messenger.v1.AccountGet.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account",
              "description": "",
              "label": "",
              "type": "Account",
              "longType": "Account",
              "fullType": "berty.messenger.v1.Account",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "AccountGet.Request",
          "fullName": "berty.messenger.v1.AccountGet.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "AccountPushConfigure",
          "longName": "AccountPushConfigure",
          "fullName": "berty.messenger.v1.AccountPushConfigure",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "AccountPushConfigure.Reply",
          "fullName": "berty.messenger.v1.AccountPushConfigure.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "AccountPushConfigure.Request",
          "fullName": "berty.messenger.v1.AccountPushConfigure.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "muted_until",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "unmute",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "mute_forever",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "hide_in_app_notifications",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "hide_push_previews",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "show_in_app_notifications",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "show_push_previews",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountUpdate",
          "longName": "AccountUpdate",
          "fullName": "berty.messenger.v1.AccountUpdate",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "AccountUpdate.Reply",
          "fullName": "berty.messenger.v1.AccountUpdate.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "AccountUpdate.Request",
          "fullName": "berty.messenger.v1.AccountUpdate.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountVerifiedCredential",
          "longName": "AccountVerifiedCredential",
          "fullName": "berty.messenger.v1.AccountVerifiedCredential",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "registration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "issuer",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AppMessage",
          "longName": "AppMessage",
          "fullName": "berty.messenger.v1.AppMessage",
          "description": "AppMessage is the app layer format",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "AppMessage.Type",
              "fullType": "berty.messenger.v1.AppMessage.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "sent_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "target_cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountDirectoryServiceRegistered",
          "longName": "AppMessage.AccountDirectoryServiceRegistered",
          "fullName": "berty.messenger.v1.AppMessage.AccountDirectoryServiceRegistered",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifier_proof_issuer",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "registration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_unregister_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountDirectoryServiceUnregistered",
          "longName": "AppMessage.AccountDirectoryServiceUnregistered",
          "fullName": "berty.messenger.v1.AppMessage.AccountDirectoryServiceUnregistered",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifier_proof_issuer",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "removal_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Acknowledge",
          "longName": "AppMessage.Acknowledge",
          "fullName": "berty.messenger.v1.AppMessage.Acknowledge",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "GroupInvitation",
          "longName": "AppMessage.GroupInvitation",
          "fullName": "berty.messenger.v1.AppMessage.GroupInvitation",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "TODO: optimize message size",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetDeviceToken",
          "longName": "AppMessage.PushSetDeviceToken",
          "fullName": "berty.messenger.v1.AppMessage.PushSetDeviceToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "device_token",
              "description": "",
              "label": "",
              "type": "PushServiceReceiver",
              "longType": "berty.push.v1.PushServiceReceiver",
              "fullType": "berty.push.v1.PushServiceReceiver",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetMemberToken",
          "longName": "AppMessage.PushSetMemberToken",
          "fullName": "berty.messenger.v1.AppMessage.PushSetMemberToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "member_token",
              "description": "",
              "label": "",
              "type": "PushMemberTokenUpdate",
              "longType": "PushMemberTokenUpdate",
              "fullType": "berty.messenger.v1.PushMemberTokenUpdate",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetServer",
          "longName": "AppMessage.PushSetServer",
          "fullName": "berty.messenger.v1.AppMessage.PushSetServer",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "server",
              "description": "",
              "label": "",
              "type": "PushServer",
              "longType": "PushServer",
              "fullType": "berty.messenger.v1.PushServer",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceAddToken",
          "longName": "AppMessage.ServiceAddToken",
          "fullName": "berty.messenger.v1.AppMessage.ServiceAddToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "supported_services",
              "description": "",
              "label": "repeated",
              "type": "ServiceTokenSupportedService",
              "longType": "ServiceTokenSupportedService",
              "fullType": "berty.messenger.v1.ServiceTokenSupportedService",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "authentication_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceRemoveToken",
          "longName": "AppMessage.ServiceRemoveToken",
          "fullName": "berty.messenger.v1.AppMessage.ServiceRemoveToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "tokenid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "SetGroupInfo",
          "longName": "AppMessage.SetGroupInfo",
          "fullName": "berty.messenger.v1.AppMessage.SetGroupInfo",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "SetUserInfo",
          "longName": "AppMessage.SetUserInfo",
          "fullName": "berty.messenger.v1.AppMessage.SetUserInfo",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "UserMessage",
          "longName": "AppMessage.UserMessage",
          "fullName": "berty.messenger.v1.AppMessage.UserMessage",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "body",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AuthExchangeResponse",
          "longName": "AuthExchangeResponse",
          "fullName": "berty.messenger.v1.AuthExchangeResponse",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "access_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "scope",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "error",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "error_description",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "services",
              "description": "",
              "label": "repeated",
              "type": "ServicesEntry",
              "longType": "AuthExchangeResponse.ServicesEntry",
              "fullType": "berty.messenger.v1.AuthExchangeResponse.ServicesEntry",
              "ismap": true,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServicesEntry",
          "longName": "AuthExchangeResponse.ServicesEntry",
          "fullName": "berty.messenger.v1.AuthExchangeResponse.ServicesEntry",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "value",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AuthServiceCompleteFlow",
          "longName": "AuthServiceCompleteFlow",
          "fullName": "berty.messenger.v1.AuthServiceCompleteFlow",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "AuthServiceCompleteFlow.Reply",
          "fullName": "berty.messenger.v1.AuthServiceCompleteFlow.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "AuthServiceCompleteFlow.Request",
          "fullName": "berty.messenger.v1.AuthServiceCompleteFlow.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "callback_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AuthServiceInitFlow",
          "longName": "AuthServiceInitFlow",
          "fullName": "berty.messenger.v1.AuthServiceInitFlow",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "AuthServiceInitFlow.Reply",
          "fullName": "berty.messenger.v1.AuthServiceInitFlow.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "secure_url",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "AuthServiceInitFlow.Request",
          "fullName": "berty.messenger.v1.AuthServiceInitFlow.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "auth_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "services",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "BannerQuote",
          "longName": "BannerQuote",
          "fullName": "berty.messenger.v1.BannerQuote",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "BannerQuote.Reply",
          "fullName": "berty.messenger.v1.BannerQuote.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "quote",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "author",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "BannerQuote.Request",
          "fullName": "berty.messenger.v1.BannerQuote.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "random",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "BertyGroup",
          "longName": "BertyGroup",
          "fullName": "berty.messenger.v1.BertyGroup",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group",
              "description": "",
              "label": "",
              "type": "Group",
              "longType": "weshnet.protocol.v1.Group",
              "fullType": "weshnet.protocol.v1.Group",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "BertyID",
          "longName": "BertyID",
          "fullName": "berty.messenger.v1.BertyID",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_rendezvous_seed",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_pk",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "BertyLink",
          "longName": "BertyLink",
          "fullName": "berty.messenger.v1.BertyLink",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "kind",
              "description": "",
              "label": "",
              "type": "Kind",
              "longType": "BertyLink.Kind",
              "fullType": "berty.messenger.v1.BertyLink.Kind",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "berty_id",
              "description": "",
              "label": "",
              "type": "BertyID",
              "longType": "BertyID",
              "fullType": "berty.messenger.v1.BertyID",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "berty_group",
              "description": "",
              "label": "",
              "type": "BertyGroup",
              "longType": "BertyGroup",
              "fullType": "berty.messenger.v1.BertyGroup",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "berty_message_ref",
              "description": "",
              "label": "",
              "type": "BertyMessageRef",
              "longType": "BertyLink.BertyMessageRef",
              "fullType": "berty.messenger.v1.BertyLink.BertyMessageRef",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "encrypted",
              "description": "",
              "label": "",
              "type": "Encrypted",
              "longType": "BertyLink.Encrypted",
              "fullType": "berty.messenger.v1.BertyLink.Encrypted",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "BertyMessageRef",
          "longName": "BertyLink.BertyMessageRef",
          "fullName": "berty.messenger.v1.BertyLink.BertyMessageRef",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "message_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Encrypted",
          "longName": "BertyLink.Encrypted",
          "fullName": "berty.messenger.v1.BertyLink.Encrypted",
          "description": "Encrypted is a clear structure containing clear and encrypted fields.\n\nWe prefer to use a clear struct with encrypted fields instead of a simple\nencrypted struct, to improves chances of having a valid structure even\nwith an invalid passphase. This will force an attacker to have more resources\nto test more false-positive guesses.",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "kind",
              "description": "kind is a clear representation of the unencrypted link type.",
              "label": "",
              "type": "Kind",
              "longType": "BertyLink.Kind",
              "fullType": "berty.messenger.v1.BertyLink.Kind",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "nonce",
              "description": "nonce is a clear field used by scrypt as \"salt\" to derive the passphrase and\nalso used by cipher.NewCTR as \"iv\" to initialize a stream cipher.",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "display_name is an optional clear representation of the display name.",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "checksum",
              "description": "checksum is an optional field used to check if the decryption was successful.\nthe length is customizable (SHAKE256). a longer checksum means less conflicts.\nhaving more conflicts may be bad in term of UX, but make it easier for an attacker\nto run an offline bruteforce.",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact_public_rendezvous_seed",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact_account_pk",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_public_key",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_secret",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_secret_sig",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_type",
              "description": "clear",
              "label": "",
              "type": "GroupType",
              "longType": "weshnet.protocol.v1.GroupType",
              "fullType": "weshnet.protocol.v1.GroupType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_sign_pub",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_link_key_sig",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Contact",
          "longName": "Contact",
          "fullName": "berty.messenger.v1.Contact",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "state",
              "description": "",
              "label": "",
              "type": "State",
              "longType": "Contact.State",
              "fullType": "berty.messenger.v1.Contact.State",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "created_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "sent_date",
              "description": "specific to outgoing requests",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "devices",
              "description": "",
              "label": "repeated",
              "type": "Device",
              "longType": "Device",
              "fullType": "berty.messenger.v1.Device",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "info_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ContactAccept",
          "longName": "ContactAccept",
          "fullName": "berty.messenger.v1.ContactAccept",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ContactAccept.Reply",
          "fullName": "berty.messenger.v1.ContactAccept.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ContactAccept.Request",
          "fullName": "berty.messenger.v1.ContactAccept.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ContactMetadata",
          "longName": "ContactMetadata",
          "fullName": "berty.messenger.v1.ContactMetadata",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ContactRequest",
          "longName": "ContactRequest",
          "fullName": "berty.messenger.v1.ContactRequest",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ContactRequest.Reply",
          "fullName": "berty.messenger.v1.ContactRequest.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ContactRequest.Request",
          "fullName": "berty.messenger.v1.ContactRequest.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "passphrase",
              "description": "optional passphase to decrypt the link",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Conversation",
          "longName": "Conversation",
          "fullName": "berty.messenger.v1.Conversation",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "Conversation.Type",
              "fullType": "berty.messenger.v1.Conversation.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_open",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "unread_count",
              "description": "",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "last_update",
              "description": "last_update is used to sort conversations, it should be updated for each \"visible\" event",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact_public_key",
              "description": "specific to ContactType conversations",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact",
              "description": "specific to ContactType conversations",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "members",
              "description": "specific to MultiMemberType conversations",
              "label": "repeated",
              "type": "Member",
              "longType": "Member",
              "fullType": "berty.messenger.v1.Member",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_member_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "local_device_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "created_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "replication_info",
              "description": "",
              "label": "repeated",
              "type": "ConversationReplicationInfo",
              "longType": "ConversationReplicationInfo",
              "fullType": "berty.messenger.v1.ConversationReplicationInfo",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "info_date",
              "description": "info_date is used when SetGroupInfo is called",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "local_member_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "muted_until",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_local_device_shared_tokens",
              "description": "",
              "label": "repeated",
              "type": "PushLocalDeviceSharedToken",
              "longType": "PushLocalDeviceSharedToken",
              "fullType": "berty.messenger.v1.PushLocalDeviceSharedToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_member_tokens",
              "description": "",
              "label": "repeated",
              "type": "PushMemberToken",
              "longType": "PushMemberToken",
              "fullType": "berty.messenger.v1.PushMemberToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationClose",
          "longName": "ConversationClose",
          "fullName": "berty.messenger.v1.ConversationClose",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationClose.Reply",
          "fullName": "berty.messenger.v1.ConversationClose.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ConversationClose.Request",
          "fullName": "berty.messenger.v1.ConversationClose.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationCreate",
          "longName": "ConversationCreate",
          "fullName": "berty.messenger.v1.ConversationCreate",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationCreate.Reply",
          "fullName": "berty.messenger.v1.ConversationCreate.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ConversationCreate.Request",
          "fullName": "berty.messenger.v1.ConversationCreate.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contacts_to_invite",
              "description": "public keys",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationJoin",
          "longName": "ConversationJoin",
          "fullName": "berty.messenger.v1.ConversationJoin",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationJoin.Reply",
          "fullName": "berty.messenger.v1.ConversationJoin.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ConversationJoin.Request",
          "fullName": "berty.messenger.v1.ConversationJoin.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "passphrase",
              "description": "optional passphase to decrypt the link",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationLoad",
          "longName": "ConversationLoad",
          "fullName": "berty.messenger.v1.ConversationLoad",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationLoad.Reply",
          "fullName": "berty.messenger.v1.ConversationLoad.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ConversationLoad.Request",
          "fullName": "berty.messenger.v1.ConversationLoad.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "options",
              "description": "",
              "label": "",
              "type": "PaginatedInteractionsOptions",
              "longType": "PaginatedInteractionsOptions",
              "fullType": "berty.messenger.v1.PaginatedInteractionsOptions",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationMute",
          "longName": "ConversationMute",
          "fullName": "berty.messenger.v1.ConversationMute",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationMute.Reply",
          "fullName": "berty.messenger.v1.ConversationMute.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ConversationMute.Request",
          "fullName": "berty.messenger.v1.ConversationMute.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "muted_until",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "unmute",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "mute_forever",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationOpen",
          "longName": "ConversationOpen",
          "fullName": "berty.messenger.v1.ConversationOpen",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationOpen.Reply",
          "fullName": "berty.messenger.v1.ConversationOpen.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ConversationOpen.Request",
          "fullName": "berty.messenger.v1.ConversationOpen.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationReplicationInfo",
          "longName": "ConversationReplicationInfo",
          "fullName": "berty.messenger.v1.ConversationReplicationInfo",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "member_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "authentication_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "replication_server",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationStream",
          "longName": "ConversationStream",
          "fullName": "berty.messenger.v1.ConversationStream",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ConversationStream.Reply",
          "fullName": "berty.messenger.v1.ConversationStream.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ConversationStream.Request",
          "fullName": "berty.messenger.v1.ConversationStream.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "count",
              "description": "",
              "label": "",
              "type": "uint64",
              "longType": "uint64",
              "fullType": "uint64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "page",
              "description": "",
              "label": "",
              "type": "uint64",
              "longType": "uint64",
              "fullType": "uint64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DebugAuthServiceSetToken",
          "longName": "DebugAuthServiceSetToken",
          "fullName": "berty.messenger.v1.DebugAuthServiceSetToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DebugAuthServiceSetToken.Reply",
          "fullName": "berty.messenger.v1.DebugAuthServiceSetToken.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "DebugAuthServiceSetToken.Request",
          "fullName": "berty.messenger.v1.DebugAuthServiceSetToken.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token",
              "description": "",
              "label": "",
              "type": "AuthExchangeResponse",
              "longType": "AuthExchangeResponse",
              "fullType": "berty.messenger.v1.AuthExchangeResponse",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "authentication_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DevShareInstanceBertyID",
          "longName": "DevShareInstanceBertyID",
          "fullName": "berty.messenger.v1.DevShareInstanceBertyID",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DevShareInstanceBertyID.Reply",
          "fullName": "berty.messenger.v1.DevShareInstanceBertyID.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "DevShareInstanceBertyID.Request",
          "fullName": "berty.messenger.v1.DevShareInstanceBertyID.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "reset",
              "description": "reset will regenerate a new link",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DevStreamLogs",
          "longName": "DevStreamLogs",
          "fullName": "berty.messenger.v1.DevStreamLogs",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DevStreamLogs.Reply",
          "fullName": "berty.messenger.v1.DevStreamLogs.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "line",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "DevStreamLogs.Request",
          "fullName": "berty.messenger.v1.DevStreamLogs.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Device",
          "longName": "Device",
          "fullName": "berty.messenger.v1.Device",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "member_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DirectoryServiceQuery",
          "longName": "DirectoryServiceQuery",
          "fullName": "berty.messenger.v1.DirectoryServiceQuery",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DirectoryServiceQuery.Reply",
          "fullName": "berty.messenger.v1.DirectoryServiceQuery.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "directory_identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expires_at",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_uri",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "verified_credential",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "DirectoryServiceQuery.Request",
          "fullName": "berty.messenger.v1.DirectoryServiceQuery.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "identifiers",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DirectoryServiceRegister",
          "longName": "DirectoryServiceRegister",
          "fullName": "berty.messenger.v1.DirectoryServiceRegister",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DirectoryServiceRegister.Reply",
          "fullName": "berty.messenger.v1.DirectoryServiceRegister.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "directory_record_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "DirectoryServiceRegister.Request",
          "fullName": "berty.messenger.v1.DirectoryServiceRegister.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "identifier",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "proof_issuer",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DirectoryServiceUnregister",
          "longName": "DirectoryServiceUnregister",
          "fullName": "berty.messenger.v1.DirectoryServiceUnregister",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "DirectoryServiceUnregister.Reply",
          "fullName": "berty.messenger.v1.DirectoryServiceUnregister.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "DirectoryServiceUnregister.Request",
          "fullName": "berty.messenger.v1.DirectoryServiceUnregister.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "directory_record_token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "EchoDuplexTest",
          "longName": "EchoDuplexTest",
          "fullName": "berty.messenger.v1.EchoDuplexTest",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "EchoDuplexTest.Reply",
          "fullName": "berty.messenger.v1.EchoDuplexTest.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "echo",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "EchoDuplexTest.Request",
          "fullName": "berty.messenger.v1.EchoDuplexTest.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "echo",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "trigger_error",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "EchoTest",
          "longName": "EchoTest",
          "fullName": "berty.messenger.v1.EchoTest",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "EchoTest.Reply",
          "fullName": "berty.messenger.v1.EchoTest.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "echo",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "EchoTest.Request",
          "fullName": "berty.messenger.v1.EchoTest.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "delay",
              "description": "in ms",
              "label": "",
              "type": "uint64",
              "longType": "uint64",
              "fullType": "uint64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "echo",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "trigger_error",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "EventStream",
          "longName": "EventStream",
          "fullName": "berty.messenger.v1.EventStream",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "EventStream.Reply",
          "fullName": "berty.messenger.v1.EventStream.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "event",
              "description": "",
              "label": "",
              "type": "StreamEvent",
              "longType": "StreamEvent",
              "fullType": "berty.messenger.v1.StreamEvent",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "EventStream.Request",
          "fullName": "berty.messenger.v1.EventStream.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "shallow_amount",
              "description": "",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "InstanceExportData",
          "longName": "InstanceExportData",
          "fullName": "berty.messenger.v1.InstanceExportData",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "InstanceExportData.Reply",
          "fullName": "berty.messenger.v1.InstanceExportData.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "exported_data",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "InstanceExportData.Request",
          "fullName": "berty.messenger.v1.InstanceExportData.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "InstanceShareableBertyID",
          "longName": "InstanceShareableBertyID",
          "fullName": "berty.messenger.v1.InstanceShareableBertyID",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "InstanceShareableBertyID.Reply",
          "fullName": "berty.messenger.v1.InstanceShareableBertyID.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "BertyLink",
              "longType": "BertyLink",
              "fullType": "berty.messenger.v1.BertyLink",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "internal_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "web_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "InstanceShareableBertyID.Request",
          "fullName": "berty.messenger.v1.InstanceShareableBertyID.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "reset",
              "description": "reset will regenerate a new link",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "passphrase",
              "description": "optional passphase to encrypt the link",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Interact",
          "longName": "Interact",
          "fullName": "berty.messenger.v1.Interact",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "Interact.Reply",
          "fullName": "berty.messenger.v1.Interact.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "Interact.Request",
          "fullName": "berty.messenger.v1.Interact.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "AppMessage.Type",
              "fullType": "berty.messenger.v1.AppMessage.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "target_cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "metadata",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Interaction",
          "longName": "Interaction",
          "fullName": "berty.messenger.v1.Interaction",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "AppMessage.Type",
              "fullType": "berty.messenger.v1.AppMessage.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "member_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "device_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "member",
              "description": "",
              "label": "",
              "type": "Member",
              "longType": "Member",
              "fullType": "berty.messenger.v1.Member",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_mine",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "sent_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "acknowledged",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "target_cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "out_of_store_message",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ListMemberDevices",
          "longName": "ListMemberDevices",
          "fullName": "berty.messenger.v1.ListMemberDevices",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ListMemberDevices.Reply",
          "fullName": "berty.messenger.v1.ListMemberDevices.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "device",
              "description": "",
              "label": "",
              "type": "Device",
              "longType": "Device",
              "fullType": "berty.messenger.v1.Device",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ListMemberDevices.Request",
          "fullName": "berty.messenger.v1.ListMemberDevices.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "member_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "LocalConversationState",
          "longName": "LocalConversationState",
          "fullName": "berty.messenger.v1.LocalConversationState",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "unread_count",
              "description": "",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_open",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "Conversation.Type",
              "fullType": "berty.messenger.v1.Conversation.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "LocalDatabaseState",
          "longName": "LocalDatabaseState",
          "fullName": "berty.messenger.v1.LocalDatabaseState",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "replicate_flag",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "local_conversations_state",
              "description": "",
              "label": "repeated",
              "type": "LocalConversationState",
              "longType": "LocalConversationState",
              "fullType": "berty.messenger.v1.LocalConversationState",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "auto_share_push_token_flag",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Member",
          "longName": "Member",
          "fullName": "berty.messenger.v1.Member",
          "description": "Composite primary key",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "display_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_me",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_creator",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "info_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "devices",
              "description": "",
              "label": "repeated",
              "type": "Device",
              "longType": "Device",
              "fullType": "berty.messenger.v1.Device",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "MemberWithDevices",
          "longName": "MemberWithDevices",
          "fullName": "berty.messenger.v1.MemberWithDevices",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "member_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "devices_pks",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "MessageSearch",
          "longName": "MessageSearch",
          "fullName": "berty.messenger.v1.MessageSearch",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "MessageSearch.Reply",
          "fullName": "berty.messenger.v1.MessageSearch.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "results",
              "description": "",
              "label": "repeated",
              "type": "Interaction",
              "longType": "Interaction",
              "fullType": "berty.messenger.v1.Interaction",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "MessageSearch.Request",
          "fullName": "berty.messenger.v1.MessageSearch.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "query",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "before_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "after_date",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "limit",
              "description": "",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "ref_cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "oldest_to_newest",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "MetadataEvent",
          "longName": "MetadataEvent",
          "fullName": "berty.messenger.v1.MetadataEvent",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "metadata_event_type",
              "description": "",
              "label": "",
              "type": "EventType",
              "longType": "weshnet.protocol.v1.EventType",
              "fullType": "weshnet.protocol.v1.EventType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PaginatedInteractionsOptions",
          "longName": "PaginatedInteractionsOptions",
          "fullName": "berty.messenger.v1.PaginatedInteractionsOptions",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "amount",
              "description": "amount Number of entries to be returned. Default is 5.",
              "label": "",
              "type": "int32",
              "longType": "int32",
              "fullType": "int32",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "ref_cid",
              "description": "ref_cid Reference CID for used for pagination defaulting to oldest/newest depending on sorting. When specified this CID won't be included in the results.",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_pk",
              "description": "conversation_pk Filter by conversation, otherwise X latest message of each conversation are returned",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "oldest_to_newest",
              "description": "oldest_to_newest Default sort of results is latest to oldest message",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "no_bulk",
              "description": "no_bulk should interactions be via atomic update in the stream",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ParseDeepLink",
          "longName": "ParseDeepLink",
          "fullName": "berty.messenger.v1.ParseDeepLink",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ParseDeepLink.Reply",
          "fullName": "berty.messenger.v1.ParseDeepLink.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "BertyLink",
              "longType": "BertyLink",
              "fullType": "berty.messenger.v1.BertyLink",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ParseDeepLink.Request",
          "fullName": "berty.messenger.v1.ParseDeepLink.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "passphrase",
              "description": "optional passphase to decrypt the link",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushDeviceToken",
          "longName": "PushDeviceToken",
          "fullName": "berty.messenger.v1.PushDeviceToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_pk",
              "description": "account_pk is the account public key that owns the device token",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token_type",
              "description": "token_type is the type of the token used, it allows us to act as a proxy to the appropriate push server",
              "label": "",
              "type": "PushServiceTokenType",
              "longType": "berty.push.v1.PushServiceTokenType",
              "fullType": "berty.push.v1.PushServiceTokenType",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "bundle_id",
              "description": "bundle_id is the app identifier",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token",
              "description": "token is the device identifier used",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "public_key",
              "description": "public_key is the public key which will be used to encrypt the payload",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushLocalDeviceSharedToken",
          "longName": "PushLocalDeviceSharedToken",
          "fullName": "berty.messenger.v1.PushLocalDeviceSharedToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "group_pk is the public key of the group for whom the token is for",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushMemberToken",
          "longName": "PushMemberToken",
          "fullName": "berty.messenger.v1.PushMemberToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token_id",
              "description": "token_id is the id of the token",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "group_pk is the public key of the group for whom the token is for",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "device_pk",
              "description": "device_pk is the public key of the device sending the message",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "server_addr is the push server address",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_key",
              "description": "server_key is the push server public key",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token",
              "description": "token is the sealed token of the device",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushMemberTokenUpdate",
          "longName": "PushMemberTokenUpdate",
          "fullName": "berty.messenger.v1.PushMemberTokenUpdate",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "device_pk",
              "description": "device_pk is the public key of the device sending the message",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server",
              "description": "server is the push server to use",
              "label": "",
              "type": "PushServer",
              "longType": "PushServer",
              "fullType": "berty.messenger.v1.PushServer",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token",
              "description": "token is the sealed token of the device",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushReceive",
          "longName": "PushReceive",
          "fullName": "berty.messenger.v1.PushReceive",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushReceive.Reply",
          "fullName": "berty.messenger.v1.PushReceive.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "data",
              "description": "",
              "label": "",
              "type": "PushReceivedData",
              "longType": "PushReceivedData",
              "fullType": "berty.messenger.v1.PushReceivedData",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "PushReceive.Request",
          "fullName": "berty.messenger.v1.PushReceive.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushReceivedData",
          "longName": "PushReceivedData",
          "fullName": "berty.messenger.v1.PushReceivedData",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "protocol_data",
              "description": "",
              "label": "",
              "type": "Reply",
              "longType": "weshnet.protocol.v1.OutOfStoreReceive.Reply",
              "fullType": "weshnet.protocol.v1.OutOfStoreReceive.Reply",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "interaction",
              "description": "",
              "label": "",
              "type": "Interaction",
              "longType": "Interaction",
              "fullType": "berty.messenger.v1.Interaction",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "already_received",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_muted",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_muted",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "hide_preview",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSend",
          "longName": "PushSend",
          "fullName": "berty.messenger.v1.PushSend",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushSend.Reply",
          "fullName": "berty.messenger.v1.PushSend.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group_members",
              "description": "",
              "label": "repeated",
              "type": "MemberWithDevices",
              "longType": "MemberWithDevices",
              "fullType": "berty.messenger.v1.MemberWithDevices",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "PushSend.Request",
          "fullName": "berty.messenger.v1.PushSend.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_members",
              "description": "",
              "label": "repeated",
              "type": "MemberWithDevices",
              "longType": "MemberWithDevices",
              "fullType": "berty.messenger.v1.MemberWithDevices",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushServer",
          "longName": "PushServer",
          "fullName": "berty.messenger.v1.PushServer",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "key",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushServerRecord",
          "longName": "PushServerRecord",
          "fullName": "berty.messenger.v1.PushServerRecord",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_addr",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server_key",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetAutoShare",
          "longName": "PushSetAutoShare",
          "fullName": "berty.messenger.v1.PushSetAutoShare",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushSetAutoShare.Reply",
          "fullName": "berty.messenger.v1.PushSetAutoShare.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "PushSetAutoShare.Request",
          "fullName": "berty.messenger.v1.PushSetAutoShare.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "enabled",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetDeviceToken",
          "longName": "PushSetDeviceToken",
          "fullName": "berty.messenger.v1.PushSetDeviceToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushSetDeviceToken.Reply",
          "fullName": "berty.messenger.v1.PushSetDeviceToken.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "PushSetDeviceToken.Request",
          "fullName": "berty.messenger.v1.PushSetDeviceToken.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "receiver",
              "description": "",
              "label": "",
              "type": "PushServiceReceiver",
              "longType": "berty.push.v1.PushServiceReceiver",
              "fullType": "berty.push.v1.PushServiceReceiver",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushSetServer",
          "longName": "PushSetServer",
          "fullName": "berty.messenger.v1.PushSetServer",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushSetServer.Reply",
          "fullName": "berty.messenger.v1.PushSetServer.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "PushSetServer.Request",
          "fullName": "berty.messenger.v1.PushSetServer.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "server",
              "description": "",
              "label": "",
              "type": "PushServer",
              "longType": "PushServer",
              "fullType": "berty.messenger.v1.PushServer",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushShareToken",
          "longName": "PushShareToken",
          "fullName": "berty.messenger.v1.PushShareToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushShareToken.Reply",
          "fullName": "berty.messenger.v1.PushShareToken.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "PushShareToken.Request",
          "fullName": "berty.messenger.v1.PushShareToken.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "device_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "server",
              "description": "",
              "label": "",
              "type": "PushServer",
              "longType": "PushServer",
              "fullType": "berty.messenger.v1.PushServer",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "receiver",
              "description": "",
              "label": "",
              "type": "PushServiceReceiver",
              "longType": "berty.push.v1.PushServiceReceiver",
              "fullType": "berty.push.v1.PushServiceReceiver",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushShareTokenForConversation",
          "longName": "PushShareTokenForConversation",
          "fullName": "berty.messenger.v1.PushShareTokenForConversation",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushShareTokenForConversation.Reply",
          "fullName": "berty.messenger.v1.PushShareTokenForConversation.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "PushShareTokenForConversation.Request",
          "fullName": "berty.messenger.v1.PushShareTokenForConversation.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PushTokenSharedForConversation",
          "longName": "PushTokenSharedForConversation",
          "fullName": "berty.messenger.v1.PushTokenSharedForConversation",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "PushTokenSharedForConversation.Reply",
          "fullName": "berty.messenger.v1.PushTokenSharedForConversation.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token",
              "description": "",
              "label": "",
              "type": "PushMemberToken",
              "longType": "PushMemberToken",
              "fullType": "berty.messenger.v1.PushMemberToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "PushTokenSharedForConversation.Request",
          "fullName": "berty.messenger.v1.PushTokenSharedForConversation.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ReplicationServiceRegisterGroup",
          "longName": "ReplicationServiceRegisterGroup",
          "fullName": "berty.messenger.v1.ReplicationServiceRegisterGroup",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ReplicationServiceRegisterGroup.Reply",
          "fullName": "berty.messenger.v1.ReplicationServiceRegisterGroup.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ReplicationServiceRegisterGroup.Request",
          "fullName": "berty.messenger.v1.ReplicationServiceRegisterGroup.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ReplicationSetAutoEnable",
          "longName": "ReplicationSetAutoEnable",
          "fullName": "berty.messenger.v1.ReplicationSetAutoEnable",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ReplicationSetAutoEnable.Reply",
          "fullName": "berty.messenger.v1.ReplicationSetAutoEnable.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "ReplicationSetAutoEnable.Request",
          "fullName": "berty.messenger.v1.ReplicationSetAutoEnable.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "enabled",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "SendContactRequest",
          "longName": "SendContactRequest",
          "fullName": "berty.messenger.v1.SendContactRequest",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "SendContactRequest.Reply",
          "fullName": "berty.messenger.v1.SendContactRequest.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Request",
          "longName": "SendContactRequest.Request",
          "fullName": "berty.messenger.v1.SendContactRequest.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "berty_id",
              "description": "",
              "label": "",
              "type": "BertyID",
              "longType": "BertyID",
              "fullType": "berty.messenger.v1.BertyID",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "metadata",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "own_metadata",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceToken",
          "longName": "ServiceToken",
          "fullName": "berty.messenger.v1.ServiceToken",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "supported_services",
              "description": "",
              "label": "repeated",
              "type": "ServiceTokenSupportedServiceRecord",
              "longType": "ServiceTokenSupportedServiceRecord",
              "fullType": "berty.messenger.v1.ServiceTokenSupportedServiceRecord",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "authentication_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "expiration",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceTokenSupportedService",
          "longName": "ServiceTokenSupportedService",
          "fullName": "berty.messenger.v1.ServiceTokenSupportedService",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "address",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceTokenSupportedServiceRecord",
          "longName": "ServiceTokenSupportedServiceRecord",
          "fullName": "berty.messenger.v1.ServiceTokenSupportedServiceRecord",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "address",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServicesTokenCode",
          "longName": "ServicesTokenCode",
          "fullName": "berty.messenger.v1.ServicesTokenCode",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "services",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "code_challenge",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "token_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServicesTokenList",
          "longName": "ServicesTokenList",
          "fullName": "berty.messenger.v1.ServicesTokenList",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ServicesTokenList.Reply",
          "fullName": "berty.messenger.v1.ServicesTokenList.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "service",
              "description": "",
              "label": "",
              "type": "ServiceToken",
              "longType": "ServiceToken",
              "fullType": "berty.messenger.v1.ServiceToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ServicesTokenList.Request",
          "fullName": "berty.messenger.v1.ServicesTokenList.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "ShareableBertyGroup",
          "longName": "ShareableBertyGroup",
          "fullName": "berty.messenger.v1.ShareableBertyGroup",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "ShareableBertyGroup.Reply",
          "fullName": "berty.messenger.v1.ShareableBertyGroup.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "link",
              "description": "",
              "label": "",
              "type": "BertyLink",
              "longType": "BertyLink",
              "fullType": "berty.messenger.v1.BertyLink",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "internal_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "web_url",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "ShareableBertyGroup.Request",
          "fullName": "berty.messenger.v1.ShareableBertyGroup.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_name",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "StreamEvent",
          "longName": "StreamEvent",
          "fullName": "berty.messenger.v1.StreamEvent",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "StreamEvent.Type",
              "fullType": "berty.messenger.v1.StreamEvent.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "is_new",
              "description": "specific to \"*Updated\" events",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "AccountUpdated",
          "longName": "StreamEvent.AccountUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.AccountUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "account",
              "description": "",
              "label": "",
              "type": "Account",
              "longType": "Account",
              "fullType": "berty.messenger.v1.Account",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ContactUpdated",
          "longName": "StreamEvent.ContactUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.ContactUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "contact",
              "description": "",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationDeleted",
          "longName": "StreamEvent.ConversationDeleted",
          "fullName": "berty.messenger.v1.StreamEvent.ConversationDeleted",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationPartialLoad",
          "longName": "StreamEvent.ConversationPartialLoad",
          "fullName": "berty.messenger.v1.StreamEvent.ConversationPartialLoad",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "interactions",
              "description": "",
              "label": "repeated",
              "type": "Interaction",
              "longType": "Interaction",
              "fullType": "berty.messenger.v1.Interaction",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ConversationUpdated",
          "longName": "StreamEvent.ConversationUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.ConversationUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "DeviceUpdated",
          "longName": "StreamEvent.DeviceUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.DeviceUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "device",
              "description": "",
              "label": "",
              "type": "Device",
              "longType": "Device",
              "fullType": "berty.messenger.v1.Device",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "InteractionDeleted",
          "longName": "StreamEvent.InteractionDeleted",
          "fullName": "berty.messenger.v1.StreamEvent.InteractionDeleted",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "cid",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_public_key",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "InteractionUpdated",
          "longName": "StreamEvent.InteractionUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.InteractionUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "interaction",
              "description": "",
              "label": "",
              "type": "Interaction",
              "longType": "Interaction",
              "fullType": "berty.messenger.v1.Interaction",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ListEnded",
          "longName": "StreamEvent.ListEnded",
          "fullName": "berty.messenger.v1.StreamEvent.ListEnded",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "MemberUpdated",
          "longName": "StreamEvent.MemberUpdated",
          "fullName": "berty.messenger.v1.StreamEvent.MemberUpdated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "member",
              "description": "",
              "label": "",
              "type": "Member",
              "longType": "Member",
              "fullType": "berty.messenger.v1.Member",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Notified",
          "longName": "StreamEvent.Notified",
          "fullName": "berty.messenger.v1.StreamEvent.Notified",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "type",
              "description": "",
              "label": "",
              "type": "Type",
              "longType": "StreamEvent.Notified.Type",
              "fullType": "berty.messenger.v1.StreamEvent.Notified.Type",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "title",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "body",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "payload",
              "description": "",
              "label": "",
              "type": "bytes",
              "longType": "bytes",
              "fullType": "bytes",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Basic",
          "longName": "StreamEvent.Notified.Basic",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.Basic",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "ContactRequestReceived",
          "longName": "StreamEvent.Notified.ContactRequestReceived",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.ContactRequestReceived",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "contact",
              "description": "",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ContactRequestSent",
          "longName": "StreamEvent.Notified.ContactRequestSent",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.ContactRequestSent",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "contact",
              "description": "",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "GroupInvitation",
          "longName": "StreamEvent.Notified.GroupInvitation",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.GroupInvitation",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact",
              "description": "",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "MessageReceived",
          "longName": "StreamEvent.Notified.MessageReceived",
          "fullName": "berty.messenger.v1.StreamEvent.Notified.MessageReceived",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "interaction",
              "description": "",
              "label": "",
              "type": "Interaction",
              "longType": "Interaction",
              "fullType": "berty.messenger.v1.Interaction",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation",
              "description": "",
              "label": "",
              "type": "Conversation",
              "longType": "Conversation",
              "fullType": "berty.messenger.v1.Conversation",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contact",
              "description": "",
              "label": "",
              "type": "Contact",
              "longType": "Contact",
              "fullType": "berty.messenger.v1.Contact",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PeerStatusConnected",
          "longName": "StreamEvent.PeerStatusConnected",
          "fullName": "berty.messenger.v1.StreamEvent.PeerStatusConnected",
          "description": "status events",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "peer_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "transport",
              "description": "",
              "label": "",
              "type": "Transport",
              "longType": "StreamEvent.PeerStatusConnected.Transport",
              "fullType": "berty.messenger.v1.StreamEvent.PeerStatusConnected.Transport",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PeerStatusDisconnected",
          "longName": "StreamEvent.PeerStatusDisconnected",
          "fullName": "berty.messenger.v1.StreamEvent.PeerStatusDisconnected",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "peer_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PeerStatusGroupAssociated",
          "longName": "StreamEvent.PeerStatusGroupAssociated",
          "fullName": "berty.messenger.v1.StreamEvent.PeerStatusGroupAssociated",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "peer_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "device_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "group_pk",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "PeerStatusReconnecting",
          "longName": "StreamEvent.PeerStatusReconnecting",
          "fullName": "berty.messenger.v1.StreamEvent.PeerStatusReconnecting",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "peer_id",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "ServiceTokenAdded",
          "longName": "StreamEvent.ServiceTokenAdded",
          "fullName": "berty.messenger.v1.StreamEvent.ServiceTokenAdded",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "token",
              "description": "",
              "label": "",
              "type": "ServiceToken",
              "longType": "ServiceToken",
              "fullType": "berty.messenger.v1.ServiceToken",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "SystemInfo",
          "longName": "SystemInfo",
          "fullName": "berty.messenger.v1.SystemInfo",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "DB",
          "longName": "SystemInfo.DB",
          "fullName": "berty.messenger.v1.SystemInfo.DB",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "accounts",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "contacts",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversations",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "interactions",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "members",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "devices",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "service_token_supported_service_records",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "service_tokens",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "conversation_replication_info",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "metadata_events",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_member_token",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_verified_credentials",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "account_directory_service_record",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_device_token",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_server_record",
              "description": "",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "push_local_device_shared_token",
              "description": "older, more recent",
              "label": "",
              "type": "int64",
              "longType": "int64",
              "fullType": "int64",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Messenger",
          "longName": "SystemInfo.Messenger",
          "fullName": "berty.messenger.v1.SystemInfo.Messenger",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "process",
              "description": "",
              "label": "",
              "type": "Process",
              "longType": "weshnet.protocol.v1.SystemInfo.Process",
              "fullType": "weshnet.protocol.v1.SystemInfo.Process",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "warns",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "protocol_in_same_process",
              "description": "",
              "label": "",
              "type": "bool",
              "longType": "bool",
              "fullType": "bool",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "db",
              "description": "",
              "label": "",
              "type": "DB",
              "longType": "SystemInfo.DB",
              "fullType": "berty.messenger.v1.SystemInfo.DB",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Reply",
          "longName": "SystemInfo.Reply",
          "fullName": "berty.messenger.v1.SystemInfo.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "protocol",
              "description": "",
              "label": "",
              "type": "Reply",
              "longType": "weshnet.protocol.v1.SystemInfo.Reply",
              "fullType": "weshnet.protocol.v1.SystemInfo.Reply",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "messenger",
              "description": "",
              "label": "",
              "type": "Messenger",
              "longType": "SystemInfo.Messenger",
              "fullType": "berty.messenger.v1.SystemInfo.Messenger",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "SystemInfo.Request",
          "fullName": "berty.messenger.v1.SystemInfo.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "TyberHostAttach",
          "longName": "TyberHostAttach",
          "fullName": "berty.messenger.v1.TyberHostAttach",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "TyberHostAttach.Reply",
          "fullName": "berty.messenger.v1.TyberHostAttach.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "address",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "TyberHostAttach.Request",
          "fullName": "berty.messenger.v1.TyberHostAttach.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "addresses",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "TyberHostSearch",
          "longName": "TyberHostSearch",
          "fullName": "berty.messenger.v1.TyberHostSearch",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        },
        {
          "name": "Reply",
          "longName": "TyberHostSearch.Reply",
          "fullName": "berty.messenger.v1.TyberHostSearch.Reply",
          "description": "",
          "hasExtensions": false,
          "hasFields": true,
          "hasOneofs": false,
          "extensions": [],
          "fields": [
            {
              "name": "hostname",
              "description": "",
              "label": "",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "ipv4",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            },
            {
              "name": "ipv6",
              "description": "",
              "label": "repeated",
              "type": "string",
              "longType": "string",
              "fullType": "string",
              "ismap": false,
              "isoneof": false,
              "oneofdecl": "",
              "defaultValue": ""
            }
          ]
        },
        {
          "name": "Request",
          "longName": "TyberHostSearch.Request",
          "fullName": "berty.messenger.v1.TyberHostSearch.Request",
          "description": "",
          "hasExtensions": false,
          "hasFields": false,
          "hasOneofs": false,
          "extensions": [],
          "fields": []
        }
      ],
      "services": [
        {
          "name": "MessengerService",
          "longName": "MessengerService",
          "fullName": "berty.messenger.v1.MessengerService",
          "description": "MessengerService is the top-level API that uses the weshnet.protocol to implement the Berty Messenger specific logic.\nToday, most of the Berty Messenger logic is implemented directly in the application (see the /js folder of this repo).",
          "methods": [
            {
              "name": "InstanceShareableBertyID",
              "description": "InstanceShareableBertyID returns a Berty ID that can be shared as a string, QR code or deep link.",
              "requestType": "Request",
              "requestLongType": "InstanceShareableBertyID.Request",
              "requestFullType": "berty.messenger.v1.InstanceShareableBertyID.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "InstanceShareableBertyID.Reply",
              "responseFullType": "berty.messenger.v1.InstanceShareableBertyID.Reply",
              "responseStreaming": false
            },
            {
              "name": "ShareableBertyGroup",
              "description": "ShareableBertyGroup returns a Berty Group that can be shared as a string, QR code or deep link.",
              "requestType": "Request",
              "requestLongType": "ShareableBertyGroup.Request",
              "requestFullType": "berty.messenger.v1.ShareableBertyGroup.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ShareableBertyGroup.Reply",
              "responseFullType": "berty.messenger.v1.ShareableBertyGroup.Reply",
              "responseStreaming": false
            },
            {
              "name": "DevShareInstanceBertyID",
              "description": "DevShareInstanceBertyID shares your Berty ID on a dev channel.\nTODO: remove for public.",
              "requestType": "Request",
              "requestLongType": "DevShareInstanceBertyID.Request",
              "requestFullType": "berty.messenger.v1.DevShareInstanceBertyID.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DevShareInstanceBertyID.Reply",
              "responseFullType": "berty.messenger.v1.DevShareInstanceBertyID.Reply",
              "responseStreaming": false
            },
            {
              "name": "DevStreamLogs",
              "description": "DevStreamLogs streams logs from the ring-buffer.",
              "requestType": "Request",
              "requestLongType": "DevStreamLogs.Request",
              "requestFullType": "berty.messenger.v1.DevStreamLogs.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DevStreamLogs.Reply",
              "responseFullType": "berty.messenger.v1.DevStreamLogs.Reply",
              "responseStreaming": true
            },
            {
              "name": "ParseDeepLink",
              "description": "ParseDeepLink parses a link in the form of berty://xxx or https://berty.tech/id# and returns a structure\nthat can be used to display information.\nThis action is read-only.",
              "requestType": "Request",
              "requestLongType": "ParseDeepLink.Request",
              "requestFullType": "berty.messenger.v1.ParseDeepLink.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ParseDeepLink.Reply",
              "responseFullType": "berty.messenger.v1.ParseDeepLink.Reply",
              "responseStreaming": false
            },
            {
              "name": "SendContactRequest",
              "description": "SendContactRequest takes the payload received from ParseDeepLink and send a contact request using the weshnet.protocol.",
              "requestType": "Request",
              "requestLongType": "SendContactRequest.Request",
              "requestFullType": "berty.messenger.v1.SendContactRequest.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "SendContactRequest.Reply",
              "responseFullType": "berty.messenger.v1.SendContactRequest.Reply",
              "responseStreaming": false
            },
            {
              "name": "SystemInfo",
              "description": "SystemInfo returns runtime information.",
              "requestType": "Request",
              "requestLongType": "SystemInfo.Request",
              "requestFullType": "berty.messenger.v1.SystemInfo.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "SystemInfo.Reply",
              "responseFullType": "berty.messenger.v1.SystemInfo.Reply",
              "responseStreaming": false
            },
            {
              "name": "EchoTest",
              "description": "Use to test stream.",
              "requestType": "Request",
              "requestLongType": "EchoTest.Request",
              "requestFullType": "berty.messenger.v1.EchoTest.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "EchoTest.Reply",
              "responseFullType": "berty.messenger.v1.EchoTest.Reply",
              "responseStreaming": true
            },
            {
              "name": "EchoDuplexTest",
              "description": "Use to test duplex stream.",
              "requestType": "Request",
              "requestLongType": "EchoDuplexTest.Request",
              "requestFullType": "berty.messenger.v1.EchoDuplexTest.Request",
              "requestStreaming": true,
              "responseType": "Reply",
              "responseLongType": "EchoDuplexTest.Reply",
              "responseFullType": "berty.messenger.v1.EchoDuplexTest.Reply",
              "responseStreaming": true
            },
            {
              "name": "ConversationStream",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationStream.Request",
              "requestFullType": "berty.messenger.v1.ConversationStream.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationStream.Reply",
              "responseFullType": "berty.messenger.v1.ConversationStream.Reply",
              "responseStreaming": true
            },
            {
              "name": "EventStream",
              "description": "",
              "requestType": "Request",
              "requestLongType": "EventStream.Request",
              "requestFullType": "berty.messenger.v1.EventStream.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "EventStream.Reply",
              "responseFullType": "berty.messenger.v1.EventStream.Reply",
              "responseStreaming": true
            },
            {
              "name": "ConversationCreate",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationCreate.Request",
              "requestFullType": "berty.messenger.v1.ConversationCreate.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationCreate.Reply",
              "responseFullType": "berty.messenger.v1.ConversationCreate.Reply",
              "responseStreaming": false
            },
            {
              "name": "ConversationJoin",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationJoin.Request",
              "requestFullType": "berty.messenger.v1.ConversationJoin.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationJoin.Reply",
              "responseFullType": "berty.messenger.v1.ConversationJoin.Reply",
              "responseStreaming": false
            },
            {
              "name": "AccountGet",
              "description": "",
              "requestType": "Request",
              "requestLongType": "AccountGet.Request",
              "requestFullType": "berty.messenger.v1.AccountGet.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "AccountGet.Reply",
              "responseFullType": "berty.messenger.v1.AccountGet.Reply",
              "responseStreaming": false
            },
            {
              "name": "AccountUpdate",
              "description": "",
              "requestType": "Request",
              "requestLongType": "AccountUpdate.Request",
              "requestFullType": "berty.messenger.v1.AccountUpdate.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "AccountUpdate.Reply",
              "responseFullType": "berty.messenger.v1.AccountUpdate.Reply",
              "responseStreaming": false
            },
            {
              "name": "AccountPushConfigure",
              "description": "",
              "requestType": "Request",
              "requestLongType": "AccountPushConfigure.Request",
              "requestFullType": "berty.messenger.v1.AccountPushConfigure.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "AccountPushConfigure.Reply",
              "responseFullType": "berty.messenger.v1.AccountPushConfigure.Reply",
              "responseStreaming": false
            },
            {
              "name": "ContactRequest",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ContactRequest.Request",
              "requestFullType": "berty.messenger.v1.ContactRequest.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ContactRequest.Reply",
              "responseFullType": "berty.messenger.v1.ContactRequest.Reply",
              "responseStreaming": false
            },
            {
              "name": "ContactAccept",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ContactAccept.Request",
              "requestFullType": "berty.messenger.v1.ContactAccept.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ContactAccept.Reply",
              "responseFullType": "berty.messenger.v1.ContactAccept.Reply",
              "responseStreaming": false
            },
            {
              "name": "Interact",
              "description": "",
              "requestType": "Request",
              "requestLongType": "Interact.Request",
              "requestFullType": "berty.messenger.v1.Interact.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "Interact.Reply",
              "responseFullType": "berty.messenger.v1.Interact.Reply",
              "responseStreaming": false
            },
            {
              "name": "ConversationOpen",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationOpen.Request",
              "requestFullType": "berty.messenger.v1.ConversationOpen.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationOpen.Reply",
              "responseFullType": "berty.messenger.v1.ConversationOpen.Reply",
              "responseStreaming": false
            },
            {
              "name": "ConversationClose",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationClose.Request",
              "requestFullType": "berty.messenger.v1.ConversationClose.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationClose.Reply",
              "responseFullType": "berty.messenger.v1.ConversationClose.Reply",
              "responseStreaming": false
            },
            {
              "name": "ConversationLoad",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationLoad.Request",
              "requestFullType": "berty.messenger.v1.ConversationLoad.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationLoad.Reply",
              "responseFullType": "berty.messenger.v1.ConversationLoad.Reply",
              "responseStreaming": false
            },
            {
              "name": "ConversationMute",
              "description": "",
              "requestType": "Request",
              "requestLongType": "ConversationMute.Request",
              "requestFullType": "berty.messenger.v1.ConversationMute.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ConversationMute.Reply",
              "responseFullType": "berty.messenger.v1.ConversationMute.Reply",
              "responseStreaming": false
            },
            {
              "name": "ReplicationServiceRegisterGroup",
              "description": "ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents",
              "requestType": "Request",
              "requestLongType": "ReplicationServiceRegisterGroup.Request",
              "requestFullType": "berty.messenger.v1.ReplicationServiceRegisterGroup.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ReplicationServiceRegisterGroup.Reply",
              "responseFullType": "berty.messenger.v1.ReplicationServiceRegisterGroup.Reply",
              "responseStreaming": false
            },
            {
              "name": "ReplicationSetAutoEnable",
              "description": "ReplicationSetAutoEnable Sets whether new groups should be replicated automatically or not",
              "requestType": "Request",
              "requestLongType": "ReplicationSetAutoEnable.Request",
              "requestFullType": "berty.messenger.v1.ReplicationSetAutoEnable.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ReplicationSetAutoEnable.Reply",
              "responseFullType": "berty.messenger.v1.ReplicationSetAutoEnable.Reply",
              "responseStreaming": false
            },
            {
              "name": "BannerQuote",
              "description": "BannerQuote returns the quote of the day.",
              "requestType": "Request",
              "requestLongType": "BannerQuote.Request",
              "requestFullType": "berty.messenger.v1.BannerQuote.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "BannerQuote.Reply",
              "responseFullType": "berty.messenger.v1.BannerQuote.Reply",
              "responseStreaming": false
            },
            {
              "name": "InstanceExportData",
              "description": "InstanceExportData exports instance data",
              "requestType": "Request",
              "requestLongType": "InstanceExportData.Request",
              "requestFullType": "berty.messenger.v1.InstanceExportData.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "InstanceExportData.Reply",
              "responseFullType": "berty.messenger.v1.InstanceExportData.Reply",
              "responseStreaming": true
            },
            {
              "name": "MessageSearch",
              "description": "MessageSearch",
              "requestType": "Request",
              "requestLongType": "MessageSearch.Request",
              "requestFullType": "berty.messenger.v1.MessageSearch.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "MessageSearch.Reply",
              "responseFullType": "berty.messenger.v1.MessageSearch.Reply",
              "responseStreaming": false
            },
            {
              "name": "ListMemberDevices",
              "description": "ListMemberDevices Lists devices for a member",
              "requestType": "Request",
              "requestLongType": "ListMemberDevices.Request",
              "requestFullType": "berty.messenger.v1.ListMemberDevices.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ListMemberDevices.Reply",
              "responseFullType": "berty.messenger.v1.ListMemberDevices.Reply",
              "responseStreaming": true
            },
            {
              "name": "TyberHostSearch",
              "description": "TyberHostSearch",
              "requestType": "Request",
              "requestLongType": "TyberHostSearch.Request",
              "requestFullType": "berty.messenger.v1.TyberHostSearch.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "TyberHostSearch.Reply",
              "responseFullType": "berty.messenger.v1.TyberHostSearch.Reply",
              "responseStreaming": true
            },
            {
              "name": "TyberHostAttach",
              "description": "TyberHostAttach",
              "requestType": "Request",
              "requestLongType": "TyberHostAttach.Request",
              "requestFullType": "berty.messenger.v1.TyberHostAttach.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "TyberHostAttach.Reply",
              "responseFullType": "berty.messenger.v1.TyberHostAttach.Reply",
              "responseStreaming": false
            },
            {
              "name": "DebugAuthServiceSetToken",
              "description": "DebugAuthServiceSetToken sets the service token directly without using the PKCE OAuth 2 token issuer",
              "requestType": "Request",
              "requestLongType": "DebugAuthServiceSetToken.Request",
              "requestFullType": "berty.messenger.v1.DebugAuthServiceSetToken.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DebugAuthServiceSetToken.Reply",
              "responseFullType": "berty.messenger.v1.DebugAuthServiceSetToken.Reply",
              "responseStreaming": false
            },
            {
              "name": "ServicesTokenList",
              "description": "ServicesTokenList Retrieves the list of service server tokens",
              "requestType": "Request",
              "requestLongType": "ServicesTokenList.Request",
              "requestFullType": "berty.messenger.v1.ServicesTokenList.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "ServicesTokenList.Reply",
              "responseFullType": "berty.messenger.v1.ServicesTokenList.Reply",
              "responseStreaming": true
            },
            {
              "name": "AuthServiceInitFlow",
              "description": "AuthServiceInitFlow Initialize an authentication flow",
              "requestType": "Request",
              "requestLongType": "AuthServiceInitFlow.Request",
              "requestFullType": "berty.messenger.v1.AuthServiceInitFlow.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "AuthServiceInitFlow.Reply",
              "responseFullType": "berty.messenger.v1.AuthServiceInitFlow.Reply",
              "responseStreaming": false
            },
            {
              "name": "AuthServiceCompleteFlow",
              "description": "AuthServiceCompleteFlow Completes an authentication flow",
              "requestType": "Request",
              "requestLongType": "AuthServiceCompleteFlow.Request",
              "requestFullType": "berty.messenger.v1.AuthServiceCompleteFlow.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "AuthServiceCompleteFlow.Reply",
              "responseFullType": "berty.messenger.v1.AuthServiceCompleteFlow.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushSetAutoShare",
              "description": "PushSetAutoShare Sets whether new groups should receive our push token automatically or not",
              "requestType": "Request",
              "requestLongType": "PushSetAutoShare.Request",
              "requestFullType": "berty.messenger.v1.PushSetAutoShare.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushSetAutoShare.Reply",
              "responseFullType": "berty.messenger.v1.PushSetAutoShare.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushShareTokenForConversation",
              "description": "PushShareTokenForConversation Share a push token for a conversation",
              "requestType": "Request",
              "requestLongType": "PushShareTokenForConversation.Request",
              "requestFullType": "berty.messenger.v1.PushShareTokenForConversation.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushShareTokenForConversation.Reply",
              "responseFullType": "berty.messenger.v1.PushShareTokenForConversation.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushTokenSharedForConversation",
              "description": "PushTokenSharedForConversation",
              "requestType": "Request",
              "requestLongType": "PushTokenSharedForConversation.Request",
              "requestFullType": "berty.messenger.v1.PushTokenSharedForConversation.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushTokenSharedForConversation.Reply",
              "responseFullType": "berty.messenger.v1.PushTokenSharedForConversation.Reply",
              "responseStreaming": true
            },
            {
              "name": "PushReceive",
              "description": "PushReceive handles a push payload, decrypts it if possible, adds it to the local store",
              "requestType": "Request",
              "requestLongType": "PushReceive.Request",
              "requestFullType": "berty.messenger.v1.PushReceive.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushReceive.Reply",
              "responseFullType": "berty.messenger.v1.PushReceive.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushSend",
              "description": "PushSend sends a push payload to a specified list of group members",
              "requestType": "Request",
              "requestLongType": "PushSend.Request",
              "requestFullType": "berty.messenger.v1.PushSend.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushSend.Reply",
              "responseFullType": "berty.messenger.v1.PushSend.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushSetDeviceToken",
              "description": "PushSetDeviceToken registers a push token for the current device",
              "requestType": "Request",
              "requestLongType": "PushSetDeviceToken.Request",
              "requestFullType": "berty.messenger.v1.PushSetDeviceToken.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushSetDeviceToken.Reply",
              "responseFullType": "berty.messenger.v1.PushSetDeviceToken.Reply",
              "responseStreaming": false
            },
            {
              "name": "PushSetServer",
              "description": "PushSetServer registers a push server for the current device",
              "requestType": "Request",
              "requestLongType": "PushSetServer.Request",
              "requestFullType": "berty.messenger.v1.PushSetServer.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "PushSetServer.Reply",
              "responseFullType": "berty.messenger.v1.PushSetServer.Reply",
              "responseStreaming": false
            },
            {
              "name": "DirectoryServiceRegister",
              "description": "DirectoryServiceRegister registers a verified credential on a directory service",
              "requestType": "Request",
              "requestLongType": "DirectoryServiceRegister.Request",
              "requestFullType": "berty.messenger.v1.DirectoryServiceRegister.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DirectoryServiceRegister.Reply",
              "responseFullType": "berty.messenger.v1.DirectoryServiceRegister.Reply",
              "responseStreaming": false
            },
            {
              "name": "DirectoryServiceUnregister",
              "description": "DirectoryServiceUnregister requests a directory service to remove a verified credential",
              "requestType": "Request",
              "requestLongType": "DirectoryServiceUnregister.Request",
              "requestFullType": "berty.messenger.v1.DirectoryServiceUnregister.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DirectoryServiceUnregister.Reply",
              "responseFullType": "berty.messenger.v1.DirectoryServiceUnregister.Reply",
              "responseStreaming": false
            },
            {
              "name": "DirectoryServiceQuery",
              "description": "DirectoryServiceQuery queries a directory service for given identifiers",
              "requestType": "Request",
              "requestLongType": "DirectoryServiceQuery.Request",
              "requestFullType": "berty.messenger.v1.DirectoryServiceQuery.Request",
              "requestStreaming": false,
              "responseType": "Reply",
              "responseLongType": "DirectoryServiceQuery.Reply",
              "responseFullType": "berty.messenger.v1.DirectoryServiceQuery.Reply",
              "responseStreaming": true
            }
          ]
        }
      ]
    }
  ],
  "scalarValueTypes": [
    {
      "protoType": "double",
      "notes": "",
      "cppType": "double",
      "csType": "double",
      "goType": "float64",
      "javaType": "double",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "float",
      "notes": "",
      "cppType": "float",
      "csType": "float",
      "goType": "float32",
      "javaType": "float",
      "phpType": "float",
      "pythonType": "float",
      "rubyType": "Float"
    },
    {
      "protoType": "int32",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "int64",
      "notes": "Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "uint32",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "uint64",
      "notes": "Uses variable-length encoding.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint32",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sint64",
      "notes": "Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "fixed32",
      "notes": "Always four bytes. More efficient than uint32 if values are often greater than 2^28.",
      "cppType": "uint32",
      "csType": "uint",
      "goType": "uint32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "fixed64",
      "notes": "Always eight bytes. More efficient than uint64 if values are often greater than 2^56.",
      "cppType": "uint64",
      "csType": "ulong",
      "goType": "uint64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "sfixed32",
      "notes": "Always four bytes.",
      "cppType": "int32",
      "csType": "int",
      "goType": "int32",
      "javaType": "int",
      "phpType": "integer",
      "pythonType": "int",
      "rubyType": "Bignum or Fixnum (as required)"
    },
    {
      "protoType": "sfixed64",
      "notes": "Always eight bytes.",
      "cppType": "int64",
      "csType": "long",
      "goType": "int64",
      "javaType": "long",
      "phpType": "integer/string",
      "pythonType": "int/long",
      "rubyType": "Bignum"
    },
    {
      "protoType": "bool",
      "notes": "",
      "cppType": "bool",
      "csType": "bool",
      "goType": "bool",
      "javaType": "boolean",
      "phpType": "boolean",
      "pythonType": "boolean",
      "rubyType": "TrueClass/FalseClass"
    },
    {
      "protoType": "string",
      "notes": "A string must always contain UTF-8 encoded or 7-bit ASCII text.",
      "cppType": "string",
      "csType": "string",
      "goType": "string",
      "javaType": "String",
      "phpType": "string",
      "pythonType": "str/unicode",
      "rubyType": "String (UTF-8)"
    },
    {
      "protoType": "bytes",
      "notes": "May contain any arbitrary sequence of bytes.",
      "cppType": "string",
      "csType": "ByteString",
      "goType": "[]byte",
      "javaType": "ByteString",
      "phpType": "string",
      "pythonType": "str",
      "rubyType": "String (ASCII-8BIT)"
    }
  ]
}