API сервиса «Груз на СВХ»
О сервисе
Сервис "Груз на СВХ" https://www.alta.ru/svh-gruz/ позволяет получить информацию о грузе в json формате, поступившем на склады временного хранения. По номеру транспортного документа, контейнера, транспортного средства или номера декларации предоставляется информация о размещении груза на СВХ.
API
Доступ к API предоставляется по URL https://www.alta.ru/svh-gruz/search/api/v1/.
Для использования сервиса необходима авторизация с помощью логина и пароля.
Логин и пароль для обращения по API необходимо получить в личном кабинете https://www.alta.ru/user/, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.
Запрос на поиск
Для поиска необходимо отправлять GET-запрос по URL https://www.alta.ru/svh-gruz/search/api/v1/, содержащий следующие GET-параметры:
- n_k - номер контейнера
- n_trans - транспортное средство
- n_trans_doc - транспортный документ
- n_dt - номер декларации
- логин в открытом виде
- секрет - MD5-хеш от сгенерированной строки параметры запроса + логин + md5-хэш от пароля, все параметры разделены знаком “:” (двоеточие)
secret = md5("{n_k}:{n_trans}:{n_trans_doc}:{n_dt}:{логин}:md5({пароль})")
Пример запроса:
Запрос с параметрами:
n_k = 123, n_trans = пусто, n_trans_doc = 555, n_dt = пусто.
Пользователь с логином testlogin и паролем testpassword.
для запроса: https://www.alta.ru/svh-gruz/search/api/v1/?n_k=123&n_trans=&n_trans_doc=555&n_dt=&login=testlogin
вычисляем секрет: secret = md5("123::555::testlogin:md5(testpassword)") = 7fcb20d2c25956e38dbd2c9a6c3f9720
Обратите внимание, даже если параметр пустой, его все равно необходимо добавить в порядке следования, для данного примера формула вычисления secret такова:
123 : пусто : 555 : пусто : testlogin : e16b2ab8d12314bf4efbd6203906ea6c = 7fcb20d2c25956e38dbd2c9a6c3f9720
Таким образом итоговый URL, на который совершается GET-запрос: https://www.alta.ru/svh-gruz/search/api/v1/?n_k=123&n_trans=&n_trans_doc=555&n_dt=&login=testlogin&secret=7fcb20d2c25956e38dbd2c9a6c3f9720
Ответ
При возникновении ошибок возвращается код ответа сервера отличный от 200, а также описание ошибки в JSON-массиве.
Пример ответа:
Код ответа 200:
{ "content": [ { "storeName": "ООО \"Лоджистик\"", "certificate": "№10000/231000/00000/1 от 01.01.2011", "internalNumber": "№0000001 от 11.11.2011", "acceptDate": "2011-01-11 00:00:00", "deadLineDate": "2011-04-12 00:00:00", "regNumber": "10000011/110411/0010001", "documentId": "03333111-1212-4949-8826-225566776677", "containerNumbers": [ "SKLU0000003", "SKLU0000002" ], "transportNumbers": [ "02011 Коносамент №253-900800200400 от 01.01.2011", "02011 Коносамент №200-900800200400 от 01.01.2011", "02011 Коносамент №250-900800200400 от 01.01.2011" ], "totalPackageNumber": 100, "transportIdentifiers": [ "VOSTOCHNY VOYAGER 100X", "VOSTOCHNY VOYAGER 100X", "VOSTOCHNY VOYAGER 100X" ], "certificateLic": "LIC_PERMITION", "weight": null, "dtDataList": [ { "number": "10002000/110311/0030777", "totalPackageNumber": 100, "weight": [ "1000,00 КГ", "1000,00 КГ", "1000,00 КГ" ], "documentName": null, "documentKind": null, "dtRegNumber": null, "messageType": null } ], "warehouseOwner": { "organizationName": "ООО \"Лоджистик\"", "ogrn": "1133536007552", "inn": "2226255577", "kpp": "225501001", "addressLine": "290900, г. Москва, ул. Гагарина, д. 1", "certificateKind": "lic_Permition", "certificateNumber": "10000/231000/00000/1", "certificateDate": "2011-01-01 00:00:00" }, "status": "REGISTERED", "changeStatusDate": null, "participantId": null } ], "totalSize": 1, "pageSize": 1, "pageElements": 1, "responseMessage": "" }
Возможные ошибки
Код ответа 404:
{"error":"Пользователь не авторизован или неверный secret"}
В случае каких то проблем с получением данных внутри сервера
{"error":"Ошибка запроса, обратитесь к администратору сайта"}
Количество запросов к серверу ограничено
{"error":"Исчерпан лимит запросов, нужно подождать...", "wait_sec":23, "info":"Ваш лимит - не более 10 запросов за 1 минуту"}