--- tags: ОР ЛКК --- # Анкета нового клиента Протокол: `http` `https` Адрес: `server/base/hs/api/questionnaire/{название_метода}` Отправка запроса происходит после нажатия кнопки расчитать в калькуляторе, если поле **first_design** = Истина. Иначе обыный процесс взятия займа без анкеты. При успешном запросе возвращает список json. При отсутствии вернёт ошибочный результат ## Получение анкеты нового клиента ==GET== `getForm` **Параметры** * client_hash - хэш клиента * ip * type - тип (рассрочка/займ) в зависимости от того на какой закладке калькулятора нажимали кнопку рассчитать. Возможные значения: ==Installments/ConsumerLoan== **Описание ответа** :::success :::spoiler Пример тела ответа ```json= { "error":false, "description":"", "result":[ { "id":"personal_information", "title":"Персональные данные", "fields":[ { "label":"Фамилия", "id":"surname", "type":"text", "mask":"", "required":true, "value":[ ] }, { "label":"Имя", "id":"first_name", "type":"text", "mask":"", "required":true, "value":[ ] }, { "label":"Отчество", "id":"second_name", "type":"text", "mask":"", "required":true, "value":[ ] }, { "label":"Есть отчество", "id":"second_name", "type":"checkbox", "mask":"", "required":true, "value":[ ] }, { "label":"Дата рождения", "id":"birth_date", "type":"text", "mask":"", "required":true, "value":[ ] }, { "label":"Пол", "id":"gender", "type":"select", "mask":"", "required":true, "value":[ "Мужской", "Женский" ] }, { "label":"Телефон", "id":"phone", "type":"phone", "mask":"", "required":true, "value":[ ] }, { "title":"Удостоверения личности", "id":"identity", "sections":[ { "title":"Паспорт", "id":"passport", "fields":[ { "label":"Серия", "id":"series", "type":"text", "mask":"9999", "required":true, "value":[ ] }, { "label":"Номер", "id":"num", "type":"text", "mask":"999999", "required":true, "value":[ ] }, { "label":"Код подразделения", "id":"code", "type":"text", "mask":"999-999", "required":true, "value":[ ] }, { "label":"Кем выдан", "id":"issued_by", "type":"text", "mask":"999-999", "required":true, "value":[ ] }, { "label":"Дата выдачи", "id":"pass_date", "type":"date", "mask":"999-999", "required":true, "value":[ ] } ] }, { "title":"СтарыйПаспорт", "id":"old_passport", "fields":[ { "label":"Серия", "id":"old_series", "type":"text", "mask":"9999", "required":true, "value":[ ] }, { "label":"Номер", "id":"old_num", "type":"text", "mask":"999999", "required":true, "value":[ ] }, { "label":"Код подразделения", "id":"old_code", "type":"text", "mask":"999-999", "required":true, "value":[ ] }, { "label":"Кем выдан", "id":"old_issued_by", "type":"text", "mask":"999-999", "required":true, "value":[ ] }, { "label":"Дата выдачи", "id":"old_pass_date", "type":"date", "mask":"999-999", "required":true, "value":[ ] } ] } ], "fields":[ { "label":"Есть cтарый gаспорт", "id":"has_old_passport", "type":"checkbox", "mask":"", "required":true, "value":[ ] }, { "label":"СНИЛС", "id":"snils", "type":"text", "mask":"9999999999999", "required":true, "value":[ ] }, { "label":"ИНН", "id":"inn", "type":"text", "mask":"999999999999", "required":true, "value":[ ] } ] } ] }, { "id":"7f604bf3-7b0b-4cdf-8563-09066d33d354", "title":"Информация о клиенте" }, { "id":"bcc61112-d9a1-4a7b-b8c1-52d917ee3a2f", "title":"Адреса и контактная информация" }, { "id":"2b49c62a-2613-41bb-9ff2-21c72180d2c9", "title":"Ваши доходы" }, { "id":"f6e8cd78-6756-4f09-b1a7-3d2551b31695", "title":"Ваши расходы" } ] } ``` ::: Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Отправка заполненного раздела и одновременное получение следующего раздела ==POST== `sendSection` **Параметры** * client_hash - хэш клиента * ip * section_id - ид раздела, который был получен операцией `getForm` **Тело запроса** ```json= { "id_вопроса1": "выбранное значение вопроса1", "id_вопроса2": "выбранное значение вопроса2", "id_вопроса3": "выбранное значение вопроса3", "id_вопроса4": "выбранное значение вопроса4" } ``` **Описание ответа** ```json= { "error":false, "description":"", "result":{ "fields":[ { "label":"Работодатель", "id":"Работодатель", "type":"text", "mask":"", "required":true, "value":"МКК \"АРИФМЕТИКА\"", "visible":true }, { "label":"Отраслевая принадлежность", "id":"ОтраслеваяПринадлежность", "type":"select", "mask":"", "required":true, "value":[ "финансовое дело и страхование", "строительство", "оптовая торговля", "розничная торговля", "промышленность", "услуги по продаже и аренде недвижимости", "перевозки / складское хранение", "предпринимательская деятельность", "образование", "здравоохранение и социальная помощь", "искусство / развлечения / отдых", "гостиницы и предприятия общественного питания", "государственное управление", "вооруженные силы (МВД, ВС, МЧС и т.д.)", "юридические услуги", "другое" ], "visible":true } ], "questions_for_change":[ "НетСтационарногоРабочегоТелефона" ] } } ``` **Параметры** * label - наименование вопроса * id - идентификатор вопроса * type - тип вопроса. Возможные значения: * select - список выбора значения * address - адрес, в формате 9 запятых (<код страны>, <индекс>, <код региона>, <район>, <город>, <населенный пункт>, <улица>, <дом>, <корпус>, <квартира>) * ~~phone - телефон~~ вместо этого type: text и mask = "+7 (999) 999-99-99" * email * num - число * text - строка * checkbox - флажок * multiple - составной ответ * date - дата * mask - маска заполнения, используется вместе с type * required - обязательность поля * value - значение, в случае type: select - массив, type: checkbox - булево, в остальных случаях строка/число * disabled - (необязательное, может как быть в вопросе, так и нет) - нужно ли заблокировать поле. Булево * warning_text - (необязательное, может как быть в вопросе, так и нет) - текст предупреждения для вопроса * error_text - (необязательное, может как быть в вопросе, так и нет) - текст ошибки для вопроса * min_length - (необязательное, может как быть в вопросе, так и нет) - минимальная длина ответа * visible - не успользуется, не обращать внимание на этот параметр * questions_for_change - массив id вопросов, при изменении которых нужно обновить текущий раздел * comment - признак того, что у этого вопроса должен быть комментарий * required_comment - в разработке * min_value - (необязательное), минимальное значение ответа * max_value - (необязательное), максимальное значение ответа * max_count_strings - (только у составных вопросов) максимальное количество строк составного вопроса * min_count_strings - (только у составных вопросов) минимальное количество строк составного вопроса * explanation - (необязательный), пояснения к вопросу (отображаются при наведении на “?”) :::success :::spoiler Пример тела ответа ```json= { "error":false, "description":"", "result":{ "fields":[ { "label":"Работодатель", "id":"Работодатель", "type":"text", "mask":"", "required":true, "value":"МКК \"АРИФМЕТИКА\"", "visible":true }, { "label":"Отраслевая принадлежность", "id":"ОтраслеваяПринадлежность", "type":"select", "mask":"", "required":true, "value":[ "финансовое дело и страхование", "строительство", "оптовая торговля", "розничная торговля", "промышленность", "услуги по продаже и аренде недвижимости", "перевозки / складское хранение", "предпринимательская деятельность", "образование", "здравоохранение и социальная помощь", "искусство / развлечения / отдых", "гостиницы и предприятия общественного питания", "государственное управление", "вооруженные силы (МВД, ВС, МЧС и т.д.)", "юридические услуги", "другое" ], "visible":true }, { "label":"Должность (выбор)", "id":"Должность", "type":"select", "mask":"", "required":true, "value":[ "Ассистент", "Сновальщик", "Вулканизаторщик", "Зачистчик", "Бандажник", "Агломератчик", "Агент ", "Градуировщик", "Отделочник", "Строгальщик", "Фельдшер", "Забойщик", "Гидролог", "Консул", "Экономист", "Конвертерщик", "Консультант", "Педикюрша", "Вышивальщик ", "Столяр", "Дезинфекционист", "Адвокат", "Пильщик", "Садовод", ... ], "visible":true }, { "label":"Стаж на текущем месте работы", "id":"Стаж", "type":"select", "mask":"", "required":false, "value":[ "свыше пяти лет", "от 3 до 12 месяцев", "от года до трех лет включительно", "от трех до пяти лет включительно", "до 3-х месяцев" ] }, { "label":"Нет стационарного рабочего телефона", "id":"НетСтационарногоРабочегоТелефона", "type":"checkbox", "mask":"", "required":false, "value":"", "visible":true }, { "label":"Стационарный рабочий телефон", "id":"ТелефонРабочий", "type":"text", "mask":"+7 (999) 999-99-99", "required":false, "value":"3832808027" }, { "label":"Мобильный/многоканальный рабочий телефон", "id":"МобильныйМногоканальныйРабочийТелефон", "type":"text", "mask":"+7 (999) 999-99-99", "required":false, "value":"" }, { "label":"Мобильный телефон руководителя", "id":"МобильныйТелефонРуководителя", "type":"text", "mask":"+7 (999) 999-99-99", "required":false, "value":"" }, { "label":"Адрес постоянной работы", "id":"АдресПостояннойРаботы", "type":"address", "mask":"", "required":true, "value":"РОССИЯ,630110,Новосибирская обл,,Новосибирск г,,Богдана Хмельницкого ул,дом 58,,", "visible":true }, { "label":"Зарплата Клиента", "id":"ЗарплатаКлиента", "type":"num", "mask":"", "required":false, "value":"" }, { "label":"Ежемесячный доход на семью", "id":"СуммарныйДоход", "type":"num", "mask":"", "required":true, "value":"" } ] } } ``` ::: Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Получение списка документов для заполнения анкеты ==GET== `getDocsList` **Параметры** * client_hash - хэш клиента * ip * type - тип (рассрочка/займ) в зависимости от того на какой закладке калькулятора нажимали кнопку рассчитать. Возможные значения: Installments/ConsumerLoan **Описание ответа** ```json= [ { "downloaded":false, "acceptable_size":1500, "mandatory":true, "instruction":"", "id":"ID='80e2fddb-b284-4f9e-b118-12574d87983a'", "pattern":"", "pattern_extension":"png", "name":"Разворот паспорта с фото" }, { "downloaded":true, "acceptable_size":1500, "mandatory":true, "instruction":"Прикрепите фото паспорта с фото", "id":"Name='ОсновнаяФотография'", "pattern":"base64шаблона", "pattern_extension":"png", "name":"ФОТО КЛИЕНТА С РАЗВОРОТОМ ПАСПОРТА" }, { "downloaded":false, "acceptable_size":1500, "mandatory":true, "instruction":"", "id":"ID='067a5dcd-0d20-448d-ab9f-9fc556712c9e'", "pattern":"", "pattern_extension":"png", "name":"Адрес регистрации" }, { "downloaded":false, "acceptable_size":1500, "mandatory":true, "instruction":"", "id":"ID='40d1dd46-bfbb-46a2-828d-d5c22654a6bc'", "pattern":"", "pattern_extension":"png", "name":"Сведения о ранее выданных паспортах" } ] ``` * name - наименование документа (тип: строка), * id - представление ссылки (тип: строка), * acceptable_size (ДопустимыйРазмер) - размер загружаемого файла в кБайтах (тип: число), * mandatory (Обязательный) - признак обязательности (тип: булево) * downloaded - признак, что в базе есть такой загруженный файл и его можно удалить * pattern - двоичные данные в base64 шаблона документа (картинка) * pattern_extension - формат поля pattern * instruction - инструкция по подготовке файла к прикреплению Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Отправка документа анкеты ==POST== `sendDoc` **Параметры** * client_hash - хэш клиента * ip * doc_id - ид документа, который был получен операцией `getDocsList` **Тело запроса** ```json= { "id": "ID='80e2fddb-b284-4f9e-b118-12574d87983a'", "data": <двоичные данные документа в формате base64>, "extension": "pdf" } ``` **Описание ответа** ```json= { "error": false, "description": "" } ``` Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Скачивание документа анкеты ==GET== `getDoc` **Параметры** * client_hash - хэш клиента * ip **Описание ответа** ```json= { "id": "ID='80e2fddb-b284-4f9e-b118-12574d87983a'", "data": <двоичные данные документа в формате base64>, "extension": "pdf" } ``` * id - ид документа, который был получен операцией `getDocsList` Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Удаление документа анкеты ==GET== `delDoc` **Параметры** * client_hash - хэш клиента * ip * doc_id - ид документа, который был получен операцией `getDocsList` **Описание ответа** ```json= { "error": false, "description": "" } ``` Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа) ## Отправка анкеты и начало взятия займа ==POST== `sendForm` **Параметры** * client_hash - хэш клиента * ip * type - тип (рассрочка/займ) в зависимости от того на какой закладке калькулятора нажимали кнопку рассчитать. Возможные значения: ==Installments/ConsumerLoan== **Тело запроса** ```json= { "sum":8000, "period":5, "type_period":"Month", "step_period":1 } ``` Данные для тела запроса - то, что выбрал клиент при расчитать, и часть что пришло на лимитах **Описание ответа** ```json= { в разработке, пока просто error false } ``` Ошибочный ответ, см. [пример](/E1rcq73tSPODd0Ds-6qT9w#Пример-ошибочного-ответа)