<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.alta.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ivakin</id>
	<title>Alta-Soft Wikipedia - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alta.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ivakin"/>
	<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Ivakin"/>
	<updated>2026-10-01T02:52:11Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_report.alta.ru&amp;diff=1402</id>
		<title>API для сервиса report.alta.ru</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_report.alta.ru&amp;diff=1402"/>
		<updated>2026-09-24T17:15:05Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* простой клиент на питоне убрал verify */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Сервис мониторинг таможенного оформления (REPORT.ALTA.RU)  ==&lt;br /&gt;
Сервис предоставляет разработчикам возможность получения информации из внешних программ и сайтов в JSON-формате. С помощью данного сервиса можно выгружать следующую информацию:&lt;br /&gt;
&lt;br /&gt;
# Список логинов, к пользователю может быть прикреплено много логинов&lt;br /&gt;
# Декларанты, таможенные посты&lt;br /&gt;
# Получение ДТ, ТД, Пассажирских ТД, Заявлений о выпуске до подачи&lt;br /&gt;
# Получение привязанных документов (если включено дублирование всех сообщений)&lt;br /&gt;
# Получение ЭД сообщений&lt;br /&gt;
&lt;br /&gt;
== Описание параметров ==&lt;br /&gt;
Доступ к API предоставляется по URL https://report.alta.ru/api/&lt;br /&gt;
Входные параметры передаются с помощью запроса HTTPS GET. Для использования сервиса необходимо получить '''apikey''' и '''secret''' в личном кабинете&lt;br /&gt;
&lt;br /&gt;
Пример адреса запроса с параметрами:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://report.alta.ru/api/&amp;lt;/nowiki&amp;gt;'''function'''/параметр0/?параметр1…2...параметрN&amp;amp;'''apikey'''=XXXX&amp;amp;'''hash'''=YYYYY&lt;br /&gt;
&lt;br /&gt;
любой запрос должен содержать '''обязательные''' параметры, они выделены жирным&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot; | Обязательные, должны быть в любом запросе&lt;br /&gt;
|-&lt;br /&gt;
|v1 || 	'''string''' || Версия апи, текущая версия 1 || v1 v2 … v1.1&lt;br /&gt;
|-&lt;br /&gt;
|function || '''string''' || вызываемая функция апи || docs, messages, decl, logins, tam&lt;br /&gt;
|-&lt;br /&gt;
|apikey || '''string''' || Ключ авторизации, получить в личном кабинете || 5b145adecf42b8eecd4e6f3dc7134f45&lt;br /&gt;
|-&lt;br /&gt;
|hash || '''string''' || ХЭШ запроса, рассчитывается для каждого запроса по слову secret || 34563456&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
К необязательным параметрам относится, например, параметр0&lt;br /&gt;
Параметр0 идет сразу после функции, его можно опустить, и не писать, тогда ставим слеш после функции и дописываем обязательные параметры ключ и хэш, пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/api/v1/docs/?apikey=XXX&amp;amp;hash=YYY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Параметр0 указываем для получения конкретного документа, пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/api/v1/docs/xxxxx/?apikey=XXX&amp;amp;hash=YYY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''секрет''' нужен для генерации '''хэша''' (подписи) запроса,&lt;br /&gt;
ХЭШ генерируется так:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hash = md5(версия + функция + параметр0(если есть) + ВСЕ_ПАРАМЕТРЫ + md5(apikey) + md5(secret))&lt;br /&gt;
ВСЕ_ПАРАМЕТРЫ — это конкатенация всех GET параметров в той последовательности, в которой они идут в параметрах запроса слева направо, параметры: апи ключ, хеш  и секрет не участвуют &lt;br /&gt;
пример, запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://report.alta.ru/api/v1/docs&amp;lt;/nowiki&amp;gt;/?x=1&amp;amp;y=2&amp;amp;z=3&amp;amp;apikey=5555&amp;amp;hash=5b145adecf42b8eecd4e6f3dc7134f45&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в данном случае ВСЕ_ПАРАМЕТРЫ это  x y z &lt;br /&gt;
нам известно, что наш аккаунт имеет следующие данные: apikey = 5555, secret = 7777&lt;br /&gt;
тогда вычислим хэш:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hash = md5 ( 1 + docs + (параметр0 не указан, его не берем) + 1 + 2 + 3 + md5(5555) + md5(7777)) =&lt;br /&gt;
md5 (1docs1236074c6aa3488f3c2dddff2a7ca821aabd79c8788088c2193f0244d8f1f36d2db ) =&lt;br /&gt;
получилось, что hash = '''5b145adecf42b8eecd4e6f3dc7134f45'''&lt;br /&gt;
&lt;br /&gt;
== Список всех функций API ==&lt;br /&gt;
Для наглядности опустим тут обязательную часть запроса, оставим только конкретику&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://report.alta.ru/api/v1&amp;lt;/nowiki&amp;gt;/'''FUNC/param0'''/?apikey=XXX&amp;amp;hash=YYY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Получение логинов ===&lt;br /&gt;
&amp;lt;code&amp;gt;/logins/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответом получаем массив с логинами&lt;br /&gt;
&lt;br /&gt;
=== Получение декларантов === &lt;br /&gt;
&amp;lt;code&amp;gt;/decl/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
получаем массив с ИНН и названиями организаций&lt;br /&gt;
&lt;br /&gt;
=== Получение таможенных постов === &lt;br /&gt;
&amp;lt;code&amp;gt;/tam/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получаем массив таможенных постов&lt;br /&gt;
&lt;br /&gt;
=== Получение списка поддерживаемых видов документов ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs/types/&amp;lt;/code&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|title || Краткое наименование документа || ДТ&lt;br /&gt;
|-&lt;br /&gt;
|toolTip || Полное наименование документа || Декларация на товары&lt;br /&gt;
|-&lt;br /&gt;
|maxDatePeriod || Максимальное кол-во месяцев в периоде, за который можно запрашивать документы || 3&lt;br /&gt;
|-&lt;br /&gt;
|filters || Список возможных фильтров для запроса списка документов || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Получение документов ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs/&amp;lt;/code&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
фильтры, передаются как ПАРАМЕТРЫ запроса, пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://report.alta.ru/api/v1/docs&amp;lt;/nowiki&amp;gt;/?'''doctype=gtd&amp;amp;regdate[from]=2019-03-01'''&amp;amp;apikey=xxx&amp;amp;hash=xxx&amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|'''doctype''' || '''string''' || Вид документа (gtd, td1, arg, passd) || doctype=gtd (по умолчанию, можно не указывать)&lt;br /&gt;
|-&lt;br /&gt;
|regdate[from] || '''string''' || дата регистрации от&amp;lt;br/&amp;gt;только дата || regdate[from]=2019-03-01&lt;br /&gt;
|-&lt;br /&gt;
|regdate[to] || '''string''' || дата регистрации до&amp;lt;br/&amp;gt;только дата || regdate[to]=2019-03-01&lt;br /&gt;
|-&lt;br /&gt;
|vypdate[from] || '''string''' || ДатаВремя выпуска от || vypdate[from]=2019-05-08&amp;lt;br/&amp;gt;vypdate[from]=2021-10-10T10:30:00&lt;br /&gt;
|-&lt;br /&gt;
|vypdate[to] || '''string''' || ДатаВремя выпуска до || vypdate[to]=2019-05-08&amp;lt;br/&amp;gt;vypdate[to]=2021-10-20T10:30:00+03:00&lt;br /&gt;
|-&lt;br /&gt;
|lastmsgdate[from] || '''string''' || последнее сообщение ДатаВремя от || lastmsgdate[from]= 2019-05-08&amp;lt;br/&amp;gt;lastmsgdate[from]=2021-10-10T10:30:00&lt;br /&gt;
|-&lt;br /&gt;
|lastmsgdate[to] || '''string''' || последнее сообщение ДатаВремя до || lastmsgdate[to]=2019-03-01&amp;lt;br/&amp;gt;lastmsgdate[to]=2021-10-20T10:30:00+03:00&lt;br /&gt;
|-&lt;br /&gt;
|decl || '''array''' || ИНН декларанта, можно несколько || decl[]=555555&amp;lt;br/&amp;gt;decl[]=666666&lt;br /&gt;
|-&lt;br /&gt;
|tam || '''array''' || Номер таможенного поста, можно несколько || tam[]=555&lt;br /&gt;
|-&lt;br /&gt;
|login || '''array''' || Логин, можно несколько || login[]=xxx&lt;br /&gt;
|-&lt;br /&gt;
|pid || '''array''' || процедуры || pid[]=xxx&amp;amp;pid[]=yyy&amp;amp;pid[]=zzz&amp;amp;..&lt;br /&gt;
|-&lt;br /&gt;
|cmn || '''array''' || Тип ЭД сообщения, можно несколько || cmn[]=CMN.11005&amp;lt;br/&amp;gt;cmn[]=CMN.11252&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В ответ получаем документы&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|docs || '''array''' || массив документов	 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Массив docs ====&lt;br /&gt;
&lt;br /&gt;
Это массив документов, содержит в себе объект doc&lt;br /&gt;
Список столбцов с их описанием и примерами можно получить отдельным запросом апи &amp;lt;code&amp;gt;/docs/fields/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Получение, Печать документа, Просмотр документа ====&lt;br /&gt;
&lt;br /&gt;
Теперь, зная список документов, можно получить определенный документ по его ID, вывод данного запроса по умолчанию идет в html виде&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs/ID/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, где ID = ProccessID_Login, пример: &amp;lt;code&amp;gt;1a2ab345-1a12-1a01-1234-1234a5678bc1_123456&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''также можно передать дополнительные параметры'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|format || '''string''' || Формат ответа (html, xml, pdf) || format=xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Получение полей (заголовки столбцов) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs/fields/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
получение полей, заголовков столбцов с их описанием и примерами&lt;br /&gt;
&lt;br /&gt;
==== Получение списка привязанных ЭД документов ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs44/ID/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, где ID = ProccessID_Login, пример: 1a2ab345-1a12-1a01-1234-1234a5678bc1_123456&lt;br /&gt;
&lt;br /&gt;
'''также можно передать дополнительные параметры - фильтры'''&lt;br /&gt;
&lt;br /&gt;
у каждого документа, есть вложенные документы, у документа может быть очень много записей в этом параметре, &lt;br /&gt;
поэтому также есть фильтр по вложенным документам  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|docCode || '''string''' || Код документа, можно указать часть кода , но только от начала строки || 0234*, 04031&lt;br /&gt;
|-&lt;br /&gt;
|docNum || '''string''' || Номер документа, можно указать любую часть номера без звездочек  VN-RU || VN-RU, 18/04/&lt;br /&gt;
|-&lt;br /&gt;
|docDate[from] || '''string''' || Дата от || 2018-01-01&lt;br /&gt;
|-&lt;br /&gt;
|docDate[to] || '''string''' || Дата до || 2019-05-08&lt;br /&gt;
|-&lt;br /&gt;
|tovNum[] || '''array''' || Номер товара, задается массивом || tovNum[]=1&amp;lt;/br&amp;gt;tovNum[]=40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
в ответ получаем массив с документами&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|docName || '''string''' || имя документа	&lt;br /&gt;
|-&lt;br /&gt;
|docCode || '''string''' || Код документа	&lt;br /&gt;
|-&lt;br /&gt;
|docDate || '''string''' || Дата документа	&lt;br /&gt;
|-&lt;br /&gt;
|tovNum || '''string''' || Товары, их номера	&lt;br /&gt;
|-&lt;br /&gt;
|elDocId || '''string''' || ID документа в архиве таможни	&lt;br /&gt;
|-&lt;br /&gt;
|docNum || '''string''' || Номер документа	&lt;br /&gt;
|-&lt;br /&gt;
|elArchId || '''string''' || ID архива таможни	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Получение привязанного ЭД документа  ====&lt;br /&gt;
&lt;br /&gt;
Запрос похож на предыдущий, добавляем только ID документа в архиве таможни&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/docs44/ID/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, где ID = elDocId_ProccessID_Login, пример: b1b2abcd-1a2b-1a23-a123-a12b345cde1a_1a2ab345-1a12-1a01-1234-1234a5678bc1_123456&lt;br /&gt;
&lt;br /&gt;
=== Получение сообщений ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/messages/ID/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, где ID = ProccessID_Login, пример: 1a2ab345-1a12-1a01-1234-1234a5678bc1_123456&lt;br /&gt;
&lt;br /&gt;
ProccessID и Login обязательны&lt;br /&gt;
&lt;br /&gt;
дополнительные параметры для запроса:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|date[from] || '''string''' || Дата сообщения от || date[from]=2019-03-01&lt;br /&gt;
|-&lt;br /&gt;
|date[to] || '''string''' || Дата сообщения до || date[to]=2019-03-01&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Массив messages ====&lt;br /&gt;
&lt;br /&gt;
в ответ получаем объект messages, это массив с элементами message - объект с данными сообщения&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|messages || array || массив с сообщениями	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
сообщение message, элемент этого массива, структура:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|messagetype|| '''string''' || Тип сообщения || CMN.11001&lt;br /&gt;
|-&lt;br /&gt;
|messagename || '''string''' || Наименование сообщения || Регистрационный номер ДТ&lt;br /&gt;
|-&lt;br /&gt;
|priority || '''string''' || Служебное поле в заголовке сообщения || 4&lt;br /&gt;
|-&lt;br /&gt;
|incoming || '''string''' || 0 - исходящее сообщение, 1 - входящее || 1&lt;br /&gt;
|-&lt;br /&gt;
|login || '''string''' || Логин || 123456-ca&lt;br /&gt;
|-&lt;br /&gt;
|svdlogin || '''string''' || Логин, с которого пришло сообщение || 123456-01&lt;br /&gt;
|-&lt;br /&gt;
|envelopeid || '''string''' || EnvelopeID сообщения || BD9D1189-A58E-482B-A108-ADF7D2459BFD&lt;br /&gt;
|-&lt;br /&gt;
|softversion || '''string''' || Версия альбома и спецификации || 5.14.2/3.3.21&lt;br /&gt;
|-&lt;br /&gt;
|participantid || '''string''' || ID декларанта	&lt;br /&gt;
|-&lt;br /&gt;
|customscode || '''string''' || Код таможни сообщения	 || &lt;br /&gt;
|-&lt;br /&gt;
|initialenvelopeid || '''string''' || EnvelopeID родительского сообщения (на которое ссылается данное сообщение)	 || &lt;br /&gt;
|-&lt;br /&gt;
|preparationdatetime || '''string''' || Дата и время сообщения	 || &lt;br /&gt;
|-&lt;br /&gt;
|exchtype || '''string''' || Служебное поле в заголовке сообщения || 19200&lt;br /&gt;
|-&lt;br /&gt;
|proccessid || '''string''' || ID процедуры сообщения || 1a2ab345-1a12-1a01-1234-1234a5678bc1&lt;br /&gt;
|-&lt;br /&gt;
|mainproccessid || '''string''' || ID основной процедуры (если есть) || 1a2ab345-1a12-1a01-1234-1234a5678bc1&lt;br /&gt;
|-&lt;br /&gt;
|senderinformation || '''string''' || Отправитель сообщения || smtp://eps.customs.ru/gateway&lt;br /&gt;
|-&lt;br /&gt;
|receiverinformation || '''string''' || Получатель сообщения || smtp://eps.customs.ru/102770123456789.as&lt;br /&gt;
|-&lt;br /&gt;
|sign || '''string''' || Электронная подпись || ФЕДЕРАЛЬНАЯ ТАМОЖЕННАЯ СЛУЖБА&lt;br /&gt;
|-&lt;br /&gt;
|canView || '''string''' || 1 – возможен ли просмотр сообщения	 || &lt;br /&gt;
|-&lt;br /&gt;
|type || '''string''' || arch – документ из архива (возможен запрос документа по ArchDocID)	 || &lt;br /&gt;
|-&lt;br /&gt;
|archid || '''string''' || ID архива таможни	 || &lt;br /&gt;
|-&lt;br /&gt;
|archdocid || '''string''' || ID документа в архиве таможни	 || &lt;br /&gt;
|-&lt;br /&gt;
|objects|| '''array''' || массив xml-объектов, содержащихся в данном сообщении (в т.ч. дата из поля DateLimit, если есть указан срок ответа)	 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Получение сообщения ====&lt;br /&gt;
&lt;br /&gt;
Запрос похож на предыдущий, добавляется только EnvelopeID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/messages/ID/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, где ID = EnvelopeID_ProccessID_Login, пример: b1b2abcd-1a2b-1a23-a123-a12b345cde1a_1a2ab345-1a12-1a01-1234-1234a5678bc1_123456&lt;br /&gt;
&lt;br /&gt;
EnvelopeID, ProccessID и Login обязательны&lt;br /&gt;
&lt;br /&gt;
возвращается сообщение по умолчанию в html виде&lt;br /&gt;
&lt;br /&gt;
если сообщение содержит несколько документов, то все они будут склеены в один html &lt;br /&gt;
&lt;br /&gt;
НО разделены комментариями &amp;lt;nowiki&amp;gt;&amp;lt;!-- next doc --&amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
лучше показывать каждый документ отдельно, т.к. иногда бывает, что у документов пересекаются стили и они могут выглядеть некорректно, т.к. при склеивании html склеивается тело и стили. Пример как это выглядит:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- count 2 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- id=172987F4-A741-4A71-9780-AE28A38031E4 --&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html ....&lt;br /&gt;
 html.... тело документа со всеми стилями&lt;br /&gt;
&amp;lt;!-- NEXT DOC --&amp;gt;&lt;br /&gt;
&amp;lt;!-- id=2ACB2210-F7E7-4AB0-A2BD-10533FE4FBE4 --&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html ....&lt;br /&gt;
 html.... тут следующее тело со стилями&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
надо ориентироваться, если в начале документа есть параметр count 2, то значит в сообщении 2 документа&lt;br /&gt;
&lt;br /&gt;
'''также можно передать дополнительные параметры'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр || '''Тип''' || Описание || Пример&lt;br /&gt;
|-&lt;br /&gt;
|format || '''string''' || Формат ответа (html, xml, pdf) || format=xml&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Типы данных ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|'''string''' || строковый параметр	&lt;br /&gt;
|-&lt;br /&gt;
|'''array''' || массив значений, нумерация элементов начинается с 0, вложенные элементы могут быть всех типов	&lt;br /&gt;
|-&lt;br /&gt;
|'''object''' || объект значений или именованный массив. ключи - могут быть как числовые так и текстовые, вложенные элементы могут быть всех типов	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ошибки ==&lt;br /&gt;
&lt;br /&gt;
При возникновении ошибки в корневом элементе появляется блок с кодом и описанием ошибки.&lt;br /&gt;
При работе с сервисом возможны следующие ошибки:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Код || Описание&lt;br /&gt;
|-&lt;br /&gt;
|'''100''' || Нет обязательных параметров	&lt;br /&gt;
|-&lt;br /&gt;
|'''200''' || АПИ ключ не найден или не действительный&lt;br /&gt;
|-&lt;br /&gt;
|'''201''' || Неверный хэш&lt;br /&gt;
|-&lt;br /&gt;
|'''202''' || Ошибка авторизации, обратитесь к администратору	&lt;br /&gt;
|-&lt;br /&gt;
|'''204''' || Нет права выполнять эту операцию(запрос)&lt;br /&gt;
|-&lt;br /&gt;
|'''203''' || Слишком много запросов. Запрос отклонен &lt;br /&gt;
|-&lt;br /&gt;
|'''210''' || Необходимо принять оферту на сайте&lt;br /&gt;
|-&lt;br /&gt;
|'''300''' || Метод API не 	найден, возможно неверная версия АПИ&lt;br /&gt;
|-&lt;br /&gt;
|'''301''' || В запросе(методе) отсутствует  необходимый параметр&lt;br /&gt;
|-&lt;br /&gt;
|  || Строка запроса содержит синтаксическую ошибку&lt;br /&gt;
|-&lt;br /&gt;
|'''500''' || Обработка запроса потерпела неудачу из-за неизвестной ошибки, исключения&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
пример ошибок&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang='json'&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: 200,&lt;br /&gt;
    &amp;quot;text&amp;quot;: &amp;quot;BAD api key, USER not found&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: 201,&lt;br /&gt;
    &amp;quot;text&amp;quot;: &amp;quot;ERROR HASH&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: 203,&lt;br /&gt;
    &amp;quot;q&amp;quot;: &amp;quot;v1/decl/&amp;quot;,&lt;br /&gt;
    &amp;quot;request_wait&amp;quot;: 3.05,&lt;br /&gt;
    &amp;quot;text&amp;quot;: &amp;quot;Sory, You have Limit requests to API:  5 requests per 10 seconds. Please wait 3.05 sec for next request&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примеры реализации простого клиента ==&lt;br /&gt;
&lt;br /&gt;
=== простой клиент на питоне ===&lt;br /&gt;
&lt;br /&gt;
на питоне 2.7, надо установить библиотеку  pip install requests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Python&amp;quot;&amp;gt;&lt;br /&gt;
apikey = &amp;quot;api_key&amp;quot;  # ваш ключ апи&lt;br /&gt;
secret = &amp;quot;secret&amp;quot;  # ваш секрет апи&lt;br /&gt;
v = 1  # версия&lt;br /&gt;
func = &amp;quot;docs&amp;quot;       # вызываемая функция&lt;br /&gt;
param = &amp;quot;&amp;quot;    # параметр используется для получения конкретного документа, например  /docs/ID/    /docs/100000000/&lt;br /&gt;
# доп параметры запроса&lt;br /&gt;
params = {&lt;br /&gt;
    'd': '123',&lt;br /&gt;
    'param1': 'xxxxx',&lt;br /&gt;
    'param2': 'yyyyyy'&lt;br /&gt;
}&lt;br /&gt;
# урл для запроса&lt;br /&gt;
api_url = &amp;quot;https://report.alta.ru/api/v%d/%s/&amp;quot; % (v, func) + (param + &amp;quot;/&amp;quot; if param else &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    # рассчитываем хэш секрет для запроса&lt;br /&gt;
    # идем по всем параметрам по порядку&lt;br /&gt;
    str = &amp;quot;&amp;quot;&lt;br /&gt;
    for p in params:&lt;br /&gt;
        str += params[p]&lt;br /&gt;
        print p, params[p]&lt;br /&gt;
    # и в конце прибавляем ключ&lt;br /&gt;
    str = &amp;quot;%d%s%s%s%s&amp;quot; % (v, func + (param if param else &amp;quot;&amp;quot;), str, hashlib.md5(apikey).hexdigest(), hashlib.md5(secret).hexdigest())&lt;br /&gt;
    # считаем хэш&lt;br /&gt;
    hash = hashlib.md5(str).hexdigest()&lt;br /&gt;
    # добавляем эти параметры в запрос&lt;br /&gt;
    params['hash'] = hash  # + &amp;quot;1111&amp;quot;&lt;br /&gt;
    params['apikey'] = apikey&lt;br /&gt;
    print str, hash, api_url&lt;br /&gt;
    # делаем запрос&lt;br /&gt;
    r = requests.get(api_url, params)&lt;br /&gt;
    # выдаем ответ&lt;br /&gt;
    if r.status_code != 200:&lt;br /&gt;
        print r.status_code, &amp;quot;Похоже возникли ошибки: \n&amp;quot;, r.text, r.json()&lt;br /&gt;
    else:&lt;br /&gt;
        print &amp;quot;ОТВЕТ&amp;quot;, r.text, r.json()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Автоматизация]]&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1369</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1369"/>
		<updated>2024-11-13T09:14:44Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров и авианакладных находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера или авианакладной&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|str&lt;br /&gt;
|Тип слежения: К - контейнер, А - авианакладная&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null,&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Webhook ===&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
'''Работа запросов webhook'''&lt;br /&gt;
&lt;br /&gt;
Как только url ответил с кодом 200, уведомление считается '''доставленным''', но если код ответа отличный от 200, то происходит еще 5 попыток достучаться до указанного url с интервал между попытками примерно 1-2 минуты.&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1368</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1368"/>
		<updated>2024-11-13T09:12:59Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* Webhook */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров и авианакладных находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера или авианакладной&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|str&lt;br /&gt;
|Тип слежения: К - контейнер, А - авианакладная&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null,&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Webhook ===&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
'''Работа запросов webhook'''&lt;br /&gt;
&lt;br /&gt;
Как только url ответил с кодом 200, уведомление считается '''доставленным''', но если код ответа отличный от 200, то происходит еще 5 попыток достучаться до указанного url с интервал между попытками примерно 1-2 минуты.&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1367</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1367"/>
		<updated>2024-11-13T09:07:42Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров и авианакладных находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера или авианакладной&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|str&lt;br /&gt;
|Тип слежения: К - контейнер, А - авианакладная&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null,&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Webhook ===&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1365</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1365"/>
		<updated>2024-11-06T15:08:14Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* Ответ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров и авианакладных находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера или авианакладной&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|str&lt;br /&gt;
|Тип слежения: К - контейнер, А - авианакладная&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null,&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
      ...&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Webhook&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1364</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1364"/>
		<updated>2024-11-06T14:56:17Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров и авианакладных находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, - статус слежения  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0, - сколько записей ДО1 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0, - сколько сообщений 13014 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null, - максимальная дата полученная из сообщений&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
     ………..&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Webhook&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1363</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1363"/>
		<updated>2024-11-06T14:55:47Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* О сервисе Слежение */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры и авианакладные на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, - статус слежения  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0, - сколько записей ДО1 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0, - сколько сообщений 13014 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null, - максимальная дата полученная из сообщений&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
     ………..&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Webhook&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1362</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1362"/>
		<updated>2024-11-06T12:56:39Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* Ответ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, - статус слежения  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0, - сколько записей ДО1 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0, - сколько сообщений 13014 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null, - максимальная дата полученная из сообщений&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
     ………..&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
аналогичен методу set&lt;br /&gt;
&lt;br /&gt;
POST данные: data=TEST0000001,TEST0000002&lt;br /&gt;
&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Webhook&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1361</id>
		<title>API Слежение (для Груз на СВХ)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alta.ru/index.php?title=API_%D0%A1%D0%BB%D0%B5%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B4%D0%BB%D1%8F_%D0%93%D1%80%D1%83%D0%B7_%D0%BD%D0%B0_%D0%A1%D0%92%D0%A5)&amp;diff=1361"/>
		<updated>2024-11-06T11:41:58Z</updated>

		<summary type="html">&lt;p&gt;Ivakin: /* Формирование URL запроса */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== О сервисе Слежение ==&lt;br /&gt;
Сервис &amp;quot;Слежение&amp;quot; для &amp;quot;Груз на СВХ&amp;quot; &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt; позволяет ставить контейнеры на слежение с получением результатов размещения на складе и таможенного оформления грузов в контейнере через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
Отправляет уведомления на почту и URL-адрес по webhook о появлении новой информации по указанным контейнерам. Ставить и снимать контейнеры со слежения можно как через личный кабинет так и по API. Почта, URL-адрес для уведомлений и события для уведомления настраиваются только через личный кабинет.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
Доступ к API предоставляется по URL &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;. Для использования сервиса необходима авторизация с помощью логина и пароля.&lt;br /&gt;
&lt;br /&gt;
Логин и пароль для обращения по API необходимо получить в личном кабинете &amp;lt;nowiki&amp;gt;https://www.alta.ru/user/&amp;lt;/nowiki&amp;gt;, заключив договор на использование онлайн-сервисов. В настройках договора будут указаны технический логин и пароль.  &lt;br /&gt;
&lt;br /&gt;
Тарификация производится так же как при постановке на слежение через личный кабинет. &lt;br /&gt;
&lt;br /&gt;
API позволяет ставить, снимать со слежения и просматривать списки контейнеров находящихся на слежении. Уведомления об обнаружении новой информации приходят на указанные почтовые ящики в кабинете слежения &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Формирование URL запроса ===&lt;br /&gt;
Запросы направляются на URL  &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/&amp;lt;/nowiki&amp;gt;&amp;lt;МЕТОД&amp;gt;/&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|Метод&lt;br /&gt;
|Тип запроса&lt;br /&gt;
|Описание&lt;br /&gt;
|-&lt;br /&gt;
|help&lt;br /&gt;
|GET &lt;br /&gt;
|Вызывает справку - выдает доступные методы API и списки передаваемых параметров&lt;br /&gt;
|-&lt;br /&gt;
|test&lt;br /&gt;
|GET &lt;br /&gt;
|Проверка работы API и правильности формирования запроса - выдает результат проверки правильности секрета, правильную строку для расчета секрета и логин (если отправлен верный секрет)&lt;br /&gt;
|-&lt;br /&gt;
|info &lt;br /&gt;
|GET &lt;br /&gt;
|Информация об аккаунте и настройках слежения&lt;br /&gt;
|-&lt;br /&gt;
|set &lt;br /&gt;
|POST &lt;br /&gt;
|Постановка контейнеров на слежение, POST-параметр data=&amp;lt;номера контейнеров / авианакладных через запятую “,”&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|del &lt;br /&gt;
|POST &lt;br /&gt;
|Снятие контейнеров со слежения, POST-параметр ids=&amp;lt;id  контейнеров / авианакладных через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров / авианакладных  через запятую “,”&amp;gt; (id контейнера приходит при постановке на слежение)&lt;br /&gt;
|-&lt;br /&gt;
|list &lt;br /&gt;
|GET &lt;br /&gt;
|Просмотр статуса всех отслеживаемых контейнеров. Через этот метод можно узнать id контейнеров находящихся на слежении. Можно указать нужные контейнеры: ids=&amp;lt;id контейнеров через запятую “,”&amp;gt; или data=&amp;lt;имена контейнеров через запятую “,”&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
обязательные GET параметры в URL&lt;br /&gt;
&lt;br /&gt;
# логин ― логин сервис аккаунта в открытом виде&lt;br /&gt;
# секрет ― MD5-хеш от сгенерированной строки (все параметры разделены знаком “:” (двоеточие)):  параметры_GET + параметры_POST  + метод + логин + md5(пароль)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Формирование секрета&lt;br /&gt;
&lt;br /&gt;
secret = md5(&amp;quot;{параметры_GET}:{параметры_POST}:{метод}:{логин}:{md5(пароль)}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
параметры_GET ―  это значения прочих get параметров помимо логина, секрета и метода, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
параметры_POST ― это значения post параметров для методов set  и del, разделенные “:”&lt;br /&gt;
&lt;br /&gt;
Пример расчёта секрета для метода del, логина testlogin и пароля testpassword: &lt;br /&gt;
&lt;br /&gt;
Если дополнительный GET параметр  foo = bar , то для расчета секрета надо использовать параметры_GET = “bar” &lt;br /&gt;
&lt;br /&gt;
Для метода del надо указывать id номера контейнеров в POST параметре ids через запятую. Если ids=11,55,33 , то для расчета секрета параметры_POST = “11,55,33”&lt;br /&gt;
&lt;br /&gt;
Итоговая строка секрета = md5(&amp;quot;bar:11,55,33:del:testlogin:md5(testpassword)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример запроса списка контейнеров:&lt;br /&gt;
&lt;br /&gt;
Метод list, пользователь с логином testlogin и пароль testpassword&lt;br /&gt;
&lt;br /&gt;
Прочие параметры_GET - отсутствуют, параметры_POST отсутствуют, так как это GET метод&lt;br /&gt;
&lt;br /&gt;
Вычисляем секрет: secret = md5(&amp;quot;пусто:пусто:list:testlogin:md5(testpassword)&amp;quot;) = md5(&amp;quot;::list:testlogin:md5(testpassword)&amp;quot;) = 18a3a18768475d5fbaf244f291212e86&lt;br /&gt;
&lt;br /&gt;
Таким образом, итоговый URL, на который совершается GET-запрос: &amp;lt;nowiki&amp;gt;https://www.alta.ru/svh-gruz/tracking/api/v1/list/?login=testlogin&amp;amp;secret=18a3a18768475d5fbaf244f291212e86&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Ответ ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;List&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Корневой элемент, содержит массив записей слежения *&lt;br /&gt;
|-&lt;br /&gt;
|id&lt;br /&gt;
|int&lt;br /&gt;
|Идентификатор записи слежения&lt;br /&gt;
|-&lt;br /&gt;
|created&lt;br /&gt;
|str&lt;br /&gt;
|Дата постановки на слежение &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|updated&lt;br /&gt;
|str&lt;br /&gt;
|Дата последнего обновления информации сервисом&lt;br /&gt;
|-&lt;br /&gt;
|num&lt;br /&gt;
|str&lt;br /&gt;
|Номер контейнера&lt;br /&gt;
|-&lt;br /&gt;
|status&lt;br /&gt;
|str&lt;br /&gt;
|Статус слежения &amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|do1&lt;br /&gt;
|int&lt;br /&gt;
|Количество записей ДО1 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|cmn13014&lt;br /&gt;
|int&lt;br /&gt;
|Количество сообщений 13014 по контейнеру&lt;br /&gt;
|-&lt;br /&gt;
|infoDateMax&lt;br /&gt;
|str&lt;br /&gt;
|Дата последних полученных данных по контейнеру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; максимальный размер возвращаемых данных 9900 записей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Статусы слежения:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|new&lt;br /&gt;
|Новый, запись только что добавлена&lt;br /&gt;
|-&lt;br /&gt;
|process&lt;br /&gt;
|В процессе обработки, проходят проверки&lt;br /&gt;
|-&lt;br /&gt;
|old&lt;br /&gt;
|В процессе обработки, имеется старая информация, старше чем указано в настройках ЛК в параметре Уведомлять о старой информации &amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|busy&lt;br /&gt;
|Занят, происходит запись информации&lt;br /&gt;
|-&lt;br /&gt;
|arh&lt;br /&gt;
|Контейнер перенесен в архив (удален), автоматически помещается в архив если статус old более 90 дней&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Уведомлять о старой информации ― Параметр включает уведомления по событиям слежения с даты ранее даты постановки на слежение created &amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например, если в параметре установлено 3 дня, то при постановке контейнера на слежение он уведомит Вас об информации, которая появилась не старше чем 3 дня назад.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Код ответа 200:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;data&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;id&amp;quot;: 12,  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;created&amp;quot;: &amp;quot;2023-01-19 12:03:45&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;updated&amp;quot;: &amp;quot;2023-04-11 18:11:06&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;num&amp;quot;: &amp;quot;XXXX1018593&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;status&amp;quot;: &amp;quot;process&amp;quot;, - статус слежения  &lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;do1&amp;quot;: 0, - сколько записей ДО1 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;cmn13014&amp;quot;: 0, - сколько сообщений 13014 по контейнеру&lt;br /&gt;
&lt;br /&gt;
 	&amp;quot;infoDateMax&amp;quot;: null, - максимальная дата полученная из сообщений&lt;br /&gt;
&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
     ………..&lt;br /&gt;
&lt;br /&gt;
   ]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Set&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|add&lt;br /&gt;
|[]&lt;br /&gt;
|Массив успешно добавленных контейнеров&lt;br /&gt;
|-&lt;br /&gt;
|no&lt;br /&gt;
|[]&lt;br /&gt;
|Массив контейнеров, которые не добавлены. Каждый элемент содержит массив, состоящий из номера контейнера и статуса&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;add&amp;quot;: [&amp;quot;TEST0000001&amp;quot;], &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;no&amp;quot;: [&lt;br /&gt;
&lt;br /&gt;
     [    &amp;quot;TEST0000002&amp;quot;,  &amp;quot;Новый&amp;quot;   ]&lt;br /&gt;
&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Del&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bool&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Метод&amp;lt;/big&amp;gt; '''&amp;lt;big&amp;gt;Info&amp;lt;/big&amp;gt;'''&lt;br /&gt;
Описание полей возвращаемых данных&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|success&lt;br /&gt;
|bol&lt;br /&gt;
|true ― успешный запрос&lt;br /&gt;
|-&lt;br /&gt;
|data&lt;br /&gt;
|[]&lt;br /&gt;
|Массив, содержащий настройки аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyEmail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления на email&lt;br /&gt;
|-&lt;br /&gt;
|notifyOneMail&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― отдельное письмо для каждого результата. Если в течении минуты пришло несколько контейнеров, то при значении &amp;quot;0&amp;quot; они будут объединены в одно письмо&lt;br /&gt;
|-&lt;br /&gt;
|notifyTG&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления в телеграмм&lt;br /&gt;
|-&lt;br /&gt;
|notifyWebhook&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― включены уведомления webhook&lt;br /&gt;
|-&lt;br /&gt;
|webhook&lt;br /&gt;
|str&lt;br /&gt;
|URL-адрес webhook&lt;br /&gt;
|-&lt;br /&gt;
|tgId&lt;br /&gt;
|int&lt;br /&gt;
|ID привязанного телеграмм аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|sa_balance&lt;br /&gt;
|float&lt;br /&gt;
|Баланс сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|service_price&lt;br /&gt;
|float&lt;br /&gt;
|Цена за уведомление&lt;br /&gt;
|-&lt;br /&gt;
|freezing&lt;br /&gt;
|float&lt;br /&gt;
|Заморожено средств&lt;br /&gt;
|-&lt;br /&gt;
|addArh&lt;br /&gt;
|bool&lt;br /&gt;
|Разрешено добавлять архивные&lt;br /&gt;
|-&lt;br /&gt;
|sa_login&lt;br /&gt;
|str&lt;br /&gt;
|Логин выбранного сервис аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notifyAddDoc&lt;br /&gt;
|bool&lt;br /&gt;
|1 ― добавляет номер документа-основания (ДО1 или CMN.13014) в текст уведомления&lt;br /&gt;
|-&lt;br /&gt;
|notifyOldDay&lt;br /&gt;
|int&lt;br /&gt;
|Кол-во дней. При постановке задачи на слежение учитывается полученная ранее информация. Если параметр = 3 дня, то будет уведомление об информации не старше 3 дней. Влияет только на начало слежения&lt;br /&gt;
|-&lt;br /&gt;
|notifyLoginEmail&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомление на email аккаунта&lt;br /&gt;
|-&lt;br /&gt;
|notify13014&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о получении сообщений 13014&lt;br /&gt;
|-&lt;br /&gt;
|notifyDO1&lt;br /&gt;
|bool&lt;br /&gt;
|Уведомлять о появлении новых ДО1&lt;br /&gt;
|-&lt;br /&gt;
|login&lt;br /&gt;
|str&lt;br /&gt;
|Ваш логин&lt;br /&gt;
|-&lt;br /&gt;
|emails&lt;br /&gt;
|[]&lt;br /&gt;
|Массив Ваших дополнительных email адресов для уведомлений. Содержит массив значений  ―  email адрес (ключевое поле) и состояние - включен (true) или нет (false)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Пример ответа:&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;quot;data&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;service_price&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyAddDoc&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyTG&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;freezing&amp;quot;: 147, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyWebhook&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;webhook&amp;quot;: null, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;addArh&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_login&amp;quot;: &amp;quot;сервис аккаунт&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyDO1&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;tgId&amp;quot;: 11122233344, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;sa_balance&amp;quot;: 500, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOldDay&amp;quot;: 3, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyLoginEmail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notify13014&amp;quot;: 1, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;notifyOneMail&amp;quot;: 0, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;login&amp;quot;: &amp;quot;ваш логин&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
  &amp;quot;emails&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
   &amp;quot;первый@&amp;quot;: false, &lt;br /&gt;
&lt;br /&gt;
   &amp;quot;второй@&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
   }, &lt;br /&gt;
&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
&amp;quot;success&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Webhook&amp;lt;/big&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
По Webhook на указанный в личном кабинете URL-адрес приходят POST данные в таком формате:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|test&lt;br /&gt;
|int&lt;br /&gt;
|1 ― указывает что запрос  тестовый, отсутствие параметра ― боевой&lt;br /&gt;
|-&lt;br /&gt;
|change&lt;br /&gt;
|[] json&lt;br /&gt;
|Массив изменений в json  формате&lt;br /&gt;
|-&lt;br /&gt;
|Номер контейнера : тип  уведомления &lt;br /&gt;
|&lt;br /&gt;
|Тип уведомления:  do1 ―  появилась ДО1;  13014 ― появилось сообщение CMN.13014&lt;br /&gt;
|}&lt;br /&gt;
пример POST запроса:&lt;br /&gt;
&lt;br /&gt;
test=1&amp;amp;change={&amp;quot;TEST0000001&amp;quot;:&amp;quot;do1&amp;quot;,&amp;quot;TEST0000002&amp;quot;:&amp;quot;13014&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
=== Возможные ошибки ===&lt;br /&gt;
При возникновении ошибок возвращается код ответа сервера отличный от '''200''', а также описание ошибки в JSON-массиве.&lt;br /&gt;
&lt;br /&gt;
код ответа '''400''':&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;success&amp;quot;:false,&amp;quot;info&amp;quot;:&amp;quot;Нет авторизации&amp;quot;,&amp;quot;code&amp;quot;:101}&lt;/div&gt;</summary>
		<author><name>Ivakin</name></author>
		
	</entry>
</feed>