Пошаговая инструкция бизнес-процесса
Шаг 1: Инициализация клиента
GET /bs-core/main/clients/init
Описание
Перед созданием клиента необходимо получить его "шаблон" с предзаполненными системными значениями. Возвращает объект клиента с заполненными значениями по умолчанию (например, bureauConsentDate, personalDataConsentDate). Этот объект будет использован в теле запроса на следующем шаге, с перенесенными значениями по умолчанию.
Документация: Инициализация клиента
Параметры запроса
Метод не принимает параметров.
Пример запроса
GET /bs-core/main/clients/initПример успешного ответа
Метод вернет JSON-объект клиента. Сохраните его для использования на Шаге 2.
Шаг 2: Создание клиента
POST /bs-core/main/clients
Описание
На этом шаге создается постоянная запись клиента в системе.
Документация: Создание клиента
Параметры запроса
Сформируйте объект клиента на основе данных, полученных в Шаге 1 GET /clients/init.
Важно
Для создания клиента требуется заполнить обязательные поля, указанные в таблице ниже.
| Группа полей | Параметр | Обязательность | Тип | Описание | Примечание |
|---|---|---|---|---|---|
| Основные | firstName | R | string | Имя | "Фридрих" |
| lastName | R | string | Фамилия | "Эберт" | |
| birthDate | R | date | Дата рождения (YYYY-MM-DD) | "1982-12-20" | |
| mobilePhone | R | string | Номер телефона (только цифры) | "797762007719" | |
| sexId | R | int | Идентификатор пола (101251-М, 101252-Ж) | 101251 | |
| Паспорт | passport.no | R | string | Номер паспорта | "07825730" |
| passport.issueDate | R | date | Дата выдачи (YYYY-MM-DD) | "2012-01-23" | |
| Адрес | addressData.fias | R | string | Код ФИАС для фактического адреса | (код из ФИАС, в указанном примере "a0ed83c6-19b1-4d47-8c6d-0d2ed45b36c1") |
| addressData.fullAddressText | R | string | Текстовое представление адреса | "г Москва, ул Тверская, д 1, кв 10" | |
| Согласия | bureauConsent | Заполнено по умолчанию из init | bool | Согласие на передачу в КБ | true |
| bureauConsentDate | Заполнено по умолчанию из init | date | Дата согласия КБ (YYYY-MM-DD) | "2019-04-30" | |
| personalDataConsent | Заполнено по умолчанию из init | bool | Согласие на обработку ПДн | true | |
| personalDataConsentDate | Заполнено по умолчанию из init | date | Дата согласия ПДн (YYYY-MM-DD) | "2019-04-30" |
Примечания:
- Поле managerId заполняется обязательно из справочника «Специалисты по займам». (См. пункт – Создание специалиста/менеджера по займам)
- Поля bureauConsent (согласие на передачу в кредитное бюро) и personalDataConsent (согласие на обработку персональных данных) являются обязательными и предзаполнены из шага инициализации клиента. Есть возможность проверять корректность данных: можно отредактировать дату согласий или оставить в неизменном виде, полученном в шаге 1.
- Поле "registrationAddressData" (адрес регистрации) в случае необходимости заполняется, иначе передается пустым.
Пример запроса
В примере ниже представлен минимальный набор обязательных полей для создания клиента.
POST /bs-core/main/clients{
"firstName": "Фридрих", // Имя
"lastName": "Эберт", // Фамилия
"birthDate": "1982-12-20", // Дата рождения (YYYY-MM-DD)
"mobilePhone": "797762007719", // Номер телефона (только цифры)
"sexId": 101251, // Идентификатор пола (101251-М, 101252-Ж)
"managerId": 101091, // Идентификатор специалиста по займам (из справочника "Специалисты по займам")
"passport": {
// Паспортные данные
"no": "07825730", // Номер паспорта
"issueDate": "2012-01-23" // Дата выдачи паспорта (YYYY-MM-DD)
},
"addressData": {
// Адрес фактического проживания
"fias": "a0ed83c6-19b1-4d47-8c6d-0d2ed45b36c1", // Код ФИАС для фактического адреса
"fullAddressText": "г Москва, ул Тверская, д 1, кв 10" // Текстовое представление адреса
},
"registrationAddressData": {}, // Адрес регистрации (передается пустым, если не требуется)
"bureauConsent": true, // Согласие на передачу в кредитное бюро (предзаполнено из шага 1)
"bureauConsentDate": "2019-04-30", // Дата согласия на передачу в КБ (YYYY-MM-DD, предзаполнено из шага 1)
"personalDataConsent": true, // Согласие на обработку персональных данных (предзаполнено из шага 1)
"personalDataConsentDate": "2019-04-30" // Дата согласия на обработку ПДн (YYYY-MM-DD, предзаполнено из шага 1)
}Пример успешного ответа
{
"status": "ok", // Статус ответа
"timestamp": 1764048282284, // Временная метка ответа
"data": {
// Объект созданного клиента
"id": 41364, // Идентификатор созданного клиента (сохраните для использования на шаге 3)
"firstName": "Фридрих", // Имя
"lastName": "Эберт", // Фамилия
"patronymic": "", // Отчество
"sexId": 101251, // Идентификатор пола
"birthDate": "1982-12-20", // Дата рождения
"deathDate": null, // Дата смерти
"birthPlace": "", // Место рождения
"birthCountryId": null, // Идентификатор страны рождения
"educationId": null, // Идентификатор образования
"highSchool": "", // Учебное заведение
"faculty": "", // Факультет
"studyGraduationYear": "", // Год окончания обучения
"studyForm": "", // Форма обучения
"professionId": null, // Идентификатор профессии
"maritalStatusId": null, // Идентификатор семейного положения
"dependent": false, // Наличие иждивенцев
"passport": {
// Паспортные данные
"id": 151098, // Идентификатор паспорта
"seria": "", // Серия паспорта
"no": "07825730", // Номер паспорта
"extraNumber": null, // Дополнительный номер
"issueDate": "2012-01-23", // Дата выдачи
"closeDate": null, // Дата закрытия
"manager": "", // Менеджер
"subdivisionCode": "", // Код подразделения
"citizenshipId": null, // Идентификатор гражданства
"complementaryDocTypeId": null // Идентификатор типа дополнительного документа
},
"mobilePhone": "797762007719", // Мобильный телефон
"mobileNumberOwner": null, // Владелец номера телефона
"additionalPhone": "", // Дополнительный телефон
"homePhone": "" // Домашний телефон
// ... остальные поля клиента
}
}Сохраните id клиента (значение поля "data.id") — он понадобится для создания заявки на шаге 3.
Шаг 3: Инициализация заявки
GET /bs-core/main/loan-apps/init/client-id/{clientId}
Описание
Инициализация новой заявки на займ для последующего заполнения полей и сохранения. Заявка инициализируется по указанному (созданному в предыдущем шаге) Id клиента. Возвращает объект заявки. Этот объект будет использован в теле запроса на следующем шаге.
Документация: Инициализация заявки
Параметры запроса
{clientId} (integer, обязательный) — уникальный идентификатор клиента, созданного на шаге 2.
Пример запроса
GET /bs-core/main/loan-apps/init/client-id/39208Пример успешного ответа
Метод вернет JSON-объект заявки на займ. Сохраните его для использования на Шаге 4.
Шаг 4: Добавление кредитного продукта в заявку
POST /bs-core/main/loan-apps/products/{creditProductId}/apply
Описание
Метод автоматически добавляет кредитный продукт в заявку. Для этого необходимо:
- Указать идентификатор кредитного продукта (
creditProductId) в URL запроса. - В теле запроса передать объект заявки, полученный в Шаге 3 (ответ от GET
/bs-core/main/loan-apps/init/client-id/{clientId}).
Метод автоматически заполнит поля заявки параметрами из выбранного кредитного продукта (включая creditFieldReq). Полученный ответ с заполненными данными кредитного продукта используется на следующем шаге для создания заявки.
Документация:
| Метод | URL | Описание |
|---|---|---|
| GET|HEAD | /bs-core/dicts/credit-products | Получить элементы справочника "Кредитные продукты" |
| GET|HEAD | /bs-core/dicts/credit-products/{id} | Получить Кредитный продукт по ID |
| POST | /bs-core/main/loan-apps/products/{creditProductId}/apply | Автоматическое добавление кредитного продукта в заявку |
Параметры запроса
{creditProductId} (integer, обязательный) — ID кредитного продукта. Описание создания кредитного продукта см. в разделе Создание кредитного продукта. В примере используется кредитный продукт "Тариф Базовый".
Тело запроса
Используйте ответ метода GET /bs-core/main/loan-apps/init/client-id/{clientId} в шаге 3.
Пример запроса
POST /bs-core/main/loan-apps/products/101704/apply{
"type": "LoanApplication", // Тип заявки
"id": null, // Идентификатор заявки. При создании новой заявки - не указывается
"name": null, // Код заявки
"externalName": "",
"creationDate": 1763138367184, // Дата создания в миллисекундах
"clientId": 39208, // Идентификатор клиента (из шага 2)
"activitySubtypeId": 1014167, // Идентификатор подтипа деятельности
"loanTypeId": 101531, // Идентификатор типа займа
"loanStage": 1, // Ступень займа
"liabilityId": 101931, // Идентификатор финансового положения
"creditProductId": null, // Идентификатор кредитного продукта (будет заполнен автоматически методом)
"creditProductName": "", // Наименование кредитного продукта (будет заполнено автоматически методом)
"creditFieldReq": {
// Условия кредита (будут заполнены автоматически из кредитного продукта)
"id": null, // Идентификатор кредитного продукта
"dateCalcMethodId": null, // Метод расчета дат
"allowHolidaysPayment": false, // Не переносить с праздников и выходных
"shortTermControl": false, // Контроль краткосрочности займа
"shiftFirstRepaymentDate": true,
"interestChargeMethodId": null,
"interestCalcMethodId": null, // Метод расчета процентов
"repaymentNorm": 0.0, // Норма погашения
"calcIntOnIssueDate": false, // Начислять проценты в день выдачи контракта (в этом случае проценты начисляются и на первый и на последний день транша)
"calcInterestOnDelinqBalance": false, // Начислять процента на просроченную ОС
"calcIntOnDelinqBalanceOnlyAtDelinqIntRate": null,
"calcArrearInterest": false, // Начислять доп. проценты на просроченную ОС (отдельным видом суммы)
"arrearInterestFirstDay": 1, // Первый день начисления доп. процентов на просроченную ОС
"arrearInterestLastDay": 9999, // Последний день начисления доп. процентов на просроченную ОС
"principalDistribMethodId": null, // Метод распределения основной суммы
"forepaymentConsiderationMethodId": null, // Метод зачета предоплаты
"creditLineId": null, // Тип кредитной линии
"trancheDuration": 0, // Длительность периода между погашениями
"interestForTranche": 0.0, // Процентная ставка
"interestRateForPeriodList": [],
"delinquencyIntRate": 0.0, // Процентная ставка при просрочке
"delinqIntRateDelay": 0,
"delinqIntDaysLimit": 0,
"useDelinqIntRateTillNextTranche": true,
"keepUsingDelinqIntRate": false,
"interestRateTypeId": null, // Тип процентной ставки
"chargeExtraInterest": false, // Начислять проценты по окончанию срока кредита
"extraIntDaysQty": null,
"interestLgotPeriod": 0, // Беспроцентный период в днях
"interestLgotRate": 0.0,
"interestGracePeriod": 0, // Беспроцентный льготный период (в днях)
"gracePeriodDefermentMode": "RESTART",
"trancheCount": 0, // Количество траншей
"repaymentSequenceId": null, // Порядок погашения
"mandatoryChargePeriod": 0, // Период обязательного начисления процентов
"allowPrepayment": false, // Возможно погашение до срока при автоакцепте
"prolongationPeriod": 0, // Срок пролонгации
"earlyProlongationFromCurrentDate": false, // Досрочная пролонгация с текущей даты (иначе пролонгация с даты окончания текущего транша)
"prolongationOnNewSchedule": false,
"prolongedIntToLastTranche": true,
"penaltyTypeId": null, // Вид начисления штрафов
"calendarDaysPenalty": false, // Штраф по календарным дням
"firstWeekendWithoutPenalty": false, // Первые выходные штрафы не начислять
"stopPenaltyOnClose": false, // Останавливать штрафы после окончания графика
"qtyDaysStopPenaltyOnClose": 0, // Кол-во дней после окончания графика до остановки штрафов
"fixedDelayPenalty": 0.0, // Штраф за опоздание (Фиксированная сумма)
"delayPenaltyDay": 1, // День просрочки для начисления штрафа за опоздание
"inviteAmountPct": 0.0, // Процент от суммы выдачи (по которому определяем считать ли другом)
"inviteDiscountPerFriend": 0.0, // Снижение процентной ставки за каждого друга
"inviteMinIntRate": 0.0, // Минимальная процентная ставка
"scheduleRecalcEnabled": false, // Перерасчет графика в дату планового платежа
"fullScheduleDatesRecalc": false, // Полное смещение графика от фактической даты выдачи
"useDelinqIntRateForPsk": false,
"discountingEnabled": false, // Дисконтирование активировано
"useEirForDiscounting": false,
"fees": [], // Сборы
"principalParts": [], // Части основной суммы
"penaltyRates": [], // Ставки штрафа
"qtyTranchesFirstPeriod": 0, // Кол-во траншей в 1-м периоде
"intRateFirstPeriod": 0.0, // Процентная ставка в 1-м периоде
"qtyTranchesSecondPeriod": 0, // Кол-во траншей в 2-м периоде
"intRateSecondPeriod": 0.0, // Процентная ставка в 2-м периоде
"amountSecondPeriod": null,
"qtyTranchesRepNormSecondPeriod": 0, // Количество траншей для расчета нормы погашения второго периода
"interestOnLoanAmount": false, // Рассчитывать проценты от суммы в контракте
"penaltyRatePeriodFrom": "FROM_TRANCHE_REPAYMENT_DATE",
"agreedRepaymentAmount": null,
"disableLgotTrancheOnERN": false,
"penaltyLimitValue": null,
"penaltyLimitUnit": null,
"lgotTranchesQty": null,
"manualIntRateForFullCostCalc": null
},
"secondaryCreditProductId": null,
"secondaryCreditField": null,
"currencyId": 101011, // Идентификатор валюты заявки
"loanAmount": 0.0, // Сумма займа
"subsidyAmount": 0.0, // Сумма субсидии
"commissionAmount": 0.0, // Сумма комиссии
"loanDeniedRejectionId": null, // Идентификатор причины отказа
"creditPurposeId": 101682, // Идентификатор цели кредита
"creditSecondPurposeId": null,
"managerId": null, // Специалист по займам
"mainManagerId": null, // Главный специалист по займам
"collateralLineId": null,
"contractName": 0, // Имя контракта. Данное поле заполняется, если нужно знать номер контракта на этапе заявки, когда самого контракта еще нет
"collateralIds": [], // Идентификатор залогов
"coborrowers": [], // Созаемщики
"issueSteps": [], // Этапы выдачи
"gettingMoneyMethodId": 102396, // Способ получения денег
"bureauScoringPoint": 0.0, // Скоринговый балл КБ
"siteName": "", // Номер заявки на сайте
"ipAddress": "", // IP адрес
"applyPlace": "", // Место обращения клиента
"socialNetwork": "", // Социальная сеть (vk; ok; fb)
"userIDinSocialNetwork": "", // ID пользователя в социальной сети
"friendsQuantityInSocialNetwork": "", // Количество друзей пользователя в соц. сети
"mainPhotoLinkOnSocialNetwork": "", // Ссылка на основную фотографию из соц. сети
"selectedPhotosLinksWithLike": "", // Ссылки на отобранные фотографии с отметкой "Мне нравится" (максимум 100 шт.)
"selectedPhotosLinksWithMarkedPersons": "", // Ссылки на отобранные фотографии с отмеченными людьми (максимум 100 шт.)
"groupsListFromSocialNetworks": "", // Список групп из соц. сети (максимум 100 шт.)
"groupsLinksofFromSocialNetworks": "", // Ссылки на группы из соц. сети (максимум 100 шт.)
"age": "", // Возраст
"monthlyIncome": null,
"monthlyPayment": null,
"debtRatioCoef": null,
"personalIncomes": [],
"tenderName": null, // Название тендера
"tenderNo": null, // Номер тендера
"tenderNoticeNo": null, // Номер извещения тендера
"tenderDelayedAppNo": null, // Номер отложенной заявки тендера
"tenderPlatformCode": null, // Код площадки
"repeatedLoan": false, // Повторный займ
"premiumLoan": false, // Клиент Премиум
"shopAddressId": null, // Адрес магазина
"outletId": null,
"contractorId": null,
"merchantId": null,
"consultantId": null,
"conclusionDate": null, // Дата заключения соглашения
"signingDate": null, // Дата подписания
"decisionExpDate": null, // Срок действия решения СБОФ
"initialInstallment": 0.0, // Первоначальный взнос
"fullTaxAmount": 0.0,
"originalLoanApplicationId": null,
"restructedLoanApplicationId": null,
"marketingOfferId": null,
"contractUID": "01f0c196-0bd2-1b9a-a705-eb79bf07c851-0",
"subrent": null,
"rentalObjectResidualValue": null
}Пример успешного ответа
Метод вернет JSON-объект заявки на займ с автоматически заполненными полями кредитного продукта:
creditProductId: 101704creditProductName: "Тариф базовый"creditFieldReq: параметры кредитного продукта
Сохраните полученный ответ — он будет использован в теле запроса на Шаге 5.
Шаг 5: Создание заявки на займ
POST /bs-core/main/loan-apps
Описание
На данном шаге выполняется финальное создание заявки на займ. Метод сохраняет все данные, собранные на предыдущих шагах (инициализация заявки из Шага 3 и добавление кредитного продукта из Шага 4).
При успешном создании заявки система автоматически:
- создает объект Лид через канал поступления
"channel": "LOAN_APPLICATION". - запускает проверки в СПР (Система принятия решений) согласно настроенной скоринговой схеме.
- присваивает заявке статус и идентификатор.
Документация: Создание заявки
Параметры запроса
Тело запроса формируется на основе JSON-ответа, полученного в Шаге 4 от метода POST /bs-core/main/loan-apps/products/{creditProductId}/apply.
Инструкция:
- Скопируйте весь JSON-объект из ответа Шага 4
- Измените значение поля
loanAmountс0.0на требуемую сумму займа (например,10000.0)
Пример запроса
POST /bs-core/main/loan-apps
Content-Type: application/jsonТело запроса:
{
"type": "LoanApplication",
"id": null,
"name": null,
"externalName": "",
"creationDate": 1763138367184,
"clientId": 39208, // Идентификатор клиента (из Шага 2)
"activitySubtypeId": 1014167,
"loanTypeId": 101531,
"loanStage": 1,
"liabilityId": 101931,
"creditProductId": 101704, // Идентификатор кредитного продукта (из Шага 4)
"creditProductName": "Тариф базовый", // Название кредитного продукта (из Шага 4)
"creditFieldReq": {
/* ... параметры из Шага 4 ... */
},
"currencyId": 101011,
"loanAmount": 10000.0, // Сумма займа (изменено с 0.0)
"subsidyAmount": 0.0,
"commissionAmount": 0.0,
"creditPurposeId": 101682,
"managerId": null,
"gettingMoneyMethodId": 102396,
"contractUID": "01f0c196-0bd2-1b9a-a705-eb79bf07c851-0"
/* ... остальные поля из ответа Шага 4 ... */
}Пример успешного ответа
{
"status": "ok",
"timestamp": 1764048282284,
"data": {
"id": 12345, // Идентификатор созданной заявки
"name": "LA-2025-001234", // Код заявки
"clientId": 39208,
"creditProductId": 101704,
"loanAmount": 10000.0,
"loanStage": 1, // Стадия заявки
"status": "К выдаче" // Статус заявки (зависит от настроек канала)
/* ... остальные поля заявки ... */
}
}Важно
Наличие заполненного id в ответе означает, что заявка успешно создана, лид сформирован, и проверки в СПР пройдены.
Примечания
Статус заявки и контракт
В зависимости от настроек канала поступления лидов, после создания заявки возможны следующие сценарии:
| Параметр канала | Статус заявки | Контракт |
|---|---|---|
autoCreateContract: true | "К выдаче" | Создан, но не выдан |
autoCreateContract: trueautoIssueContract: true | "Выдан" | Создан и выдан |
autoCreateContract: falseautoIssueContract: false | "К выдаче" | Не создан |
Автоматическое создание лида
В рассмотренном примере выше лид автоматически создается через канал "channel": "LOAN_APPLICATION" и проходит по схеме проверок СПР, настроенных на данном канале поступления лидов.
Настройка автоматического создания контракта
Для управления автоматическим созданием и выдачей контракта используйте следующие параметры в настройках канала поступления лида:
Автоматическое создание контракта (
autoCreateContract):true— контракт будет создан автоматически.false— контракт не будет создан автоматически.
Автоматическая выдача контракта (
autoIssueContract):true— контракт будет автоматически выдан (требуетautoCreateContract: true).false— контракт не будет автоматически выдан.
Примеры настроек:
- Создание и выдача контракта:
"autoCreateContract": true,"autoIssueContract": true. - Только создание контракта:
"autoCreateContract": true,"autoIssueContract": false. - Без автоматического создания:
"autoCreateContract": false,"autoIssueContract": false.
Дополнительная информация
Подробнее о настройке каналов поступления, автоматическом создании контрактов и работе со скоринговыми схемами см. раздел документации: Лид, Каналы поступления, Скоринговые схемы (Системы принятия решений).
Обработка ошибок
Если вы столкнулись с ошибками на шаге создания клиента (Шаг 2), вот наиболее вероятные причины:
| Код ошибки | Причина |
|---|---|
| METADATA__EMPTY_REQUIRED_FIELD | Не заполнено одно из обязательных полей (имя, фамилия, дата рождения и т.д.) |
| NO_PASSPORT_ERROR | Не указаны или неверно указаны паспортные данные |
| NO_ADDRESS_ERROR | Не указан фактический адрес |
| NO_MANAGER_ERROR | Не указан managerId |
| NO_BUREAU_CONSENT_DATE_ERROR | Не указана дата согласия при переданном bureauConsent: true |
Возможное решение: Убедитесь, что в Админ-панели в разделе "Редактор моделей" для сущности "Физическое лицо" (/admin/model-editor/person – метод получение метаданных свойств заданной модели - https://docs.brainysoft.ru/documentation/page/267) не включена излишняя Обязательность для полей, не используемых в данном сценарии.
Полезные ссылки
- Справочник Юр лица https://docs.brainysoft.ru/documentation/page/169
- Получить филиал по ID https://docs.brainysoft.ru/documentation/page/20
- Методы расчета процентов https://docs.brainysoft.ru/documentation/page/866
- Методы распределения основной суммы https://docs.brainysoft.ru/documentation/page/867
- Получение справочника виды сумм https://docs.brainysoft.ru/documentation/page/731
- Методы получения схем скорингового балла https://docs.brainysoft.ru/documentation/page/470
- Системный справочник Получение отчета для ЦБ https://docs.brainysoft.ru/documentation/page/870
- Методы получения справочника Регионы https://docs.brainysoft.ru/documentation/page/206
- Метод получения справочника Список банков https://docs.brainysoft.ru/documentation/page/13
- Получение списка систем принятия решения https://docs.brainysoft.ru/documentation/page/479
- Редактирование метаданных свойств заданной модели https://docs.brainysoft.ru/documentation/page/268