Инструменты пользователя

Инструменты сайта

  • ru

Получение лицформ

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

Ответ

Успех

Стандартный код 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"]
    }]
}]

Пример работы с DynamicProperties

Допустим, профиль пользователя имеет следующий контракт:

Profile
{
    Id
}

Лицформа для профиля может содержать правило для поля Bar, этого поля в контракте нет:

LicenseFormRule
{
    "EntityType": "Profile",
    "PropertyName": "Bar"
}

Вследствие этого, тело POST-запроса на создание объекта Profile будет выглядеть следующим образом:

{
    "DynamicProperties": 
    [
        {
            Key: "Bar",
            Value: <user input>
        }
    ]
}

Контракт данных

Правило лицензионной формы (LicenseFormRule)

ПолеТипОписание
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

Перевод для правила лицензионной формы (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 зарезервировано