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

Материал из Alta-Soft Wikipedia
Перейти к навигации Перейти к поиску
(→‎Расчет ЖД Тарифа)
(→‎Структура блока <Calc> (Тарифные составляющие))
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
−
==Описание протокола обмена данными (API) с системой расчета провозной платы на жд (жд тарифа) от Альта-Софт==
+
__TOC__
  
−
<b>Обмен данными между сервисом Альта-Софт и сторонними ресурсами осуществляется по протоколу http(s), транспорт xml. <br />
+
= Описание протокола обмена данными (API) «ЖД Тариф» от Альта-Софт =
−
Все запросы в системе – GET или POST. </b>
 
−
<br />
 
−
<b style="color:red">
 
−
Для всех запросов необходимо указывать обязательный параметр - api_key. <br />
 
−
Api_key выдается клиенту после оплаты доступа к api-функционалу и имеет ограниченный период действия (6 мес или год).
 
−
По окончании срока действия ключа (если не было оплачено продление) доступ к функционалу приостанавливается.
 
−
</b>
 
−
<br />
 
  
−
===Выполнение запроса на выбор из справочника грузов ЕТСНГ и ГНГ===
+
Сервис предназначен для расчета провозной платы (тарифа) при железнодорожных перевозках грузов по территории России, стран СНГ, Балтии и сопредельных государств, а также для получения нормативно-справочной информации (станции, номенклатура грузов ЕТСНГ/ГНГ, классификатор подвижного состава, государства).
  
−
Запрос выбор из справочников грузов состоит из обязательного параметра type и других параметров, завясящих от type.
+
== Общие положения ==
−
<br />
 
−
Для запроса необходимо выполнить GET (POST) -запрос на адрес https://www.www.alta.ru/rail_tracking/rail_trf/
 
  
−
<strong>Возможные значения type:</strong>
+
* '''Базовый URL:''' <code>https://www.alta.ru/rail_tracking/rail_trf/</code>
−
<ol>
+
* '''Протокол:''' HTTP / HTTPS.
−
  <li><strong>type = [fre|frg]</strong> Получить список грузов ЕТСНГ (fre) или грузов ГНГ (frg) в формате XML<br />
+
* '''Методы запросов:''' <code>GET</code>, <code>POST</code>.
−
    index = [код или первые символы кода  груза или наименование или часть наименования]. Если необходимо получить весь справочник - то нужно оставить этот параметр пустым.
+
* '''Формат передачи данных:''' XML (кодировка <code>UTF-8</code>).
−
  <br />
+
* '''Аутентификация:''' Обязательный GET/POST-параметр <code>api_key</code>.
−
  corr = [yes|no] Указывет серверу, надо ли искать соответствие ЕТСНГ-ГНГ. По умолчанию yes.<br />
 
−
<strong>&nbsp; Пример 1:</strong> https://www.alta.ru/rail_tracking/rail_trf/?type=fre&amp;index=011&amp;encoding=utf-8&api_key=[вставьте ваш api_key] (получить список грузов ЕТСНГ код которых начинается на &quot;011&quot; и соответствующих им грузов ГНГ)<br />
 
−
<strong>&nbsp; Пример 2:</strong> https://www.alta.ru/rail_tracking/rail_trf/?type=frg&amp;index=пшен&amp;encoding=utf-8&amp;corr=no&api_key[вставьте ваш api_key] (получить список грузов ГНГ наименование который содержит &quot;пшен&quot;. НЕ чуствителен к регистру. НЕ будет выводить соответствующие грузы из справочника ЕТСНГ) <br />
 
−
<br />
 
−
  </li>
 
−
</ol>
 
  
−
===Выполнение запроса на выбор из справочника станций===
+
{| 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>).
 +
|}
  
−
Запрос выбор из справочников грузов состоит из обязательного параметра type и других параметров, завясящих от type.
+
----
−
<br />
 
−
Для запроса необходимо выполнить GET (POST) - запрос на адрес https://www.alta.ru/rail_tracking/rail_trf/
 
  
−
<strong>Возможные значения type:</strong>
+
== 1. Справочник грузов (ЕТСНГ и ГНГ) ==
−
<ol>
 
−
  <li><strong>type&nbsp;= [fst|tst]</strong> Получить список станций назначения (fst) или отправления (tst) в формате XML<br />
 
−
  <li><strong>exactly&nbsp;= [0|1]</strong> Искать точное соответствие - 1, по вхождению символов - 0. Только для поиска по наименованию. По умолчанию - 0.<br />
 
−
    index = [код или первые символы кода станции или наименование или часть наименования], <br />
 
−
<strong>&nbsp; Пример 1:</strong> https://www.alta.ru/rail_tracking/rail_trf/?type=tst&amp;index=104&amp;encoding=utf-8&api_key=[вставьте ваш api_key] (получить список станций назначения код которых начинается на &quot;104&quot;)<br />
 
−
<strong>&nbsp; Пример 2:</strong> https://www.alta.ru/rail_tracking/rail_trf/?type=fst&amp;index=моск&amp;encoding=utf-8&api_key=[вставьте ваш api_key] (получить список станций отправления наименование который содержит &quot;моск&quot;. НЕ чуствителен к регистру) <br />
 
−
<br />
 
−
По умолчанию код станций содержит 5 символов. В случае, если необходимо получить список с 6-значными кодами, необходимо в запрос включить дополнительный параметр full_code=1. В случае, если необходимо получить весь справочник, то нужно оставить параметр index пустым.
 
−
  </li>
 
−
</ol>
 
  
−
===Выполнение запроса на выбор из справочника государств===
+
Служит для поиска кодов грузов по ЕТСНГ (Единая тарифно-статистическая номенклатура грузов) и ГНГ (Гармонизированная номенклатура грузов), а также для автоматического сопоставления классификаторов.
  
−
Послать запрос вида: <br />
+
=== Параметры запроса ===
−
https://www.alta.ru/rail_tracking/rail_trf/?type=states
+
{| 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>
  
−
<ol>
+
=== Описание полей ответа (XML) ===
−
  <li><strong>type = [van_tree]</strong> Получить дерево перевозочных средств.
+
Корневой элемент: <code>&lt;fraights&gt;</code> (содержит атрибут <code>last_update</code> — дата актуализации справочника). Внутри расположен список элементов <code>&lt;fraight&gt;</code>.
−
    <ul>
 
−
      <li>kind = xml (дерево пс в виде xml, по умолчанию)</li>
 
−
      <li>kind = html (дерево пс в виде html-тегов ul-li для удобного отображения с использованием плагина jQuery - Treeview)<br />
 
−
        <strong>Пример</strong>: https://www.alta.ru/rail_tracking/rail_trf/?type=van_tree&amp;kind=ul&amp;encoding=utf-8<br />
 
−
    <br />
 
−
      </li>
 
−
    </ul>
 
−
  </li>
 
−
</ol>  
 
  
−
==Расчет нитки маршрута и расстояний между станциями==
+
{| 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>).
 +
|}
  
−
<ul>
+
=== Пример XML-ответа ===
−
      <li>fst (обязательный) - 5-и значный код станции отправления</li>
+
<syntaxhighlight lang="xml">
−
      <li>tst (обязательный) -5-и значный код станции назначения</li>
+
<?xml version="1.0" encoding="utf-8"?>
−
      <li>route_only=1 (обязательный)
+
<fraights last_update="17.01.2026">
−
      <li>
+
    <fraight index="011005" name="ПШЕНИЦА" level="3" parent="010002" isgroup="false" danger="false" guard="false" frclass="2" mwn="ГП" gng="10019000" frnameg="" />
−
<strong>Пример расчета нитки маршрута Нур-Султан I (КЗХ) - Силикатная (РФ)</strong><br/>
+
</fraights>
−
https://www.alta.ru/rail_tracking/rail_trf/?type=calc&amp;fst=69000&amp;tst=19100&amp;route_only=1&amp;api_key=[вставьте ваш api_key]</li>
+
</syntaxhighlight>
−
      </li>
 
−
</ul>
 
  
−
==Расчет ЖД Тарифа==
+
----
  
−
<ul>
+
== 2. Справочник станций ==
−
      <li>fst- 5-и значный код станции отправления</li>
 
−
      <li>tst -5-и значный код станции назначения</li>
 
−
      <li>fre - 5-и значный код груза ЕТСНГ</li>
 
−
      <li>frg - 6-и значный код груза ГНГ</li>
 
−
      <li>fstate - код страны отправления </li>
 
−
      <li>tstate - код страны назначения </li>
 
−
      <li>num_vagons - количество вагонов в отправке (не обязателен). По умолчанию num_vagons=1</li>
 
−
      <li>modular - признак сборной отправки (не обязателен). По умолчанию modular=0</li>
 
−
      <li>w - вес груза в килограммах. Это параметр будет установлен у всех вагонов в отправке (если num_vagons больше одного)<br />
 
−
  Дополнительно допускается использовать параметры w1,w2...wN для указания веса в конкретном вагоне (см. пример ниже)</li>
 
−
      <li>gp - грузоподъемность в тоннах. Это параметр будет установлен у всех вагонов в отправке (если num_vagons больше одного)<br />
 
−
  Дополнительно допускается использовать параметры gp1,gp2...gpN для указания грузоподъемности конкретного вагона (см. пример ниже)</li>
 
−
      <li>empt - [0|1], default - 0. Порожняя отправка - 1, груженая - 0. При указании грузов ЕТСНГ группы "421**" обязательно устанавливать этот флаг в 1.</li>
 
−
      <li>return - [0|1], default - 0. Рассчитывать возврат - 1, не рассчитывать - 0.</li>
 
−
      <li>return_st - код станции возврата для случаев возврата на станцию, отличающуюся от станции отправления. Необязательный, по умолчанию возврат принимается на станцию отправления.</li>
 
−
      <li>van - код вагона из дерева перевозочных средств</li>
 
−
      <li>owner - [0|1] default - 0. Принадлежность перевозочного средства, 0 - общего парка, 1 - собств. (арендованный)</li>
 
−
      <li>is_speed - [0|1], default = 1. Расчет перевозки большой скоростью - 1, не включать - 0. Необязательный. </li>
 
−
      <li>is_cont_train - [0|1], default = 1. Расчет перевозки контейнерным поездом - 1, не включать - 0. Необязательный. </li>
 
−
      <li>route - [0|1], default = 1. Включить нитку маршрута в отчет - 1, не включать - 0.</li>
 
−
      <li>crimea_bridge - [0,1], default = 0, необязательный. В случае расчета тарифа на станции Крымской жд можно указать этот параметр. Crimea_bridge=1 - проезд по Крымскому мосту, 0 - проезд через паромную переправу Кавказ-Крым.</li>
 
−
      <li>for_loading - [0,1], default = 0, необязательный. В случае расчета порожнего тарифа между станций Казахских жд: for_loading - 1 - под погрузку, 0 - из-под выгрузки (по умолчанию)</li>
 
−
      <li>fre_empty - 5-и значный код груза ЕТСНГ под погрузку при расчете порожнего рейса по КЗХ, необязательно. По умолчанию принимается равному параметру fre. </li>
 
−
      <li>calc_date - дата, на которую необходимо провести расчет. Необязательно, по умолчанию - текущая дата. Формат: дд.мм.гггг. Например, 23.09.2023. </li>
 
−
      <li>dock_stations - ЕСР-коды станций - промежуточных стыков для расчета альтернативного маршрута через них, необязательный. Например: dock_stations=66380,54850</li>
 
−
      <li>currency - мнемо-код валюты расчета, необязательный. По умолчанию - расчет по странам ведется в национальных валютах, общая сумма - в рублях. При указании этого параметра все суммы будут переведены в указанную валюту по курсу ЦБ РФ на дату расчета. Например, currency=RUB.</li>
 
−
   
 
−
        <strong>Пример расчета отправки из 1 вагона</strong>: https://www.alta.ru/rail_tracking/rail_trf/?type=calc&amp;fst=01100&amp;tst=22022&amp;fre=01100&amp;frg=10019000&amp;fstate=20&amp;tstate=20&amp;van=200&amp;w=60000&amp;gp=66&amp;owner=0&amp;return=0&amp;empt=0&api_key=[вставьте ваш api_key]</li>
 
−
<strong>Пример расчета отправки из 6 вагонов</strong>, где у всех вагонов, кроме 2-ого и 4-ого вес груза составляет 60000 кг (параметр w), у 2-ого вагона 65000 кг (параметр w2), у 4-ого вагона - 68000 кг (параметр w4). Грузоподъемность у всех вагонов равна 66 тоннам (параметр gp), кроме 6-ого вагона - 70 тонн (параметр gp6): https://www.alta.ru/rail_tracking/rail_trf/?type=calc&amp;fst=01100&amp;tst=22022&amp;fre=01100&amp;frg=10019000&amp;fstate=20&amp;tstate=20&amp;van=200&amp;w=60000&amp;gp=66&amp;owner=0&amp;return=0&amp;empt=0&num_vagons=6&w2=65000&w4=68000&gp6=70&api_key=[вставьте ваш api_key]
 
−
  <br />
 
  
−
  <strong>Пример расчета сборной отправки</strong>:
+
Служит для поиска железнодорожных станций по названию или коду ЕСР (Единая сетевая разметка), проверки выполняемых коммерческих операций (параграфов ТР №4) и определения принадлежности железной дороге и государству.
−
https://www.alta.ru/rail_tracking/rail_trf/?&type=calc&fst=19350&tst=97040&fre=&frg=&fstate=20&tstate=20&num_vagons=1&van=200&w=0&gp=65&owner=0&return=0&empt=0&route=0&modular=1&fre1=12701&w1=4850&fre2=12101&w2=1500&fre3=12501&w3=32000&fre4=37101&w4=900&api_key=[вставьте ваш api_key]. Параметр modular=1, список грузов описывается параметрами: <br />
 
−
fre1...freN, frg1...frgN, w1...wN, где N - кол-во грузов в сборной отправке, <br />
 
−
fre1, fre2...freN - коды грузов по ЕТСНГ, <br />
 
−
frg1, frg2.... frgN - коды грузов по ГНГ (необязательно, если не указаны - будет подобрано соответствие ЕТСНГ-ГНГ), <br />
 
−
w1, w2...wN - соответствующие массы грузов в килограммах
 
−
</ul>
 
  
−
==Получение информации о ключе (срок действия, оставшийся объем запросов)==
+
=== Параметры запроса ===
−
https://www.alta.ru/rail_tracking/rail_trf/?type=key_info&api_key=[вставьте ваш api_key]
+
{| 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-значный тарифный код.
 +
|}
  
−
==Ссылки на примеры==  
+
=== Примеры запросов ===
−
+
* Поиск по коду станции:
−
Протестировать все вышеописанные примеры можно на странице:<br />
+
: <code>https://www.alta.ru/rail_tracking/rail_trf/?type=tst&index=104&encoding=utf-8&api_key=[ВАШ_API_KEY]</code>
−
http://www.alta.ru/rail_tracking/rail_trf/example.php
+
* Поиск по названию станции:
 +
: <code>https://www.alta.ru/rail_tracking/rail_trf/?type=fst&index=моск&encoding=utf-8&api_key=[ВАШ_API_KEY]</code>
  
−
<br />
+
=== Описание полей ответа (XML) ===
−
Пример работы полнофункциональной страницы по выбору из справочников и расчету жд тарифа:<br />
+
Корневой элемент: <code>&lt;stations&gt;</code> (атрибут <code>count</code> — число найденных записей). Дочерние элементы: <code>&lt;station&gt;</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>&lt;states&gt;</code>, содержит элементы <code>&lt;state&gt;</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>&lt;van&gt;</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>&lt;route&gt;</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>&lt;status&gt;</code> — общий статус обработки (<code>ok</code> или <code>error</code>).
 +
# <code>&lt;route&gt;</code> — нитка маршрута по странам и участкам.
 +
# <code>&lt;Calc&gt;</code> — блок финансовых результатов по странам и консолидированный итог.
 +
# <code>&lt;stat&gt;</code>, <code>&lt;client_thread&gt;</code>, <code>&lt;requests_available&gt;</code> — сервисная информация и остаток лимита.
 +
 
 +
==== Структура блока <code>&lt;route&gt;</code> (Маршрут следования) ====
 +
* <code>&lt;route&gt;</code>:
 +
** <code>total_rst</code> (integer) — общее расстояние маршрута (км);
 +
** <code>from_state</code>, <code>to_state</code> (string) — страны отправления и назначения.
 +
* <code>&lt;st_part&gt;</code> — участок маршрута по территории отдельной страны:
 +
** <code>index</code> (integer) — код страны;
 +
** <code>name</code> (string) — наименование страны;
 +
** <code>rst</code> (integer) — протяженность участка по территории этой страны в км.
 +
* <code>&lt;stage&gt;</code> — расчетное плечо маршрута между ключевыми/стыковыми станциями:
 +
** <code>st1_ecp</code>, <code>st1_name</code> — ЕСР-код и наименование начальной станции плеча;
 +
** <code>st2_ecp</code>, <code>st2_name</code> — ЕСР-код и наименование конечной станции плеча;
 +
** <code>rst</code> (integer) — тарифное расстояние плеча в км.
 +
 
 +
==== Структура блока <code>&lt;Calc&gt;</code> (Тарифные составляющие) ====
 +
 
 +
Внутри <code>&lt;Calc&gt;</code> для каждого транзитного государства формируется узел <code>&lt;state&gt;</code>.
 +
 
 +
'''Атрибуты элемента <code>&lt;state&gt;</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>&lt;state&gt;</code> (денежные составляющие):'''
 +
Все узлы содержат атрибуты <code>currency</code> (валюта) и <code>value</code> (сумма с двумя знаками после запятой).
 +
{| class="wikitable" style="width: 100%;"
 +
! Тег !! Описание
 +
|-
 +
| <code>&lt;summa&gt;</code> || Основная тарифная ставка за перевозку (инфраструктурная и локомотивная составляющие).
 +
|-
 +
| <code>&lt;summa_add_free&gt;</code> || Базовая ставка без учета дополнительных сборов.
 +
|-
 +
| <code>&lt;add_taxes&gt;</code> || Сумма дополнительных сборов и плат.
 +
|-
 +
| <code>&lt;guard&gt;</code> || Плата за военизированную охрану груза (ВОХР).
 +
|-
 +
| <code>&lt;nalog&gt;</code> || Сумма налога (НДС). При международных перевозках часто 0.00 (ставка 0%).
 +
|-
 +
| <code>&lt;total_tax_free&gt;</code> || Итоговая сумма по участку без НДС.
 +
|-
 +
| <code>&lt;total&gt;</code> || '''Итоговая провозная плата по стране''' с учетом всех сборов и налогов.
 +
|-
 +
| <code>&lt;tonna_tax_free&gt;</code> || Стоимость перевозки 1 тонны груза по данному участку без НДС.
 +
|-
 +
| <code>&lt;tonna&gt;</code> || Итоговая стоимость перевозки 1 тонны груза по стране с НДС.
 +
|-
 +
| <code>&lt;tonna_add_free&gt;</code> || Стоимость за 1 тонну без дополнительных сборов.
 +
|}
 +
 
 +
'''Сводные итоговые элементы блока <code>&lt;Calc&gt;</code>:'''
 +
{| class="wikitable" style="width: 100%;"
 +
! Тег !! Атрибуты !! Описание
 +
|-
 +
| <code>&lt;total_all&gt;</code> || <code>currency</code>, <code>value</code> || '''Полная стоимость перевозки по всему маршруту''' (по всем странам). По умолчанию конвертирована в рубли (RUB).
 +
|-
 +
| <code>&lt;total_all_nalog&gt;</code> || <code>currency</code>, <code>value</code> || Суммарный налог (НДС) по всей перевозке.
 +
|-
 +
| <code>&lt;tonna_all&gt;</code> || <code>currency</code>, <code>value</code> || Суммарная стоимость перевозки 1 тонны по всему маршруту следования.
 +
|-
 +
| <code>&lt;guard_all&gt;</code> || <code>currency</code>, <code>value</code> || Общая плата за вооруженную охрану по всем дорогам.
 +
|-
 +
| <code>&lt;guide_c_all&gt;</code> || <code>currency</code>, <code>value</code> || Плата за проезд проводников отправителя (инфраструктурная составляющая)
 +
|-
 +
| <code>&lt;guide_v_all&gt;</code> || <code>currency</code>, <code>value</code> || Плата за проезд проводников отправителя в вагоне.
 +
|-
 +
| <code>&lt;delivery_time&gt;</code> || <code>unit</code>, <code>value</code> || '''Нормативный срок доставки'''. Значение <code>value</code> — количество, <code>unit</code> — единица измерения (например, <code>сутки</code>).
 +
|}
 +
 
 +
==== Сервисные элементы ответа ====
 +
* <code>&lt;request&gt;</code> — копия входящей строки запроса в блоке CDATA.
 +
* <code>&lt;client_thread&gt;</code> — идентификатор внутреннего потока сервера обработки.
 +
* <code>&lt;stat&gt;</code>:
 +
** <code>&lt;calc_start&gt;</code>, <code>&lt;calc_finish&gt;</code> — временные метки начала и завершения расчета на сервере.
 +
* <code>&lt;requests_available binded="..."&gt;</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>&lt;key_info&gt;</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

Содержание

Описание протокола обмена данными (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