При создании подписки/подписчика может потребоваться отображать в UI лицформу со списком необходимых для заполнения полей (поля заполняются конечным пользователем). При этом:
Метод | URI |
---|---|
GET | GET /license-form-rules?entity_type={entity_type}&offer_id={offer_id} |
Имя | Тип | Обязательный | Описание | Значение по-умолчанию |
---|---|---|---|---|
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
Стандартный код HTTP: 200 OK.
Тело ответа: массив объектов 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
в виде пары «ключ-значение». Пример см. ниже.
Для указания типа ошибки в ответе сервера, используются стандартные HTTP-коды 4xx-5xx.
Тело ответа: возвращается общий для сервиса набор данных, содержащий сообщение об ошибке и дополнительную информацию. Дополнительная информация в разделе Ошибки сервиса.
[{ "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"] }] }]
Допустим, профиль пользователя имеет следующий контракт:
Profile { Id }
Лицформа для профиля может содержать правило для поля Bar, этого поля в контракте нет:
LicenseFormRule { "EntityType": "Profile", "PropertyName": "Bar" }
Вследствие этого, тело POST-запроса на создание объекта Profile будет выглядеть следующим образом:
{ "DynamicProperties": [ { Key: "Bar", Value: <user input> } ] }
Поле | Тип | Описание |
---|---|---|
EntityType | string | Возможные значения: Subscription, Profile, Address |
PropertyName | string | Имя свойства объекта, которому соответствует правило. Например «Phone» (для EntityType == «Profile») |
MinLength | int | |
MaxLength | int | |
RegExp | string | |
Required | bool | заполнять поле обязательно |
VisibleToEndUser | bool | поле отображается в UI |
Translations | JSON array | массив объектов LicenseFormTranslation |
Поле | Тип | Описание |
---|---|---|
Language | string | {xx} |
Title | string | заголовок (для UI) |
Description | string | описание (для UI) |
RegExpError | string | текст ошибки в UI, если введенное значение не соответствует регэкспу или длине |
AvailableValuesError | string | текст ошибки в UI, если введенное значение не соответствует регэкспу или длине |
AvailableValues | JSON array | массив строк - возможных значений, отображаемых в UI |
LinkValue | string | зарезервировано |
LinkTitle | string | зарезервировано |
Commentary | string | зарезервировано |