При создании подписки/подписчика может потребоваться отображать в 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 | зарезервировано |