forked from Rosetta/landing
657 lines
15 KiB
YAML
657 lines
15 KiB
YAML
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 #Сообщения (forwarded/reply)
|
||
- 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 #Не пройден (приложение рендерит UI подтвердите с другого устройства)
|
||
|
||
#Статус в группе
|
||
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
|
||
|
||
#Тип WebRTC сигнала
|
||
WebRTCType:
|
||
type: int8
|
||
values:
|
||
- id: 0
|
||
name: OFFER #Offer
|
||
- id: 1
|
||
name: ANSWER #Answer
|
||
- id: 2
|
||
name: ICE_CANDIDATE #Estabilishment 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 #Выданный сервером objectId от cdn
|
||
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 |