Пакетный доступ
Режим Пакетного доступа позволяет отслеживать сразу несколько отправлений в одном запросе. Запрос может содержать до 3000 почтовых идентификаторов отправлений. Протокол Пакетного доступа реализован на основе SOAP (Simple Object Access Protocol).
Работа с API Сервиса отслеживания в режиме Пакетного доступа осуществляется в два этапа:
запрос билета на подготовку информации, содержащий список идентификаторов отправлений (вызов метода getTicket);
получение готового ответа по билету (вызов метода getResponseByTicket).
По каждому отправлению возвращается информация обо всех операциях, совершенных над ним. Информация об одной операции включает время и место проведения операции, код и атрибут операции, название операции.
1. Основная информация по использованию API
| Адрес сервиса | https://tracking.russianpost.ru/fc |
| WSDL | https://tracking.russianpost.ru/fc?wsdl |
| Методы | getTicket, getResponseByTicket |
| Базовый протокол | SOAP 1.1 |
| Параметры доступа | могут быть получены в разделе Настройки доступа зарегистрированного пользователя, у которого подключен доступ к API |
| Примеры кода | Примеры кода для работы с API |
2. Ограничения и рекомендации по использованию сервиса
Количество идентификаторов отправлений в одном запросе не должно превышать 3000.
Рекомендуется выполнять первое обращение за ответом по билету не ранее, чем через 15 минут от момента выдачи билета. В случае неготовности результата повторные обращения по тому же билету следует выполнять не чаще, чем 1 раз в 15 минут.
Время хранения ответа по билету в Сервисе отслеживания составляет 32 часа. По истечении этого периода ответ удаляется.
3. Метод getTicket
Метод getTicket используется для получения билета на подготовку информации по списку идентификаторов отправлений. В запросе передается список идентификаторов отправлений. При успешном вызове метод возвращает идентификатор билета.
3.1. Запрос
В запросе метода указываются до 3000 идентификаторов отправлений и параметры доступа к API Сервиса отслеживания (логин и пароль).
| Элемент | Атрибут | Описание | Обязательность |
| Request | Содержит один и более элементов Item. | Да | |
| FileName | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| FileTypeID | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| FileNumber | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| SenderID | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| RecipientID | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| DatePreparation | Не используются, в протоколе присутствуют для совместимости. | Нет | |
| Item | Содержит один идентификатор РПО. Число элементов Item в запросе может быть от 1 до 3000. | Да | |
| Barcode | Идентификатор РПО в одном из форматов: - внутрироссийский, состоящий из 14 символов (цифровой); - международный, состоящий из 13 символов (буквенно-цифровой) в формате S10. | ||
| login | Логин для доступа к API Сервиса отслеживания. Может быть получен в разделе Настройки доступа. | Да | |
| password | Пароль для доступа к API Сервиса отслеживания. Может быть получен в разделе Настройки доступа. | Да | |
| language | Язык, используемый в ответных сообщениях. Возможные значения:RUS – русский (используется по умолчанию)ENG – английский. | Нет |
3.2. Ответ
Ответ метода getTicket содержит информацию о выданном билете.
| Элемент | Атрибут | Описание |
| ticketResponse | Содержит идентификатор созданного билета при успешном вызове, либо сообщение об ошибке при неуспешном. | |
| value | Идентификатор созданного билета, в нем отражены дата и время создания билета, а также принадлежность к клиенту. Формат: YYYYMMDDHHmmsslllNAME, где YYYY - год, MM - месяц DD - день, НН - час mm - минуты ss - секунды lll - миллисекунды NAME - логин пользователя в верхнем регистре | |
| error | Содержит описание ошибки в случае, если вызов был неуспешным. | |
| ErrorTypeID | Код ошибки. Список возможных кодов см. в п.3.2. | |
| ErrorName | Текст ошибки. Список возможных кодов см. в п.3.2. |
3.3. Возможные ошибки
| ErrorTypeID | ErrorName |
| 2 | Формат данных запроса не соответствует установленному настоящим протоколом |
| 3 | Неуспешная авторизация клиента при вызове метода |
| 16 | Внутренняя ошибка работы Сервиса отслеживания |
| 18 | Превышено максимально допустимое количество отправлений в запросе |
| 20 | Недопустимый идентификатор языка |
| 21 | Длина одного или нескольких из запрошенных идентификаторов отправлений превышает максимальный размер |
| 22 | Длина имени файла превышает максимальный размер |
3.4. Примеры запроса и ответа
Пример запроса:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pos="http://fclient.russianpost.org/postserver" xmlns:fcl="http://fclient.russianpost.org"> <soapenv:Header/> <soapenv:Body> <pos:ticketRequest>
<request>
<fcl:Item Barcode="RA123456788RU"/>
<fcl:Item Barcode="RA123456789RU"/>
<fcl:Item Barcode="RA123456780RU"/>
...
</request>
<login>my_login</login>
<password>my_password</password>
<language>RUS</language>
</pos:ticketRequest>
</soapenv:Body> </soapenv:Envelope>
Пример ответа:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:ticketResponse xmlns:ns2="http://fclient.russianpost.org/postserver" xmlns:ns3="http://fclient.russianpost.org">
<value>20150917162048476CLIENTID</value>
</ns2:ticketResponse>
</S:Body> </S:Envelope>
4. Метод getResponseByTicket
Метод используется для получения информации об отправлениях по ранее полученному билету.
4.1. Запрос
| Элемент | Описание | Обязательность |
| answerByTicketRequest | Содержит параметры запроса информации по билету. | |
| ticket | Номер билета. | Да |
| login | Логин для доступа к API Сервиса отслеживания. Может быть получен в разделе Настройки доступа. | Да |
| password | Пароль для доступа к API Сервиса отслеживания. Может быть получен в разделе Настройки доступа. | Да |
4.2. Ответ
| Элемент | Атрибут | Описание |
| value | Содержит информацию о билете. | |
| FileName | Не используются, в протоколе присутствуют для совместимости. | |
| FileTypeID | Не используются, в протоколе присутствуют для совместимости. | |
| FileNumbe r | Не используются, в протоколе присутствуют для совместимости. | |
| SenderID | Не используются, в протоколе присутствуют для совместимости. | |
| RecipientID | Не используются, в протоколе присутствуют для совместимости. | |
| DatePreparation | Дата и время (московское) завершения обработки билета. Пример значения: "17.09.2015 17:20:48" | |
| Item | Содержит информацию по одному идентификатору РПО. Число элементов Item в ответе соответствует числу идентификаторов РПО, запрошенных в запросе getTicket ранее. | |
| Barcode | Идентификатор РПО. | |
| Operation | Содержит информацию по одной операции в истории РПО. Количество элементов Operation соответствует количеству зарегистрированных операций в истории РПО. | |
| OperTypeID | Код операции. | |
| OperCtgID | Код атрибута. | |
| OperName | Название операции. | |
| DateOper | Дата и время операции (локальное). Пример значения: "17.09.2015 17:20:48" | |
| IndexOper | Почтовый индекс места проведения операции | |
| Error | Содержит информацию об ошибке в случае, если не удалось получить информацию об РПО из Сервиса отслеживания | |
| ErrorTypeID | Идентификатор ошибки. Список возможных ошибок см. в п. 4.3. | |
| ErrorName | Текст ошибки. Список возможных ошибок см. в п. 4.3. |
4.3. Возможные ошибки
| ErrorTypeID | ErrorName |
| 2 | Формат данных запроса не соответствует установленному настоящим протоколом |
| 3 | Неуспешная авторизация клиента при вызове метода |
| 6 | Ответ по билету ещё не готов |
| 12 | Информация о заданном идентификаторе отправления отсутствует |
| 16 | Внутренняя ошибка работы Сервиса отслеживания |
| 17 | Время хранения ответа по билету истекло, ответ был удален с сервера |
4.4. Примеры запроса и ответа
Пример запроса:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pos="http://fclient.russianpost.org/postserver"> <soapenv:Header/> <soapenv:Body> <pos:answerByTicketRequest>
<ticket>20150917162048476CLIENTID</ticket>
<login>my_login</login>
<password>my_password</password>
</pos:answerByTicketRequest>
</soapenv:Body> </soapenv:Envelope>
Пример ответа:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:answerByTicketResponse xmlns:ns2="http://fclient.russianpost.org/postserver" xmlns:ns3="http://fclient.russianpost.org">
<value FileName="" FileTypeID="2" FileNumber="1" RecipientID="1" DatePreparation="17.09.2015 17:20:48">
<ns3:Item Barcode="45008378901234">
<ns3:Operation OperTypeID="1" OperCtgID="1" OperName="Прием" DateOper="08.09.2015 17:07:00" IndexOper="450083"/>
<ns3:Operation OperTypeID="8" OperCtgID="4" OperName="Обработка" DateOper="10.09.2015 04:42:00" IndexOper="450962"/>
<ns3:Operation OperTypeID="8" OperCtgID="0" OperName="Обработка" DateOper="12.09.2015 18:07:00" IndexOper="140983"/>
<ns3:Operation OperTypeID="8" OperCtgID="4" OperName="Обработка" DateOper="13.09.2015 04:14:00" IndexOper="140980"/>
<ns3:Operation OperTypeID="8" OperCtgID="4" OperName="Обработка" DateOper="13.09.2015 23:11:00" IndexOper="111949"/>
<ns3:Operation OperTypeID="8" OperCtgID="2" OperName="Обработка" DateOper="14.09.2015 03:25:00" IndexOper="125362"/>
<ns3:Operation OperTypeID="4" OperCtgID="3" OperName="Досылка почты" DateOper="15.09.2015 09:20:00" IndexOper="125362"/>
<ns3:Operation OperTypeID="8" OperCtgID="2" OperName="Обработка" DateOper="16.09.2015 03:43:00" IndexOper="125364"/>
</ns3:Item>
<ns3:Item Barcode="10725878901235">
<ns3:Operation OperTypeID="1" OperCtgID="1" OperName="Прием" DateOper="12.09.2015 09:26:00" IndexOper="107258"/>
<ns3:Operation OperTypeID="8" OperCtgID="1" OperName="Обработка" DateOper="12.09.2015 09:26:00" IndexOper="107258"/>
<ns3:Operation OperTypeID="8" OperCtgID="4" OperName="Обработка" DateOper="12.09.2015 23:14:00" IndexOper="111974"/>
<ns3:Operation OperTypeID="8" OperCtgID="15" OperName="Обработка" DateOper="16.09.2015 09:09:00" IndexOper="130203"/>
<ns3:Operation OperTypeID="2" OperCtgID="8" OperName="Вручение" DateOper="16.09.2015 13:45:00" IndexOper="130203"/>
<ns3:Item Barcode="RA123456789RU">
<ns3:Error ErrorTypeID="12" ErrorName="Сообщение не найдено"/>
</ns3:Item>
....
</value>
</ns2:answerByTicketResponse>
</S:Body> </S:Envelope>