SHA256
175 lines
3.1 KiB
Markdown
175 lines
3.1 KiB
Markdown
# API для разработчиков: связи пользователей
|
|
|
|
Документ описывает операции чтения и записи пользовательских связей.
|
|
|
|
Текущие операции:
|
|
|
|
- `GetFriendsLists`
|
|
- `ListContacts`
|
|
- `GetUserConnectionsGraph`
|
|
- `AddCloseFriend`
|
|
|
|
## 1. `GetFriendsLists`
|
|
|
|
### Запрос
|
|
|
|
```json
|
|
{
|
|
"op": "GetFriendsLists",
|
|
"requestId": "friends-001",
|
|
"payload": {
|
|
"login": "alice"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Успешный ответ
|
|
|
|
```json
|
|
{
|
|
"op": "GetFriendsLists",
|
|
"requestId": "friends-001",
|
|
"status": 200,
|
|
"ok": true,
|
|
"payload": {
|
|
"login": "Alice",
|
|
"out_friends": ["Bob"],
|
|
"in_friends": ["Kate"]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2. `ListContacts`
|
|
|
|
`ListContacts` использует текущую авторизованную сессию. В payload нет дополнительных полей.
|
|
|
|
### Запрос
|
|
|
|
```json
|
|
{
|
|
"op": "ListContacts",
|
|
"requestId": "contacts-001",
|
|
"payload": {
|
|
}
|
|
}
|
|
```
|
|
|
|
### Успешный ответ
|
|
|
|
```json
|
|
{
|
|
"op": "ListContacts",
|
|
"requestId": "contacts-001",
|
|
"status": 200,
|
|
"ok": true,
|
|
"payload": {
|
|
"login": "Alice",
|
|
"contacts": ["Bob", "Kate"]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. `GetUserConnectionsGraph`
|
|
|
|
### Запрос
|
|
|
|
```json
|
|
{
|
|
"op": "GetUserConnectionsGraph",
|
|
"requestId": "graph-001",
|
|
"payload": {
|
|
"login": "alice"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Успешный ответ
|
|
|
|
```json
|
|
{
|
|
"op": "GetUserConnectionsGraph",
|
|
"requestId": "graph-001",
|
|
"status": 200,
|
|
"ok": true,
|
|
"payload": {
|
|
"login": "Alice",
|
|
"outFriends": ["Bob"],
|
|
"inFriends": ["Kate"],
|
|
"outContacts": [],
|
|
"inContacts": [],
|
|
"outFollows": [],
|
|
"inFollows": [],
|
|
"outSpouses": [],
|
|
"inSpouses": [],
|
|
"outParents": [],
|
|
"inParents": [],
|
|
"outChildren": [],
|
|
"inChildren": [],
|
|
"outSiblings": [],
|
|
"inSiblings": [],
|
|
"outKnownPersons": [],
|
|
"inKnownPersons": [],
|
|
"outShineConfirmed": [],
|
|
"inShineConfirmed": [],
|
|
"outShineSeen": [],
|
|
"inShineSeen": [],
|
|
"parents": [],
|
|
"children": [],
|
|
"siblings": [],
|
|
"spouses": [],
|
|
"allUsers": [
|
|
{
|
|
"login": "Bob",
|
|
"official": false,
|
|
"shine": true,
|
|
"officialLabel": "",
|
|
"shineLabel": "shine",
|
|
"avatar": { "ar": "..." }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Примечание
|
|
|
|
Поля `known_person`, `shine_confirmed`, `shine_seen` в UI считаются недопроверенной зоной проекта; при изменениях этой логики нужна ручная end-to-end проверка.
|
|
|
|
---
|
|
|
|
## 4. `AddCloseFriend`
|
|
|
|
`AddCloseFriend` использует текущую авторизованную сессию как источник `login`.
|
|
|
|
### Запрос
|
|
|
|
```json
|
|
{
|
|
"op": "AddCloseFriend",
|
|
"requestId": "close-friend-001",
|
|
"payload": {
|
|
"toLogin": "bob"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Успешный ответ
|
|
|
|
```json
|
|
{
|
|
"op": "AddCloseFriend",
|
|
"requestId": "close-friend-001",
|
|
"status": 200,
|
|
"ok": true,
|
|
"payload": {
|
|
"login": "Alice",
|
|
"toLogin": "Bob",
|
|
"relation": "close_friend"
|
|
}
|
|
}
|
|
```
|