====== API HTTP-сервиса «Фестивали» ======
===== Общая информация =====
* HTTP-сервис: **Фестивали**
* RootURL: ''fest''
* Основной маршрут обмена: ''PUT /v1/{ИмяМетода}''
* Технически в публикации 1С обычно используется путь вида ''/hs/fest/v1/{ИмяМетода}''.
===== Общие правила для PUT /v1/{ИмяМетода} =====
* Тело запроса: JSON.
* Обязательное поле тела: ''ВерсияПриложения''.
* Если версия ниже допустимой, возвращается JSON:
* ''Удачно = false''
* ''Ошибка = "Необходимо обновить приложение..."''
* ''СсылкаНаНовуюВерсию = "https://rusclimbing.ru/climbfest/"''
* Успешный HTTP-код обычно ''200'', бизнес-ошибки идут в JSON-поле ''Ошибка''.
===== Команды =====
==== Авторизация и профиль ====
=== check_email ===
* Назначение: проверка существования пользователя по email.
* Вход:
* ''ЭлектроннаяПочта''
* Выход JSON:
{
"Удачно": true,
"Ошибка": "",
"ПользовательСуществует": true
}
=== new_email ===
* Назначение: создание пользователя по email.
* Вход:
* ''ЭлектроннаяПочта''
* Выход JSON:
{
"Удачно": true,
"Ошибка": ""
}
=== auth_email ===
* Назначение: подтверждение кода и выдача токена.
* Вход:
* ''ЭлектроннаяПочта''
* ''КодПроверки''
* Выход JSON:
{
"Удачно": true,
"Ошибка": "",
"ПользовательАвторизован": true,
"Токен": "..."
}
* Нюанс реализации: в одной из веток может вернуться JSON ''false'' вместо структуры.
==== Списки/справочники ====
=== get_festlist ===
* Вход: без дополнительных полей.
* Выход JSON: ''{Удачно, Ошибка, Фестивали:[...]}''.
* Поля элемента ''Фестивали'':
* ''Код, Наименование, Начало, Окончание, Место, ДатыДляКалендаря, ОписаниеДляПриложения, СетыПослеОплаты, Страница''
* ''Оферта, СогласиеПДн, СетОбязателен, НесколькоЗачетов, РасчетРезультатовНаСервере''
* ''РазмерГруппы, КлубныйЗачет, СемейныйЗачет, СтуденческийЗачет''
* ''ИспользоватьУровеньЛазания, УровеньЛазанияОбязателен, ИспользоватьСтаж, СтажОбязателен''
* ''ИспользоватьКласс, КлассОбязателен, ИспользоватьГород, ГородОбязателен''
* ''ИспользоватьТелефон, ТелефонОбязателен, ИспользоватьРазряд, ИспользоватьБылНаМесте''
* ''ИспользоватьПакеты, ИспользоватьПромокоды, УчитыватьПопытки, УчитыватьФлешРедпойнт''
=== get_linklist ===
* Вход: ''Фестиваль'' (код).
* Выход: ''{Удачно, Ошибка, Ссылки:[{Код, Наименование, АдресСсылки, Порядок}]}''.
=== get_regionlist ===
* Вход: без дополнительных полей.
* Выход: ''{Удачно, Ошибка, Регионы:[{Код, Наименование}]}''.
=== get_categorylist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Зачеты:[...]}''.
* Поля ''Зачеты'': ''Код, Наименование, Порядок, НуженСопровождающий, КоличествоСетов, ЦенаПоСетам, ТрассТрудность, ТрассБоулдеринг, ТрассМультипитч, ЗолотоМ, СереброМ, БронзаМ, ЗолотоЖ, СереброЖ, БронзаЖ''.
=== get_packagelist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Пакеты:[{Код, Наименование, Порядок, НуженРазмер}]}''.
=== get_discountlist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Скидки:[{Код, Наименование, Скидка, Порядок, ПоПромокоду}]}''.
=== get_doplist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Допы:[{Код, Наименование, Цена, ЕстьСвойство, НаименованиеСвойства}]}''.
=== get_questlist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Вопросы:[...]}''.
* Поля ''Вопросы'': ''Код, Наименование, Порядок, Описание, Обязательный, ДопускаетсяНесколькоОтветов, ВариантыОтветов''.
=== get_optionlist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, СвойстваДопов:[{Код, Наименование, ДопКод}]}''.
=== get_doctypelist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, ВидыДокументов:[{Код, Наименование, Порядок}]}''.
=== get_levellist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, УровниЛазания:[{Код, Наименование}]}''.
=== get_experiencelist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Стажи:[{Код, Наименование}]}''.
=== get_classlist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Классы:[{Код, Наименование}]}''.
=== get_setlist ===
* Вход: ''Фестиваль''.
* Выход: ''{Удачно, Ошибка, Сеты:[...]}''.
* Поля ''Сеты'': ''Код, Наименование, Начало, СвободныхМест, Зачеты, Цена''.
=== get_sizelist ===
* Вход: без дополнительных полей.
* Выход: ''{Удачно, Ошибка, Размеры:[{Код, Наименование}]}''.
==== Проверки и расчёты ====
=== check_category ===
* Вход:
* ''Фамилия, Имя, Отчество, ДатаРождения''
* ''Фестиваль, УровеньЛазания, Стаж''
* Выход:
{
"Удачно": true,
"Ошибка": "",
"Зачет": "...",
"Скидка": "...",
"Сет": "...",
"Пакет": "..."
}
=== check_promo ===
* Вход: ''Промокод, Фестиваль''.
* Выход: ''{Удачно, Ошибка, Принят, Скидка}''.
=== get_amount ===
* Вход: ''ТокенПользователя, Код''.
* Выход: ''{Удачно, Ошибка, Сумма}''.
=== get_groupamount ===
* Вход: ''ТокенПользователя, Фестиваль''.
* Выход: ''{Удачно, Ошибка, Сумма}''.
=== get_preamount ===
* Вход: ''ТокенПользователя, Фестиваль, Пакет, Зачет''.
* Опционально: ''Скидка'', ''Сеты'' (массив кодов).
* Выход: ''{Удачно, Ошибка, Сумма}''.
==== Участники ====
=== add_participant ===
* Назначение: создание участника.
* Основные входные поля:
* ''ТокенПользователя, Фестиваль, Регион''
* ''Фамилия, Имя, Отчество, НетОтчества, ДатаРождения, Пол''
* ''Сопровождающий1, Сопровождающий2, ЭтоСтудент''
* ''ЭтоЛидерСемьи, СемьяНазвание, ЭтоЛидерКлуба, КлубНазвание''
* ''Сет1, Сет2''
* Дополнительные/условные поля:
* ''Код, Пакет, УровеньЛазания, Стаж, Класс, Разряд, РазмерОдежды''
* ''Сет3, Сет4, Сет5, Промокод, Телефон, Город, БылНаМесте''
* ''СемьяКод, ПарольСемьи, КлубКод, ПарольКлуба, Ответы''
* Выход: ''{Удачно, Ошибка, Код}''.
=== edit_participant ===
* Назначение: изменение участника (тот же обработчик, что ''add_participant'').
* Важно: для редактирования обязателен ''Код'' участника.
* Выход: ''{Удачно, Ошибка, Код}''.
=== add_participant_bycode ===
* Вход: ''ТокенПользователя, Фестиваль, Код, Пароль''.
* Выход: ''{Удачно, Ошибка, Код}''.
=== delete_participant ===
* Вход: ''ТокенПользователя, Код''.
* Выход: ''{Удачно, Ошибка, Код}''.
=== get_participantlist ===
* Вход: ''ТокенПользователя, Фестиваль''.
* Выход: ''{Удачно, Ошибка, Участники:[...]}''.
* Поля элемента ''Участники'':
* ''Код, Фамилия, Имя, Отчество, Пол, ДатаРождения, ГодРождения, Регион, Город, Телефон''
* ''Разряд, БылНаМесте, КатегорияТрудность, КатегорияБоулдеринг''
* ''Зачет, Пакет, Скидка, СтатусСкидки, ЭтоСтудент, СлотРегистрации''
* ''Оплачен, Проверен, ОшибкаПроверки, Допущен''
* ''Сопровождающий1, Сопровождающий2, Сет1, Сет2, Сет3, Сет4, Сет5, Пароль''
* ''УровеньЛазания, Стаж, Класс''
* ''ЭтоЛидерСемьи, СемьяНазвание, СемьяПароль, СемьяКод''
* ''ЭтоЛидерКлуба, КлубНазвание, КлубПароль, КлубКод''
=== get_paylink ===
* Вход: ''ТокенПользователя, Код''.
* Выход: ''{Удачно, Ошибка, Ссылка}''.
=== get_grouppaylink ===
* Вход: ''ТокенПользователя, Фестиваль''.
* Выход: ''{Удачно, Ошибка, Ссылка}''.
==== Трассы и результаты ====
=== get_routelist ===
* Вход: ''ТокенПользователя, КодУчастника, Пароль''.
* Выход: ''{Удачно, Ошибка, Трассы, КатегорииТрасс}''.
* Поля элемента ''Трассы'':
* ''Код, Наименование, Номер, ТипКод, КатегорияКод, ЕстьЗона''
* ''Баллы, БаллыРедпойнт, БаллыЗона''
* ''КодГруппы, ЭтоГруппа''
* ''ДатаПролаза, ПролезТолькоЗону, МультипитчВерхняяСтраховка, МультипитчИТО, ПопытокТоп, ПопытокЗона''
=== save_results ===
* Вход:
* ''ТокенПользователя, КодУчастника, Пароль''
* ''Трассы'' (массив)
* Поля элемента ''Трассы'':
* ''КодТрассы, ДатаПролаза, МультипитчВерхняяСтраховка, МультипитчИТО, ПролезТолькоЗону, ПопытокТоп, ПопытокЗона''
* Выход: ''{Удачно, Ошибка}''.
=== save_oneresult ===
* Вход:
* ''ТокенПользователя, КодУчастника, Пароль''
* ''Трасса'' (объект)
* Поля ''Трасса'':
* ''КодТрассы, Пролез, ДатаПролаза, МультипитчВерхняяСтраховка, МультипитчИТО, ПролезТолькоЗону, ПопытокТоп, ПопытокЗона''
* Выход: ''{Удачно, Ошибка}''.