Новый лендинг

This commit is contained in:
2026-07-31 06:06:07 -07:00
parent 8b2af4db62
commit 871c84cedd
8 changed files with 1873 additions and 18 deletions

529
proto/layer.1.yml Normal file
View File

@@ -0,0 +1,529 @@
version: 1
enums:
#Type of attachment
AttachmentType:
type: int8
values:
- id: 0
name: IMAGE #Image
- id: 1
name: MESSAGES #Reply/Forwarded messages
- id: 2
name: FILE #File
- id: 3
name: AVATAR #Avatar
- id: 4
name: CALL #Call
- id: 5
name: VOICE #Voice message
- id: 6
name: VIDEO_CIRCLE #Video circle
#Solution by device after accept or decline request to attach new device
DeviceSolution:
type: int8
values:
- id: 0
name: ACCEPT #Accept device to log in to account
- id: 1
name: DECLINE #Decline device
#Handshake Stage (need for set device confirm view after pass seed)
HandshakeStage:
type: int8
values:
- id: 0
name: COMPLETED
- id: 1
name: NEED_DEVICE_VERIFICATION
GroupStatus:
type: int8
values:
- id: 0
name: JOINED
- id: 1
name: INVALID
- id: 2
name: NOT_JOINED
- id: 3
name: BANNED
NotificationAction:
type: int8
values:
- id: 0
name: SUBSCRIBE
- id: 1
name: UNSUBSCRIBE
SignalType:
type: int8
values:
- id: 0
name: CALL
- id: 1
name: KEY_EXCHANGE
- id: 2
name: ACTIVE_CALL
- id: 3
name: END_CALL
- id: 4
name: ACTIVE
- id: 5
name: END_CALL_BECAUSE_PEER_DISCONNECTED
- id: 6
name: END_CALL_BECAUSE_BUSY
- id: 7
name: ACCEPT
- id: 8
name: RINGING_TIMEOUT
NetworkStatus:
type: int8
values:
- id: 0
name: ONLINE
- id: 1
name: OFFLINE
SyncStatus:
type: int8
values:
- id: 0
name: NOT_NEEDED
- id: 1
name: BATCH_START
- id: 2
name: BATCH_END
WebRTCType:
type: int8
values:
- id: 0
name: OFFER
- id: 1
name: ANSWER
- id: 2
name: ICE_CANDIDATE
ResultCode:
type: int8
values:
- id: 0
name: SUCCESS
- id: 1
name: ERROR
- id: 2
name: INVALID
- id: 3
name: USERNAME_TAKEN
TokenType:
type: int8
values:
- id: 0
name: FCM
- id: 1
name: VoIPApns
types:
Attachment:
fields:
- id: 1
name: id
type: string
- id: 2
name: blob?
type: string
- id: 3
name: type
type: AttachmentType
- id: 4
name: preview
type: string
- id: 5
name: transport
type: AttachmentTransport
AttachmentTransport:
fields:
- id: 1
name: transportTag
type: string
- id: 2
name: transportServer
type: string
NetworkDevice:
fields:
- id: 1
name: networkStatus
type: NetworkStatus
- id: 2
name: deviceName
type: string
- id: 3
name: deviceOs
type: string
- id: 4
name: deviceId
type: string
- id: 5
name: deviceSolution
type: DeviceSolution
PKNetworkStatus:
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: networkStatus
type: NetworkStatus
SearchInfo:
fields:
- id: 1
name: username
type: string
- id: 2
name: title
type: string
- id: 3
name: publicKey
type: string
- id: 4
name: verified
type: int32
- id: 5
name: networkStatus
type: NetworkStatus
RTCIceServer:
fields:
- id: 1
name: url
type: string
- id: 2
name: username
type: string
- id: 3
name: credential
type: string
- id: 4
name: transport
type: string
packets:
Handshake:
id: 0
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: privateKey
type: string
- id: 3
name: deviceId
type: string
- id: 4
name: deviceName
type: string
- id: 5
name: deviceOs
type: string
- id: 6
name: handshakeStage?
type: HandshakeStage
UserInfo:
id: 1
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: username
type: string
- id: 3
name: title
type: string
Result:
id: 2
fields:
- id: 1
name: resultCode
type: ResultCode
Search:
id: 3
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: search
type: string
- id: 3
name: searchInfo?
type: SearchInfo[]
OnlineSubscribe:
id: 4
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: publicKeys
type: string[]
OnlineState:
id: 5
fields:
- id: 1
name: pkNetworkStatuses
type: PKNetworkStatus[]
Message:
id: 6
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
- id: 4
name: content
type: string
- id: 5
name: chachaKey
type: string
- id: 6
name: timestamp
type: int64
- id: 7
name: messageId
type: string
- id: 8
name: attachments?
type: Attachment[]
- id: 9
name: aesChachaKey
type: string
Read:
id: 7
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
Delivery:
id: 8
fields:
- id: 1
name: messageId
type: string
- id: 2
name: toPublicKey
type: string
DeviceNew:
id: 9
fields:
- id: 1
name: ipAddress
type: string
- id: 2
name: deviceId
type: string
- id: 3
name: deviceName
type: string
- id: 4
name: deviceOs
type: string
RequestUpdate:
id: 10
fields:
- id: 1
name: server?
type: string
Typeing:
id: 11
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
RequestTransport:
id: 15
fields:
- id: 1
name: server?
type: string
PushNotification:
id: 16
fields:
- id: 1
name: notificationToken
type: string
- id: 2
name: action
type: NotificationAction
- id: 3
name: tokenType
type: TokenType
- id: 4
name: deviceId
type: string
GroupCreate:
id: 17
fields:
- id: 1
name: groupId
type: string
GroupInfo:
id: 18
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersPKs?
type: string[]
GroupInviteInfo:
id: 19
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersCount?
type: int32
- id: 3
name: status?
type: GroupStatus
GroupJoin:
id: 20
fields:
- id: 1
name: groupId
type: string
- id: 2
name: status?
type: GroupStatus
- id: 3
name: groupString
type: string
GroupLeave:
id: 21
fields:
- id: 1
name: groupId
type: string
GroupBan:
id: 22
fields:
- id: 1
name: groupId
type: string
- id: 2
name: publicKey
type: string
DeviceList:
id: 23
fields:
- id: 1
name: devices
type: NetworkDevice[]
DeviceResolve:
id: 24
fields:
- id: 1
name: deviceId
type: string
- id: 2
name: solution
type: DeviceSolution
Sync:
id: 25
fields:
- id: 1
name: syncStatus
type: SyncStatus
- id: 2
name: timestamp
type: int64
SignalPeer:
id: 26
fields:
- id: 1
name: src
type: string
- id: 2
name: dst
type: string
- id: 3
name: sharedPublic
type: string
- id: 4
name: signalType
type: SignalType
- id: 5
name: callId
type: string
- id: 6
name: joinToken
type: string
WebRTC:
id: 27
fields:
- id: 1
name: sdpOrCandidate
type: string
- id: 2
name: type
type: WebRTCType
IceServers:
id: 28
fields:
- id: 1
name: iceServers?
type: RTCIceServer[]

527
proto/layer.2.yml Normal file
View File

@@ -0,0 +1,527 @@
version: 2
description: Remove avatars as attachments, add video
enums:
AttachmentType:
type: int8
values:
- id: 0
name: IMAGE
- id: 1
name: MESSAGES
- id: 2
name: FILE
- id: 4
name: CALL
- id: 5
name: VOICE
- id: 6
name: VIDEO_CIRCLE
- id: 7
name: VIDEO
DeviceSolution:
type: int8
values:
- id: 0
name: ACCEPT
- id: 1
name: DECLINE
HandshakeStage:
type: int8
values:
- id: 0
name: COMPLETED
- id: 1
name: NEED_DEVICE_VERIFICATION
GroupStatus:
type: int8
values:
- id: 0
name: JOINED
- id: 1
name: INVALID
- id: 2
name: NOT_JOINED
- id: 3
name: BANNED
NotificationAction:
type: int8
values:
- id: 0
name: SUBSCRIBE
- id: 1
name: UNSUBSCRIBE
SignalType:
type: int8
values:
- id: 0
name: CALL
- id: 1
name: KEY_EXCHANGE
- id: 2
name: ACTIVE_CALL
- id: 3
name: END_CALL
- id: 4
name: ACTIVE
- id: 5
name: END_CALL_BECAUSE_PEER_DISCONNECTED
- id: 6
name: END_CALL_BECAUSE_BUSY
- id: 7
name: ACCEPT
- id: 8
name: RINGING_TIMEOUT
NetworkStatus:
type: int8
values:
- id: 0
name: ONLINE
- id: 1
name: OFFLINE
SyncStatus:
type: int8
values:
- id: 0
name: NOT_NEEDED
- id: 1
name: BATCH_START
- id: 2
name: BATCH_END
WebRTCType:
type: int8
values:
- id: 0
name: OFFER
- id: 1
name: ANSWER
- id: 2
name: ICE_CANDIDATE
ResultCode:
type: int8
values:
- id: 0
name: SUCCESS
- id: 1
name: ERROR
- id: 2
name: INVALID
- id: 3
name: USERNAME_TAKEN
TokenType:
type: int8
values:
- id: 0
name: FCM
- id: 1
name: VoIPApns
types:
Attachment:
fields:
- id: 1
name: id
type: string
- id: 2
name: blob?
type: string
- id: 3
name: type
type: AttachmentType
- id: 4
name: preview
type: string
- id: 5
name: transport
type: AttachmentTransport
AttachmentTransport:
fields:
- id: 1
name: transportTag
type: string
- id: 2
name: transportServer
type: string
NetworkDevice:
fields:
- id: 1
name: networkStatus
type: NetworkStatus
- id: 2
name: deviceName
type: string
- id: 3
name: deviceOs
type: string
- id: 4
name: deviceId
type: string
- id: 5
name: deviceSolution
type: DeviceSolution
PKNetworkStatus:
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: networkStatus
type: NetworkStatus
SearchInfo:
fields:
- id: 1
name: username
type: string
- id: 2
name: title
type: string
- id: 3
name: publicKey
type: string
- id: 4
name: verified
type: int32
- id: 5
name: networkStatus
type: NetworkStatus
RTCIceServer:
fields:
- id: 1
name: url
type: string
- id: 2
name: username
type: string
- id: 3
name: credential
type: string
- id: 4
name: transport
type: string
packets:
Handshake:
id: 0
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: privateKey
type: string
- id: 3
name: deviceId
type: string
- id: 4
name: deviceName
type: string
- id: 5
name: deviceOs
type: string
- id: 6
name: handshakeStage?
type: HandshakeStage
UserInfo:
id: 1
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: username
type: string
- id: 3
name: title
type: string
Result:
id: 2
fields:
- id: 1
name: resultCode
type: ResultCode
Search:
id: 3
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: search
type: string
- id: 3
name: searchInfo?
type: SearchInfo[]
OnlineSubscribe:
id: 4
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: publicKeys
type: string[]
OnlineState:
id: 5
fields:
- id: 1
name: pkNetworkStatuses
type: PKNetworkStatus[]
Message:
id: 6
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
- id: 4
name: content
type: string
- id: 5
name: chachaKey
type: string
- id: 6
name: timestamp
type: int64
- id: 7
name: messageId
type: string
- id: 8
name: attachments?
type: Attachment[]
- id: 9
name: aesChachaKey
type: string
Read:
id: 7
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 4
name: timestamp
type: int64
Delivery:
id: 8
fields:
- id: 1
name: messageId
type: string
- id: 2
name: toPublicKey
type: string
DeviceNew:
id: 9
fields:
- id: 1
name: ipAddress
type: string
- id: 2
name: deviceId
type: string
- id: 3
name: deviceName
type: string
- id: 4
name: deviceOs
type: string
RequestUpdate:
id: 10
fields:
- id: 1
name: server?
type: string
Typeing:
id: 11
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
RequestTransport:
id: 15
fields:
- id: 1
name: server?
type: string
PushNotification:
id: 16
fields:
- id: 1
name: notificationToken
type: string
- id: 2
name: action
type: NotificationAction
- id: 3
name: tokenType
type: TokenType
- id: 4
name: deviceId
type: string
GroupCreate:
id: 17
fields:
- id: 1
name: groupId?
type: string
GroupInfo:
id: 18
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersPKs?
type: string[]
GroupInviteInfo:
id: 19
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersCount?
type: int32
- id: 3
name: status?
type: GroupStatus
GroupJoin:
id: 20
fields:
- id: 1
name: groupId
type: string
- id: 2
name: status?
type: GroupStatus
- id: 3
name: groupString
type: string
GroupLeave:
id: 21
fields:
- id: 1
name: groupId
type: string
GroupBan:
id: 22
fields:
- id: 1
name: groupId
type: string
- id: 2
name: publicKey
type: string
DeviceList:
id: 23
fields:
- id: 1
name: devices
type: NetworkDevice[]
DeviceResolve:
id: 24
fields:
- id: 1
name: deviceId
type: string
- id: 2
name: solution
type: DeviceSolution
Sync:
id: 25
fields:
- id: 1
name: syncStatus
type: SyncStatus
- id: 2
name: timestamp
type: int64
SignalPeer:
id: 26
fields:
- id: 1
name: src
type: string
- id: 2
name: dst
type: string
- id: 3
name: sharedPublic?
type: string
- id: 4
name: signalType
type: SignalType
- id: 5
name: callId?
type: string
- id: 6
name: joinToken?
type: string
WebRTC:
id: 27
fields:
- id: 1
name: sdpOrCandidate
type: string
- id: 2
name: type
type: WebRTCType
IceServers:
id: 28
fields:
- id: 1
name: iceServers?
type: RTCIceServer[]

651
proto/layer.3.yml Normal file
View File

@@ -0,0 +1,651 @@
version: 3
description: Add avatars and more CDN safety, remove transport server
enums:
AttachmentType:
type: int8
values:
- id: 0
name: IMAGE
- id: 1
name: MESSAGES
- id: 2
name: FILE
- id: 4
name: CALL
- id: 5
name: VOICE
- id: 6
name: VIDEO_CIRCLE
- id: 7
name: VIDEO
DeviceSolution:
type: int8
values:
- id: 0
name: ACCEPT
- id: 1
name: DECLINE
HandshakeStage:
type: int8
values:
- id: 0
name: COMPLETED
- id: 1
name: NEED_DEVICE_VERIFICATION
GroupStatus:
type: int8
values:
- id: 0
name: JOINED
- id: 1
name: INVALID
- id: 2
name: NOT_JOINED
- id: 3
name: BANNED
NotificationAction:
type: int8
values:
- id: 0
name: SUBSCRIBE
- id: 1
name: UNSUBSCRIBE
SignalType:
type: int8
values:
- id: 0
name: CALL
- id: 1
name: KEY_EXCHANGE
- id: 2
name: ACTIVE_CALL
- id: 3
name: END_CALL
- id: 4
name: ACTIVE
- id: 5
name: END_CALL_BECAUSE_PEER_DISCONNECTED
- id: 6
name: END_CALL_BECAUSE_BUSY
- id: 7
name: ACCEPT
- id: 8
name: RINGING_TIMEOUT
NetworkStatus:
type: int8
values:
- id: 0
name: ONLINE
- id: 1
name: OFFLINE
SyncStatus:
type: int8
values:
- id: 0
name: NOT_NEEDED
- id: 1
name: BATCH_START
- id: 2
name: BATCH_END
WebRTCType:
type: int8
values:
- id: 0
name: OFFER
- id: 1
name: ANSWER
- id: 2
name: ICE_CANDIDATE
ResultCode:
type: int8
values:
- id: 0
name: SUCCESS
- id: 1
name: ERROR
- id: 2
name: INVALID #любая ошибка смысл которой зависит от контекста, например в случае с файловой системой - нет файла
- id: 3
name: USERNAME_TAKEN
- id: 4
name: OVERSIZE #слишком большой размер файла
- id: 5
name: OVERLIFE #слишком большой TTL
TokenType:
type: int8
values:
- id: 0
name: FCM
- id: 1
name: VoIPApns
#Тип медиа файла профиля (пока только фото)
ProfileMediaType:
type: uint8
values:
- id: 0
name: PROFILE_PHOTO
types:
Attachment:
fields:
- id: 1
name: id
type: string
- id: 2
name: blob?
type: string
- id: 3
name: type
type: AttachmentType
- id: 4
name: preview
type: string
- id: 6
name: objectId
type: string
#Медиа-файлы профиля такие как аватарки (фото) и будущие истории
ProfileMedia:
fields:
- id: 1
name: preview #превью (для фото blurhash)
type: string
- id: 2
name: objectId #обьект на cdn
type: string
- id: 3
name: type #тип медиа
type: ProfileMediaType
- id: 4
name: timestamp #дата публикации
type: int64
- id: 5
name: mediaKey #ключ шифрования от медиа
type: string
NetworkDevice:
fields:
- id: 1
name: networkStatus
type: NetworkStatus
- id: 2
name: deviceName
type: string
- id: 3
name: deviceOs
type: string
- id: 4
name: deviceId
type: string
- id: 5
name: deviceSolution
type: DeviceSolution
PKNetworkStatus:
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: networkStatus
type: NetworkStatus
#Информация при поиске пользователя (приходит в ответ на пакет PacketSearch)
SearchInfo:
fields:
- id: 1
name: username #имя для поиска
type: string
- id: 2
name: title #отображаемое имя пользователя
type: string
- id: 3
name: publicKey #публичный ключ
type: string
- id: 4
name: verified #верификация
type: int32
- id: 5
name: networkStatus #онлайн пользователь или нет
type: NetworkStatus
- id: 6
name: avatar? #аватар пользователя если есть
type: ProfileMedia
#Информация которая используется только при входе в профиль пользователя
ProfileInfo:
fields:
- id: 1
name: username #имя для поиска
type: string
- id: 2
name: title #отображаемое имя пользователя
type: string
- id: 3
name: publicKey #публичный ключ
type: string
- id: 4
name: verified #верификация
type: int32
- id: 5
name: networkStatus #онлайн пользователь или нет
type: NetworkStatus
- id: 6
name: media? #все активное медиа (включая будущие истории)
type: ProfileMedia[]
RTCIceServer:
fields:
- id: 1
name: url
type: string
- id: 2
name: username
type: string
- id: 3
name: credential
type: string
- id: 4
name: transport
type: string
packets:
Handshake:
id: 0
fields:
- id: 1
name: publicKey
type: string
- id: 2
name: privateKey
type: string
- id: 3
name: deviceId
type: string
- id: 4
name: deviceName
type: string
- id: 5
name: deviceOs
type: string
- id: 6
name: handshakeStage?
type: HandshakeStage
UserInfo:
id: 1
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: username
type: string
- id: 3
name: title
type: string
Result:
id: 2
fields:
- id: 1
name: resultCode
type: ResultCode
Search:
id: 3
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: search
type: string
- id: 3
name: searchInfo?
type: SearchInfo[]
OnlineSubscribe:
id: 4
fields:
- id: 1
name: privateKey
type: string
- id: 2
name: publicKeys
type: string[]
OnlineState:
id: 5
fields:
- id: 1
name: pkNetworkStatuses
type: PKNetworkStatus[]
Message:
id: 6
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
- id: 4
name: content
type: string
- id: 5
name: chachaKey
type: string
- id: 6
name: timestamp
type: int64
- id: 7
name: messageId
type: string
- id: 8
name: attachments?
type: Attachment[]
- id: 9
name: aesChachaKey
type: string
Read:
id: 7
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 4
name: timestamp
type: int64
Delivery:
id: 8
fields:
- id: 1
name: messageId
type: string
- id: 2
name: toPublicKey
type: string
DeviceNew:
id: 9
fields:
- id: 1
name: ipAddress
type: string
- id: 2
name: deviceId
type: string
- id: 3
name: deviceName
type: string
- id: 4
name: deviceOs
type: string
RequestUpdate:
id: 10
fields:
- id: 1
name: server?
type: string
Typeing:
id: 11
fields:
- id: 1
name: fromPublicKey
type: string
- id: 2
name: toPublicKey
type: string
- id: 3
name: privateKey
type: string
#Запрос транспортного сервера
RequestTransport:
id: 15
fields:
- id: 1 #сервер > клиент
name: server? #выбранный транспортный сервер
type: string
PushNotification:
id: 16
fields:
- id: 1
name: notificationToken
type: string
- id: 2
name: action
type: NotificationAction
- id: 3
name: tokenType
type: TokenType
- id: 4
name: deviceId
type: string
GroupCreate:
id: 17
fields:
- id: 1
name: groupId?
type: string
GroupInfo:
id: 18
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersPKs?
type: string[]
GroupInviteInfo:
id: 19
fields:
- id: 1
name: groupId
type: string
- id: 2
name: membersCount?
type: int32
- id: 3
name: status?
type: GroupStatus
GroupJoin:
id: 20
fields:
- id: 1
name: groupId
type: string
- id: 2
name: status?
type: GroupStatus
- id: 3
name: groupString
type: string
GroupLeave:
id: 21
fields:
- id: 1
name: groupId
type: string
GroupBan:
id: 22
fields:
- id: 1
name: groupId
type: string
- id: 2
name: publicKey
type: string
DeviceList:
id: 23
fields:
- id: 1
name: devices
type: NetworkDevice[]
DeviceResolve:
id: 24
fields:
- id: 1
name: deviceId
type: string
- id: 2
name: solution
type: DeviceSolution
Sync:
id: 25
fields:
- id: 1
name: syncStatus
type: SyncStatus
- id: 2
name: timestamp
type: int64
SignalPeer:
id: 26
fields:
- id: 1
name: src
type: string
- id: 2
name: dst
type: string
- id: 3
name: sharedPublic?
type: string
- id: 4
name: signalType
type: SignalType
- id: 5
name: callId?
type: string
- id: 6
name: joinToken?
type: string
WebRTC:
id: 27
fields:
- id: 1
name: sdpOrCandidate
type: string
- id: 2
name: type
type: WebRTCType
IceServers:
id: 28
fields:
- id: 1
name: iceServers?
type: RTCIceServer[]
#Запрос "посадочного места" у сервера при загрузке файла
UploadCandidate:
id: 29
fields:
- id: 1 #клиент > сервер
name: size #размер загружаемого файла (декларируемый)
type: uint32
- id: 2 #сервер > клиент
name: objectId? #выделенный сервером objectId
type: string
- id: 3 #сервер > клиент
name: chunkLength? #размер чанка
type: uint32
- id: 4 #сервер > клиент
name: chunks? #количество чанков
type: uint32
- id: 5 #сервер > клиент
name: host? #хост, где сохранен файл
type: string
- id: 6 #клиент > сервер
name: ttl? #ttl в секундах, после которого файл будет удален с CDN и с таблицы, по умолчанию 7 дней, не допускается использование слишком больших значений
type: uint32
#Запрос скачивания файла с сервера, нужно передать objectId, а дальнейшую информацию вернет сервер
DownloadCandidate:
id: 30
fields:
- id: 1 #сервер > клиент
name: size? #размер файла
type: uint32
- id: 2 #клиент > сервер
name: objectId #выделенный сервером objectId
type: string
- id: 3 #сервер > клиент
name: chunkLength? #размер чанка
type: uint32
- id: 4 #сервер > клиент
name: chunks? #количество чанков
type: uint32
- id: 5 #сервер > клиент
name: host? #сервер с которого скачивать файл
type: string
#Установить аватар профиля
SetAvatar:
id: 31
fields:
- id: 1 #клиент > сервер
name: objectId #выделенный сервером objectId при отправке пакета UploadCandidate
type: string
- id: 2 #клиент > сервер
name: blurhash #превью аватара, строка blurhash
type: string
- id: 3 #клиент > сервер
name: mediaKey #ключ шифрования
type: string
#Удаляет аватар или фотографию из профиля
RemoveAvatar:
id: 32
fields:
- id: 1 #клиент > сервер
name: objectId #objectId аватара, аватар или фотография профиля должна при этом стоять у профиля отправителя пакета
type: string
#Запрос профиля
Profile:
id: 33
fields:
- id: 1 #клиент > сервер
name: publicKey
type: string
- id: 2 #сервер > клиент
name: info?
type: ProfileInfo