# 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" } } ```