====== 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 === * Вход: * ''ТокенПользователя, КодУчастника, Пароль'' * ''Трасса'' (объект) * Поля ''Трасса'': * ''КодТрассы, Пролез, ДатаПролаза, МультипитчВерхняяСтраховка, МультипитчИТО, ПролезТолькоЗону, ПопытокТоп, ПопытокЗона'' * Выход: ''{Удачно, Ошибка}''.