# docs/lk-contract/v1 — контракт с ЛК клиента (ESIA Finance API V1) ЛК клиента работает на платформе **ESIA Finance**, контракт описан в `DOC/API ЛК ЕСИА.pdf` (`/api/v1/back_office/...`, Basic HTTP, JSON, UTF-8). На этапе M1 в `lk-emulator` (отдельный PR) мы реализуем этот контракт как «как-будто-ЛК» для запуска сквозного потока. Реальный ЛК подключится по тому же контракту без правок на нашей стороне. ## Состав каталога - **`openapi.yaml`** — OpenAPI 3.0 контракт lk-gateway. Описывает четыре операции: создание, чтение, callback статуса и список заявок. Модель `Claim` включает все поля, нужные m2m-core для формирования `M2MTransferRequest`. - **`examples/`**: - `claim-request.json` — пример заявки на перевод (3 ЦБ, ИИС T03). - `claim-response.json` — пример ответа на создание. - `callback-confirmed.json` — callback подтверждения (status_code INFO, 3 коды 01). - `callback-rejected.json` — callback отказа (status_code ERROR). - `error-422.json` — ошибка валидации подписи. - **`changelog.md`** — версионирование контракта. ## Что входит в модель заявки - Идентификация инвестора (UUID в ЛК, ФИО, документ). - Реквизиты передающего и принимающего депозитариев (ИНН). - Информация об учёте стоимости (`cost_info: yes | no`). - Опциональный блок ИИС (тип T12/T03, номер договора, дата, ИНН брокера). - Массив ценных бумаг (1..N), каждая с: - `security_code` (НРД-код, 12 символов), - идентификацией (`isin` или развёрнутый `security_info`), - количеством (целое `whole` или дробное `fractional` до 16 знаков), - списком счетов депо (`settlement_accounts[]`). - Подписанный XML заявления (base64) и формат подписи (XMLDSig-GOST или XMLDSig-RSA). ## Что входит в callback статуса - `claim_id`, `new_status`, `updated_at`. - Для `rejected`/`timed_out`: код и текст причины из ответа НРД. - Полное `nsd_response` (опц., для аудита). ## Порядок согласования 1. Передать команде ЛК ссылку на эту папку (тег `lk-contract-v1`). 2. Обсудить базовый URL, авторизацию (Basic, через VPN), окна. 3. Запустить `lk-emulator` на нашей стороне как опорную реализацию. 4. После приёмки — поднимать реальную интеграцию. ## Принципы - OpenAPI 3.0, валидный по spectral / openapi-cli. - Operation IDs в snake_case. - Описания на русском, имена полей на английском. - Enum'ы значений M2M — буквально как в XSD НРД (T12/T03, BOND/SHAR/MFUN, ...).