Skip to content
koltsov edited this page Feb 4, 2015 · 2 revisions

История изменений Diadoc API

v1.20 - 20.01.2015

v1.19 - 15.10.2014

  • Добавлен метод GenerateDocumentZip, позволяющий формировать zip-архив с документом, подписями к нему и файлами документооборота.

v1.18 - 02.10.2014

  • Добавлена возможность привязывать к документам произвольные данные "ключ-значение". Соответствующие изменения были внесены в структуры MessageToPost и MessagePatchToPost.

v1.17 - 05.06.2014

  • В Диадоке появилась возможность получать статус доставки документа в роуминг - RoamingNotification

v1.16 - 25.02.2014

v1.15 - 05.02.2014

  • Появилась возможность получать через API протокол передачи документа. См. описание метода GenerateDocumentProtocol. Выгрузка протокола передачи документа адресатом пересылки документа третьей стороне производится при помощи метода GenerateForwardedDocumentProtocol.

v1.14 - 24.01.2014

  • Появилась возможность пересылать документы третьей стороне. См. описание методов ForwardDocument, GetForwardedDocuments и GetForwardedDocumentEvents. Выгрузка содержимого связанных с документом сущностей адресатом пересылки документа третьей стороне производится при помощи метода GetForwardedEntityContent.

v1.11 - 20.12.2013

  • Сборка protobuf-net.dll теперь внедрена в библиотеку DiadocApi.dll. Это позволяет интегратору использовать в своем проекте другую версию сборки protobuf-net.dll.

v1.10 - 06.12.2013

  • В Диадоке появилась возможность отправлять формализованные отказы от подписи документов. Xml файл отказа формируется при помощи метода GenerateSignatureRejectionXml. Для отправки отказов используется метод PostMessagePatch, куда передается структура MessagePatchToPost с заполненным списком MessagePatchToPost.XmlSignatureRejections. Для получения документов с отказом в подписи через метод GetDocuments используются такие же фильтры, как для неформализованных отказов. Формализованным отказам соответствует тип XmlSignatureRejection из перечисления [AttachmentType](Entity message).

  • Отправка неформализованных отказов от подписи в адрес роуминговых организаций теперь запрещена.

  • Новые отказы от подписи, при получении их через старые версии SDK, будут иметь тип [SignatureRequestRejection](Entity message) (как отказы старого формата), но в содержимом соответствующих сущностей вместо строки с комментарием к отказу теперь будет возвращаться xml файл отказа в кодировке CP1251.

v1.9 - 20.10.2013

v1.8 - 13.08.2013

v1.7 - 10.04.2013

  • В Диадоке появилась поддержка нового типа полуформализованных документов - ценовых листов. Ценовой лист представляет собой двусторонний документ (для него требуется подпись контрагента / отказ в запросе подписи) со следующими обязательными реквизитами: дата составления и номер самого ценового листа, дата вступления ценового листа в силу, дата и номер договора, к которому относится ценовой лист. Для отправки ценовых листов через API при обращении к методу PostMessage следует наполнять список MessageToPost.PriceLists. Каждый элемент этого списка представляет собой структуру PriceListAttachment. При получение информации о документах через API при помощи методов GetMessage, GetDocument и т.п. для ценовых листов в структуре Document заполняется поле PriceListMetadata. При фильтрации документов методом GetDocuments также можно использовать новый тип документов PriceList.

  • Для получения списка пользователей конкретной организации добавлен метод GetOrganizationUsers.

  • У структуры Organization добавлено поле IfnsCode, позволяющее получить код налоговой инспекции - место подачи декларации по НДС.

v1.6 - 14.03.2013

  • Добавлена возможность отправлять документы, подписанные тестовой подписью (см. описание флага SignedContent.SignWithTestSignature).

  • Добавлены методы ParseAcceptanceCertificateSellerTitleXml и ParseTorg12SellerTitleXml, позволяющие преобразовывать xml-файлы формализованных актов (титул исполнителя) и ТОРГ-12 (титул продавца) в структуры AcceptanceCertificateSellerTitleInfo и Torg12SellerTitleInfo соответственно.

  • Функциональность метода PostMessage была расширена: при помощи флага MessageToPost.DelaySend можно задержать отправку документа, чтобы была возможность провести его согласование. В связи с этим изменился набор возможных состояний документов, что требует обновления логики клиентских решений.

  • Для определения, может ли конкретный пользователь запрашивать согласования, может использоваться флаг OrganizationUserPermissions.CanRequestResolutions в свойствах пользователя, возвращаемых вызовом GetMyPermissions.

  • В сообщение EntityPatch добавлено поле ContentIsPatched, через которое сервер выдает информацию о том, что исходный документ в процессе подписания был модифицирован (в документ была внедрена информация о том, кто подписал этот документ).

  • Изменена логика работы с перечислимыми типами: теперь в большинстве перечислений имеется специальное значение с именем UnknownИмяПеречисления. Клиент может получить (и получит) такое значение в том и только том случае, если имеет место рассогласование версий API между клиентом и сервером, и клиент не может правильно интерпретировать информацию, возвращаемую сервером (например, в случае добавления новых элементов к перечислению клиент будет получать вместо вновь добавленных элементов этот самый UnknownИмяПеречисления элемент). Клиент обязан корректно обрабатывать такие ситуации (например, путем информирования пользователя о необходимости обновить интеграционный модуль).

Для доступа к новой функциональности и во избежание возможного конфликта версий убедительная просьба скачать и обновить версию инструментария для разработчиков Diadoc SDK v1.6

v1.5 - 31.01.2013

  • Появилась возможность работы с документами, пересылаемыми внутри организации. Для этого добавились новые элементы в перечислениях NonformalizedDocumentStatus, BilateralDocumentStatus и UnilateralDocumentStatus, а также добавились поля для работы с подразделениями организации в структурах Department, [Entity](Entity message), Document, Message и MessageToPost.

  • Были расширены возможности работы с «черновиками», то есть с подготовленными, но не отправленными документами. Для отправки ранее созданного черновика добавился метод SendDraft. Кроме того, черновики теперь можно загружать в Диадок при помощи метода PostMessage (это предпочтительный путь). Для этого обновилась структура MessageToPost, добавилась структура DraftToSend и структура RequestedSignature была переименована в DocumentSignature (см. описание MessagePatchToPost).

  • Появилась возможность загружать большие по размеру документы в Диадок при помощи сервиса «полки документов». Для этих целей добавился метод ShelfUpload и обновилась структура SignedContent, в которой появилось поле NameOnShelf, позволяющее сослаться на уже загруженный на «полку» файл.

  • Появилась возможность восстанавливать ранее удаленные отдельные документы и сообщения целиком. Для этих целей добавлен метод Restore, а в структурах EntityPatch и MessagePatch добавлены поля, позволяющие узнать, были ли конкретный документ или сообщение восстановлены.

  • Появилась возможность по документу (Document) или сообщению (Message) понять, является ли он юридически значимым. Для этих целей в каждую из названных структур добавлено поле IsTest.

  • Добавилась возможность проводить эвристический семантический разбор строк, представляющих почтовый адрес в Российской Федерации. За это отвечает метод ParseRussianAddress.

  • Добавилась возможность выполнять трансформацию XML-файла СФ/ИСФ, сформированного в соответствии с XML-схемой, в структуру InvoiceInfo. За это отвечает метод ParseInvoiceXml.

v1.4 - 29.08.2012

  • В структуру данных Organization добавилось поле Departments, содержащее список всех подразделений в организации. Это поле позволяет получать информацию об оргструктуре при помощи методов GetMyOrganizations, GetOrganization, GetCounteragents, GetCounteragent.

  • В методах PostMessage и PostDraft появилась возможность отправлять документы в конкретное подразделение контрагента. Для этого в структуру данных MessageToPost добавилось новое поле ToDepartmentId, а в метод PostDraft был добавлен новый параметр toDepartmentId.

  • Появился новый метод MoveDocuments для перемещения документов своей организации между подразделениями. Информация о перемещениях документов между подразделениями (неважно было это сделано через API или через Web) доступна через метод GetNewEvents, в структуре данных EntityPatch добавилось поле MovedToDepartmentId.

  • В структуру данных [Entity](Entity message) добавилось поле RawCreationDate, содержащее метку времени создания сущности. Это поле заполняется для всех сущностей, его можно использовать для получения времени подписания или согласования документа.

  • Появилась возможность осуществлять согласование (или отказ в согласовании) документов через API. Для этого добавилась структура данных Resolution, а в структуре данных MessagePatchToPost добавилось поле Resolutions.

    Все действия по согласованию видны в структуре данных Message как сущности с типом [Attachment/Resolution](Entity message). Содержимое этой сущности - байты строки комментария к согласованию в кодировке UTF-8. В структуру данных [Entity](Entity message) добавилось поле ResolutionInfo, содержащее тип действия по согласованию и ФИО согласователя в виде новой структуры данных ResolutionInfo.

v1.3 - 26.06.2012

  • Был добавлен метод Delete, позволяющий помечать документы как удаленные. Также в структурах данных Document и Message появились соответствующие флаги IsDeleted. Кроме того, в структуру данных MessagePatch был добавлен флаг MessageIsDeleted и поле EntityPatches, содержащее список структур данных типа EntityPatch с флагом DocumentIsDeleted. Данные расширения структуры данных MessagePatch позволяют отслеживать моменты удаления документов и/или сообщений, анализируя поток событий в ящике, возвращаемый методом GetNewEvents.

  • Был добавлен метод CanSendInvoice, позволяющий для данного идентификатора ящика и сертификата ЭЦП узнать, был ли этот сертификат зарегистрирован в ФНС в качестве сертификата, используемого для подписания электронных счетов-фактур, отправляемых участником ЭДО, которому принадлежит данный ящик в Диадоке. Проще говоря, метод CanSendInvoice отвечает на вопрос, может ли тот или иной сертификат ЭЦП ипользоваться для подписания ЭСФ, отправляемых из данного ящика. Также в структуру данных Organization было добавлено поле FnsRegistrationDate - дата подачи заявляения в ФНС на регистрацию данной организации в качестве участника документооборота ЭСФ.

  • Метод PostDraft теперь позволяет загружать в черновики товарные накладные и акты о выполнении работ / оказании услуг в рекомендованном ФНС XML-формате (документы с типами [Attachment/XmlTorg12](Entity message) и [Attachment/XmlAcceptanceCertificate](Entity message)). Также в метод PostDraft была добавлена поддержка счетов на оплату (документов типа [Attachment/ProformaInvoice](Entity message)).

v1.2 - 09.06.2012

  • Был расширен перечень сведений, возвращаемых методами, дающими доступ к справочнику организаций в Диадоке (например, GetMyOrganizations). Теперь структура данных Organization включает поля Ogrn (ОГРН организации), Address (юридический адрес организации) и FnsParticipantId (уникальный идентификатор участника документооборота СФ, который должен указываться при формировании XML счетов-фактур).

  • Метод GenerateInvoiceXml теперь позволяет формировать не только XML-файлы счетов-фактур, но и XML-файлы исправлений счетов-фактур, корректировочных счетов-фактур, а также исправлений корректировочных счетов-фактур.

v1.1 - 11.05.2012

  • Появилась поддержка рекомендованных ФНС России форматов электронных товарных накладных и актов о выполнении работ / оказании услуг. Теперь при помощи метода PostMessage можно загружать в Диадок титулы продавца XML-накладных (новый тип докуметов [Attachment/XmlTorg12](Entity message)) и титулы исполнителя XML-актов (новый тип докуметов [Attachment/XmlAcceptanceCertificate](Entity message)), а при помощи метода PostMessagePatch можно загружать в Диадок соответствующие титулы покупателя/заказчика. В Diadoc SDK включены XML-схемы, описывающие рекомендованные ФНС России форматы товарных накладных и актов о выполнении работ / оказании услуг:

    Также появились методы GenerateTorg12XmlForSeller, GenerateTorg12XmlForBuyer и GenerateAcceptanceCertificateXmlForSeller и GenerateAcceptanceCertificateXmlForBuyer, облегчающие процесс формирования корректных XML-файлов товарных накладных и актов. Поддержка новых типов документов была добавлена и в метод GetDocuments.

  • Появилась возможность при помощи метода PostMessage загружать в Диадок счета на оплату (новый тип докуметов [Attachment/ProformaInvoice](Entity message)). Поддержка данного типа документов была добавлена и в метод GetDocuments.

  • Также в метод PostMessage была добавлена возможность загружать в Диадок вложения специального типа "структурированные данные" ([Attachment/StructuredData](Entity message)), при помощи которого можно организовать передачу рядом с юридически-значимой печатной формой документа каких-то данных, подлежащих автоматизированной обработке.

  • Метод GetDocuments теперь позволяет получать информацию обо всех СФ-подобных документах (СФ/ИСФ/КСФ/ИКСФ) единым списком. Для этого в качестве первой части параметра filterCategory нужно передать специальное значение "AnyInvoiceDocumentType". Например, чтобы получить список всех входящих СФ/ИСФ/КСФ/ИКСФ, нужно в метод GetDocuments передать параметр filterCategory=AnyInvoiceDocumentType.Inbound.

v1.0 - 04.04.2012

  • Появилась поддержка официально утвержденных версий форматов документов, фигурирующих в документообороте счетов-фактур. В связи с этим поменялись сигнатуры методов GenerateInvoiceDocumentReceiptXml и GenerateInvoiceCorrectionRequestXml. В Diadoc SDK включены соответствующие XML-схемы, описывающие форматы документов, фигурирующих в документообороте счетов-фактур:

    В целях обеспечения обратной совместимости с существующими пилотными проектами по итеграции Диадок в течение еще какого-то времени будет продолжать принимать счета-фактуры в старом формате. Однако нужно иметь в виду, что такие документы не будут иметь юридической значимости.

  • Появился метод GenerateInvoiceXml, облегчающий процесс формирования корректного XML-файла счета-фактуры. Данный метод позволяет интегратору не погружаться в детали XML-формата СФ, а передавать в Диадок только необходимые первичные данные в виде структуры InvoiceInfo. По этим данным метод GenerateInvoiceXml, при необходимости дополнив их сведениями из своих справочников, сформирует корректный XML-файл счета-фактуры, который затем можно будет отправить методом PostMessage, либо загрузить в черновики методом PostDraft. В частности, в структуре InvoiceInfo можно вообще не заполнять реквизиты продавца и покупалеля, достаточно указать идентификаторы их ящиков в Диадоке, и тогда соответствующие реквизиты будут подтянуты из справочника организаций Диадока.

  • В Диадоке появилась возможность работать с исправлениями счетов-фактур и корректировочными счетами-фактурами. Для этого были введены новые [типы сущностей](Entity message): Attachment/InvoiceRevision (исправление счета-фактуры), Attachment/InvoiceCorrection (корректировочный счет-фактура), Attachment/InvoiceCorrectionRevision (исправление корректировочного счета-фактуры). Для связывания исправлений и корректировок с оригинальными СФ нужно использовать уже имеющийся в Диадоке механизм установки ссылок между документами, находящимися в разных сообщениях. Кроме того, в структуре Document.InvoiceMetadata, описывающей метаданные счета-фактуры в Диадоке, появилось поле InvoiceAmendmentFlags, которое отражает статус счета-фактуры с точки зрения наличия уведомления об уточнении или отправленного исправления / корректировки. Например, при отправке корректировочного СФ, у исходного счета-фактуры, по которому было запрошено уточнение, поле Document.InvoiceMetadata.InvoiceAmendmentFlags поменяет свое значение с AmendmentRequested на AmendmentRequested|Corrected.

  • Появился метод GetInvoiceCorrectionRequestInfo, позволяющий получить информацию, содержащуюся в уведомлении об уточнении счета-фактуры, без необходимости уметь разбирать соответствующий XML-формат, утвержденный ФНС, что в какой-то степени упрощает работу интегратора. В частности, метод GetInvoiceCorrectionRequestInfo позволяет получить текст уведомления об уточнении.

  • Появилась возможность при помощи методов PostMessage и PostDraft загружать в Диадок акты о выполнении работ / оказании услуг (новый тип докуметов [Attachment/AcceptanceCertificate](Entity message)). Поддержка нового типа документов была добавлена и в метод GetDocuments.

  • Метод GetDocuments научился фильтровать список документов по дате формирования документа в учетной системе (реквизиту самого документа), а не только по дате загрузки документа в Диадок. Для этого в метод GetDocuments добавлены необязательные параметры строки запроса fromDocumentDate и toDocumentDate, которые позволяют задать интервал времени, в котором осуществляется поиск. При этом метод GetDocuments продолжает поддерживать фильтрацию списка документов при помощи параметров timestampFromTicks и timestampToTicks.

  • Было расширено API для работы с черновиками:

    • Метод GetNewEvents теперь возвращает информацию о событиях, происходящик с черновиками: создание черновика (и начальный набор документов в нем), добавление к черновику документов, утилизация черновика (просто удаление, либо отправка на основе него полноценного сообщения). Методы GetEvent и GetMessage также теперь возвращают информацию о черновиках.

    • Появился метод RecycleDraft, который позволяет удалять еще не отправленные черновики.

    • У сообщения Message появилось необязательное поле CreatedFromDraftId, в которое заносится идентификатор черновика, на основании которого было создано данное сообщение (или черновик). Также и у черновика появилось симметричное поле DraftIsTransformedToMessageId, куда заносится идентификатор сообщения (или черновика), которое было создано из данного черновика. Флаг Message.DraftIsRecycled означает, что черновик был утилизирован, то есть просто удален, либо преобразован в полноценное сообщение или в другой черновик. Соответственно, поля DraftIsTransformedToMessageId и DraftIsRecycled могут присутствовать в структуре Message, описывающей черновик, одновременно.

    • Метод PostDraft стал позволять создавать нередактируемые черновики, то есть такие черновики, которые можно только отправить, или удалить. Добавление или удаление документов из таких черновиком заблокировано как в веб-интерфейсе Диадока, так и в API-методе PostDraft. Для создания нередактируемого черновика нужно в метод PostDraft передать параметр lock без значения.

v0.9 - 18.01.2012

  • Появились методы для управления списком своих контрагентов. Метод GetCounteragents позволяет получить список контрагентов, отфильтрованный по их статусу. Метод GetCounteragent позволяет получить информацию о контрагенте по его идентификатору. Метод AcquireCounteragent позволяет добавить организацию в список своих контрагентов. Метод BreakWithCounteragent позволяет исключить организацию из списка своих контрагентов.

  • Был переработан механизм получения справочной информации об организациях и ящиках в Диадоке. Методы GetBoxInfo и GetBoxesByInnKpp, а также метод GetBoxesByAuthToken объявлены устаревшими и не рекомендуются к использованию. Через некоторое время их поддержка будет прекращена. Вместо метода GetBoxesByAuthToken теперь нужно использовать метод GetMyOrganizations, позволяющий получить информацию обо всех организациях и ящиках, к которым имеет доступ владелец текущего атовризационного токена. Вместо метода GetBoxesByInnKpp теперь нужно использовать метод GetOrganizationsByInnKpp, позволяющий получить информацию о ящиках в Диадоке по ИНН и КПП организации. Наконец, на смену методу GetBoxInfo пришли методы GetOrganization и GetBox, позволяющие получить информацию соответственно о конкретных организации и ящике по их идентификаторам.

v0.8 - 16.12.2011

  • Появился метод GetDocuments, позволяющий быстро получать информацию о документах (например, о счетах-фактурах) в своем ящике, задавая различные критерии фильтрации документов. Также появился метод GetDocument, позволяющий получить всю метаинформацию об отдельном документе, зная его идентификатор.

  • Появилась возможность при помощи методов PostMessage и PostDraft загружать в Диадок новые типы докуметов, в частности, товарные накладные (ТОРГ-12) и запросы на инициацию канала обмена документами через Диадок TrustConnectionRequest.

  • Структура данных [Entity](Entity message) расширена полем DocumentInfo. Для сущности типа Attachment это поле содержит дополнительную информацию о документе, представляемом этой сущностью.

v0.7 - 03.10.2011 Появились методы Recognize и GetRecognized, позволяющие использовать Диадок для распознавания печатных форм счетов-фактур. Печатная форма подается на вход метода Recognize в формате XPS. В случае успешного распознавания на выходе метода GetRecognized получается XML-файл счета-фактуры в формате, удовлетворяющем требованиям ФНС и пригодном для отправки в соответствии с порядком, утвержденным Минфином РФ.

v0.6 - 26.08.2011 В патчи с уведомлениями о невозможности доставки (DFN), возникающими по причине невалидности подписей под передаваемыми документами, теперь добавляются так называемые протоколы проверки подписей в виде отдельных сущностей для каждой подписи. Эти сущности-протоколы имеют тип [Attachment/SignatureVerificationReport](Entity message) и привязываться к «своим» подписям при помощи поля Entity.ParentEntityId. Протоколы проверки формируются для всех подписей (как валидных, так и невалидных), поэтому чтобы понять, какие именно подписи были признаны недействительными, нужно анализировать содержимое соответствующих протоколов. Содержимое сущности-протокола (массив байтов Entity.Content.Data) представляет собой сериализованную в протобуфер структуру SignatureVerificationResult.

v0.5 - 15.08.2011 Появилась возможность запрашивать формирование ЭЦП под пересылаемыми данными "по доверенности". В этом случае изготавливать ЭЦП на клиенте не нужно (и значит, можно не устанавливать на рабочее место криптопровайдер), вместо этого формирование необходимой подписи будет произведено на сервере в момент доставки отправленного сообщения. Изменения отразились в структурах данных MessageToPost и MessagePatchToPost.

v0.4 - 08.07.2011 Появилась возможность формирования печатных форм различных документов (в частности, счетов фактур) при помощи метода GeneratePrintForm.

v0.3 - 17.06.2011

  • Появилась возможность связывать документы в разных сообщениях. Для организации такой связи вводится структура данных DocumentId, которую можно заполнить, например, в структуре XmlDocumentAttachment при отправке корректировочного счета-фактуры. DocumentId включает в себя два идентификатора: поле DocumentId.MessageId - это идентификатор сообщения, содержащего исходный документ; поле DocumentId.EntityId - это идентификатор сущности, представляющей исходный документ в этом сообщении.

  • Появилась возможность отправить через API отказ от запрошенной подписи. Для этого в структуре MessagePatchToPost появилось необязательное поле RequestedSignatureRejections.

  • Появилась возможность отслеживания отдельных документов при отправке их через черновики. Для этого метод PostDraft начал возвращать вместе с идентификатором черновика еще и идентификатор сущности, в которую превращается загруженный документ.

  • Уведомления о невозможности доставки теперь ссылаются на недоставленные куски сообщения. Для этого в структуре [Entity](Entity message) появилос необязательное поле NotDeliveredEventId. NotDeliveredEventId - это идентификатор сообщения или патча, который не удалось доставить (например, из-за некорректности одной или нескольких подписей в нем). Получить недоставленный кусок сообщения можно при помощи метода GetEvent, передав ему в качестве параметра eventId значение NotDeliveredEventId. Данное поле заполняется только у сущности типа Attachment с типом вложения DeliveryFailureNotification.

v0.2.2 - 15.04.2011 Справочные методы GetBoxInfo, GetBoxesByAuthToken и GetBoxesByInnKpp научились отдавать данные в формате XML.

v0.2.1 - 07.04.2011 Появилась возможность создавать черновики при помощи метода PostDraft.

v0.2 - 30.03.2011 Появилась возможность вести документооборот по счетам-фактурам в соответствии с порядком Минфина.

v0.1.1 - 18.02.2011

  • Появились методы для получения справочной информации GetBoxInfo и GetBoxesByInnKpp.

  • Появился метод для получения контента вложений по отдельности — GetEntityContent.

  • Метод GetMessage перестал отдавать весь тяжелый контент скопом (свыше 1Мб). Нужно учиться использовать метод GetEntityContent.

v0.1 - 09.12.2010 Первоначальный релиз интеграторского интерфейса.

HTTP API

История изменений Diadoc API Обзор возможностей API

Справочное руководство

Clone this wiki locally