Получение документов
Получить документ в ящике отправителя или в ящике получателя можно двумя способами:
через ленту событий: в этом случае вы можете получить документы, связанные с появлением нового события в ящике;
через поиск: в этом случае вы можете найти любые документы в своем ящике, указав параметры поиска.
Из полученного документа можно получить информацию о нем и его содержимое. Чтобы работать с данными содержимого формализованного документа, его можно распарсить: инструкция приведена на странице Парсинг формализованного документа.
Получение документов через ленту событий
При появлении нового документа в ящике отправителя или получателя формируются определенные события. Считывая ленту событий методами GetNewEvents (V7), GetNewEvents (V8), GetDocflowEvents (V3) и GetDocflowEvents (V4), можно получить эти документы.
Среди всех полученных документов можно найти документы определенного формата: сделать это можно по указанной версии в поле Version
. Например, для документов формата приказа №970 версия будет начинаться с utd970
: utd970_05_03_01
.
Информация о возможных форматах и версиях документов приведена на странице Форматы документов.
Из ленты событий можно узнать идентификаторы документа MessageId
и DocumentId
и запросить дополнительную информацию по документу с помощью методов
Метод GetMessage
не возвращает содержимое документа, а только информацию о нем. Чтобы получить содержимое, используйте метод GetEntityContent (V4).
Получение документов через поиск
Чтобы получить документы через поиск, нужно:
Получить информацию о каждом найденном документе из списка методом GetMessage (V5) или GetMessage (V6).
Получение списка документов
Метод GetDocuments (V3) позволяет получить список документов, удовлетворяющих заданным фильтрам: типу, классу, статусу, контрагенту, подразделению, времени или дате отправки или получения. Например, с его помощью можно запросить список всех входящих счетов-фактур от указанного контрагента за определенный период. В запросе метода укажите параметры:
boxId
— идентификатор ящика, в котором нужно найти входящие документы,
filterCategory
— статус и тип документа.
HTTP-запрос на поиск входящих незавершенных счетов-фактур будет выглядеть следующим образом:
Пример HTTP-запроса метода GetDocuments:
GET /V3/GetDocuments?filterCategory=Invoice.InboundNotFinished&boxId={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Content-Type: application/json charset=utf-8
В теле ответа вернется список документов в виде структуры DocumentList с вложенными элементами Document.
Пример тела ответа метода GetDocuments:
{
"TotalCount": 1,
"Documents": [
{
"IndexKey": "2B7732DB5692A849A133FDA593FDA38A9279A2CBA18EDF49B3D5CAE8D97C89B0ED4D67F0183510448F64919BE6B8F35B0000000000000000000000000000000000104608D2D2D8BA8731D80DDBCEBB34CE0D4EB3213F600C920935072CCF309772484DBC6FCA7A80E2CF95",
"MessageId": "bbcedb0d-ce34-4e0d-b321-3f600c920935",
"EntityId": "30cf2c07-7297-4d48-bc6f-ca7a80e2cf95",
"CreationTimestampTicks": 635802325536912186,
"CounteragentBoxId": "95f642cd1256426fb11c883c73d8440a@diadoc.ru",
"DocumentType": "Invoice",
"InitialDocumentIds": [],
"SubordinateDocumentIds": [],
"Content": "lores ipsum",
"FileName": "ON_SCHFDOPPR_2BM-7770357771-2012082810454029703720000000000_2BM-7750370234-4012052808304878702630000000000_20150826_d37c6a05-e85c-4469-8c68-2d0303f61c2a.xml",
"DocumentDate": "26.08.2015",
"DocumentNumber": "432634",
"InvoiceMetadata": {
"InvoiceStatus": "InboundNotFinished",
"Total": "17700.00",
"Vat": "2700.00",
"Currency": 643,
"ConfirmationDateTimeTicks": 635802433696852440,
"InvoiceAmendmentFlags": 0
},
"IsDeleted": false,
"DepartmentId": "00000000-0000-0000-0000-000000000000",
"IsTest": true,
"FromDepartmentId": "00000000-0000-0000-0000-000000000000",
"ToDepartmentId": "",
"CustomDocumentId": "",
"RevocationStatus": "RevocationStatusNone",
"SendTimestampTicks": 635802325536912186,
"DeliveryTimestampTicks": 635802325696852440,
"ForwardDocumentEvents": [],
"RoamingNotificationStatus": "RoamingNotificationStatusNone",
"HasCustomPrintForm": false,
"CustomData": [],
"DocumentDirection": "Inbound",
"LastModificationTimestampTicks": 635802325696852440,
"IsEncryptedContent": false,
"SenderSignatureStatus": "SenderSignatureCheckedAndValid"
}
]
}
Получение информации о найденных документах
Информацию о каждом найденном документе можно получить с помощью метода GetMessage (V5) или GetMessage (V6). В запросе передайте параметры, вернувшиеся в теле ответа метода GetDocuments
: boxId
, messageId
, entityId
. HTTP-запрос на получение документа будет выглядеть следующим образом:
Пример HTTP-запроса метода GetMessage:
GET /V6/GetMessage?boxId={{boxId}}&messageId={{messageId}}&entityId={{entityId}}&injectEntityContent=false HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8
Content-Type: application/json
Среди всех полученных документов можно найти документы определенного формата: сделать это можно по указанной версии в поле Version
. Например, для документов формата приказа №970 версия будет начинаться с utd970
: utd970_05_03_01
.
Подробнее о возможных форматах и версиях документов — на странице Форматы документов.
Метод GetMessage
не возвращает содержимое документа, а только информацию о нем. Чтобы получить содержимое, используйте метод GetEntityContent (V4).