Работа с предложением об аннулировании
Генерация предложения об аннулировании
Сгенерировать предложение об аннулировании можно с помощью метода 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. Инструкция об отправке документа приведена в разделе Отправка предложения об аннулировании.
Получение предложения об аннулировании
Участник документооборота может сформировать предложение об аннулировании и отправить его контрагенту. Получить предложение об аннулировании можно с помощью метода GetMessage (V6).
В запросе нужно передать:
boxId— идентификатор ящика отправителя,
messageId— идентификатор отправленного сообщения с документом,
entityId— идентификатор документа, для которого сформировано предложение об аннулировании.
Эти значения можно получить из структуры Message.
В ответе метод вернет структуру Message с вложенной структурой Entity. Предложение об аннулировании будет представлено структурой Entity со следующими полями:
EntityType = Attachment,
AttachmentType = RevocationRequest.
Пример 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": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ParentEntityId": "45d16c54-8700-4882-afaf-97678d6ed135",
"Content": "lores ipsum",
"AttachmentType": "RevocationRequest",
"FileName": "DP_PRANNUL_2BM-9610384428-961001000-201510080625090688235_2BM-9653544919-965301000-201508270726013081470_20151008_6bbfab54-4e9f-4ca1-99eb-37f34880a784.xml",
"NeedRecipientSignature": true,
"SignerBoxId": "",
"NotDeliveredEventId": "",
"RawCreationDate": 635798950114653648,
"SignerDepartmentId": "",
"NeedReceipt": false,
"IsApprovementSignature": false,
"IsEncryptedContent": false
}
Парсинг предложения об аннулировании
Распарсить XML-файл предложения об аннулировании можно с помощью метода ParseRevocationRequestXml. В теле запроса нужно передать XML-файл предложения об аннулировании, соответствующий XSD-схеме.
Пример HTTP-запроса метода ParseRevocationRequestXml:
POST /ParseRevocationRequestXml HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Content-Type: application/xml; charset=utf-8
Пример тела запроса метода ParseRevocationRequestXml:
<Файл ИдФайл="DP_PRANNUL_2BM-1828306960-861201692-202407101104400484330_2BM-3990015462-927043935-202407101103418496883_20250911_db7897b1-6b7b-4c92-b58e-d9d5b42d02fe" ВерсПрог="Diadoc 1.0" ВерсФорм="1.02">
<Документ>
<УчастЭДО ИдУчастЭДО="2BM-3990015462-927043935-202407101103418496883">
<ЮЛ НаимОрг="Организация-отправитель" ИННЮЛ="3990015462" КПП="927043935" />
</УчастЭДО>
<СвПредАн>
<СведАнФайл ИмяАнФайла="ON_NSCHFDOPPR_2BM-1828306960-861201692-202407101104400484330_2BM-3990015462-927043935-202407101103418496883_20250911_db4dc51d-be0f-41b2-91d1-f18826a575fb_0_0_0_0_0_00">
<ЭЦПАнФайл>MIIMiQYJKoZIhvcNAQcCoIIMej...cJewt7UKvE/MUiY0xqVne1l3NH</ЭЦПАнФайл>
</СведАнФайл>
<ТекстПредАн>Аннулируем</ТекстПредАн>
</СвПредАн>
<НапрПредАн ИдУчастЭДО="2BM-1828306960-861201692-202407101104400484330">
<ЮЛ НаимОрг="Организация-получатель" ИННЮЛ="1828306960" КПП="861201692" />
</НапрПредАн>
<Подписант Должность="Сотрудник"><ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" /></Подписант>
</Документ>
</Файл>
Пример тела ответа метода ParseRevocationRequestXml:
{
"Comment": "Аннулируем",
"Signer": {
"SignerDetails": {
"Surname": "Иванов",
"FirstName": "Иван",
"Patronymic": "Иванович",
"JobTitle": "Сотрудник",
"Inn": "",
"SoleProprietorRegistrationCertificate": ""
},
"SignerCertificateThumbprint": ""
}
}
В ответе метод вернет информацию о предложении об аннулировании в виде структуры RevocationRequestInfo.