# Яндекc (платформа) ### ComInit: ([сервер](https://zebrainy.atlassian.net/browse/SPC-12875), [клиент](https://zebrainy.atlassian.net/browse/SPC-12883)) Добавится объект ```json { "yandex": { "authorization": "authorized", //authorized|notAuthorized|tokenExpired" "subscriptionKind": "none" //none|plus|plusKids } } ``` все запросы на сервер должны быть подписаны авториз. токеном ### Запрос на авторизацию яндекса: POST /yandex/user/auth [сервер](https://zebrainy.atlassian.net/browse/SPC-12879), [клиент](https://zebrainy.atlassian.net/browse/SPC-12884) request body как в ComInit + yandexToken: ```json { "yandex_token", "client_id", "v", "udid", "language", "grant_type", "secret", "scope", "platform", "timezone_offset", "country", "guid" } ``` неуспешный ответ: 400 ошибка, body: ```json { "Error": "device limit" } ``` успешный ответ ```json { "token": //как в ComInit "parent": //как в ComInit "abtest": //как в ComInit "yandex": //как в ComInit } ``` ### запрос по девайсам /yandex/device/list [сервер](https://zebrainy.atlassian.net/browse/SPC-12880), [клиент](https://zebrainy.atlassian.net/browse/SPC-12886) Request Body может быть как с яндекс-токеном, так и без. пример body ```json { "yandexAuthToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxNjI1Njc4MCwidXNlZGVza19jbGllbnRfaWQiOm51bGwsInVzZWRlc2tfZW1haWwiOiJ2bGFkaW1pcm92ZEB5YW5kZXgucnUiLCJjb3VudHJ5IjoiUlUiLCJpYXQiOjE2NzU4Njc3NTYsImV4cCI6MTY3NTk1NDE1Nn0.72wI2176d1aogVpoxPh-6HKLERVy7wsCbOxj20Yt1a4" } ``` ответ: ```json { "max_device_count": 4, "devices":[ { "user_id": 123456, "device_id": "12dcsdfsf", "model": "iPhone X", "last_session": "2023-02-06 13:06:13.731580" } ], "user_icon": "https://avatars.yandex.net/get-yapic/30061/GUZ0eCm2QihAFfyMWSybC1Pis-1/islands-retina-small" } ``` Надо персистить (чтобы не ждать сервера) ### запрос на удаление девайса /yandex/device/detach [сервер](https://zebrainy.atlassian.net/browse/SPC-12882), [клиент](https://zebrainy.atlassian.net/browse/SPC-12887) request body: ```json { "yandex_token": "aaaAAA", //этого поля может не быть (в случае, если эта команда дергается из ЛК, яндекс-токен юзера надо найти в БД) "device_id": "082b1fc693863e7d4a4861e055b39bd9", "user_id": 1 } ``` в ответ: список оставшихся девайсов пример: ```json { "devices":[ { "user_id": 123456, "device_id": "12dcsdfsf", "model": "iPhone X", "last_session": "2023-02-06 13:06:13.731580" } ] } ``` ### запрос YandexSubsVerify без параметров /yandex/subs/verify [сервер](https://zebrainy.atlassian.net/browse/SPC-12885), [клиент](https://zebrainy.atlassian.net/browse/SPC-12888) ответ: ```json { "yandex": { "authorization": "authorized", //authorized|notAuthorized|tokenExpired" "subscriptionKind": "none" //none|plus|plusKids } } ``` ### запрос YandexLogout без параметров /yandex/... [сервер](https://zebrainy.atlassian.net/browse/SPC-12885), [клиент](https://zebrainy.atlassian.net/browse/SPC-12888) запрос: POST ответ: ```json { "token": //как в ComInit "parent": //как в ComInit "abtest": //как в ComInit "yandex": //как в ComInit } ``` ## Локальный web-server ### `msg/yandex/auth/client` авторизоваться через sdk * реквест: empty * респонс: ```json { "Success": true, "Error": ""/"Error message", "ErrorCodes": ["code_1", "code_2"] / null, "YandexToken": "...", "ExpiresIn": 111 //не обязательное поле, прокидывается от андроида, на всякий случай добавил } ``` ### `msg/yandex/auth/server` авторизоваться на сервере через токен * реквест: ```json { "YandexToken": "..." } ``` * респонс: ```json { "Success": true, "Error": "", "user_icon": "..." } ``` - успех: придет реинишиалайз - ошибка: превышение лимитов по девайсу (пробросится с сервера) ### `msg/yandex/device/all` получить инфу по лимитам устройств (с пробросом токеном и без) * реквест: без параметров * респонс: массив с девайсами, число с лимитом по девайса, ссылка на иконку пользователя ### `msg/yandex/device/detach` отвязать устройство * реквест: ```json { "DeviceId": "..", "UserId": 1 } ``` * респонс: ```json { "Success": true, "Error": "", "devices":[ { "user_id": 123456, "device_id": "12dcsdfsf", "model": "iPhone X", "last_session": "2023-02-06 13:06:13.731580" } ] } ``` ### `msg/yandex/purchase/web` вызвать покупку на пейволе (редирект в браузер) * реквест: урл по которому необходимо совершить покупку * респонс: сразу же получишь 200 и анфокус. как получишь фокус, необходимо дернуть верифай ### `msg/yandex/logout` выйти из аккаунта яндекса (ЛК) * реквест: без параметров * респонс: реинишиалайз ### `msg/yandex/purchase/verify` верификация * реквест: без параметров * респонс: ```json { "Success": true, "Error": "" } ``` - успех: реинишиалайз (закрываем пейвол) - ошибка: остаемся на пейволе (с попапом ошибки)