Данное SDK позволяет получить доступ к методам Ufs и исправляет недостатки их системы.
pip3 install ufs_sdk
Для подключения необходимо иметь логин, пароль и терминал.
from ufs_sdk import API
api = API('username', 'password', 'terminal')
Далее для работы понадобятся enum структуры и обёртка для PassDoc(для метода BuyTickets)
from ufs_sdk.wrapper.types import (...)
from ufs_sdk.wrapper import PassDoc
- from - Наименование или код станции отправления (7 символов)
- to - Наименование или код станции прибытия (7 символов)
- day - День отправления от 1 до 31
- month - Месяц отправления от 1 до 12
- time_sw - Влияет на применение ограничивающих параметров Time_from и Time_to
- time_from - Левая граница временного диапазона (отправления или прибытия)
- time_to - Правая граница временного диапазона (отправления или прибытия)
- suburban - Признак получения расписания пригородных поездов
Пример запроса:
time_table = api.time_table('МОСКВА', 'САНКТ-ПЕТЕРБУРГ', 24, 12, TimeSw.NO_SW)
- is_clarify - Признак уточнения станции. Если True, то переменная data - объект типа Clarify иначе TimeTable
- train_point - Признак начальной или конечной станции следования
- data - объект типа Clarify или TimeTable
- from - Наименование или код станции отправления (7 символов)
- day - День отправления от 1 до 31
- month - Месяц отправления от 1 до 12
- use_static_schedule - Признак обращения в статическую базу полугодового расписания. Если тег принимает значение «0», то информация от АСУ «Экспресс-3».
- suburban - Признак получения расписания пригородных поездов
Пример запроса:
station_route = api.station_route(4043, 5, 8, True, True)
- additional_info - УФС слишком крутые, им не надо описание данного поля. Нам, видимо, тоже...
- route_params - Параметры маршрута
- from - Наименование или код станции отправления (7 символов)
- to - Наименование или код станции прибытия (7 символов)
- day - День отправления от 1 до 31
- month - Месяц отправления от 1 до 12
- advert_domain - Доменное имя адверта
- time_sw - Влияет на применение ограничивающих параметров Time_from и Time_to
- lang - Язык
- time_from - Левая граница временного диапазона (отправления или прибытия)
- time_to - Правая граница временного диапазона (отправления или прибытия)
- train_with_seat - Признак отображения поездов без свободных мест. Если параметр не передан или передано значение Train_with_seat=1, то в выдачи вернутся только поезда со свободными местами.
- join_train_complex - Признак отображения маршрутов с пересадками. Если параметр не передан или передано значение false, то в выдачи вернутся только поезда без пересадок
- grouping_type - Признак группировки поездов. Если значение не передано, то группировка поездов осуществляется по типу вагона
- join_trains - Признак склейки поездов. Если значение не передано, то в выдаче список поездов возвращается со склейкой
- search_option - Вариант поиска
Пример запроса:
train_list = api.train_list('МОСКВА', 'АГАПОВКА', 24, 12)
- is_clarify - Признак уточнения станции. Если True, то переменная data - объект типа Clarify иначе TrainList + balance и balance_limit
- train_point - Признак начальной или конечной станции следования
- data - объект типа Clarify или TrainList
- balance - Информация о балансе
- balance_limit - Актуальный кредит Агента в ЖД шлюзе.
- from - Наименование или код станции отправления (7 символов)
- to - Наименование или код станции прибытия (7 символов)
- day - День отправления от 1 до 31
- month - Месяц отправления от 1 до 12
- train - Номер поезда
- time - Время отправления поезда
- lang - Язык
- type_car - Тип вагона
- advert_domain - Доменное имя адверта
- grouping_type - Признак группировки поездов. Если значение не передано, то группировка поездов осуществляется по типу вагона
Пример запроса:
station_route = api.car_list_ex(4043, 5, 8, True, True)
- general_information - Общая информация по запросу
- trains - Информация о поезде
- from - Наименование или код станции отправления (7 символов)
- to - Наименование или код станции прибытия (7 символов)
- day - День отправления от 1 до 31
- month - Месяц отправления от 1 до 12
- train - Номер поезда (от 3 до 5 цифр и одна-две буквы)
- type_car - Тип вагона
- pass_doc - Документ пассажира, по которому оформляется билет
- in_one_kupe - Признак поиска мест только в одном купе. Значения «2» и «3» имеют смысл только в случае плацкартного вагона – в остальных случаях их указание некорректно.
- remote_check_in - Признак установки электронной регистрации
- pay_type - Тип оплаты электронного билета
- n_car - Номер вагона (две-три цифры) Обязателен в случае покупки билет в QM/DM вагоны
- service_class - Класс обслуживания вагона
- sex - Тип купе (мужское/женское/смешанное)
- diapason - Требуемый диапазон мест в вагоне
- n_up - Требуемое количество верхних мест
- n_down - Требуемое количество нижних мест
- bedding - Признак того, включать ли в стоимость постельное белье (только для плацкартных вагонов), отказ от постельного белья доступен только для ограниченного количества направлений
- stan - Идентификатор заказа в веб-системе партнера. Бывает полезен для обеспечения взаимно-однозначного соответствия заказов во взаимодействующих системах
- advert_domain - Доменное имя адверта
- phone - Необходимо для выполнения клиентом последующих операций с заказом посредством SMS-сообщений.
- lang - Язык
- id_cust - Id клиента
- storey
- time - Время отправления поезда
- comment - Комментарии к заказу (длина не более 128 символов). Если передается больше 128 символов, то остальные символы отрезаются и не сохраняются. После символов «! # &» комментарий отрезается и не сохраняется.
- placedemands - Требования к местам
- international_service_class - Информация о вагоне. Записывается в виде «X/Y», где X- класс обслуживания вагона, У – количество мест в купе Тег может быть заполнен для DirectionGroup = 1 и DirectionGroup =2 Тег является обязательным: 1) Если код тарифа Tariff (Таблица 94)для пассажира соответствует тарифам Senior или Junior 2) Для оформления пассажира в internationalServiceClass=1/1, если internationalServiceClass=1/1 не передан, то идет оформление билета по internationalServiceClass=1/2
- full_kupe - Возможность выкупа купе целиком
Пример запроса:
pass_doc = PassDoc('ЗП', 'ЗЗ934647165', '01051956', '1', 'KEN', first_name='Вася', last_name='Пупкин')
buy_tickets = api.buy_ticket(2000000, 1000001, 2, 3, '032A', 'М', pass_doc, InOneKupe.NOT_SIDE,
RemoteCheckIn.TRY_AUTO_ER, PayType.CASH)
- general_information - Общая информация по запросу
- trains - Информация о поезде
- id_trans - Номер транзакции в системе «УФС»
- confirm - Признак подтверждения / отмены резервирования заказа
- site_fee - Комиссия с клиента за оформленный заказ
- lang - Язык
Пример запроса:
confirm_ticket = api.confirm_ticket(48715626, Confirm.CONFIRM, 0)
- status - Статус операции
- transaction_id - Номер транзакции в системе «УФС»
- confirm_time_limit - Дата и время, до которого можно подтвердить заказ.(DateTime)
- electronic_registration - Признак установки электронной регистрации
- order_number - Номер заказа в АСУ «Экспресс-3»
- electronic_registration_expire - Дата и время, до которого можно пройти электронную регистрацию и вернуть билет с ЭР в системе «УФС».(DateTime)
- blank - Информация о бланке заказа
- is_test - Рекомендуется сверять значение этого признака со статусом терминала, использованного в запросе (значения не должны противоречить друг другу).
- reservation - Отложенная оплата.
- id_trans - Номер транзакции в системе «УФС»
Пример запроса:
update_order_info = api.update_order_info(48715626)
- status - Текущий статус операции
- blank - Информация о билете заказа
- change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП(DateTime)
- order - Информация о заказе
- id_trans - Номер транзакции в системе «УФС»
Пример запроса:
update_order_info = api.update_order_info(48715626)
- status - Текущий статус операции
- blank - Информация о билете заказа
- change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП(DateTime)
- order - Информация о заказе
- id_trans - Номер транзакции в системе «УФС»
- reg - Признак запрашиваемого действия:
- id_blank - Идентификаторы электронных билетов в системе «УФС», на которые необходимо установить/отменить электронную регистрацию (указываются через запятую)
Пример запроса:
electronic_registration = api.electronic_registration(48715620, Registration.CONFIRM)
- status - Текущий статус операции
- blank - Информация о билете заказа
- id_trans - Номер транзакции в системе «УФС»
- format - Формат вывода
Пример запроса:
get_ticket_blank = api.get_ticket_blank(1, TicketFormat.HTML)
У объект ответа есть поле content, которое хранит либо html код, либо pdf файл, а так же метод save_blank, который позволяет сохранить pdf/html файл по указанному пути
- id_trans - Номер транзакции в системе «УФС»
- advert_domain - Доменное имя адверта
- lang - Язык
Пример запроса:
available_food = api.available_food(48715620, '')
- change_food_before - Дата и время, до которого можно воспользоваться услугой смены РП.(DateTime)
- food - Список доступных РП
- id_trans - Номер транзакции в системе «УФС»
- blanks_id - Идентификатор бланка в системе «УФС»
- food_allowance_code - Код РП
- advert_domain - Доменное имя адверта
- lang - Язык
Пример запроса:
change_food = api.change_food(48715620, 1, '', '')
- number - Порядковый номер документа
- train_number - Номер поезда
- departure_date - Дата отправления поезда
- departure_number - од станции отправления
- arrival_number - Код станции прибытия
- car_number - Номер вагона
- service_class - Класс обслуживания
- place_number - Номера мест
- passengers_amount - Количество пассажиров
- food_code - Код РП
- food_name - Название РП
- food_description - Описание РП
- id_trans - Номер транзакции в системе «УФС»
- id_blank - Идентификаторы билетов в системе «УФС», для которых необходимо произвести возврат (указываются через запятую)
- doc - Номер документа, удостоверяющего личность
- lang - Язык
Пример запроса:
refund_amount = api.refund_amount(48715620, 1, 0)
- status - Статус операции
- fee - Сумма сервисного сбора за возврат
- tax_percent - Величина комиссионного сбора УФС в %, В случае, если комиссия является фиксированной величиной, то передается в данном параметре «0»
- amount - Общая сумма к возврату
- blanks - Информация о билете заказа
- id_trans - Номер транзакции в системе «УФС»
- id_blank - Идентификаторы билетов в системе «УФС», для которых необходимо произвести возврат (указываются через запятую)
- doc - Номер документа, удостоверяющего личность
- stan - Уникальный идентификатор операции (транзакции), необходимый, в частности, для получения информации о транзакции в случае потери ответа (таймаут, разрыв связи и т.п.)
- lang - Язык
Пример запроса:
refund = api.refund(48715620, 1, 0)
- status - Статус операции: «0» – успешная
- refund_id - Номер транзакции возврата
- refund_date - Время осуществления возврата
- fee - Сумма сервисного сбора за возврат
- tax_percent - Величина комиссионного сбора УФС в %, В случае, если комиссия является фиксированной величиной, то передается в данном параметре «0»
- amount - Общая сумма к возврату
- blanks - Информация о билете заказа
- code - Код справочника
- all_languages - Признак ответа на всех языках.
- lang - Язык
- is_description - Признак выдачи описания справочника
Пример запроса:
get_catalog = api.get_catalog(ReferenceCode.LOYALTY_CARDS, 1)
- loyalty_cards - Справочник Классов обслуживания
- co_services - Справочник карт лояльности
If you have any issues or questions regarding the API or the SDK it self, you are welcome to create an issue, or
You can write an Email to [email protected]
or [email protected]
SDK is released under the MIT License.