# Методы интеграции МП и SDK
```mermaid
sequenceDiagram
МП ->>+Сервер СК: Получение SecureGUID
Сервер СК ->> +СТ_ГЛОНАСС: Запрос SecureGUID
СТ_ГЛОНАСС->>-Сервер СК: SecureGUID
Сервер СК ->> -МП: SecureGUID
МП ->> +Сервер СК: Запрос esia-link
Сервер СК ->> -МП: esia-link
МП ->> +ESIA: Авторизация в ESIA через webview (esia-link)
ESIA ->> -МП: esia_token
МП ->> +ESIA: Запрос данных пользователя
ESIA ->> -МП: Данные пользователя, esia_subj_id
```
```mermaid
sequenceDiagram
МП ->>+SDK: RSA_1 initSDK
Note over МП,SDK: Передаём Guid МП, логин и пароль СК
SDK ->>-МП: Сессия SDK инициализирована
SDK ->> Log: Успешная инициализация SDK
```
```mermaid
sequenceDiagram
МП ->>+SDK: RSA_2 finalize
SDK ->> SDK: Удаление сессии
SDK ->> SDK: Сброс таймеров
SDK ->> Log: Сессия удалена
SDK->>-МП: сессия удалена
```
```mermaid
sequenceDiagram
МП ->>+SDK: RSA_4 rsaAddCheckedPhoto
Note over МП,SDK: Защищенная фотография<br>Передаём в запрос:<br>- тип фото<br>- принадлежность фото<br>- описание детали<br>- id детали
SDK ->> SDK: Проверка активной сессии
SDK ->> SDK: Старт таймера (optional)
SDK ->> SDK: Проверка таймера
SDK ->> МП: Инициализация камеры
МП ->> SDK: Фотография
SDK ->> SDK: Уменьшение фото до нужного размера
SDK ->> Log: Фото сохранено в активной сессии
SDK->>-МП: Фото сделана
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_5 rsaAddFreePhoto
Note over МП,SDK: Незащищенное фото<br>Передаём в запрос:<br>- тип фото<br>- принадлежность фото<br>- описание детали<br>- id детали
SDK ->> SDK: Проверка guid
SDK ->> SDK: Проверка таймера
SDK ->> МП: Инициализация камеры
МП ->> SDK: Фотография
SDK ->> SDK: Уменьшение фото до нужного размера
SDK ->> Log: Фото сохранено в активной сессии
SDK->>МП: Фото сохранена в галерее
SDK->>-МП: Фото сделана
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_6 setPolicyInfo
Note over МП,SDK: Добавление полиса ОСАГО
Note over МП,SDK: Передаём в запрос:<br>- серию полиса<br>- номер полиса<br>- тип полиса ОСАГО<br>- роль участника ДТП<br> признак генерации QR
SDK ->> SDK: Проверка активной сессии
SDK->>+АИС ОСАГО: Передача серии/номера полиса
АИС ОСАГО->>-SDK: Данные полиса
SDK ->> Log: Полис проверен
SDK ->> SDK: Сохранение данных полиса из АИС в сессии
SDK ->> SDK: Генерация QR
SDK ->> Log: Полис добавлен в сессию
SDK->>-МП: Данные полиса, QR-код
```
```mermaid
sequenceDiagram
МП ->> +SDK: SDK_7 setDriverInfo
Note over МП, SDK: Передаём esia_subj_id<br>- данные водителя<br>-паспорт<br>- данные ВУ
SDK ->> +СТ_ГЛОНАСС: esia_subj_id, водитель, паспорт, ВУ
СТ_ГЛОНАСС ->> -SDK: возвращает userID
SDK ->> Log: Успешное выполнение функции
SDK ->> -МП: Успешное выполнение функции
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_8 initLinkQR
Note over МП,SDK: Оформление на 1 устройстве
Note over МП,SDK: Передаём в запрос:<br>- ФИО кириллицей<br>- дату рождения<br>- one device = true
SDK->>+ЕПГУ: Приглашение участника
Note over SDK, ЕПГУ: Передаём в запрос invite:<br>- ФИО кириллицей<br>- дату рождения<br>- one device = true
ЕПГУ->>-SDK: Ответ
Note over SDK, ЕПГУ: В ответе находятся:<br>- url<br>- code
SDK ->> Log: Получен ответ от ЕПГУ: url & code
SDK ->> SDK: Сохраняет code в текущей сессии
SDK ->> SDK: Трансформирует url в QR-код
SDK->>-МП: QR-код
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_8 initLinkQR
Note over МП,SDK: Оформление на 2 устройствах
Note over МП,SDK: Передаём в запрос:<br>- one device = false
SDK->>+ЕПГУ: Приглашение участника
Note over SDK, ЕПГУ: Передаём в запрос invite:<br>- one device = false
ЕПГУ->>-SDK: Ответ
Note over SDK, ЕПГУ: В ответе находится:<br>- code
SDK ->> Log: Получен ответ от ЕПГУ: code
SDK ->> SDK: Сохраняет code в текущей сессии (id черновика)
SDK ->> SDK: Сохраняет роль пользователя "Участник А"
SDK ->> SDK: Трасформирует code в QR-код
SDK->>-МП: QR-код
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_10 qrReaderView
SDK ->> МП: Инициализация камеры
МП ->> SDK: Прочитали guid из QR-кода
SDK ->> SDK: Сохраняет guid в текущей сессии (id черновика)
SDK ->> SDK: Сохраняет роль пользователя "Участник Б"
SDK ->> Log: guid приглашения сохранен в текущей сессии
SDK->>-МП: guid сохранён
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_18 createDraft
Note over МП,SDK: Оформление на 1 устройстве
SDK ->> SDK: Проверка таймера 60 минут
SDK ->> +ЕПГУ: Создание черновика
ЕПГУ ->> -SDK: orderId
SDK ->> Log: Был создан черновик orderId
SDK ->> +ЕПГУ: Загрузка фото схемы ДТП
ЕПГУ ->> -SDK: Успех (200)
SDK->>-МП: Черновик создан
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_18 createDraft
Note over МП,SDK: Оформление на 2 устройствах
SDK ->> SDK: Проверка таймера 60 минут
SDK ->> +ЕПГУ: Создание черновика
ЕПГУ ->> -SDK: Успех (200)
SDK ->> Log: Был создан черновик guid
SDK ->> +ЕПГУ: Загрузка фото схемы ДТП
ЕПГУ ->> -SDK: Успех (200)
SDK->>-МП: Черновик создан
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_19 acceptDraft
SDK ->> SDK: Проверка таймера 60 минут
SDK ->> +ЕПГУ: Подписание черновика
ЕПГУ ->> -SDK: Успех (200)
SDK ->> Log: Черновик подписан участником ДТП
SDK->>-МП: Черновик подписан
```
```mermaid
sequenceDiagram
МП ->>+SDK: SDK_20 declineDraft
SDK ->> +ЕПГУ: Отклонение черновика
ЕПГУ ->> -SDK: Успех (200)
SDK ->> Log: Черновик отклонён участником
SDK->>-МП: Черновик отклонён
```
```mermaid
sequenceDiagram
МП ->>+SDK: RSA_20 rsaDeclineDraft
Note over МП,SDK: Отклонение с 2 устройств
Note over МП,SDK: Передаём в запрос:<br>- guid черновика
SDK ->> SDK: Проверка текущей сессии
SDK ->> +ЕПГУ: Отклонение черновика
Note over SDK, ЕПГУ: Метод<br>api/lk/v1/europrotocol/draft/<br>{guid}/reject
ЕПГУ ->> -SDK: Успех (200)
SDK ->> Log: Черновик отклонён участником А или Б
SDK->>-МП: Черновик отклонён
```
```mermaid
sequenceDiagram
МП ->>+SDK: RSA_24 rsaGetDraftStatus
Note over МП,SDK: Отклонение с 2 устройств
Note over МП,SDK: Передаём в запрос:<br>- guid черновика
SDK ->> SDK: Проверка текущей сессии
SDK ->> +ЕПГУ: Отклонение черновика
Note over SDK, ЕПГУ: Метод<br>api/lk/v1/europrotocol/draft/<br>{guid}/reject
ЕПГУ ->> -SDK: Успех (200)
SDK ->> Log: Черновик отклонён участником А или Б
SDK ->> +ЕПГУ: Запрос статуса подписания
Note over SDK, ЕПГУ: Метод<br>api/lk/v1/europrotocol<br>/order/{code}
ЕПГУ ->> -SDK: Ответ
alt reject_again
SDK ->> SDK: Удаление текущей сессии
SDK ->> Log: Черновик отклонён дважды
SDK-x МП: Конец сценария
else reject
SDK ->> Log: Черновик отклонён
SDK->>-МП: Черновик отклонён
end
```