===== Получение лицформ ===== При создании подписки/подписчика может потребоваться отображать в UI лицформу со списком необходимых для заполнения полей (поля заполняются конечным пользователем). При этом: * поля могут быть разные для разных вендоров; * лицформы подписки для одного и того же вендора могут различаться по офферу; * поддержка переводов описаний полей, ошибок и пр. ===== Запрос ===== ==== Синтаксис ==== ^ Метод ^ URI ^ | GET | GET /license-form-rules?entity_type={entity_type}&offer_id={offer_id} | ==== Параметры URI ==== ^ Имя ^ Тип ^ Обязательный ^ Описание ^ Значение по-умолчанию ^ | entity_type | string | ✔ | Возможные значения: Subscription, Profile, Address | | | offer_id | GUID | | ID продаваемой услуги (тарифный план) | | ==== Тело запроса ==== Нет. ==== Пример запроса ==== GET /license-form-rules?subject=subscription&offer_id=c06b9b37-f449-4b6c-8e94-5da79b1ff4d5 GET /license-form-rules?subject=profile GET /license-form-rules?subject=address ===== Ответ ===== {{page>vendor-api:response-success}} **Тело ответа:** массив объектов ''LicenseFormRule''. У каждого правила поле ''Translations'' заполняется массивом переводов - массивом объектов ''LicenseFormTranslation'' (обязательно наличие хотя бы одного значения ''LicenseFormTranslation''). \\ \\ Как заполнить MinLength/MaxLength, RegExp, AvailableValues. Если для выбранного в UI языка есть массив значений AvailableValues, то данные значения имеют максимальный приоритет, и проверки MinLength/MaxLength, RegExp **не выполняются**. Если в AvailableValues пусто, всегда выполняются 2 проверки: на RegExp и MinLength/MaxLength. \\ ^ Проверка ^ Когда проверяем ^ Текст ошибки (если значение поля не прошло проверку) ^ | AvailableValues | всегда, если есть значения в поле | поле AvailableValuesError | | RegExp | если в AvailableValues пусто | поле RegExpError | | MinLength/MaxLength | если в AvailableValues пусто | поле RegExpError | // // ** Лицформы и DynamicProperties ** Вендор может передать правила заполнения для поля, которого нет в контракте. В этом случае, поле будет отображаться в UI, но при отправке POST-запроса на создание объекта, название поля и введенное пользователем значение будут помещены в массив ''DynamicProperties'' в виде пары "ключ-значение". Пример см. ниже. {{page>vendor-api:response-error}} ===== Пример ответа ===== [{ "EntityType": "Address", "PropertyName": "City", "MinLength": 10, "MaxLength": 20, "RegExp": "[aZaZa&9*]", "Required": true, "VisibleToEndUser": true, "Translations": [{ "LangCode": "RU", "Title": "Город", "Description": "Городок", "RegExpError": "Недопустимая длина поля / недопустимый символ", "AvailableValuesError": "Недопустимое значение", "LinkValue": null, "LinkTitle": null, "Commentary": null, "AvailableValues": ["City-17", "Данвич"] }, { "LangCode": "EN", "Title": "City", "Description": "City", "RegExpError": "Incorrect field length / incorrect symbol", "AvailableValuesError": "Incorrect value", "LinkValue": null, "LinkTitle": null, "Commentary": null, "AvailableValues": ["City-17", "Dunwich"] }] }] ===== Пример работы с DynamicProperties ===== Допустим, профиль пользователя имеет следующий контракт: Profile { Id } Лицформа для профиля может содержать правило для поля Bar, этого поля в контракте нет: LicenseFormRule { "EntityType": "Profile", "PropertyName": "Bar" } Вследствие этого, тело POST-запроса на создание объекта Profile будет выглядеть следующим образом: { "DynamicProperties": [ { Key: "Bar", Value: } ] } ===== Контракт данных ===== {{page>vendor-api:contracts:license-form-rule}} {{page>vendor-api:contracts:license-form-translation}}