Skip to content

Создание залога и назначение его к заявке на займ

Инструкция предназначена для сторонних разработчиков, интегрирующихся с API BrainySoft.

Цель: пошагово показать, как программно создать залог, настроить справочник «Типы залогов», инициализировать свойства залога и назначить залог к заявке на займ.

Краткий обзор процесса

Для выполнения полного бизнес-процесса необходимо последовательно выполнить следующие шаги:

ШагMethodURIDescription
1POST/bs-core/dicts/collateral-typesСоздание элемента справочника «Типы залогов»
2POST/bs-core/main/collaterals/properties/init/collateral-type-id/{collateralTypeId}Инициализация свойств залога на основе типа
3GET/PUT/bs-core/dicts/collateral-types/{id}Получение и редактирование типа залога
4GET/bs-core/main/collaterals/initИнициализация нового залога
5POST/bs-core/main/collateralsСоздание залога
6GET/PUT/bs-core/main/loan-apps/{id}Назначение залога к заявке на займ

Результат: В системе будут созданы:

  • Элемент справочника «Типы залогов».
  • Залог с заполненными свойствами.
  • Залог назначен к заявке на займ.

Важно: В данном сценарии используются только системно обязательные поля, что минимизирует риски ошибок и упрощает первоначальную интеграцию.

Предварительные требования

Для осуществления бизнес-процесса вам потребуется:

  • Доступ к API BrainySoft и валидные учетные данные.
  • Идентификатор клиента-залогодателя (depositorId).
  • Идентификатор заявки на займ (loanAppId).

Шаг 1: Создание нового элемента в справочнике "Типы залогов"

Метод: POST /bs-core/dicts/collateral-types

Описание: Создается элемент справочника «Типы залогов» для дальнейшего использования в системе и привязки его к Залогу.

Документация:

Параметры запроса

Сформируйте объект типа залога на основе данных из примера запроса.

Важно

Для создания типа залога требуется заполнить обязательные поля, указанные в таблице ниже.

Группа полейПараметрОбязательностьТипОписаниеПримечание
ОсновныеidRintИдентификатор типа залогаПри создании нового элемента — null
nameRstringНаименование типа залога"Авто тест2"
bureauCodeRintКод для бюро"5"
activeRboolДействующий (Да/Нет)true
priorityNumberRintНомер свойства залогаnull
СвойстваcollateralPropertiesTypes._.collateralPropertyTypeIdМintИдентификатор свойства типа залогаnull
collateralPropertiesTypes._.valueМstringЗначение свойства типа залогаnull
collateralPropertiesTypes._.valueCustomDictIdМintЗначение идентификатора пользовательского справочникаДля выбора справочника при свойств залога (создание пользовательского справочника)
collateralPropertiesTypes._.orderIdМintПорядковый номер0

Пример запроса

http
POST /bs-core/dicts/collateral-types
json
{
  "name": "Авто тест2",
  "bureauCode": "5",
  "collateralPropertyTypes": [
    {
      "collateralPropertyTypeId": null,
      "value": null,
      "valueCustomDictId": null,
      "orderId": 0
    }
  ],
  "active": true,
  "priorityNumber": null,
  "id": null
}

Пример успешного ответа

Метод вернет JSON-объект с идентификатором типа залога collateralTypeId, сохраните его для использования на следующем шаге и при создании Залога. ID типа залога возвращается в поле "data": 1017549.

json
{
  "status": "ok",
  "timestamp": 1764085203092,
  "data": 1017549
}

Сохраните id типа залога (значение поля "data") — он понадобится для следующих шагов.

Шаг 2: Инициализация свойств залога на основе типа залога

Метод: POST /bs-core/main/collaterals/properties/init/collateral-type-id/{collateralTypeId}

Описание: Метод предназначен для получения предварительно инициализированного объекта залога на основе его типа. Все обязательные поля и свойства, связанные с типом залога, заполняются значениями по умолчанию (например, null, 0, пустыми коллекциями). Для упрощения на клиентской стороне формирования корректного запроса для последующего создания или редактирования залога.

Документация: Инициализация свойств залога на основе типа залога

Параметры запроса

{collateralTypeId} (integer, обязательный) — уникальный идентификатор типа залога, созданного на Шаге 1.

Тело запроса

Сформируйте объект залога на основе данных из примера запроса.

Группа полейПараметрОбязательностьТипОписаниеПримечание
ОсновныеcollateralTypeIdRintИдентификатор типа залогаФормируется на Шаге 1
depositorIdRintИдентификатор залогодателяId клиента-залогодателя
documentRstringДокумент""
commentRstringПодробное описание""
СтоимостьassessedValueRfloatОценочная стоимость0
hypothecationValueRfloatЗалоговая стоимость0
СвойстваcollateralPropertiesRcollectionСвойства залога[]

Пример запроса

http
POST /bs-core/main/collaterals/properties/init/collateral-type-id/1017549
json
{
  "name": null,
  "collateralTypeId": null,
  "depositorId": null,
  "document": "",
  "comment": "",
  "assessedValue": 0,
  "hypothecationValue": 0,
  "collateralProperties": []
}

Пример успешного ответа

Метод возвращает JSON-объект — шаблон залога, с формированным идентификатором его свойств (collateralPropertyTypeId) и соответствующие поля. Шаблон используется для формирования тела запроса при создании или редактировании залога.

json
{
  "name": null,
  "collateralTypeId": 1017549,
  "depositorId": null,
  "document": "",
  "comment": "",
  "assessedValue": 0.0,
  "hypothecationValue": 0.0,
  "loanValue": 0.0,
  "saleCode": "",
  "saleBasis": "",
  "tags": null,
  "locationCityId": null,
  "creationDate": null,
  "collateralProperties": [
    {
      "collateralPropertyTypeId": 1018511,
      "value": null,
      "valueCustomDictId": null,
      "orderId": 0
    }
  ]
}

Сохраните полученный ответ — он будет использован при создании залога на Шаге 5.

Шаг 3: Получение элементов справочника «Типы залогов» и их редактирование

Далее необходимо получить данные типа залога (из справочника), созданного на предыдущих этапах, и скорректировать его свойства.

Методы:

  • GET /bs-core/dicts/collateral-types/{id}
  • PUT /bs-core/dicts/collateral-types/{id}

Описание: Тело PUT-запроса формируется на основе ответа GET /bs-core/dicts/collateral-types/{id}. В нём корректируется коллекция "collateralPropertyTypes": обновляются значения существующих свойств, либо добавляются/удаляются элементы при изменении структуры типа залога.

Документация:

Параметры запроса

{id} (integer, обязательный) — уникальный идентификатор типа залога, созданного на Шаге 1.

Пример запроса GET

http
GET /bs-core/dicts/collateral-types/1017549

Пример ответа GET:

json
{
  "name": "Авто тест2",
  "bureauCode": "5",
  "collateralPropertyTypes": [
    {
      "name": null,
      "required": false,
      "visible": false,
      "orderNo": 0,
      "customDictCategory": "",
      "type": "",
      "valuePattern": null,
      "valuePatternHint": null,
      "id": 1018511
    }
  ],
  "active": true,
  "priorityNumber": null,
  "id": 1017549
}

Пример запроса PUT:

На основе ответа редактируется Тело запроса PUT, при необходимости добавляем свойства залога или правим существующие:

http
PUT /bs-core/dicts/collateral-types/1017549
json
{
  "name": "Авто тест2",
  "bureauCode": "5",
  "collateralPropertyTypes": [
    {
      "name": "Модель авто",
      "required": true,
      "visible": true,
      "orderNo": 0,
      "customDictCategory": "",
      "type": "",
      "valuePattern": null,
      "valuePatternHint": null,
      "id": 1018511
    }
  ],
  "active": true,
  "priorityNumber": null,
  "id": 1017549
}
Группа полейПараметрОбязательностьТипОписаниеПримечание
ОсновныеidRintИдентификатор типа залога1017549
nameRstringНаименование типа залога"Авто тест2"
bureauCodeRintКод для бюро"5"
activeRboolДействующий (Да/Нет)true
priorityNumberRintНомер свойства залогаnull
СвойстваcollateralPropertiesTypes._.idМintИдентификатор свойства типа залога1018511
collateralPropertiesTypes._.nameМstringНаименование свойства типа залога"Модель авто"
collateralPropertiesTypes._.requiredМboolЗначение обязательности свойстваtrue
collateralPropertiesTypes._.visibleМboolЗначение видимости свойствtrue
collateralPropertiesTypes._.orderNoRintНомер свойства залога0

Примечание: Добавлены поля valuePattern и valuePatternHint в collateralPropertyType для поиска залога по value, для корректной отработки метода поиска залога по значению его поля POST /main/collaterals/find-by-property-value.

Тело запроса для поиска:

json
{
  "collateralPropertyTypeId": 123,
  "value": "abc"
}

Возвращает список collaterals, ответ идентичен методу GET /main/collaterals/{id}.

  • String valuePattern — Паттерн, которому должно соответствовать значение свойства залога
  • String valuePatternHint — Описание паттерна, которому должно соответствовать значение свойства залога

Паттерн — регулярное выражение.

Пример паттерна для VIN номера автомобиля, для осуществления поиска по данному номеру:

json
{
  "name": "VIN код",
  "required": false,
  "visible": true,
  "orderNo": 1,
  "customDictCategory": null,
  "type": "ChassisNumber",
  "valuePattern": "^[WERTYUPASDFGHJKLZXCVBNM0-9]{17,17}$",
  "valuePatternHint": "Строго 17 символов,большими латинскими буквами,I, O, Q не применимы",
  "id": 1018315
}

Шаг 4: Инициализация нового залога

Метод: GET /bs-core/main/collaterals/init

Описание: Перед созданием залога необходимо получить его "шаблон" с предзаполненными системными значениями, вызвав метод инициализации объекта залог.

Документация: Инициализация нового залога

Параметры запроса

Метод не принимает параметров.

Пример запроса

http
GET /bs-core/main/collaterals/init

Пример успешного ответа

Метод вернет JSON-объект залога. Сохраните его для использования на Шаге 5.

Шаг 5: Создание залога

Метод: POST /bs-core/main/collaterals

Описание: На этом шаге создается постоянная запись залога в системе.

Документация: Создание нового залога

Параметры запроса

Сформируйте объект залога на основе данных, полученных в Шаге 4 GET /bs-core/main/collaterals/init.

Важно

Для создания залога требуется заполнить обязательные поля, указанные в таблице ниже.

Группа полейПараметрОбязательностьТипОписаниеПримечание
ОсновныеidRintИдентификатор ЗалогаПри создании залога null, при сохранении присваивается автоматически идентификатор
nameRstringНаименование залога"Залог Тестовый"
collateralTypeIdRintИдентификатор типа залогаУказывается из предварительно заполненного справочника (см Шаг 1)
depositorIdRintИдентификатор залогодателяId клиента – залогодателя, идентификатор созданного клиента в системе
documentRstringНаименование договора""
commentRstringПодробное описание""
СтоимостьassessedValueRfloatОценочная стоимость25000.0
hypothecationValueRfloatЗалоговая стоимость100000.0
loanValueRfloatСсудная стоимость0.0
РеализацияsaleCodeRstringКод залога для реализации""
saleBasisRstringОснование для реализации""
СвойстваcollateralPropertiesRcollectionСвойства залогаЗаполняется, если необходимо в дальнейшем применять свойства залогов
collateralProperties._.idМintИдентификатор свойства залога
collateralProperties._.collateralPropertyTypeIdМintИдентификатор свойства типа залога1018511 (из Шага 2)
collateralProperties._.valueМstringЗначение"202020"
collateralProperties._.orderIdМintИдентификатор порядкового номера0

Пример запроса

http
POST /bs-core/main/collaterals
json
{
  "name": "Залог Тестовый", // Наименование залога
  "collateralTypeId": 1017549, // Идентификатор типа залога (из Шага 1)
  "depositorId": 328, // Идентификатор залогодателя (Id клиента)
  "document": "", // Наименование договора
  "comment": "", // Подробное описание
  "assessedValue": 25000.0, // Оценочная стоимость
  "hypothecationValue": 100000.0, // Залоговая стоимость
  "loanValue": 0.0, // Ссудная стоимость
  "saleCode": "", // Код залога для реализации
  "saleBasis": "", // Основание для реализации
  "tags": null, // Теги залога
  "locationCityId": null, // Идентификатор города расположения
  "creationDate": null, // Дата создания
  "collateralProperties": [
    {
      "collateralPropertyTypeId": 1018511, // Идентификатор свойства типа залога (из Шага 2)
      "value": "202020", // Значение свойства
      "valueCustomDictId": null, // Идентификатор пользовательского справочника
      "orderId": 0 // Порядковый номер
    }
  ]
}

Пример успешного ответа

Метод вернет JSON-объект сохраненного залога в системе, с заполненными идентификаторами collateralsId и collateralProperties.

json
{
  "name": "Залог Тестовый",
  "collateralTypeId": 1017549,
  "depositorId": 328,
  "document": "",
  "comment": "",
  "assessedValue": 25000.0,
  "hypothecationValue": 100000.0,
  "loanValue": 0.0,
  "saleCode": "",
  "saleBasis": "",
  "tags": null,
  "locationCityId": null,
  "creationDate": 1764099589148,
  "collateralProperties": [
    {
      "collateralPropertyTypeId": 1018511,
      "value": "202020",
      "valueCustomDictId": null,
      "orderId": 0,
      "id": 1189
    }
  ],
  "id": 928,
  "uid": null
}

Примечание: private String UID — Уникальный номер залога с типом Гарантия/Поручительство — поле заполняется только для залогов с типом Поручительство/Гарантия, для остальных типов залога это поле всегда остается null.

Сохраните id залога (значение поля "id") — он понадобится для назначения залога к заявке на Шаге 6.

Шаг 6: Назначение залога к заявке на займ

Метод: GET /bs-core/main/loan-apps/{id} — Получение заявки на займ по ID.

Метод: PUT /bs-core/main/loan-apps/{id} — Обновление заявки на займ

Описание: Заполняем идентификатор созданного залога в параметре collateralIds.

Документация:

Параметры запроса

{id} (integer, обязательный) — уникальный идентификатор заявки на займ.

Пример запроса GET

http
GET /bs-core/main/loan-apps/12345

Пример ответа GET:

json
{
  "id": 12345,
  "name": "LA-2025-001234",
  "clientId": 39208,
  "collateralIds": []
  // ... остальные поля заявки
}

Пример запроса PUT:

http
PUT /bs-core/main/loan-apps/12345
json
{
  "collateralIds": [928] // Идентификатор созданного залога (из Шага 5)
}

Пример успешного ответа

Метод вернет обновленный объект заявки с заполненным массивом collateralIds.

Обработка ошибок

Если вы столкнулись с ошибками при создании залога, вот наиболее вероятные причины:

Код ошибкиПричина
METADATA__EMPTY_REQUIRED_FIELDНе заполнено одно из обязательных полей (name, collateralTypeId, depositorId и т.д.)
NO_COLLATERAL_TYPE_ERRORНе указан или неверно указан тип залога
NO_DEPOSITOR_ERRORНе указан идентификатор залогодателя
INVALID_COLLATERAL_PROPERTY_ERRORНеверно заполнены свойства залога

Возможное решение: Убедитесь, что все обязательные поля заполнены корректно, и идентификаторы типов залогов и клиентов существуют в системе.

Дополнительная информация

Работа с тегами залогов

По залогу добавлены все категории (теги), к которым относится товар. К сущности collateral добавлен параметр tags (массив string).

Методы для получения залогов по тегам:

  • GET /main/collaterals/tags-list — Полный список тегов
  • GET /main/collaterals/search-by-tags/:tags — поиск по тегам (ищет залог по наличию хотя бы одного тега)
    • Параметры: tags — теги через запятую
    • like=true позволяет искать по неполному соответствию
  • GET /main/collaterals/filter-by-tags/:tags — фильтр по тегам (у залога должны быть все теги из списка)