# Яндек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": ""
}
```
- успех: реинишиалайз (закрываем пейвол)
- ошибка: остаемся на пейволе (с попапом ошибки)