API ЖД Тариф - Описание протокола обмена данными с системой расчета провозной платы на жд от Альта-Софт

Материал из Alta-Soft Wikipedia
Версия от 09:45, 29 сентября 2026; Boluchevskikh (обсуждение | вклад) (→‎Структура блока <Calc> (Тарифные составляющие))
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Содержание

Описание протокола обмена данными (API) «ЖД Тариф» от Альта-Софт

Сервис предназначен для расчета провозной платы (тарифа) при железнодорожных перевозках грузов по территории России, стран СНГ, Балтии и сопредельных государств, а также для получения нормативно-справочной информации (станции, номенклатура грузов ЕТСНГ/ГНГ, классификатор подвижного состава, государства).

Общие положения

  • Базовый URL: https://www.alta.ru/rail_tracking/rail_trf/
  • Протокол: HTTP / HTTPS.
  • Методы запросов: GET, POST.
  • Формат передачи данных: XML (кодировка UTF-8).
  • Аутентификация: Обязательный GET/POST-параметр api_key.
Параметр Тип Обязательный Описание
api_key string Да Уникальный лицензионный ключ доступа. Выдается после оплаты, имеет ограниченный срок действия (6 месяцев или 1 год) и лимит доступных обращений.
type string Да Тип выполняемой операции (fre, frg, fst, tst, states, van_tree, calc, key_info).
encoding string Нет Кодировка ответа (рекомендуется передавать utf-8).

1. Справочник грузов (ЕТСНГ и ГНГ)

Служит для поиска кодов грузов по ЕТСНГ (Единая тарифно-статистическая номенклатура грузов) и ГНГ (Гармонизированная номенклатура грузов), а также для автоматического сопоставления классификаторов.

Параметры запроса

Параметр Тип По умолчанию Описание
type string — Режим выборки:
  • fre — поиск по классификатору ЕТСНГ;
  • frg — поиск по классификатору ГНГ.
index string (пусто) Поисковый запрос: код груза (или первые цифры кода) либо наименование (или фрагмент наименования). Если не задан — возвращается весь справочник.
corr string yes yes — искать соответствие между ЕТСНГ и ГНГ; no — не выполнять кросс-поиск.

Примеры запросов

  • Поиск в ЕТСНГ по началу кода с кросс-поиском по ГНГ:
https://www.alta.ru/rail_tracking/rail_trf/?type=fre&index=011&encoding=utf-8&api_key=[ВАШ_API_KEY]
  • Поиск в ГНГ по наименованию без сопоставления:
https://www.alta.ru/rail_tracking/rail_trf/?type=frg&index=пшен&corr=no&encoding=utf-8&api_key=[ВАШ_API_KEY]

Описание полей ответа (XML)

Корневой элемент: <fraights> (содержит атрибут last_update — дата актуализации справочника). Внутри расположен список элементов <fraight>.

Атрибут Тип Присутствует в Описание
index string ЕТСНГ / ГНГ 6-значный код ЕТСНГ или 8-значный код ГНГ.
name string ЕТСНГ / ГНГ Наименование груза.
level integer ЕТСНГ / ГНГ Уровень вложенности в иерархическом справочнике (1, 2, 3...).
parent string ЕТСНГ / ГНГ Код вышестоящего родительского узла/группы.
isgroup boolean ЕТСНГ / ГНГ true — узел является группой грузов; false — конкретный груз (конечная позиция).
danger boolean ЕТСНГ true — груз относится к категории опасных.
guard boolean ЕТСНГ true — груз подлежит обязательной охране (ВОХР/сопровождение).
frclass integer ЕТСНГ Тарифный класс груза (1, 2 или 3 класс).
mwn string ЕТСНГ Минимальная весовая норма (МВН): число в тоннах либо ГП (грузоподъемность вагона).
gng string ЕТСНГ Соответствующий 8-значный код по номенклатуре ГНГ (при corr=yes).
frnameg string ЕТСНГ Наименование соответствующего груза по ГНГ.
toetsng string ГНГ Соответствующий код ЕТСНГ (при corr=yes).

Пример XML-ответа

<?xml version="1.0" encoding="utf-8"?>
<fraights last_update="17.01.2026">
    <fraight index="011005" name="ПШЕНИЦА" level="3" parent="010002" isgroup="false" danger="false" guard="false" frclass="2" mwn="ГП" gng="10019000" frnameg="" />
</fraights>

2. Справочник станций

Служит для поиска железнодорожных станций по названию или коду ЕСР (Единая сетевая разметка), проверки выполняемых коммерческих операций (параграфов ТР №4) и определения принадлежности железной дороге и государству.

Параметры запроса

Параметр Тип По умолчанию Описание
type string — fst (станция отправления) или tst (станция назначения). Формат выдачи идентичен.
index string (пусто) Поисковый запрос: код станции или наименование (регистронезависимо).
exactly integer 0 1 — строгое совпадение по наименованию; 0 — поиск по подстроке (вхождению символов).
full_code integer 0 1 — возвращать 6-значный код ЕСР (с контрольным знаком); 0 — стандартный 5-значный тарифный код.

Примеры запросов

  • Поиск по коду станции:
https://www.alta.ru/rail_tracking/rail_trf/?type=tst&index=104&encoding=utf-8&api_key=[ВАШ_API_KEY]
  • Поиск по названию станции:
https://www.alta.ru/rail_tracking/rail_trf/?type=fst&index=моск&encoding=utf-8&api_key=[ВАШ_API_KEY]

Описание полей ответа (XML)

Корневой элемент: <stations> (атрибут count — число найденных записей). Дочерние элементы: <station>.

Атрибут Тип Описание
index string 5- или 6-значный код станции по ЕСР.
name string Наименование станции.
paragrafs string Номера параграфов Тарифного руководства №4 (коммерческие операции, выполняемые на станции).
stateindex integer Цифровой код государства расположения станции.
statename string Наименование государства.
roadindex integer Код железной дороги.
roadname string Наименование железной дороги (например, Приволжская, Октябрьская).
tip integer Числовой код типа станции.
tipstr string Текстовая расшифровка типа станции (например, «Внутренняя станция», «Пограничная экспортная»).
toroad string Код сопредельной дороги (для стыковых/пограничных станций).
tostateindex string Код сопредельного государства (для погранпереходов).
tostatename string Наименование сопредельного государства.

Пример XML-ответа

<?xml version="1.0" encoding="utf-8"?>
<stations count="1">
    <station index="62670" name="Питерка" paragrafs="1,3" stateindex="20" statename="Россия" roadindex="61" roadname="Приволжская" tip="10" tipstr="Внутренняя станция" toroad="00" tostatename="" tostateindex="" />
</stations>

3. Справочник государств

Возвращает перечень стран и их идентификаторов, используемых в тарифной системе.

Запрос

https://www.alta.ru/rail_tracking/rail_trf/?type=states&api_key=[ВАШ_API_KEY]

Описание полей ответа (XML)

Корневой элемент: <states>, содержит элементы <state>:

  • index (integer) — уникальный код государства в ж/д классификаторе (например, 20 — Россия, 27 — Казахстан, 21 — Беларусь);
  • name (string) — наименование государства.

Пример XML-ответа

<?xml version="1.0" encoding="utf-8"?>
<states>
    <state index="20" name="Россия" />
    <state index="21" name="Белоруссия" />
    <state index="27" name="Казахстан" />
</states>

4. Дерево подвижного состава и перевозочных средств

Возвращает иерархический классификатор вагонов и контейнеров. Конечный атрибут index элемента 3-го уровня используется в расчетах тарифа (параметр van).

Параметры запроса

Параметр Тип По умолчанию Описание
type string — Значение van_tree.
kind string xml Формат вывода: xml (структурированное дерево XML) или html / ul (вложенные списки HTML для отображения на web-страницах).

Пример запроса

https://www.alta.ru/rail_tracking/rail_trf/?type=van_tree&kind=xml&encoding=utf-8&api_key=[ВАШ_API_KEY]

Описание полей ответа (XML)

Дерево состоит из вложенных элементов <van>:

  • level (integer) — уровень иерархии:
    • 1 — вид отправки (Повагонная, Контейнерная);
    • 2 — тип/категория ПС (В универсальных вагонах, В цистернах, Крупнотоннажные контейнеры и т.д.);
    • 3 — конкретный тип подвижного состава (листовой узел).
  • name (string) — наименование категории или типа ПС.
  • index (integer) — код типа ПС. Присутствует только на 3-м уровне. Именно это значение передается в параметр van при расчете тарифа (например: 200 — крытый, 400 — платформа, 600 — полувагон, 2220 — контейнер 20 футов).

Пример XML-ответа

<?xml version="1.0" encoding="utf-8"?>
<van_tree>
    <van level="1" name="Повагонная">
        <van level="2" name="В универсальных вагонах">
            <van level="3" index="200" name="Крытый" />
            <van level="3" index="400" name="Платформа" />
            <van level="3" index="600" name="Полувагон" />
        </van>
    </van>
    <van level="1" name="Контейнерная">
        <van level="2" name="Универсальный контейнер">
            <van level="3" index="2220" name="Контейнер крупнотоннажный г/п 20 т (20 ft.)" />
            <van level="3" index="2430" name="Контейнер крупнотоннажный г/п 30 т (40 ft.)" />
        </van>
    </van>
</van_tree>

5. Расчет нитки маршрута и расстояний между станциями

Позволяет построить географический и тарифный маршрут следования с разбивкой по транзитным дорогам, опорным станциям и расчетным плечам без выполнения финансового расчета тарифа.

Параметры запроса

Параметр Тип Обязательный Описание
type string Да Значение calc.
fst string Да 5-значный код ЕСР станции отправления.
tst string Да 5-значный код ЕСР станции назначения.
route_only integer Да Значение 1 (только маршрут).
api_key string Да Лицензионный ключ.

Пример запроса

https://www.alta.ru/rail_tracking/rail_trf/?type=calc&fst=69000&tst=19100&route_only=1&api_key=[ВАШ_API_KEY]

Ответ содержит секцию <route>, идентичную блоку маршрута в полном расчете тарифа (см. раздел 6).


6. Расчет ЖД Тарифа

Основной метод системы. Производит комплексный расчет провозных плат, сборов, платы за охрану, нормативных сроков доставки и построение нитки маршрута с детализацией по странам следования.

Входные параметры

Параметр Тип По умолч. Описание
type string — Обязательно: calc.
fst string — Код ЕСР станции отправления (5 знаков).
tst string — Код ЕСР станции назначения (5 знаков).
fre string — Код груза по номенклатуре ЕТСНГ (5–6 знаков).
frg string — Код груза по номенклатуре ГНГ (8 знаков). Если не задан, подбирается автоматически.
fstate integer — Код государства станции отправления (из справочника states).
tstate integer — Код государства станции назначения (из справочника states).
van integer — Идентификатор типа вагона/контейнера из дерева van_tree.
w integer/float — Масса груза в вагоне (в килограммах). Общая для всех вагонов отправки.
gp integer/float — Грузоподъемность вагона (в тоннах).
owner integer 0 Принадлежность парка: 0 — вагон перевозчика (общий парк); 1 — собственный или арендованный парк.
empt integer 0 0 — груженый рейс; 1 — порожний рейс. Для грузов группы ЕТСНГ 421*** установка empt=1 обязательна.
num_vagons integer 1 Число вагонов в отправке.
w1...wN integer — Индивидуальный вес груза в кг для вагона № N (например, w2=65000).
gp1...gpN integer/float — Индивидуальная грузоподъемность вагона № N в тоннах (например, gp3=70).
return integer 0 1 — рассчитать плату за возврат вагона; 0 — не рассчитывать.
return_st string fst Код ЕСР станции возврата вагона (если отличается от станции отправления).
modular integer 0 Признак сборной отправки: 1 — сборная повагонная отправка нескольких грузов.
fre1...freN string — Коды ЕТСНГ отдельных грузов при сборной отправке (modular=1).
frg1...frgN string — Коды ГНГ отдельных грузов при сборной отправке.
route integer 1 1 — включить детальную нитку маршрута в XML; 0 — скрыть.
calc_date string Текущая Дата применения тарифов в формате ДД.ММ.ГГГГ (например, 23.09.2026).
currency string По странам Мнемокод валюты итога (RUB, USD, EUR, KZT, CHF). По умолчанию расчет по участкам ведется в нац. валютах транзитных дорог, итог пересчитывается в рубли по курсу ЦБ РФ.
dock_stations string — Коды стыковых станций через запятую для принудительной маршрутизации (например, 66380,54850).
crimea_bridge integer 0 Для Крымской ж/д: 1 — через Крымский мост; 0 — через паромную переправу Кавказ–Крым.
for_loading integer 0 Для порожнего рейса по КТЖ (Казахстан): 1 — под погрузку; 0 — из-под выгрузки.
fre_empty string fre Код ЕТСНГ груза, под погрузку которого следует вагон при порожнем рейсе по КТЖ.
is_speed integer 1 1 — перевозка большой скоростью; 0 — без учета надбавки.
is_cont_train integer 1 1 — в составе регулярного контейнерного поезда; 0 — повагонная/одиночная отправка.

Примеры запросов

  • Расчет повагонной отправки (1 вагон):
https://www.alta.ru/rail_tracking/rail_trf/?type=calc&fst=01100&tst=66000&fre=01100&frg=10019000&fstate=20&tstate=27&van=200&w=60000&gp=66&owner=0&return=0&empt=0&api_key=[ВАШ_API_KEY]
  • Многовагонная отправка с индивидуальными параметрами:
https://www.alta.ru/rail_tracking/rail_trf/?type=calc&fst=01100&tst=22022&fre=01100&frg=10019000&fstate=20&tstate=20&van=200&w=60000&gp=66&num_vagons=3&w2=65000&gp3=70&owner=1&api_key=[ВАШ_API_KEY]
  • Сборная повагонная отправка (modular=1):
https://www.alta.ru/rail_tracking/rail_trf/?type=calc&fst=19350&tst=97040&fstate=20&tstate=20&van=200&gp=65&modular=1&num_vagons=1&fre1=12701&w1=4850&fre2=12101&w2=1500&fre3=12501&w3=32000&api_key=[ВАШ_API_KEY]

Описание структуры XML-ответа

Ответ сервиса включает в себя:

  1. <status> — общий статус обработки (ok или error).
  2. <route> — нитка маршрута по странам и участкам.
  3. <Calc> — блок финансовых результатов по странам и консолидированный итог.
  4. <stat>, <client_thread>, <requests_available> — сервисная информация и остаток лимита.

Структура блока <route> (Маршрут следования)

  • <route>:
    • total_rst (integer) — общее расстояние маршрута (км);
    • from_state, to_state (string) — страны отправления и назначения.
  • <st_part> — участок маршрута по территории отдельной страны:
    • index (integer) — код страны;
    • name (string) — наименование страны;
    • rst (integer) — протяженность участка по территории этой страны в км.
  • <stage> — расчетное плечо маршрута между ключевыми/стыковыми станциями:
    • st1_ecp, st1_name — ЕСР-код и наименование начальной станции плеча;
    • st2_ecp, st2_name — ЕСР-код и наименование конечной станции плеча;
    • rst (integer) — тарифное расстояние плеча в км.

Структура блока <Calc> (Тарифные составляющие)

Внутри <Calc> для каждого транзитного государства формируется узел <state>.

Атрибуты элемента <state>:

Атрибут Тип Описание
index integer Цифровой код государства.
name string Наименование государства.
rst integer Тарифное расстояние по данному государству (км).
return boolean true — плата за порожний возврат; false — груженый рейс.
id integer Порядковый номер вагона в отправке.
w integer Расчетная масса груза в вагоне (кг).
gp float Грузоподъемность вагона (т).
spec_tax boolean Признак применения спецставки/исключительного тарифа.

Дочерние элементы <state> (денежные составляющие): Все узлы содержат атрибуты currency (валюта) и value (сумма с двумя знаками после запятой).

Тег Описание
<summa> Основная тарифная ставка за перевозку (инфраструктурная и локомотивная составляющие).
<summa_add_free> Базовая ставка без учета дополнительных сборов.
<add_taxes> Сумма дополнительных сборов и плат.
<guard> Плата за военизированную охрану груза (ВОХР).
<nalog> Сумма налога (НДС). При международных перевозках часто 0.00 (ставка 0%).
<total_tax_free> Итоговая сумма по участку без НДС.
<total> Итоговая провозная плата по стране с учетом всех сборов и налогов.
<tonna_tax_free> Стоимость перевозки 1 тонны груза по данному участку без НДС.
<tonna> Итоговая стоимость перевозки 1 тонны груза по стране с НДС.
<tonna_add_free> Стоимость за 1 тонну без дополнительных сборов.

Сводные итоговые элементы блока <Calc>:

Тег Атрибуты Описание
<total_all> currency, value Полная стоимость перевозки по всему маршруту (по всем странам). По умолчанию конвертирована в рубли (RUB).
<total_all_nalog> currency, value Суммарный налог (НДС) по всей перевозке.
<tonna_all> currency, value Суммарная стоимость перевозки 1 тонны по всему маршруту следования.
<guard_all> currency, value Общая плата за вооруженную охрану по всем дорогам.
<guide_c_all> currency, value Плата за проезд проводников отправителя (инфраструктурная составляющая)
<guide_v_all> currency, value Плата за проезд проводников отправителя в вагоне.
<delivery_time> unit, value Нормативный срок доставки. Значение value — количество, unit — единица измерения (например, сутки).

Сервисные элементы ответа

  • <request> — копия входящей строки запроса в блоке CDATA.
  • <client_thread> — идентификатор внутреннего потока сервера обработки.
  • <stat>:
    • <calc_start>, <calc_finish> — временные метки начала и завершения расчета на сервере.
  • <requests_available binded="..."> — количество оставшихся оплаченных запросов по ключу.

Пример XML-ответа при расчете тарифа

<?xml version="1.0" encoding="utf-8"?>
<xml>
    <status>ok</status>
    <route total_rst="3093" from_state="20 Россия" to_state="27 Казахстан">
        <st_part index="20" name="Россия" rst="2804">
            <stage st1_ecp="01100" st1_name="Кяппесельга" st2_ecp="30260" st2_name="Кошта" rst="741" />
            <stage st1_ecp="30260" st1_name="Кошта" st2_ecp="26290" st2_name="Новки II" rst="577" />
            <stage st1_ecp="26290" st1_name="Новки II" st2_ecp="24700" st2_name="Красный Узел" rst="492" />
            <stage st1_ecp="24700" st1_name="Красный Узел" st2_ecp="65730" st2_name="Кинель" rst="540" />
            <stage st1_ecp="65730" st1_name="Кинель" st2_ecp="81300" st2_name="Канисай (эксп.)" rst="454" />
        </st_part>
        <st_part index="27" name="Казахстан" rst="289">
            <stage st1_ecp="66650" st1_name="Илецк I (эксп.)" st2_ecp="66000" st2_name="Кандыагаш" rst="289" />
        </st_part>
    </route>
    <Calc>
        <state index="20" name="Россия" rst="2804" return="false" id="1" w="60000" gp="66" spec_tax="false">
            <summa currency="RUB" value="254403.00" />
            <summa_add_free currency="RUB" value="0.00" />
            <add_taxes currency="RUB" value="0.00" />
            <guard currency="RUB" value="0.00" />
            <total_tax_free currency="RUB" value="254403.00" />
            <tonna_tax_free currency="RUB" value="4240.05" />
            <nalog currency="RUB" value="0.00" />
            <total currency="RUB" value="254403.00" />
            <tonna currency="RUB" value="4240.05" />
            <tonna_add_free currency="RUB" value="4240.05" />
        </state>
        <state index="27" name="Казахстан" rst="289" return="false" id="1" w="60000" gp="66" spec_tax="false">
            <summa currency="KZT" value="176003.00" />
            <summa_add_free currency="KZT" value="176003.00" />
            <add_taxes currency="KZT" value="0.00" />
            <guard currency="KZT" value="0.00" />
            <total_tax_free currency="KZT" value="176003.00" />
            <tonna_tax_free currency="KZT" value="2933.38" />
            <nalog currency="KZT" value="0.00" />
            <total currency="KZT" value="176003.00" />
            <tonna currency="KZT" value="2933.38" />
            <tonna_add_free currency="KZT" value="2933.38" />
        </state>
        <total_all currency="RUB" value="288023.00" />
        <total_all_nalog currency="RUB" value="0.00" />
        <tonna_all currency="RUB" value="4800.38" />
        <guard_all currency="" value="0.00" />
        <guide_c_all currency="" value="0.00" />
        <guide_v_all currency="" value="0.00" />
        <delivery_time unit="сутки" value="18" />
    </Calc>
    <request><![CDATA[type=calc&fst=01100&tst=66000&fre=01100&frg=10019000&fstate=20&tstate=27&van=200&w=60000&gp=66&owner=0&return=0&empt=0&api_key=alta_rail&page=calc.xml]]></request>
    <client_thread>84</client_thread>
    <stat>
        <calc_start>29.09.2026 10:15:13</calc_start>
        <calc_finish>29.09.2026 10:15:15</calc_finish>
    </stat>
    <requests_available binded="0">9999999</requests_available>
</xml>

XSD-схема валидации ответа расчета тарифа (calc.xsd)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="MoneyItemType">
    <xs:attribute name="currency" type="xs:string" use="optional" />
    <xs:attribute name="value" type="xs:decimal" use="required" />
  </xs:complexType>

  <xs:element name="xml">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="status" type="xs:string" />
        <xs:element minOccurs="0" name="error" type="xs:string" />
        <xs:element minOccurs="0" name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="st_part">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="stage">
                      <xs:complexType>
                        <xs:attribute name="st1_ecp" type="xs:string" use="required" />
                        <xs:attribute name="st1_name" type="xs:string" use="required" />
                        <xs:attribute name="st2_ecp" type="xs:string" use="required" />
                        <xs:attribute name="st2_name" type="xs:string" use="required" />
                        <xs:attribute name="rst" type="xs:integer" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="index" type="xs:integer" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="rst" type="xs:integer" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="total_rst" type="xs:integer" use="required" />
            <xs:attribute name="from_state" type="xs:string" use="required" />
            <xs:attribute name="to_state" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="Calc">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="state">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="summa" type="MoneyItemType" />
                    <xs:element name="summa_add_free" type="MoneyItemType" />
                    <xs:element name="add_taxes" type="MoneyItemType" />
                    <xs:element name="guard" type="MoneyItemType" />
                    <xs:element name="total_tax_free" type="MoneyItemType" />
                    <xs:element name="tonna_tax_free" type="MoneyItemType" />
                    <xs:element name="nalog" type="MoneyItemType" />
                    <xs:element name="total" type="MoneyItemType" />
                    <xs:element name="tonna" type="MoneyItemType" />
                    <xs:element name="tonna_add_free" type="MoneyItemType" />
                  </xs:sequence>
                  <xs:attribute name="index" type="xs:integer" use="required" />
                  <xs:attribute name="name" type="xs:string" use="required" />
                  <xs:attribute name="rst" type="xs:integer" use="required" />
                  <xs:attribute name="return" type="xs:boolean" use="required" />
                  <xs:attribute name="id" type="xs:integer" use="required" />
                  <xs:attribute name="w" type="xs:decimal" use="required" />
                  <xs:attribute name="gp" type="xs:decimal" use="required" />
                  <xs:attribute name="spec_tax" type="xs:boolean" use="required" />
                </xs:complexType>
              </xs:element>
              <xs:element name="total_all" type="MoneyItemType" />
              <xs:element name="total_all_nalog" type="MoneyItemType" />
              <xs:element name="tonna_all" type="MoneyItemType" />
              <xs:element name="guard_all" type="MoneyItemType" />
              <xs:element name="guide_c_all" type="MoneyItemType" />
              <xs:element name="guide_v_all" type="MoneyItemType" />
              <xs:element name="delivery_time">
                <xs:complexType>
                  <xs:attribute name="unit" type="xs:string" use="required" />
                  <xs:attribute name="value" type="xs:integer" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="request" type="xs:string" />
        <xs:element minOccurs="0" name="client_thread" type="xs:string" />
        <xs:element minOccurs="0" name="stat">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="calc_start" type="xs:string" />
              <xs:element name="calc_finish" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element minOccurs="0" name="requests_available">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:integer">
                <xs:attribute name="binded" type="xs:integer" use="optional" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

7. Получение информации о ключе (лимит и срок действия)

Запрос

https://www.alta.ru/rail_tracking/rail_trf/?type=key_info&api_key=[ВАШ_API_KEY]

Пример XML-ответа

<?xml version="1.0" encoding="utf-8"?>
<xml>
    <status>ok</status>
    <key_info requests_available="10000000" start_date="2026-01-01 00:00" expire_date="2026-12-31 23:59" />
    <requests_available binded="0">10000000</requests_available>
</xml>

Описание полей элемента <key_info>

  • requests_available (integer) — остаток предоплаченных запросов по лицензии.
  • start_date (datetime) — дата и время активации ключа.
  • expire_date (datetime) — дата и время истечения срока действия ключа.

8. Обработка ошибок

В случае возникновения ошибок (невалидный API-ключ, неверный код станции, невозможность построения маршрута и т.д.) сервер возвращает ответ со статусом error:

<?xml version="1.0" encoding="utf-8"?>
<xml>
    <status>error</status>
    <error>Неверный ключ доступа или срок действия ключа истек</error>
</xml>
Типовая ошибка Причина возникновения Решение
Неверный ключ доступа... Параметр api_key отсутствует, недействителен либо истек срок подписки. Проверить актуальность ключа через type=key_info или обратиться к менеджеру Альта-Софт.
Станция не найдена Передан несуществующий 5-значный код станции в fst или tst. Выполнить поиск по справочнику через type=fst / type=tst.
Не найден маршрут Отсутствует прямое или транзитное ж/д сообщение между станциями. Проверить допустимость коммерческих операций на станциях либо задать промежуточные стыки (dock_stations).

Интерактивное тестирование и демонстрация

  • Форма интерактивного тестирования всех методов API:
http://www.alta.ru/rail_tracking/rail_trf/example.php
  • Полнофункциональный веб-интерфейс калькулятора ЖД тарифа:
http://www.alta.ru/rail_tracking/rail_trf/demo.php