API ЖД Тариф - Описание протокола обмена данными с системой расчета провозной платы на жд от Альта-Софт: различия между версиями
(→Расчет ЖД Тарифа) |
(→Структура блока <Calc> (Тарифные составляющие)) |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
| − | + | __TOC__ | |
| − | + | = Описание протокола обмена данными (API) «ЖД Тариф» от Альта-Софт = | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Сервис предназначен для расчета провозной платы (тарифа) при железнодорожных перевозках грузов по территории России, стран СНГ, Балтии и сопредельных государств, а также для получения нормативно-справочной информации (станции, номенклатура грузов ЕТСНГ/ГНГ, классификатор подвижного состава, государства). | |
| − | + | == Общие положения == | |
| − | |||
| − | |||
| − | + | * '''Базовый URL:''' <code>https://www.alta.ru/rail_tracking/rail_trf/</code> | |
| − | + | * '''Протокол:''' HTTP / HTTPS. | |
| − | + | * '''Методы запросов:''' <code>GET</code>, <code>POST</code>. | |
| − | + | * '''Формат передачи данных:''' XML (кодировка <code>UTF-8</code>). | |
| − | + | * '''Аутентификация:''' Обязательный GET/POST-параметр <code>api_key</code>. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | </ | ||
| − | == | + | {| class="wikitable" style="width: 100%;" |
| + | ! Параметр !! Тип !! Обязательный !! Описание | ||
| + | |- | ||
| + | | <code>api_key</code> || string || '''Да''' || Уникальный лицензионный ключ доступа. Выдается после оплаты, имеет ограниченный срок действия (6 месяцев или 1 год) и лимит доступных обращений. | ||
| + | |- | ||
| + | | <code>type</code> || string || '''Да''' || Тип выполняемой операции (<code>fre</code>, <code>frg</code>, <code>fst</code>, <code>tst</code>, <code>states</code>, <code>van_tree</code>, <code>calc</code>, <code>key_info</code>). | ||
| + | |- | ||
| + | | <code>encoding</code> || string || Нет || Кодировка ответа (рекомендуется передавать <code>utf-8</code>). | ||
| + | |} | ||
| − | + | ---- | |
| − | |||
| − | |||
| − | + | == 1. Справочник грузов (ЕТСНГ и ГНГ) == | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Служит для поиска кодов грузов по ЕТСНГ (Единая тарифно-статистическая номенклатура грузов) и ГНГ (Гармонизированная номенклатура грузов), а также для автоматического сопоставления классификаторов. | |
| − | + | === Параметры запроса === | |
| − | + | {| class="wikitable" style="width: 100%;" | |
| + | ! Параметр !! Тип !! По умолчанию !! Описание | ||
| + | |- | ||
| + | | <code>type</code> || string || — || Режим выборки: | ||
| + | * <code>fre</code> — поиск по классификатору ЕТСНГ; | ||
| + | * <code>frg</code> — поиск по классификатору ГНГ. | ||
| + | |- | ||
| + | | <code>index</code> || string || ''(пусто)'' || Поисковый запрос: код груза (или первые цифры кода) либо наименование (или фрагмент наименования). Если не задан — возвращается весь справочник. | ||
| + | |- | ||
| + | | <code>corr</code> || string || <code>yes</code> || <code>yes</code> — искать соответствие между ЕТСНГ и ГНГ; <code>no</code> — не выполнять кросс-поиск. | ||
| + | |} | ||
| − | === | + | === Примеры запросов === |
| + | * Поиск в ЕТСНГ по началу кода с кросс-поиском по ГНГ: | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=fre&index=011&encoding=utf-8&api_key=[ВАШ_API_KEY]</code> | ||
| + | * Поиск в ГНГ по наименованию без сопоставления: | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=frg&index=пшен&corr=no&encoding=utf-8&api_key=[ВАШ_API_KEY]</code> | ||
| − | + | === Описание полей ответа (XML) === | |
| − | + | Корневой элемент: <code><fraights></code> (содержит атрибут <code>last_update</code> — дата актуализации справочника). Внутри расположен список элементов <code><fraight></code>. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | {| class="wikitable" style="width: 100%;" |
| + | ! Атрибут !! Тип !! Присутствует в !! Описание | ||
| + | |- | ||
| + | | <code>index</code> || string || ЕТСНГ / ГНГ || 6-значный код ЕТСНГ или 8-значный код ГНГ. | ||
| + | |- | ||
| + | | <code>name</code> || string || ЕТСНГ / ГНГ || Наименование груза. | ||
| + | |- | ||
| + | | <code>level</code> || integer || ЕТСНГ / ГНГ || Уровень вложенности в иерархическом справочнике (1, 2, 3...). | ||
| + | |- | ||
| + | | <code>parent</code> || string || ЕТСНГ / ГНГ || Код вышестоящего родительского узла/группы. | ||
| + | |- | ||
| + | | <code>isgroup</code> || boolean || ЕТСНГ / ГНГ || <code>true</code> — узел является группой грузов; <code>false</code> — конкретный груз (конечная позиция). | ||
| + | |- | ||
| + | | <code>danger</code> || boolean || ЕТСНГ || <code>true</code> — груз относится к категории опасных. | ||
| + | |- | ||
| + | | <code>guard</code> || boolean || ЕТСНГ || <code>true</code> — груз подлежит обязательной охране (ВОХР/сопровождение). | ||
| + | |- | ||
| + | | <code>frclass</code> || integer || ЕТСНГ || Тарифный класс груза (1, 2 или 3 класс). | ||
| + | |- | ||
| + | | <code>mwn</code> || string || ЕТСНГ || Минимальная весовая норма (МВН): число в тоннах либо <code>ГП</code> (грузоподъемность вагона). | ||
| + | |- | ||
| + | | <code>gng</code> || string || ЕТСНГ || Соответствующий 8-значный код по номенклатуре ГНГ (при <code>corr=yes</code>). | ||
| + | |- | ||
| + | | <code>frnameg</code> || string || ЕТСНГ || Наименование соответствующего груза по ГНГ. | ||
| + | |- | ||
| + | | <code>toetsng</code> || string || ГНГ || Соответствующий код ЕТСНГ (при <code>corr=yes</code>). | ||
| + | |} | ||
| − | + | === Пример XML-ответа === | |
| − | + | <syntaxhighlight lang="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> | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | </ | ||
| − | + | ---- | |
| − | + | == 2. Справочник станций == | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Служит для поиска железнодорожных станций по названию или коду ЕСР (Единая сетевая разметка), проверки выполняемых коммерческих операций (параграфов ТР №4) и определения принадлежности железной дороге и государству. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | == | + | === Параметры запроса === |
| − | + | {| class="wikitable" style="width: 100%;" | |
| + | ! Параметр !! Тип !! По умолчанию !! Описание | ||
| + | |- | ||
| + | | <code>type</code> || string || — || <code>fst</code> (станция отправления) или <code>tst</code> (станция назначения). Формат выдачи идентичен. | ||
| + | |- | ||
| + | | <code>index</code> || string || ''(пусто)'' || Поисковый запрос: код станции или наименование (регистронезависимо). | ||
| + | |- | ||
| + | | <code>exactly</code> || integer || <code>0</code> || <code>1</code> — строгое совпадение по наименованию; <code>0</code> — поиск по подстроке (вхождению символов). | ||
| + | |- | ||
| + | | <code>full_code</code> || integer || <code>0</code> || <code>1</code> — возвращать 6-значный код ЕСР (с контрольным знаком); <code>0</code> — стандартный 5-значный тарифный код. | ||
| + | |} | ||
| − | == | + | === Примеры запросов === |
| − | + | * Поиск по коду станции: | |
| − | + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=tst&index=104&encoding=utf-8&api_key=[ВАШ_API_KEY]</code> | |
| − | + | * Поиск по названию станции: | |
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=fst&index=моск&encoding=utf-8&api_key=[ВАШ_API_KEY]</code> | ||
| − | < | + | === Описание полей ответа (XML) === |
| − | Пример | + | Корневой элемент: <code><stations></code> (атрибут <code>count</code> — число найденных записей). Дочерние элементы: <code><station></code>. |
| − | http://www.alta.ru/rail_tracking/rail_trf/demo.php | + | |
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Атрибут !! Тип !! Описание | ||
| + | |- | ||
| + | | <code>index</code> || string || 5- или 6-значный код станции по ЕСР. | ||
| + | |- | ||
| + | | <code>name</code> || string || Наименование станции. | ||
| + | |- | ||
| + | | <code>paragrafs</code> || string || Номера параграфов Тарифного руководства №4 (коммерческие операции, выполняемые на станции). | ||
| + | |- | ||
| + | | <code>stateindex</code> || integer || Цифровой код государства расположения станции. | ||
| + | |- | ||
| + | | <code>statename</code> || string || Наименование государства. | ||
| + | |- | ||
| + | | <code>roadindex</code> || integer || Код железной дороги. | ||
| + | |- | ||
| + | | <code>roadname</code> || string || Наименование железной дороги (например, Приволжская, Октябрьская). | ||
| + | |- | ||
| + | | <code>tip</code> || integer || Числовой код типа станции. | ||
| + | |- | ||
| + | | <code>tipstr</code> || string || Текстовая расшифровка типа станции (например, «Внутренняя станция», «Пограничная экспортная»). | ||
| + | |- | ||
| + | | <code>toroad</code> || string || Код сопредельной дороги (для стыковых/пограничных станций). | ||
| + | |- | ||
| + | | <code>tostateindex</code> || string || Код сопредельного государства (для погранпереходов). | ||
| + | |- | ||
| + | | <code>tostatename</code> || string || Наименование сопредельного государства. | ||
| + | |} | ||
| + | |||
| + | === Пример XML-ответа === | ||
| + | <syntaxhighlight lang="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> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 3. Справочник государств == | ||
| + | |||
| + | Возвращает перечень стран и их идентификаторов, используемых в тарифной системе. | ||
| + | |||
| + | === Запрос === | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=states&api_key=[ВАШ_API_KEY]</code> | ||
| + | |||
| + | === Описание полей ответа (XML) === | ||
| + | Корневой элемент: <code><states></code>, содержит элементы <code><state></code>: | ||
| + | * <code>index</code> (integer) — уникальный код государства в ж/д классификаторе (например, 20 — Россия, 27 — Казахстан, 21 — Беларусь); | ||
| + | * <code>name</code> (string) — наименование государства. | ||
| + | |||
| + | === Пример XML-ответа === | ||
| + | <syntaxhighlight lang="xml"> | ||
| + | <?xml version="1.0" encoding="utf-8"?> | ||
| + | <states> | ||
| + | <state index="20" name="Россия" /> | ||
| + | <state index="21" name="Белоруссия" /> | ||
| + | <state index="27" name="Казахстан" /> | ||
| + | </states> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 4. Дерево подвижного состава и перевозочных средств == | ||
| + | |||
| + | Возвращает иерархический классификатор вагонов и контейнеров. Конечный атрибут <code>index</code> элемента 3-го уровня используется в расчетах тарифа (параметр <code>van</code>). | ||
| + | |||
| + | === Параметры запроса === | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Параметр !! Тип !! По умолчанию !! Описание | ||
| + | |- | ||
| + | | <code>type</code> || string || — || Значение <code>van_tree</code>. | ||
| + | |- | ||
| + | | <code>kind</code> || string || <code>xml</code> || Формат вывода: <code>xml</code> (структурированное дерево XML) или <code>html</code> / <code>ul</code> (вложенные списки HTML для отображения на web-страницах). | ||
| + | |} | ||
| + | |||
| + | === Пример запроса === | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=van_tree&kind=xml&encoding=utf-8&api_key=[ВАШ_API_KEY]</code> | ||
| + | |||
| + | === Описание полей ответа (XML) === | ||
| + | Дерево состоит из вложенных элементов <code><van></code>: | ||
| + | * <code>level</code> (integer) — уровень иерархии: | ||
| + | ** <code>1</code> — вид отправки (Повагонная, Контейнерная); | ||
| + | ** <code>2</code> — тип/категория ПС (В универсальных вагонах, В цистернах, Крупнотоннажные контейнеры и т.д.); | ||
| + | ** <code>3</code> — конкретный тип подвижного состава (листовой узел). | ||
| + | * <code>name</code> (string) — наименование категории или типа ПС. | ||
| + | * <code>index</code> (integer) — '''код типа ПС'''. Присутствует только на 3-м уровне. Именно это значение передается в параметр <code>van</code> при расчете тарифа (например: <code>200</code> — крытый, <code>400</code> — платформа, <code>600</code> — полувагон, <code>2220</code> — контейнер 20 футов). | ||
| + | |||
| + | === Пример XML-ответа === | ||
| + | <syntaxhighlight lang="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> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 5. Расчет нитки маршрута и расстояний между станциями == | ||
| + | |||
| + | Позволяет построить географический и тарифный маршрут следования с разбивкой по транзитным дорогам, опорным станциям и расчетным плечам без выполнения финансового расчета тарифа. | ||
| + | |||
| + | === Параметры запроса === | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Параметр !! Тип !! Обязательный !! Описание | ||
| + | |- | ||
| + | | <code>type</code> || string || '''Да''' || Значение <code>calc</code>. | ||
| + | |- | ||
| + | | <code>fst</code> || string || '''Да''' || 5-значный код ЕСР станции отправления. | ||
| + | |- | ||
| + | | <code>tst</code> || string || '''Да''' || 5-значный код ЕСР станции назначения. | ||
| + | |- | ||
| + | | <code>route_only</code> || integer || '''Да''' || Значение <code>1</code> (только маршрут). | ||
| + | |- | ||
| + | | <code>api_key</code> || string || '''Да''' || Лицензионный ключ. | ||
| + | |} | ||
| + | |||
| + | === Пример запроса === | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=calc&fst=69000&tst=19100&route_only=1&api_key=[ВАШ_API_KEY]</code> | ||
| + | |||
| + | Ответ содержит секцию <code><route></code>, идентичную блоку маршрута в полном расчете тарифа (см. раздел 6). | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 6. Расчет ЖД Тарифа == | ||
| + | |||
| + | Основной метод системы. Производит комплексный расчет провозных плат, сборов, платы за охрану, нормативных сроков доставки и построение нитки маршрута с детализацией по странам следования. | ||
| + | |||
| + | === Входные параметры === | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Параметр !! Тип !! По умолч. !! Описание | ||
| + | |- | ||
| + | | <code>type</code> || string || — || Обязательно: <code>calc</code>. | ||
| + | |- | ||
| + | | <code>fst</code> || string || — || Код ЕСР станции отправления (5 знаков). | ||
| + | |- | ||
| + | | <code>tst</code> || string || — || Код ЕСР станции назначения (5 знаков). | ||
| + | |- | ||
| + | | <code>fre</code> || string || — || Код груза по номенклатуре ЕТСНГ (5–6 знаков). | ||
| + | |- | ||
| + | | <code>frg</code> || string || — || Код груза по номенклатуре ГНГ (8 знаков). Если не задан, подбирается автоматически. | ||
| + | |- | ||
| + | | <code>fstate</code> || integer || — || Код государства станции отправления (из справочника <code>states</code>). | ||
| + | |- | ||
| + | | <code>tstate</code> || integer || — || Код государства станции назначения (из справочника <code>states</code>). | ||
| + | |- | ||
| + | | <code>van</code> || integer || — || Идентификатор типа вагона/контейнера из дерева <code>van_tree</code>. | ||
| + | |- | ||
| + | | <code>w</code> || integer/float || — || Масса груза в вагоне (в '''килограммах'''). Общая для всех вагонов отправки. | ||
| + | |- | ||
| + | | <code>gp</code> || integer/float || — || Грузоподъемность вагона (в '''тоннах'''). | ||
| + | |- | ||
| + | | <code>owner</code> || integer || <code>0</code> || Принадлежность парка: <code>0</code> — вагон перевозчика (общий парк); <code>1</code> — собственный или арендованный парк. | ||
| + | |- | ||
| + | | <code>empt</code> || integer || <code>0</code> || <code>0</code> — груженый рейс; <code>1</code> — порожний рейс. Для грузов группы ЕТСНГ 421*** установка <code>empt=1</code> обязательна. | ||
| + | |- | ||
| + | | <code>num_vagons</code> || integer || <code>1</code> || Число вагонов в отправке. | ||
| + | |- | ||
| + | | <code>w1...wN</code> || integer || — || Индивидуальный вес груза в кг для вагона № N (например, <code>w2=65000</code>). | ||
| + | |- | ||
| + | | <code>gp1...gpN</code> || integer/float || — || Индивидуальная грузоподъемность вагона № N в тоннах (например, <code>gp3=70</code>). | ||
| + | |- | ||
| + | | <code>return</code> || integer || <code>0</code> || <code>1</code> — рассчитать плату за возврат вагона; <code>0</code> — не рассчитывать. | ||
| + | |- | ||
| + | | <code>return_st</code> || string || <code>fst</code> || Код ЕСР станции возврата вагона (если отличается от станции отправления). | ||
| + | |- | ||
| + | | <code>modular</code> || integer || <code>0</code> || Признак сборной отправки: <code>1</code> — сборная повагонная отправка нескольких грузов. | ||
| + | |- | ||
| + | | <code>fre1...freN</code> || string || — || Коды ЕТСНГ отдельных грузов при сборной отправке (<code>modular=1</code>). | ||
| + | |- | ||
| + | | <code>frg1...frgN</code> || string || — || Коды ГНГ отдельных грузов при сборной отправке. | ||
| + | |- | ||
| + | | <code>route</code> || integer || <code>1</code> || <code>1</code> — включить детальную нитку маршрута в XML; <code>0</code> — скрыть. | ||
| + | |- | ||
| + | | <code>calc_date</code> || string || Текущая || Дата применения тарифов в формате <code>ДД.ММ.ГГГГ</code> (например, <code>23.09.2026</code>). | ||
| + | |- | ||
| + | | <code>currency</code> || string || По странам || Мнемокод валюты итога (<code>RUB</code>, <code>USD</code>, <code>EUR</code>, <code>KZT</code>, <code>CHF</code>). По умолчанию расчет по участкам ведется в нац. валютах транзитных дорог, итог пересчитывается в рубли по курсу ЦБ РФ. | ||
| + | |- | ||
| + | | <code>dock_stations</code> || string || — || Коды стыковых станций через запятую для принудительной маршрутизации (например, <code>66380,54850</code>). | ||
| + | |- | ||
| + | | <code>crimea_bridge</code> || integer || <code>0</code> || Для Крымской ж/д: <code>1</code> — через Крымский мост; <code>0</code> — через паромную переправу Кавказ–Крым. | ||
| + | |- | ||
| + | | <code>for_loading</code> || integer || <code>0</code> || Для порожнего рейса по КТЖ (Казахстан): <code>1</code> — под погрузку; <code>0</code> — из-под выгрузки. | ||
| + | |- | ||
| + | | <code>fre_empty</code> || string || <code>fre</code> || Код ЕТСНГ груза, под погрузку которого следует вагон при порожнем рейсе по КТЖ. | ||
| + | |- | ||
| + | | <code>is_speed</code> || integer || <code>1</code> || <code>1</code> — перевозка большой скоростью; <code>0</code> — без учета надбавки. | ||
| + | |- | ||
| + | | <code>is_cont_train</code> || integer || <code>1</code> || <code>1</code> — в составе регулярного контейнерного поезда; <code>0</code> — повагонная/одиночная отправка. | ||
| + | |} | ||
| + | |||
| + | === Примеры запросов === | ||
| + | |||
| + | * '''Расчет повагонной отправки (1 вагон):''' | ||
| + | : <code>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]</code> | ||
| + | |||
| + | * '''Многовагонная отправка с индивидуальными параметрами:''' | ||
| + | : <code>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]</code> | ||
| + | |||
| + | * '''Сборная повагонная отправка (<code>modular=1</code>):''' | ||
| + | : <code>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]</code> | ||
| + | |||
| + | === Описание структуры XML-ответа === | ||
| + | |||
| + | Ответ сервиса включает в себя: | ||
| + | # <code><status></code> — общий статус обработки (<code>ok</code> или <code>error</code>). | ||
| + | # <code><route></code> — нитка маршрута по странам и участкам. | ||
| + | # <code><Calc></code> — блок финансовых результатов по странам и консолидированный итог. | ||
| + | # <code><stat></code>, <code><client_thread></code>, <code><requests_available></code> — сервисная информация и остаток лимита. | ||
| + | |||
| + | ==== Структура блока <code><route></code> (Маршрут следования) ==== | ||
| + | * <code><route></code>: | ||
| + | ** <code>total_rst</code> (integer) — общее расстояние маршрута (км); | ||
| + | ** <code>from_state</code>, <code>to_state</code> (string) — страны отправления и назначения. | ||
| + | * <code><st_part></code> — участок маршрута по территории отдельной страны: | ||
| + | ** <code>index</code> (integer) — код страны; | ||
| + | ** <code>name</code> (string) — наименование страны; | ||
| + | ** <code>rst</code> (integer) — протяженность участка по территории этой страны в км. | ||
| + | * <code><stage></code> — расчетное плечо маршрута между ключевыми/стыковыми станциями: | ||
| + | ** <code>st1_ecp</code>, <code>st1_name</code> — ЕСР-код и наименование начальной станции плеча; | ||
| + | ** <code>st2_ecp</code>, <code>st2_name</code> — ЕСР-код и наименование конечной станции плеча; | ||
| + | ** <code>rst</code> (integer) — тарифное расстояние плеча в км. | ||
| + | |||
| + | ==== Структура блока <code><Calc></code> (Тарифные составляющие) ==== | ||
| + | |||
| + | Внутри <code><Calc></code> для каждого транзитного государства формируется узел <code><state></code>. | ||
| + | |||
| + | '''Атрибуты элемента <code><state></code>:''' | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Атрибут !! Тип !! Описание | ||
| + | |- | ||
| + | | <code>index</code> || integer || Цифровой код государства. | ||
| + | |- | ||
| + | | <code>name</code> || string || Наименование государства. | ||
| + | |- | ||
| + | | <code>rst</code> || integer || Тарифное расстояние по данному государству (км). | ||
| + | |- | ||
| + | | <code>return</code> || boolean || <code>true</code> — плата за порожний возврат; <code>false</code> — груженый рейс. | ||
| + | |- | ||
| + | | <code>id</code> || integer || Порядковый номер вагона в отправке. | ||
| + | |- | ||
| + | | <code>w</code> || integer || Расчетная масса груза в вагоне (кг). | ||
| + | |- | ||
| + | | <code>gp</code> || float || Грузоподъемность вагона (т). | ||
| + | |- | ||
| + | | <code>spec_tax</code> || boolean || Признак применения спецставки/исключительного тарифа. | ||
| + | |} | ||
| + | |||
| + | '''Дочерние элементы <code><state></code> (денежные составляющие):''' | ||
| + | Все узлы содержат атрибуты <code>currency</code> (валюта) и <code>value</code> (сумма с двумя знаками после запятой). | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Тег !! Описание | ||
| + | |- | ||
| + | | <code><summa></code> || Основная тарифная ставка за перевозку (инфраструктурная и локомотивная составляющие). | ||
| + | |- | ||
| + | | <code><summa_add_free></code> || Базовая ставка без учета дополнительных сборов. | ||
| + | |- | ||
| + | | <code><add_taxes></code> || Сумма дополнительных сборов и плат. | ||
| + | |- | ||
| + | | <code><guard></code> || Плата за военизированную охрану груза (ВОХР). | ||
| + | |- | ||
| + | | <code><nalog></code> || Сумма налога (НДС). При международных перевозках часто 0.00 (ставка 0%). | ||
| + | |- | ||
| + | | <code><total_tax_free></code> || Итоговая сумма по участку без НДС. | ||
| + | |- | ||
| + | | <code><total></code> || '''Итоговая провозная плата по стране''' с учетом всех сборов и налогов. | ||
| + | |- | ||
| + | | <code><tonna_tax_free></code> || Стоимость перевозки 1 тонны груза по данному участку без НДС. | ||
| + | |- | ||
| + | | <code><tonna></code> || Итоговая стоимость перевозки 1 тонны груза по стране с НДС. | ||
| + | |- | ||
| + | | <code><tonna_add_free></code> || Стоимость за 1 тонну без дополнительных сборов. | ||
| + | |} | ||
| + | |||
| + | '''Сводные итоговые элементы блока <code><Calc></code>:''' | ||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Тег !! Атрибуты !! Описание | ||
| + | |- | ||
| + | | <code><total_all></code> || <code>currency</code>, <code>value</code> || '''Полная стоимость перевозки по всему маршруту''' (по всем странам). По умолчанию конвертирована в рубли (RUB). | ||
| + | |- | ||
| + | | <code><total_all_nalog></code> || <code>currency</code>, <code>value</code> || Суммарный налог (НДС) по всей перевозке. | ||
| + | |- | ||
| + | | <code><tonna_all></code> || <code>currency</code>, <code>value</code> || Суммарная стоимость перевозки 1 тонны по всему маршруту следования. | ||
| + | |- | ||
| + | | <code><guard_all></code> || <code>currency</code>, <code>value</code> || Общая плата за вооруженную охрану по всем дорогам. | ||
| + | |- | ||
| + | | <code><guide_c_all></code> || <code>currency</code>, <code>value</code> || Плата за проезд проводников отправителя (инфраструктурная составляющая) | ||
| + | |- | ||
| + | | <code><guide_v_all></code> || <code>currency</code>, <code>value</code> || Плата за проезд проводников отправителя в вагоне. | ||
| + | |- | ||
| + | | <code><delivery_time></code> || <code>unit</code>, <code>value</code> || '''Нормативный срок доставки'''. Значение <code>value</code> — количество, <code>unit</code> — единица измерения (например, <code>сутки</code>). | ||
| + | |} | ||
| + | |||
| + | ==== Сервисные элементы ответа ==== | ||
| + | * <code><request></code> — копия входящей строки запроса в блоке CDATA. | ||
| + | * <code><client_thread></code> — идентификатор внутреннего потока сервера обработки. | ||
| + | * <code><stat></code>: | ||
| + | ** <code><calc_start></code>, <code><calc_finish></code> — временные метки начала и завершения расчета на сервере. | ||
| + | * <code><requests_available binded="..."></code> — количество оставшихся оплаченных запросов по ключу. | ||
| + | |||
| + | === Пример XML-ответа при расчете тарифа === | ||
| + | <syntaxhighlight lang="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> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | === XSD-схема валидации ответа расчета тарифа (calc.xsd) === | ||
| + | <syntaxhighlight lang="xml"> | ||
| + | <?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> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 7. Получение информации о ключе (лимит и срок действия) == | ||
| + | |||
| + | === Запрос === | ||
| + | : <code>https://www.alta.ru/rail_tracking/rail_trf/?type=key_info&api_key=[ВАШ_API_KEY]</code> | ||
| + | |||
| + | === Пример XML-ответа === | ||
| + | <syntaxhighlight lang="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> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | === Описание полей элемента <code><key_info></code> === | ||
| + | * <code>requests_available</code> (integer) — остаток предоплаченных запросов по лицензии. | ||
| + | * <code>start_date</code> (datetime) — дата и время активации ключа. | ||
| + | * <code>expire_date</code> (datetime) — дата и время истечения срока действия ключа. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == 8. Обработка ошибок == | ||
| + | |||
| + | В случае возникновения ошибок (невалидный API-ключ, неверный код станции, невозможность построения маршрута и т.д.) сервер возвращает ответ со статусом <code>error</code>: | ||
| + | |||
| + | <syntaxhighlight lang="xml"> | ||
| + | <?xml version="1.0" encoding="utf-8"?> | ||
| + | <xml> | ||
| + | <status>error</status> | ||
| + | <error>Неверный ключ доступа или срок действия ключа истек</error> | ||
| + | </xml> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | {| class="wikitable" style="width: 100%;" | ||
| + | ! Типовая ошибка !! Причина возникновения !! Решение | ||
| + | |- | ||
| + | | <code>Неверный ключ доступа...</code> || Параметр <code>api_key</code> отсутствует, недействителен либо истек срок подписки. || Проверить актуальность ключа через <code>type=key_info</code> или обратиться к менеджеру Альта-Софт. | ||
| + | |- | ||
| + | | <code>Станция не найдена</code> || Передан несуществующий 5-значный код станции в <code>fst</code> или <code>tst</code>. || Выполнить поиск по справочнику через <code>type=fst</code> / <code>type=tst</code>. | ||
| + | |- | ||
| + | | <code>Не найден маршрут</code> || Отсутствует прямое или транзитное ж/д сообщение между станциями. || Проверить допустимость коммерческих операций на станциях либо задать промежуточные стыки (<code>dock_stations</code>). | ||
| + | |} | ||
| + | |||
| + | ---- | ||
| + | |||
| + | == Интерактивное тестирование и демонстрация == | ||
| + | |||
| + | * Форма интерактивного тестирования всех методов API: | ||
| + | : [http://www.alta.ru/rail_tracking/rail_trf/example.php http://www.alta.ru/rail_tracking/rail_trf/example.php] | ||
| + | * Полнофункциональный веб-интерфейс калькулятора ЖД тарифа: | ||
| + | : [http://www.alta.ru/rail_tracking/rail_trf/demo.php http://www.alta.ru/rail_tracking/rail_trf/demo.php] | ||
Текущая версия на 09:45, 29 сентября 2026
Содержание
- 1 Описание протокола обмена данными (API) «ЖД Тариф» от Альта-Софт
- 1.1 Общие положения
- 1.2 1. Справочник грузов (ЕТСНГ и ГНГ)
- 1.3 2. Справочник станций
- 1.4 3. Справочник государств
- 1.5 4. Дерево подвижного состава и перевозочных средств
- 1.6 5. Расчет нитки маршрута и расстояний между станциями
- 1.7 6. Расчет ЖД Тарифа
- 1.8 7. Получение информации о ключе (лимит и срок действия)
- 1.9 8. Обработка ошибок
- 1.10 Интерактивное тестирование и демонстрация
Описание протокола обмена данными (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 | — | Режим выборки:
|
index |
string | (пусто) | Поисковый запрос: код груза (или первые цифры кода) либо наименование (или фрагмент наименования). Если не задан — возвращается весь справочник. |
corr |
string | yes |
yes — искать соответствие между ЕТСНГ и ГНГ; no — не выполнять кросс-поиск.
|
Примеры запросов
- Поиск в ЕТСНГ по началу кода с кросс-поиском по ГНГ:
- Поиск в ГНГ по наименованию без сопоставления:
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=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. Справочник государств
Возвращает перечень стран и их идентификаторов, используемых в тарифной системе.
Запрос
Описание полей ответа (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 вагон):
- Многовагонная отправка с индивидуальными параметрами:
- Сборная повагонная отправка (
modular=1):
Описание структуры XML-ответа
Ответ сервиса включает в себя:
<status>— общий статус обработки (okилиerror).<route>— нитка маршрута по странам и участкам.<Calc>— блок финансовых результатов по странам и консолидированный итог.<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. Получение информации о ключе (лимит и срок действия)
Запрос
Пример 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:
- Полнофункциональный веб-интерфейс калькулятора ЖД тарифа: