Работа со служебными документами
Генерация и отправка служебных документов
Диадок позволяет сгенерировать следующие ответные служебные документы:
универсальное сообщение,
извещение о получении,
предложение об аннулировании,
отказ от подписи,
отказ от предложения об аннулировании,
уведомление об уточнении,
документ для отмены сведений об отгрузке маркированных товаров.
Эти документы можно отправить (добавить к сообщению) с помощью метода PostMessagePatch (V3) или PostMessagePatch (V4), передав ему структуру MessagePatchToPost или MessagePatchToPostV2 с соответствующим заполненным полем.
Генерация и отправка универсального сообщения
Универсальное сообщение — служебный документ, который может заменить собой извещение о получении (ИоП), уведомление об уточнении (УоУ) и отказ в подписи. Подробная информация об использовании универсального сообщения приведена на странице Переход на универсальные сообщения.
Сгенерировать универсальное сообщение можно с помощью метода GenerateUniversalMessage. В запросе нужно передать идентификатор ящика получателя (boxId
), идентификатор отправленного сообщения (messageId
) и идентификатор родительской сущности, на которую нужно сформировать универсальное сообщение (attachmentId
). Эти значения можно получить из структуры Message.
В теле запроса нужно передать XML-файл с данными для формирования универсального сообщения, соответствующий упрощенной XSD-схеме
.
Пример HTTP-запроса метода GenerateUniversalMessage:
POST GenerateUniversalMessage?boxId={{boxId}}&messageId={{messageId}}&attachmentId={{attachmentId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Content-Type: application/xml
Пример тела запроса метода GenerateUniversalMessage:
<UniversalMessage>
<UniversalMessageInfos>
<UniversalMessageInfo StatusCode="1999">
<PlainText>123</PlainText>
</UniversalMessageInfo>
</UniversalMessageInfos>
<Sender Position="Сотрудник" UseDefaultPersonInfo="false">
<Fio FirstName="Иван" LastName="Иванов" MiddleName="Иванович"/>
<Contacts OtherContactInfo="OtherContactInfo">
<Phones>
<Phone>8-343-123-4567</Phone>
</Phones>
<Emails>
<Email>email@sample.com</Email>
</Emails>
</Contacts>
</Sender>
<Recipient Position="Сотрудник" UseDefaultPersonInfo="false">
<Fio FirstName="Петров" LastName="Петр" MiddleName="Петрович"/>
<Contacts OtherContactInfo="OtherContactInfo">
<Phones>
<Phone>8-343-123-4567</Phone>
</Phones>
<Emails>
<Email>email@sample.com</Email>
</Emails>
</Contacts>
</Recipient>
</UniversalMessage>
Пример тела ответа метода GenerateUniversalMessage:
<?xml version="1.0" encoding="windows-1251"?>
<Файл ИдФайл="DP_UNISOOBSCH_2BM-6125600340-732644841-202407101103418496883_2BM-9147414342-757645784-202407101104400484330_20250529_3839e349-99d5-4a54-9b5f-546bffbfb44a" ВерсПрог="Diadoc 1.0" ВерсФорм="5.01">
<Документ КНД="1115144">
<СведУС ДатаФорм="29.05.2025" ВремФорм="13.53.27" ИмяПолФайл="ON_NSCHFDOPPR_2BM-9147414342-757645784-202407101104400484330_2BM-6125600340-732644841-202407101103418496883_20250207_30f13ccc-deb2-4d49-8201-0ab211e8683d" />
<СвСобытДок СтатусУС="1999">
<ТекстУС>123</ТекстУС>
</СвСобытДок>
<ОтпрУС ИдОтпрУС="2BM-9147414342-757645784-202407101104400484330">
<СвЛицОтпрУС Должн="Сотрудник">
<ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" />
<Контакт>
<Тлф>8-343-123-4567</Тлф>
<ЭлПочта>email@google.com</ЭлПочта>
<ИнКонт>OtherContactInfo</ИнКонт>
</Контакт>
</СвЛицОтпрУС>
</ОтпрУС>
<ПолучУС ИдПолучУС="2BM-6125600340-732644841-202407101103418496883">
<СвЛицПолучУС Должн="Сотрудник">
<ФИО Фамилия="Петр" Имя="Петров" Отчество="Петрович" />
<Контакт>
<Тлф>8-343-123-4567</Тлф>
<ЭлПочта>email@google.com</ЭлПочта>
<ИнКонт>OtherContactInfo</ИнКонт>
</Контакт>
</СвЛицПолучУС>
</ПолучУС>
</Документ>
</Файл>
В ответе метод вернет сгенерированный XML-файл универсального сообщения, соответсвующий XSD-схеме
, для сущности attachmentId
из сообщения messageId
в ящике boxId
. Отправить полученный XML-файл можно с помощью метода PostMessagePatch (V4), передав его в поле UniversalMessages
структуры MessagePatchToPostV2.
В теле запроса метода передайте структуру MessagePatchToPostV2
, заполненную следующими данными:
BoxId
— идентификатор ящика, в котором находится исходное сообщение;
MessageId
— идентификатор сообщения, к которому относится дополнение;
UniversalMessages
— вложенная структура для передачи XML-файлов универсальных сообщений:
ParentEntityId
— идентификатор документа, к которому относится универсальное сообщение;
CodeGroup
— группа кода универсального сообщения, которая определяет назначение универсального сообщения: извещение о получении, уведомление об уточнении или отказ в подписи.
UniversalMessageContent
— содержимое XML-файла универсального сообщения, сконвертированное в Base64-строку;
Labels
— метки (необязательно).
Примечание
На время переходного периода вместе с универсальным сообщением нужно передать соответствующий служебный документ текущего формата. Это значит, что помимо данных в поле UniversalMessages
нужно передать данные в одном из полей — Receipts
, CorrectionRequests
или XmlSignatureRejections
.
Пример тела запроса метода PostMessagePatch:
{
"BoxId": "{{boxId}}",
"MessageId": "bbcedb0d-ce34-4e0d-b321-3f600c920935",
"Receipts": [
{
"ParentEntityId":"30cf2c07-7297-4d48-bc6f-ca7a80e2cf95&",
"SignedContent":
{
"Content": "PD94bWwgdmVyc2l...LDQudC7Pg==", // содержимое XML-файла в кодировке base-64
"Signature": "MIIN5QYJKoZIhvc...KsTM6zixgz" // содержимое файла подписи в кодировке base-64
}
}
],
"UniversalMessages": [
{
"ParentEntityId":"30cf2c07-7297-4d48-bc6f-ca7a80e2cf95&",
"CodeGroup": "Receipt",
"UniversalMessageContent":
{
"Content": "PD94bWwgdmVyc2l...LDQudC7Pg==" // содержимое XML-файла в кодировке base-64
}
}
]
}
Генерация и отправка извещения о получении
Возможность отправки извещения о получении для каждого типа документа задается в свойствах вида документооборота.
Сгенерировать извещение о получении можно с помощью метода GenerateReceiptXml (V2). В запросе нужно передать идентификатор ящика получателя (boxId
) и структуру ReceiptGenerationRequestV2 со следующими данными:
messageId
— идентификатор отправленного сообщения,
attachmentId
— идентификатор сущности титула продавца.
Эти значения можно получить из структуры Message.
Данные подписанта нужно передать в универсальном формате в виде XML-файла, сконвертированного в Base64-строку.
Пример HTTP-запроса метода GenerateReceiptXml:
POST V2/GenerateReceiptXml?boxid={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Content-Type: application/json charset=utf-8
Пример тела запроса метода GenerateReceiptXml:
{
"MessageId": "bbcedb0d-ce34-4e0d-b321-3f600c920935",
"AttachmentId": "30cf2c07-7297-4d48-bc6f-ca7a80e2cf95",
"SignerContent": "PD94bWwgdmVyc2l...LDQudC7Pg==" // содержимое XML-файла с данными подписанта в кодировке Base-64
}
Пример тела ответа метода GenerateReceiptXml:
<?xml version="1.0" encoding="windows-1251"?>
<Файл ИдФайл="DP_IZVPOL_2BM-9616675014-961601000-201906250926373816603_2BM-7770357771-2012082810454029703720000000000_20230904_54c96f37-a745-4e02-8dda-41404992952f" ВерсПрог="Diadoc 1.0" ВерсФорм="1.03">
<Документ КНД="1115110">
<УчастЭДО ИдУчастЭДО="2BM-7770357771-2012082810454029703720000000000">
<ЮЛ НаимОрг="ОАО" ИННЮЛ="7770357771" КПП="770101001"/>
</УчастЭДО>
<СвИзвПолуч ДатаПол="04.09.2023" ВремяПол="13.32.26">
<СведПолФайл ИмяПолФайла="ON_NSCHFDOPPR_2BM-7770357771-2012082810454029703720000000000_2BM-9616675014-961601000-201906250926373816603_20200826_6efc7ad3-88ff-485d-86bb-c84c2262caf2">
<ЭППолФайл>MIINB3RI=...</ЭППолФайл>
</СведПолФайл>
</СвИзвПолуч>
<ОтпрДок ИдУчастЭДО="2BM-9616675014-961601000-201906250926373816603">
<ЮЛ НаимОрг="ООО" ИННЮЛ="9616675014" КПП="961601000"/>
</ОтпрДок>
<Подписант ТипПодпис="1" СтатПодп="2" Должн="Подписант-Должн">
<ФИО Фамилия="Петров" Имя="Петр" Отчество="Петрович"/>
<СвДоверЭл СпособПредставл="1" НомДовер="4a743152-e772-4249-9a47-e2e290258e79" ДатаВыдДовер="17.09.2018" ВнНомДовер="123" ДатаВнРегДовер="18.09.2018" ИдСистХран="СвДоверЭл-ИдСистХран"/>
</Подписант>
</Документ>
</Файл>
В ответе метод вернет сгенерированный XML-файл извещения о получении для сущности attachmentId
из сообщения messageId
в ящике boxId
. Отправить полученный XML-файл можно с помощью метода PostMessagePatch (V4), передав его в поле Receipts
структуры MessagePatchToPostV2.
В теле запроса метода передайте структуру MessagePatchToPostV2
, заполненную следующими данными:
BoxId
— идентификатор ящика, в котором находится исходное сообщение;
MessageId
— идентификатор сообщения, к которому относится дополнение;
Receipts
— вложенная структура для передачи XML-файлов извещений о получении:
ParentEntityId
— идентификатор документа, к которому относится извещение;
SignedContent.Content
— содержимое XML-файла извещения, сконвертированное в Base64-строку;
SignedContent.Signature
— содержимое файла подписи извещения, сконвертированное в Base64-строку;
Labels
— метки (необязательно).
Пример тела запроса метода PostMessagePatch:
{
"BoxId": "{{boxId}}",
"MessageId": "bbcedb0d-ce34-4e0d-b321-3f600c920935",
"Receipts": [
{
"ParentEntityId":"30cf2c07-7297-4d48-bc6f-ca7a80e2cf95&",
"SignedContent":
{
"Content": "PD94bWwgdmVyc2l...LDQudC7Pg==", // содержимое XML-файла в кодировке base-64
"Signature": "MIIN5QYJKoZIhvc...KsTM6zixgz" // содержимое файла подписи в кодировке base-64
},
"Comment": "Подписание извещения о получении счета-фактуры",
"Label": "label"
}
]
}
Генерация уведомления об уточнении
Чтобы создать запрос на исправление или корректировку счета-фактуры, сгенерируйте и отправьте уведомление об уточнении.
Сгенерировать уведомление об уточнении можно с помощью метода GenerateInvoiceCorrectionRequestXml (V2). Данные подписанта нужно передать в универсальном формате в виде XML-файла, сконвертированного в Base64-строку.
Пример HTTP-запроса метода GenerateInvoiceCorrectionRequestXml:
POST /V2/GenerateInvoiceCorrectionRequestXml?boxId={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8
Content-Type: application/json
Пример тела запроса метода GenerateInvoiceCorrectionRequestXml:
{
"ErrorMessage": "Текстовый комментарий",
"MessageId": "{{messageId}}",
"AttachmentId": "{{documentId}}",
"SignerContent": "PD94bWwgdmVyc2l...LDQudC7Pg==" // содержимое XML-файла с данными подписанта в кодировке Base-64
}
Пример тела ответа метода GenerateInvoiceCorrectionRequestXml:
<?xml version="1.0" encoding="windows-1251"?>
<Файл ИдФайл="DP_UVUTOCH_2BM-1839264655-732644841-202407101103418496883_2BM-9147414342-757645784-202407101104400484330_20250207_8bc3aae6-ce88-459e-943a-37094526c16c" ВерсПрог="Diadoc 1.0" ВерсФорм="1.03">
<Документ КНД="1115113">
<УчастЭДО ИдУчастЭДО="2BM-9147414342-757645784-202407101104400484330">
<ЮЛ НаимОрг="Получатель" ИННЮЛ="8147414342" КПП="857645784" />
</УчастЭДО>
<СвУведУточ ДатаПол="07.02.2025" ВремяПол="10.06.17">
<СведПолФайл ИмяПолФайла="ON_NSCHFDOPPR_2BM-9147414342-757645784-202407101104400484330_2BM-1839264655-732644841-202407101103418496883_20250207_30f13ccc-deb2-4d49-8201-0ab211e8683d">
<ЭППолФайл>...</ЭППолФайл>
</СведПолФайл>
<ТекстУведУточ>Текстовый комментарий</ТекстУведУточ>
</СвУведУточ>
<ОтпрДок ИдУчастЭДО="2BM-1839264655-732644841-202407101103418496883">
<ЮЛ НаимОрг="Отправитель" ИННЮЛ="8125600340" КПП="832644841" />
</ОтпрДок>
<Подписант ТипПодпис="1" СтатПодп="2" Должн="Подписант-Должн">
<ФИО Фамилия="Фамилия" Имя="Имя" Отчество="Отчество" />
<СвДоверЭл СпособПредставл="1" НомДовер="c8a8949a-4907-4c36-9f48-7efb2fba1987" ДатаВыдДовер="17.09.2024" ВнНомДовер="123" ДатаВнРегДовер="18.09.2024" СвСистХран="СвДоверЭл-ИдСистХран" />
</Подписант>
</Документ>
</Файл>
В ответе метод вернет сгенерированный XML-файл уведомления. Отправить полученный XML-файл можно с помощью метода PostMessagePatch (V4), передав его в поле CorrectionRequests
структуры MessagePatchToPostV2.
Генерация и отправка предложения об аннулировании
Если вы обнаружили ошибки в отправленном документе, его можно аннулировать. Для этого сгенерируйте и отправьте предложение об аннулировании.
Сгенерировать предложение об аннулировании можно с помощью метода GenerateRevocationRequestXml (V2). Можно отправить предложение об аннулировании форматов 1.01 и 1.02.
Пример HTTP-запроса метода GenerateRevocationRequestXml:
POST V2/GenerateRevocationRequestXml?boxId={{boxId}}&messageId={{messageId}}&attachmentId={{attachmentId}}&contentTypeId=revocation_request_02 HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Content-Type: application/json charset=utf-8
Пример тела запроса метода GenerateRevocationRequestXml:
{
"Comment": "Текстовый комментарий",
"Signer": {
"SignerDetails": {
"Surname": "Иванов",
"FirstName": "Иван",
"Patronymic": "Иванович",
"JobTitle": "Сотрудник",
"Inn": "7713964071"
}
}
}
Пример тела ответа метода GenerateRevocationRequestXml:
<?xml version="1.0" encoding="windows-1251"?><Файл ИдФайл="DP_PRANNUL_2BM-9147414342-757645784-202407101104400484330_2BM-1839264655-732644841-202407101103418496883_20250423_3d2a09bf-748d-4583-b4b3-fd91bf0092b3" ВерсПрог="Diadoc 1.0" ВерсФорм="1.02"><Документ><УчастЭДО ИдУчастЭДО="2BM-1839264655-732644841-202407101103418496883">
<ЮЛ НаимОрг="Отправитель" ИННЮЛ="1839264655" КПП="732644841" />
</УчастЭДО><СвПредАн><СведАнФайл ИмяАнФайла="ON_NSCHFDOPPR_2BM-9147414342-757645784-202407101104400484330_2BM-1839264655-732644841-202407101103418496883_20250207_30f13ccc-deb2-4d49-8201-0ab211e8683d"><ЭЦПАнФайл>MIINLgYLwVeXpzCZ25uwFn
</ЭЦПАнФайл>
</СведАнФайл><ТекстПредАн>Текстовый комментарий
</ТекстПредАн>
</СвПредАн><НапрПредАн ИдУчастЭДО="2BM-9147414342-757645784-202407101104400484330">
<ЮЛ НаимОрг="Получатель" ИННЮЛ="9147414342" КПП="757645784" />
</НапрПредАн><Подписант Должность="Сотрудник">
<ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" />
</Подписант>
</Документ>
</Файл>
В ответе метод вернет сгенерированный XML-файл предложения об аннулировании. Полученный XML-файл можно подписать электронной подписью и отправить с помощью метода PostMessagePatch (V4), передав его в поле RevocationRequests
структуры MessagePatchToPostV2.
В теле запроса метода передайте структуру MessagePatchToPostV2
, заполненную следующими данными:
BoxId
— идентификатор ящика, в котором находится исходное сообщение;
MessageId
— идентификатор сообщения, к которому относится дополнение;
RevocationRequests
— вложенная структура для передачи XML-файлов предложений об аннулировании:
ParentEntityId
— идентификатор документа, к которому относится предложение;
SignedContent.Content
— содержимое XML-файла предложения об аннулировании, сконвертированное в Base64-строку;
SignedContent.Signature
— содержимое файла подписи предложения об аннулировании, сконвертированное в Base64-строку;
Labels
— метки (необязательно).
Пример тела запроса метода PostMessagePatch:
{
"BoxId": "{{boxId}}",
"MessageId": "e9d6b396-934f-4ab5-801a-212c2bc0e1f8",
"RevocationRequests": [
{
"ParentEntityId": "07946392-8e2c-4df5-9b13-97b8b329befe",
"SignedContent":
{
"Content": "PD94bWwgdmVyc2l...LDQudC7Pg==", // содержимое XML-файла в кодировке base-64
"Signature": "MIIN5QYJKoZIhvc...KsTM6zixgz" // содержимое файла подписи в кодировке base-64
}
}
]
}
Генерация и отправка отказа от подписи и отказа от предложения об аннулировании
Сгенерировать отказ можно с помощью метода GenerateSignatureRejectionXml (V2). Данные подписанта нужно передать в универсальном формате в виде XML-файла, сконвертированного в Base64-строку.
Пример HTTP-запроса метода GenerateSignatureRejectionXml:
POST V2/GenerateSignatureRejectionXml?boxid={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Content-Type: application/json charset=utf-8
Пример тела запроса метода GenerateSignatureRejectionXml:
{
"ErrorMessage": "Текстовый комментарий",
"MessageId": "bbcedb0d-ce34-4e0d-b321-3f600c920935",
"AttachmentId": "30cf2c07-7297-4d48-bc6f-ca7a80e2cf95",
"SignerContent": "PD94bWwgdmVyc2l...LDQudC7Pg==" // содержимое XML-файла с данными подписанта в кодировке Base-64
}
Пример тела ответа метода GenerateSignatureRejectionXml:
<?xml version="1.0" encoding="windows-1251"?>
<Файл ИдФайл="DP_UVUTOCH_2BM-9017770974-757645784-202407101104400484330_2BM-5242989368-732644841-202407101103418496883_20250416_6a0d86e6-f052-455d-a62b-7e684a3906ad" ВерсПрог="Diadoc 1.0" ВерсФорм="1.03">
<Документ КНД="1115113">
<УчастЭДО ИдУчастЭДО="2BM-5242989368-732644841-202407101103418496883">
<ЮЛ НаимОрг="Продавец" ИННЮЛ="5242989368" КПП="732644841"/>
</УчастЭДО>
<СвУведУточ ДатаПол="16.04.2025" ВремяПол="10.05.46">
<СведПолФайл ИмяПолФайла="Group12">
<ЭППолФайл>MIIMiQYJKoZIhv...UNp8A
</ЭППолФайл>
</СведПолФайл>
<ТекстУведУточ>Текстовый комментарий
</ТекстУведУточ>
</СвУведУточ>
<ОтпрДок ИдУчастЭДО="2BM-9017770974-757645784-202407101104400484330">
<ЮЛ НаимОрг="Покупатель" ИННЮЛ="9017770974" КПП="757645784"/>
</ОтпрДок>
<Подписант ТипПодпис="1" СтатПодп="2" Должн="Не указана">
<ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович"/>
<СвДоверЭл СпособПредставл="1" НомДовер="4a743152-e772-4249-9a47-e2e290258e79" ДатаВыдДовер="17.09.2018" ВнНомДовер="123" ДатаВнРегДовер="18.09.2018" СвСистХран="СвДоверЭл-ИдСистХран"/>
</Подписант>
</Документ>
</Файл>
В ответе метод вернет сгенерированный XML-файл отказа. Полученный XML-файл можно подписать электронной подписью и отправить с помощью метода PostMessagePatch (V4), передав его в поле XmlSignatureRejections
структуры MessagePatchToPostV2.
В теле запроса метода передайте структуру MessagePatchToPostV2
, заполненную следующими данными:
BoxId
— идентификатор ящика, в котором находится исходное сообщение;
MessageId
— идентификатор сообщения, к которому относится дополнение;
XmlSignatureRejections
— вложенная структура для передачи XML-файлов отказов:
ParentEntityId
— идентификатор предложения об аннулировании или документа, к которому относится отказ;
SignedContent.Content
— содержимое XML-файла отказа, сконвертированное в Base64-строку;
SignedContent.Signature
— содержимое файла подписи отказа, сконвертированное в Base64-строку;
Labels
— метки (необязательно).
Пример тела запроса метода PostMessagePatch:
{
"BoxId": "{{boxId}}",
"MessageId": "3815fb36-aabe-4588-8fe7-a1a33154278c",
"XmlSignatureRejections": [
{
"ParentEntityId": "33ba16c68-cc54-4b25-b81c-0e79134e219d",
"SignedContent":
{
"Content": "PD94bWwgdmVyc2l...LDQudC7Pg==", // содержимое XML-файла в кодировке base-64
"Signature": "MIIN5QYJKoZIhvc...KsTM6zixgz" // содержимое файла подписи в кодировке base-64
}
}
]
}
Генерация и отправка документа для отмены сведений об отгрузке маркированных товаров
Чтобы отменить сведения об отгрузке маркированных товаров, сгенерируйте и отправьте специальный служебный документ.
Сгенерировать документ для отмены сведений об отгрузке можно с помощью метода GenerateTtGisFixationCancellationRequest.
Пример HTTP-запроса метода GenerateTtGisFixationCancellationRequest:
POST /GenerateTtGisFixationCancellationRequest?boxId={{boxId}}&messageId={{messageId}}&documentId={{documentId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8
Пример тела ответа метода GenerateTtGisFixationCancellationRequest:
{
"fixation_document_id": "FIX_ON_NSCHFDOPPR_2BM-9147414342-757645784-202407101104400484330_2BM-3175546205-732644841-202407101103418496883_20250620_fc857ac8-5e25-4cd3-91fd-77f0a8e141d4_0_1_1_0_0_00",
"inn": "1234567890"
}
В ответе метод вернет сгенерированный JSON-файл документа. Полученный файл нужно подписать электронной подписью и поместить в структуру TtGisFixationCancellationRequestAttachment. Отправить эту структуру можно с помощью метода PostMessagePatch (V3) или PostMessagePatch (V4), передав ее в поле TtGisFixationCancellationRequests
структуры MessagePatchToPost или MessagePatchToPostV2 соответственно.
В теле запроса метода PostMessagePatch (V4) передайте структуру MessagePatchToPostV2
, заполненную следующими данными:
BoxId
— идентификатор ящика, в котором находится исходное сообщение;
MessageId
— идентификатор сообщения, к которому относится дополнение;
TtGisFixationCancellationRequests
— вложенная структура для передачи документов для отмены сведений об отгрузке маркированных товаров:
DocumentId
— идентификатор документа, содержащего маркированные товары, сведения об отгрузки которых необходимо отменить;
SignedContent.Content
— содержимое JSON-файла документа для отмены сведений об отгрузке, сконвертированное в Base64-строку;
SignedContent.Signature
— содержимое файла подписи документа для отмены сведений об отгрузке, сконвертированное в Base64-строку.
Пример тела запроса метода PostMessagePatch:
{
"BoxId": "{{boxId}}",
"MessageId": "d94982e8-7eb9-4993-8c52-41c14e3fc3a8",
"TtGisFixationCancellationRequests": [
{
"DocumentId": "05ea290d-9aa1-4291-a87b-d30be9ccf5b7",
"SignedContent":
{
"Content": "eyJpbm4iOiI2MT...F8wMCJ9", // содержимое XML-файла в кодировке base-64
"Signature": "MIIMtAYJKoZIhvc...KW1oPlA==" // содержимое файла подписи в кодировке base-64
}
}
]
}
Универсальный формат данных подписанта в служебных документах
При генерации извещения о получении, отказа от подписи и уведомления об уточнении нужно в поле SignerContent
передать упрощенный XML-файл с данными подписанта в универсальном бинарном формате (подробнее в разделе Универсальный формат заполнения данных подписанта). Файл необходимо сформировать в соответствии с упрощенной XSD-схемой подписанта для служебных документов
.
Пример упрощенного XML-файла подписанта:
<?xml version="1.0" encoding="UTF-8"?>
<Signer SignerStatus="2" SignatureType="1">
<Certificate CertificateBytes="PD94bWwgdmVy...c2l"/>
<Fio LastName="Петров" FirstName="Петр" MiddleName="Петрович"/>
<Position PositionSource="Manual">Подписант-Должн</Position>
<PowerOfAttorney>
<Electronic MethodOfProviding="1">
<Manual RegistrationNumber="4a743152-e772-4249-9a47-e2e290258e79" RegistrationDate="17.09.2018" InternalNumber="123" InternalDate="18.09.2018" SystemId="СвДоверЭл-ИдСистХран"/>
</Electronic>
</PowerOfAttorney>
</Signer>
SignerStatus
— статус подписанта, может принимать значения:1
— лицо, имеющее полномочия на подписание документа без доверенности,2
— лицо, имеющее полномочия на подписание документа на основании доверенности в электронной форме,3
— лицо, имеющее полномочия на подписание документа на основании доверенности на бумажном носителе.
SignatureType
— тип подписи, может принимать значения:1
— усиленная квалифицированная электронная подпись,2
— простая электронная подпись,3
— усиленная неквалифицированная электронная подпись.
Certificate
— данные сертификата подписанта. Обязательное поле. Можно передать:CertificateThumbprint
— отпечаток сертификата,CertificateBytes
— сертификат, сериализованный в массив байтов в DER-кодировке.
Fio
— фамилия, имя, отчество подписанта.LastName
— фамилия подписанта, обязательное поле,FirstName
— имя подписанта, обязательное поле,MiddleName
— отчество подписанта.
Position
— должность подписанта.PositionSource
— способ заполнения должности сотрудника. Может принимать значения:Employee
— заполнение из данных сотрудника в Диадоке,Certificate
— заполнение из данных в сертификате,Manual
— ручное заполнение данных.
PowerOfAttorney
— сведения о машиночитаемой доверенности. Доверенность может быть электронной или бумажной.Electronic
— электронная доверенность. Данные доверенности можно заполнить автоматически (выбрать из хранилища Диадока) или вручную.MethodOfProviding
— способ представления доверенности. Обязательное поле. Может принимать значения:1
— представление доверенности осуществляется посредством ее включения в пакет электронных документов,2
— представление доверенности способом, не предусматривающим его включение в пакет электронных документов.
Storage
— автоматическое заполнение информации по доверенности на основе номера и ИНН:RegistrationNumber
— номер доверенности, обязательное поле,IssuerInn
— ИНН организации, выдавшей доверенность, обязательное поле,UseDefault
— признак того, что нужно автоматически заполнить информацию на основе доверенности, используемой сотрудником по умолчанию. Обязательное поле.
Manual
— ручное заполнение данных доверенности. Можно указать следующие данные:RegistrationNumber
— номер доверенности, обязательное поле,RegistrationDate
— дата совершения (выдачи) доверенности, обязательное поле,InternalNumber
— внутренний регистрационный номер доверенности,InternalDate
— дата внутренней регистрации доверенности,SystemId
— идентифицирующая информация об информационной системе, в которой осуществляется хранение доверенности.
Paper
— бумажная доверенность. Можно указать следующие данные:Fio
— фамилия, имя, отчество (при наличии) лица, подписавшего доверенность,InternalNumber
— внутренний регистрационный номер доверенности, обязательное поле,RegistrationDate
— дата совершения (выдачи) доверенности, обязательное поле,IssuerInfo
— сведения о доверителе.
Получение служебных документов
Диадок позволяет получить информацию о служебных документах из сообщения.
Получение универсального сообщения
Чтобы получить универсальное сообщение, можно воспользоваться следующими способами:
методы работы с сообщениями, например, GetMessage (V6),
методы работы с документооборотом, например, GetDocflows (V4).
Метод GetMessage
Чтобы получить универсальное сообщение методом GetMessage (V6), нужно передать в запросе:
boxId
— идентификатор ящика отправителя,
messageId
— идентификатор отправленного сообщения,
entityId
— идентификатор родительской сущности, на которую сформировано универсальное сообщение.
Эти значения можно получить из структуры Message.
В ответе метод вернет структуру Message с вложенной структурой Entity. Универсальное сообщение будет представлено структурой Entity
со следующими полями:
EntityType = Attachment
,
AttachmentType = UniversalMessage
.
Информация об универсальном сообщении будет хранится в поле Entity.UniversalMessageInfo
в виде структуры UniversalMessageInfo.
Пример HTTP-запроса метода GetMessage:
GET /V6/GetMessage?boxId={{boxId}}&messageId={{messageId}} HTTP/1.1
Host: diadoc-api-test.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Пример ответа метода GetMessage:
{
"CreatedFromDraftId": "",
"DraftIsLocked": false,
"DraftIsRecycled": false,
"DraftIsTransformedToMessageIdList": [
],
"Entities": [
{
"AttachmentType": "XmlTorg12",
<...>
},
{
"AttachmentType": "XmlTorg12BuyerTitle",
<...>
},
{
"AttachmentType": "InvoiceReceipt",
"AuthorUserId": "",
"Content": {
"Size": 5575
},
"ContentTypeId": "receipt_133_01_03",
"EntityId": "529b4e21-a982-4364-a52b-fff1f1cd8409",
"EntityType": "Attachment",
"FileName": "DP_IZVPOL_2BM-7743911253-774301001-201512151245491116742_2BM-7717704518-770101001-201708200655456926042_20250528_7ce74dc9-0943-4fb9-90cd-327d445e5198.xml",
"IsApprovementSignature": false,
"IsEncryptedContent": false,
"Labels": [
],
"NeedReceipt": false,
"NeedRecipientSignature": false,
"ParentEntityId": "e9bfc749-51e7-4575-a587-7033b9f2e882",
"RawCreationDate": 638840213353178450
},
{
"AttachmentType": "UniversalMessage",
"AuthorUserId": "",
"Content": {
"Size": 856
},
"ContentTypeId": "receipt_uni_01",
"EntityId": "647250f0-c833-4cd2-a6b1-afe2ee812986",
"EntityType": "Attachment",
"FileName": "DP_UNISOOBSCH_2BM-7743911253-774301001-201512151245491116742_2BM-7717704518-770101001-201708200655456926042_20250528_6ca0fdf6-0ab4-461b-9c67-1b5d9c200bbb.xml",
"IsApprovementSignature": false,
"IsEncryptedContent": false,
"Labels": [
],
"NeedReceipt": false,
"NeedRecipientSignature": false,
"ParentEntityId": "e9bfc749-51e7-4575-a587-7033b9f2e882",
"RawCreationDate": 638840213353178450,
"UniversalMessageInfo": {
"CodeGroup": "Receipt",
"Events": [
{
"PlainText": "",
"StatusCode": 1999
}
]
}
}
],
"FromBoxId": "eab6c66b8f644ada8cf04c6a2b7ba915@diadoc.ru",
"FromTitle": "Отправитель",
"IsDeleted": false,
"IsDraft": false,
"IsInternal": false,
"IsProxified": false,
"IsReusable": false,
"IsTest": false,
"LastPatchTimestampTicks": 638840428633821944,
"LockMode": "None",
"MessageId": "d213fc6e-1c0c-4ced-ae35-9078c895b92b",
"MessageType": "Letter",
"PacketIsLocked": false,
"ProxyBoxId": "",
"ProxyTitle": "",
"TimestampTicks": 638840213224709349,
"ToBoxId": "1234b472842f47baa1a309100064ace4@diadoc.ru",
"ToTitle": "Получатель"
}
Метод GetMessage (V6) не возвращает содержимое универсального сообщения, а только информацию о нем. Чтобы получить содержимое, используйте метод GetEntityContent (V4).
Метод GetDocflows
Чтобы получить универсальное сообщение методом GetDocflows (V4), нужно передать в запросе идентификатор ящика отправителя boxId
, а в теле запроса — идентификатор документа в виде пары MessageId
и EntityId
.
Эти значения можно получить из структуры Message.
В ответе метод вернет структуру GetDocflowBatchResponseV4 с вложенной структурой Documents.Docflow, в которой универсальное сообщение UniversalMessageAttachmentDocflow вернется в поле UniversalMessage
одной из следующих структур:
ReceiptDocflowV4 — для извещения о получении,
AmendmentRequestDocflowV4 — для уведомления об уточнении,
SignatureRejectionDocflowV4 — для отказа в подписи.
Пример HTTP-запроса метода GetDocflows:
POST /V4/GetDocflows?boxId={{boxId}} HTTP/1.1
Host: diadoc-api-test.kontur.ru
Authorization: Bearer {{access_token}}
Content-Type: application/json charset=utf-8
Accept: application/json
Пример тела запроса метода GetDocflows:
{
"Requests": [
{
"DocumentId": {
"MessageId": "d213fc6e-1c0c-4ced-ae35-9078c895b92b",
"EntityId": "e9bfc749-51e7-4575-a587-7033b9f2e882"
}
}
]
}
Пример ответа метода GetDocflows:
{
"Documents": [
{
"Docflow": {
"Confirmation": {...},
"DocflowStatus": {...},
"OuterDocflowEntities": [...],
"OuterDocflows": [...],
"RecipientReceipt": {
"Confirmation": {...},
"DeliveredAt": {...},
"IsFinished": true,
"ReceiptAttachment": {
"Attachment": {
"AttachmentFilename": "DP_IZVPOL_2BM-7743911253-774301001-201512151245491116742_2BM-7717704518-770101001-201708200655456926042_20250528_7ce74dc9-0943-4fb9-90cd-327d445e5198.xml",
"DisplayFilename": "Извещение о получении исправления",
"Entity": {
"Content": {
"Size": 5575
},
"CreationTimestamp": {
"Ticks": 638840213353178450
},
"EntityId": "529b4e21-a982-4364-a52b-fff1f1cd8409"
}
},
"ContentTypeId": "receipt_133_01_03",
"Signature": {
"CadesT": {
"Content": {
"Size": 7098
},
"CreationTimestamp": {
"Ticks": 638840213356162462
},
"EntityId": "5a6cdfb3-973f-47b2-b1cb-19b228d1eb2f"
},
"Cms": {
"Content": {
"Size": 3466
},
"CreationTimestamp": {
"Ticks": 638840213353178450
},
"EntityId": "620dcec7-1a09-4525-8ccd-4e6a273201ab"
},
"DeliveredAt": {
"Ticks": 638840213356162462
},
"IsValid": true,
"PowerOfAttorneyAttachmentStatus": {
"StatusName": "PowerOfAttorneyNotRequired"
},
"SignerBoxId": "4926b472842f47baa1a309100064ace4@diadoc.ru",
"SignerDepartmentId": "00000000-0000-0000-0000-000000000000"
}
},
"SentAt": {...},
"Status": "Finished",
"UniversalMessage": {
"Attachment": {
"AttachmentFilename": "DP_UNISOOBSCH_2BM-7743911253-774301001-201512151245491116742_2BM-7717704518-770101001-201708200655456926042_20250528_6ca0fdf6-0ab4-461b-9c67-1b5d9c200bbb.xml",
"DisplayFilename": "Извещение о получении исправления",
"Entity": {
"Content": {
"Size": 856
},
"CreationTimestamp": {
"Ticks": 638840213353178450
},
"EntityId": "647250f0-c833-4cd2-a6b1-afe2ee812986"
}
},
"ContentTypeId": "receipt_uni_01",
"MessageInfo": {
"CodeGroup": "Receipt",
"Events": [
{
"PlainText": "",
"StatusCode": 1999
}
]
}
}
},
"RecipientResponse": {...},
"ResolutionEntities": {...},
"SenderReceipt": {...},
"SenderTitle": {...}
},
"DocumentId": {...},
"DocumentInfo": {...},
"LastEvent": {...}
}
]
}
Получение извещения о получении
После получения титула продавца покупатель формирует извещение о получении титула и отправляет его продавцу. Получить извещение о получении можно с помощью метода GetMessage (V5).
В запросе нужно передать:
boxId
— идентификатор ящика отправителя,
messageId
— идентификатор отправленного сообщения с титулом продавца,
entityId
— идентификатор отправленного титула продавца.
Эти значения можно получить из структуры Message.
В ответе метод вернет структуру Message с вложенной структурой Entity. Извещение о получении будет представлено структурой Entity
со следующими полями:
EntityType = Attachment
,
AttachmentType = InvoiceReceipt
.
Пример HTTP-запроса метода GetMessage:
GET /V5/GetMessage?boxId={{boxId}}&messageId={{messageId}}&entityId={{entityId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Content-Type: application/json charset=utf-8
Пример тела ответа метода GetMessage:
{
"EntityType": "Attachment",
"EntityId": "1d7b2e96-9945-41ab-aeea-2f310382bfad",
"ParentEntityId": "45d16c54-8700-4882-afaf-97678d6ed135",
"Content": "lores ipsum",
"AttachmentType": "InvoiceReceipt",
"FileName": "DP_IZVPOL_2BM-9610384428-961001000-201510080625090688235_2BM-9653544919-965301000-201508270726013081470_20151008_6bbfab54-4e9f-4ca1-99eb-37f34880a784.xml",
"NeedRecipientSignature": false,
"SignerBoxId": "",
"NotDeliveredEventId": "",
"RawCreationDate": 635798950114653648,
"SignerDepartmentId": "",
"NeedReceipt": false,
"IsApprovementSignature": false,
"IsEncryptedContent": false
}
Получение подтверждения оператора
После отправки титула продавца Диадок автоматически формирует подтверждение оператора о дате получения документа. Получить подтверждение оператора можно с помощью метода GetMessage (V5).
В запросе нужно передать:
boxId
— идентификатор ящика отправителя,
messageId
— идентификатор отправленного сообщения с титулом продавца,
entityId
— идентификатор отправленного титула продавца.
Эти значения можно получить из структуры Message.
В ответе метод вернет структуру Message с вложенной структурой Entity. Подтверждение оператора будет представлено структурой Entity
со следующими полями:
EntityType = Attachment
,
AttachmentType = InvoiceConfirmation
.
Пример HTTP-запроса метода GetMessage:
GET /V5/GetMessage?boxId={{boxId}}&messageId={{messageId}}&entityId={{entityId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json
Content-Type: application/json charset=utf-8
Пример ответа метода GetMessage:
{
"EntityType": "Attachment",
"EntityId": "9955dccd-82fd-4412-b953-7854e102f782",
"ParentEntityId": "736aa0c4-12f5-4412-bfea-1de59948b904",
"Content": "lores ipsum",
"AttachmentType": "InvoiceConfirmation",
"FileName": "DP_PDPOL_2BM-7750370234-4012052808304878702630000000000_2BM_20150927_324c290e-f049-4906-baac-1ddcd7f3c2ff.xml",
"NeedRecipientSignature": false,
"SignerBoxId": "",
"NotDeliveredEventId": "",
"RawCreationDate": 635789700936777240,
"SignerDepartmentId": "",
"NeedReceipt": false,
"IsApprovementSignature": false,
"IsEncryptedContent": false
}
Получение документа для отмены сведений об отгрузке маркированных товаров
Чтобы получить служебный документ для отмены сведений об отгрузке, можно воспользоваться следующими способами:
Методы для работы с документами, сообщениями и событиями:
Информация о документе для отмены сведений об отгрузке будет представлена структурой Entity со следующими полями:
EntityType = Attachment
,AttachmentType = TtGisFixationCancellationRequest
.
Методы для работы с документооборотом:
Статус подписания документа для отмены сведений об отгрузке хранится в поле
CancellationStatus
структуры Document в виде значения TtGisFixationCancellationStatus.Информация о документе для отмены сведений об отгрузке хранится в поле
TtGisFixation
структур DocflowV3 и DocflowV4 в виде структуры TtGisFixationDocflow.