3.2.4.2. Метод GetMessageList
 
Метод GetMessageList должен использоваться периодически для получения с сервера системы Такском-Доклайнз списка входящих или исходящих транзакций для всех получаемых и отправляемых электронных документов. Этот список содержит коды транзакций и уникальные идентификаторы документооборотов (docflow ID). Эти атрибуты позволяют определить транзакции, которые требуется выполнить на следующем шаге для соблюдения регламентов ЭДО.
Метод GetMessageList использует параметр даты и времени (отметку времени timestamp) для сокращения объёма возвращаемых результатов. Обычно в качестве этого параметра используется дата и время последнего выполненного вызова метода GetMessageList. Такой подход позволяет получать  для обработки только новые данные.
Метод GetMessageList позволяет получить не более  500 записей при одном вызове. Атрибут IsLast в ответе метода указывает, что все имеющиеся на сервере Такском-Доклайнз данные по запросу получены полностью.
Рекомендуется применять следующий алгоритм получения списка последних транзакций:
1.
Вызвать метод GetMessageList с отметкой времени предыдущего вызова для получения списка последних транзакций.
Если в составе хотя бы одной транзакции присутствует параметр AdditionalParameter с Name="GroupID, то вызвать метод GetGroupList (см. п. 3.2.11) с той же меткой времени, что и в GetMessageList для получения полного состава групп (пакетов документов).
2.
Сохранить время вызова метода для использования при следующем вызове в качестве атрибута LastRecordDateTime.
3.
Проверить значение атрибута IsLast.
4.
Если IsLast=true, - перейти к пункту 8.
5.
Если IsLast=false, вызвать метод GetMessageList с использованием сохранённого значения атрибута LastRecordDateTime в качестве параметра Date.
6.
Добавить записи из ответа в список последних транзакций.
7.
Перейти к пункту 2.
8.
Продолжить обработку транзакций из полного списка последних транзакций, полученного с использованием метода GetMessageList.
 
Метод GetMessageList возвращает список входящих (по умолчанию) или исходящих (если параметр direction имеет значение "outgoing") электронных документов и служебных сообщений. Интеграционное решение должно самостоятельно вести полные списки транзакций (служебных сообщений и электронных документов) для входящих и исходящих электронных документов, чтобы можно было убедиться, что все входящие служебные сообщения получены, а исходящие - отправлены.
Например, список исходящих транзакций ЭДО счетов-фактур содержит: Invoice, PostDateConfirmation, PostDateConfirmationReceiveNotice, ReceiveNotice, CorrectionNotice, CorrectionNoticeReceiveNotice. Метод GetMessageList возвращает транзакции (служебные сообщения и документы), если соответствующие им сообщения отправлены Оператором ЭДО или контрагентом: PostDateConfirmation, ReceiveNotice, CorrectionNotice.
Если параметр withTracing метода GetMessageList имеет значение "true", в ответ, кроме прочих, включаются транзакции (сообщения) с типами TracingAccepted, TracingRejected, TracingCancellationAccepted, TracingCancellationRejected, TracingAcceptedMod, TracingRejectedMod.
Если параметр withTracing метода GetMessageList имеет значение "false", транзакции с типами TracingAccepted, TracingRejected, TracingCancellationAccepted, TracingCancellationRejected, TracingAcceptedMod, TracingRejectedMod в ответ не войдут.
 
ВНИМАНИЕ!
Для обеспечения стабильности работы сервера системы Такском-Доклайнз метод GetMessageList должен вызываться не чаще, чем один раз в минуту.
 
HTTP-запрос
HTTP-method: GET
Адрес запроса (URI)
https://<server>.taxcom.ru/v<version>/API/GetMessageList?date={DATE}&direction={direction}&withTracing={withTracing}
Параметры адреса запроса
DATE
Обязательный параметр,  указывающий момент времени, начиная с которого следует собрать и представить сведения об изменениях.
В качестве этого параметра указывается момент предыдущего вызова метода.
Формат параметра DATE: yyyy-MM-ddTHH:mm:ss.ms
direction
Необязательный параметр, принимающий значение "ingoing" или "outgoing".
По умолчанию (если параметр не задан) будет использоваться значение "ingoing" (входящие сообщения).
withTracing
Необязательный параметр, принимающий значение "true" или "false".
По умолчанию (если параметр не задан) будет использоваться значение "false".
withGroupInfo 
Необязательный параметр, принимающий значение "true" или "false".
При значении true в xml ответа в блок AdditionalData будет записан признак принадлежности к пакету следующего вида:
AdditionalParameter с Name="GroupID" Value "[GuidGroup]", где [GuidGroup] - GUID группы, в которую входит транзакция.
Заголовок запроса
Integrator-Id
Идентификатор интеграционного решения. Формат этого идентификатора:
COMPANY_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
Assistant-Key
Маркер временного доступа (Authorization token)
 
 
Например, вызов метода GetMessageList для получения всех входящих записей после 1 января 2013 г. выглядит так:
https://api-invoice.taxcom.ru/v1.3/API/GetMessageList?DATE=2013-01-01T00:00:00:00
 
HTTP- ответ
XML файл со списком транзакций:
ContainerDescription:
Тег
Тип
Описание
Обязательность заполнения
RequestDateTime
Текст, 32 символа
Дата и время запроса
Да
IsLast
Логическое (булево) значение (true/false)
Индикатор полноты полученных данных
Да
LastRecordDateTime
Дата и время
Дата и время последнего обновления списка
Да
DocFlow*
Complex type
Список транзакций (электронный документ и служебные сообщения)
Нет
 
*DocFlow:
Тег
Тип
Описание
Обязательность заполнения
Id
Текст, 32 символа
Уникальный идентификатор документа в системе Такском-Доклайнз
Да
Documents
Complex Type
Содержит один или более тегов  Document** с данными о конкретных транзакциях (документах или служебных сообщениях)
Нет
GroupID
Guid
Уникальный идентификатор группы, в которую входит транзакция
Нет
 
**Document:
Атрибут
Тип
Описание
Обязательность заполнения
ReglamentCode
Текст
Код регламента ЭДО
Да
TransactionCode
Текст
Код транзакции
Да
Definition
Complex Type
Содержит  Identifiers*** - данные о конкретном документе или служебном сообщении.
Содержит AdditionalData**** - сведения о дополнительных данные.
Нет
 
***Identifiers:
Атрибут
Тип
Описание
Обязательность заполнения
InternalId
Текст, 32 символа
Уникальный внутренний идентификатор документа или служебного сообщения в системе Такском-Доклайнз
Да
ExternalIdentifier
Текст, 32 символа
Идентификатор, определённый клиентским программным обеспечением.
Нет
 
**** AdditionalData:
Атрибут
Тип
Описание
Обязательность заполнения
AdditionalParameter
Complex Type
Содержит один или более тегов с дополнительными параметрами
Да
Name
Текст
Название параметра.
Значение "MinTransId" забронировано в качестве значения атрибута Name для ID документа, присвоенного документу в системе Минтранса ГИС ЭПД или оператором ИС ЭПД.
 
Да
Value
Текст
Значение параметра.
Если в запросе параметр withGroupInfo  имеет значение "true", то в качестве значения атрибута Value записывается GUID группы, в которую входит транзакция.
Да
XSD схема  XML файла ответа метода GetMessageList такая же, как для файла meta.xml контейнера Такском. XSD-схему (meta.xsd) можно скачать по ссылке:
 
Пример ответа метода GetMessageList
 
Пример кода C#
public void GetMessageListFromdate(string date, string direction)
{
  try
   {
      // Call GetMessageList method to get the list of updated transactions
       var request = (HttpWebRequest)WebRequest.Create(Settings.Default.API_srv + "API/GetMessageList" + "?date=" + date + "&direction=" + direction);
       request.Headers.Add("Integrator-Id""xxxxxxxxxxxxxx");
       request.Headers.Add("Assistant-Key""token");
       request.Method = "GET";
       request.ContentType = "application/x-www-form-urlencoded";
 
       var response = (HttpWebResponse)request.GetResponse();
       Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
 
      // Read XML after GetMessageList method call
      using (var responseStream = response.GetResponseStream())
      using (var ms = new MemoryStream())
      using (var reader = new StreamReader(ms))
           {
               responseStream.CopyTo(ms);
               ms.Position = 0;
               var result = reader.ReadToEnd();
           }
   }
  catch (WebException exception)
   {
       Assert.Fail("There is an error while getting the results of GetMessageList");
   }
}