> For the complete documentation index, see [llms.txt](https://sravni-labs-ru.gitbook.io/sravni-labs.ru-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sravni-labs-ru.gitbook.io/sravni-labs.ru-docs/kredity-dlya-biznesa-s-podpisaniem-dokumentov-na-storone-partnyora/tekhnicheskaya-dokumentaciya/orders/poluchit-aktualnoe-sostoyanie-zayavki.md).

# Получить актуальное состояние заявки

Возвращает состояние заявки: массив `offers` с одной записью на каждый подключённый банк.

У заявки нет единого статуса на уровне всей заявки — каждый элемент `offers[]` независимо проходит собственный жизненный цикл статусов (`offers[].status`). `offers[].documents` содержит документы этого банка к обмену: как те, что партнёру нужно загрузить платформе (`direction: UPLOAD`, доступно при `status.code: WAITING_FOR_DOCUMENTS`), так и те, что нужно скачать, подписать открепленной подписью и загрузить обратно (`direction: DOWNLOAD`, доступно при `status.code: WAITING_FOR_SIGNATURE`). `offers[].issues` содержит причины проблем проверки по этому предложению. `offers[].creditOptions` заполняется, когда банк сформировал кредитное предложение.

Клиенту следует повторить запрос не раньше чем через `pollAfterSeconds`. Значение `0` означает, что статусы всех предложений терминальны и дальнейший polling не нужен.

```json
{"openapi":"3.1.0","info":{"title":"API интеграции с партнёрами","version":"2.0.0"},"tags":[{"name":"Orders","description":"Методы создания, отслеживания и подтверждения одобренных кредитных предложений"}],"servers":[{"url":"https://sandbox-api.example.ru","description":"Тестовая среда"},{"url":"https://api.example.ru","description":"Промышленная среда"}],"security":[{"OAuth2":[]}],"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","description":"OAuth 2.0 client credentials для партнёрского API. Полученный access-токен передаётся во всех методах, кроме `/oauth2/token`, в заголовке `Authorization: Bearer <access_token>`. ","flows":{"clientCredentials":{"tokenUrl":"https://auth.example.ru/oauth2/token","scopes":{}}}}},"parameters":{"OrderId":{"name":"orderId","in":"path","required":true,"description":"Идентификатор заявки на платформе","schema":{"type":"string","format":"uuid"}}},"schemas":{"OrderState":{"type":"object","required":["orderId","sourceOrderId","updatedAt","offers","pollAfterSeconds"],"properties":{"orderId":{"type":"string","format":"uuid"},"sourceOrderId":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"offers":{"type":"array","items":{"$ref":"#/components/schemas/BankOffer"},"description":"Банковские предложения. По одному элементу на каждый подключённый банк — заполняется сразу после создания заявки, ещё до того как у банка появится итоговое кредитное предложение. Каждый элемент независимо проходит собственный жизненный цикл статусов (`BankOffer.status`) и несёт свои документы (`BankOffer.documents`) и ошибки проверки (`BankOffer.issues`), относящиеся именно к этому банку. У заявки больше нет единого статуса на уровне всей заявки — партнёру следует ориентироваться на статусы отдельных предложений. "},"pollAfterSeconds":{"type":"integer","minimum":0,"maximum":86400,"description":"Рекомендованный интервал до следующего GET-запроса. `0` означает, что статусы всех предложений (`offers[].status`) терминальны (`REJECTED` или `CLOSED`) и дальнейший polling не нужен. "}}},"BankOffer":{"type":"object","required":["offerId","bank","status","creditOptions","documents","issues"],"properties":{"offerId":{"type":"string","format":"uuid"},"bank":{"$ref":"#/components/schemas/Bank"},"status":{"allOf":[{"$ref":"#/components/schemas/OrderStatus"}],"description":"Текущий статус обработки заявки этим банком."},"creditOptions":{"type":"array","minItems":0,"items":{"$ref":"#/components/schemas/CreditOption"},"description":"Кредитные условия от банка. Заполняется, когда `status.code` равен `OFFERS_AVAILABLE`, `OFFERS_CONFIRMED` или `CLOSED`; для остальных статусов, включая `REJECTED`, массив пустой."},"documents":{"type":"array","description":"Документы этого банка — как те, что партнёру нужно загрузить платформе (`direction: UPLOAD`, доступно, когда `status.code` равен `WAITING_FOR_DOCUMENTS`), так и те, что платформа сформировала и партнёру нужно скачать, подписать открепленной подписью и загрузить обратно (`direction: DOWNLOAD`, доступно, когда `status.code` равен `WAITING_FOR_SIGNATURE`). Для каждого документа указано, обязателен ли он (`required`) и получен ли он платформой (`uploaded`).","items":{"$ref":"#/components/schemas/OrderDocument"}},"issues":{"type":"array","items":{"$ref":"#/components/schemas/ValidationIssue"},"description":"Причины проблем проверки по этому предложению; массив пуст, если проблем нет."}},"allOf":[{"if":{"properties":{"status":{"properties":{"code":{"const":"REJECTED"}},"required":["code"]}},"required":["status"]},"then":{"properties":{"creditOptions":{"maxItems":0}}}},{"if":{"properties":{"status":{"properties":{"code":{"enum":["OFFERS_AVAILABLE","OFFERS_CONFIRMED","CLOSED"]}},"required":["code"]}},"required":["status"]},"then":{"properties":{"creditOptions":{"minItems":1}}}}]},"Bank":{"type":"object","required":["bankId","name"],"properties":{"bankId":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":255}}},"OrderStatus":{"type":"object","description":"Статус обработки предложения банка (`BankOffer.status`). Этот же формат `{code, description}` используется и в `OrderCreateResponse.status` сразу после создания заявки — как общий начальный индикатор (`code: IN_WORK`), ещё до того как в `offers[]` появятся записи по конкретным банкам. Типичный переход для одного предложения:\n\nIN_WORK → VALIDATION_FAILED | WAITING_FOR_DOCUMENTS → IN_WORK (после accept) → VALIDATION_FAILED | WAITING_FOR_SIGNATURE → IN_WORK (после загрузки подписей) → OFFERS_AVAILABLE → REJECTED | OFFERS_CONFIRMED → CLOSED.\n\nКаждое предложение банка проходит этот путь независимо от остальных: одни банки могут ещё запрашивать документы или проверять их, пока другие уже отклонили заявку, ждут подписания или предложили условия. `OFFERS_AVAILABLE` означает, что банк сформировал кредитное предложение и оно доступно для выбора. После успешного `POST /v1/orders/{orderId}/confirm` предложение переходит в `OFFERS_CONFIRMED`. Дополнительные вызовы `confirm` для оставшихся вариантов условий со статусом `AVAILABLE` допускаются, пока предложение не перешло в `CLOSED`. `REJECTED` означает, что банк отклонил заявку по этому предложению (на любом этапе обработки, до или после появления кредитных условий). `CLOSED` означает, что банк выдал кредит клиенту по этому предложению.","required":["code","description"],"properties":{"code":{"type":"string","enum":["IN_WORK","WAITING_FOR_DOCUMENTS","VALIDATION_FAILED","WAITING_FOR_SIGNATURE","OFFERS_AVAILABLE","REJECTED","OFFERS_CONFIRMED","CLOSED"]},"description":{"type":"string","minLength":1,"description":"Человекочитаемое описание статуса для отображения партнёру"}}},"CreditOption":{"type":"object","required":["code","amount","amountType","termMonths","interestRatePercent","status"],"properties":{"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["AVAILABLE","CONFIRMED"],"description":"Статус варианта кредитных условий. `AVAILABLE` — вариант доступен для подтверждения партнёром. `CONFIRMED` — вариант подтверждён через `POST /v1/orders/{orderId}/confirm`. После подтверждения другие варианты остаются `AVAILABLE`. "},"amountType":{"type":"string","enum":["FIXED","LIMIT"],"description":"Тип суммы. `FIXED` — фиксированная сумма кредита, выдаётся целиком. `LIMIT` — одобренный лимит (например для овердрафта), в рамках которого партнёр может при подтверждении (`POST /v1/orders/{orderId}/confirm`) запросить фактическую сумму выборки меньше `amount`. "},"amount":{"type":"integer","minimum":1,"description":"Сумма предложения банка. Для `amountType: FIXED` — точная сумма кредита. Для `amountType: LIMIT` — верхняя граница одобренного лимита; для некоторых банков фактическая сумма выборки может быть выбрана партнёром меньше этого значения при подтверждении предложения. "},"termMonths":{"type":"integer","minimum":1},"interestRatePercent":{"type":"number","minimum":0,"multipleOf":0.0001}}},"OrderDocument":{"type":"object","description":"Элемент документооборота по предложению конкретного банка. Показывает, какой документ партнёру нужно загрузить платформе (`direction: UPLOAD`) или, наоборот, какой документ партнёру нужно скачать у платформы, подписать открепленной подписью и загрузить обратно (`direction: DOWNLOAD`). Сущность, к которой относится документ (`entityId`), в списке не указывается: для `UPLOAD` партнёр сам определяет её при вызове `POST /v1/orders/{orderId}/documents`; для `DOWNLOAD` документ уже сформирован и привязан к сущности на стороне платформы.\n\n\nДля `direction: UPLOAD` документ достаточно загрузить один раз на пару `entityId`+`docType`: если документ этого типа для этой сущности требуется нескольким банкам одновременно, платформа переиспользует уже загруженный файл во всех предложениях, которым он нужен, — повторно загружать его под каждое предложение не требуется. Для `direction: DOWNLOAD` документ формируется отдельно под каждое предложение банка и имеет собственный `fileId`: даже если по содержанию документы одинаковы, скачать, подписать и загрузить подпись нужно отдельно для каждого предложения, в котором такой документ присутствует.","required":["name","docType","direction","required","uploaded"],"properties":{"fileId":{"type":"string","format":"uuid","description":"Идентификатор файла. Для `direction: DOWNLOAD` присутствует всегда — документ уже сформирован платформой и доступен для скачивания через `GET /v1/orders/{orderId}/documents/{fileId}/download`. Для `direction: UPLOAD` отсутствует, пока партнёр не загрузит документ через `POST /v1/orders/{orderId}/documents`; после загрузки принимает значение `fileId` из `DocumentUploadResponse`."},"name":{"type":"string","description":"Человекочитаемое наименование документа. Для `direction: DOWNLOAD` — имя сформированного платформой файла. Для `direction: UPLOAD` — название требуемого документа (имя фактически загружаемого файла партнёр определяет сам)."},"docType":{"anyOf":[{"$ref":"#/components/schemas/IncomingDocType"},{"$ref":"#/components/schemas/SignableDocType"}],"description":"Тип документа. Значение из `IncomingDocType`, если `direction: UPLOAD`; значение из `SignableDocType`, если `direction: DOWNLOAD`."},"direction":{"type":"string","enum":["UPLOAD","DOWNLOAD"],"description":"Направление обмена документом. `UPLOAD` — партнёр должен загрузить документ платформе через `POST /v1/orders/{orderId}/documents`. `DOWNLOAD` — партнёр должен скачать документ у платформы через `GET /v1/orders/{orderId}/documents/{fileId}/download`, подписать его открепленной подписью и загрузить подпись через `POST /v1/orders/{orderId}/documents/sign`."},"required":{"type":"boolean","description":"Признак обязательности документа для завершения текущего этапа (`POST /v1/orders/{orderId}/accept`). `true` — без него для `direction: UPLOAD` завершить `WAITING_FOR_DOCUMENTS` нельзя, а для `direction: DOWNLOAD` завершить `WAITING_FOR_SIGNATURE` нельзя. `false` — документ необязателен."},"uploaded":{"type":"boolean","description":"Признак получения документа платформой. Для `direction: UPLOAD` — `true`, когда для пары `entityId`+`docType` уже есть загруженный файл (в том числе загруженный ранее для другого предложения, где требовался тот же документ). Для `direction: DOWNLOAD` — `true`, когда партнёр уже загрузил подпись к этому конкретному документу этого предложения (`signature` заполнен) "},"signature":{"allOf":[{"$ref":"#/components/schemas/DocumentSignature"}],"description":"Заполняется после успешной загрузки открепленной подписи через `POST /v1/orders/{orderId}/documents/sign`. Отсутствует, пока подпись не загружена."}},"allOf":[{"if":{"properties":{"direction":{"const":"DOWNLOAD"}},"required":["direction"]},"then":{"required":["fileId"]}},{"if":{"properties":{"direction":{"const":"UPLOAD"}},"required":["direction"]},"then":{"not":{"required":["signature"]}}},{"if":{"properties":{"uploaded":{"const":false}},"required":["uploaded"]},"then":{"not":{"required":["signature"]}}}]},"IncomingDocType":{"type":"string","description":"Тип документа, загружаемого партнёром платформе. Пример перечисления; финальный список типов уточняется отдельно. ","enum":["PASSPORT","FIN_REPORT"]},"SignableDocType":{"type":"string","description":"Тип документа, формируемого платформой для скачивания, подписания и загрузки обратно партнёром. Пример перечисления; финальный список типов уточняется отдельно. ","enum":["VTB_CONSENT_PD","VTB_CONSENT","ALPHA_BORROWER_CONSENT_FORM","ALPHA_GUARANTOR_CONSENT_FORM"]},"DocumentSignature":{"type":"object","required":["signatureId","uploadedAt"],"properties":{"signatureId":{"type":"string","format":"uuid","description":"Идентификатор подписи, присвоенный при загрузке через `POST /v1/orders/{orderId}/documents/sign`"},"uploadedAt":{"type":"string","format":"date-time"}}},"ValidationIssue":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":1,"description":"Сообщение с описанием проблемы"}}},"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","details"],"properties":{"code":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Z][A-Z0-9_]*$"},"message":{"type":"string","minLength":1},"details":{"type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}}}}}},"ErrorDetail":{"type":"object","required":["code","message"],"properties":{"path":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Некорректный JSON, multipart или параметры запроса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"Unauthorized":{"description":"Bearer-токен отсутствует, недействителен или истёк","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"Forbidden":{"description":"Недостаточно прав для выполнения операции","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"OrderNotFound":{"description":"Заявка не существует или принадлежит другому партнёру","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"TooManyRequests":{"description":"Превышен лимит запросов","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"InternalError":{"description":"Внутренняя ошибка сервиса","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"ServiceUnavailable":{"description":"Сервис временно недоступен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"paths":{"/v1/orders/{orderId}":{"get":{"tags":["Orders"],"operationId":"getOrder","summary":"Получить актуальное состояние заявки","description":"Возвращает состояние заявки: массив `offers` с одной записью на каждый подключённый банк.\n\nУ заявки нет единого статуса на уровне всей заявки — каждый элемент `offers[]` независимо проходит собственный жизненный цикл статусов (`offers[].status`). `offers[].documents` содержит документы этого банка к обмену: как те, что партнёру нужно загрузить платформе (`direction: UPLOAD`, доступно при `status.code: WAITING_FOR_DOCUMENTS`), так и те, что нужно скачать, подписать открепленной подписью и загрузить обратно (`direction: DOWNLOAD`, доступно при `status.code: WAITING_FOR_SIGNATURE`). `offers[].issues` содержит причины проблем проверки по этому предложению. `offers[].creditOptions` заполняется, когда банк сформировал кредитное предложение.\n\nКлиенту следует повторить запрос не раньше чем через `pollAfterSeconds`. Значение `0` означает, что статусы всех предложений терминальны и дальнейший polling не нужен. ","parameters":[{"$ref":"#/components/parameters/OrderId"}],"responses":{"200":{"description":"Актуальное состояние заявки","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderState"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/OrderNotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}}}}
```
