Единичный (без состояния)
Информация о разделе
Страница содержит сценарии использования API, предусматривающие работу для единичных клиентов (одной организации). Такие клиенты не хранят информацию на своей стороне: работа происходит в режиме опроса — "тонкий клиент".
Добавление организации
Начните ведение документооборота с добавления организации. Для этого необходимо зарегистрировать нового абонента в системе Астрал.ЭДО. С его помощью можно получить идентификатор абонента и воспользоваться методами работы с ЭДО.
Для регистрации абонента необходимо выполнить ряд обязательных действий:
- [Обязательно] Создать заявку на подключение.
Для создания новой заявки, необходимо передать открытую часть ключа сертификата с помощью метода [POST]/api/v1/registration. В результате вернется подробная информация о созданной заявке на регистрацию.
- [Обязательно] Заполнить или обновить регистрационную заявку.
ВАЖНО: При заполнении идентификатора налогового органа вносите значение согласно списку доступных налоговых органов, зарегистрированных в системе Астрал.ЭДО. Получить список можно с помощью метода [GET]/api/v1/registration/tax-authoritу.Чтобы выбрать тарифный план и отправить заявку на обработку, необходимо заполнить ряд минимально требуемых реквизитов: юридический адрес организации, email и телефон. Заполнить новые или обновить текущие реквизиты заявки можно одним из следующих методов:
- Для добавления полей с удалением всех незаполненных значений: [PUT]/api/v1/registration/requests/{registrationRequestId};
- Для обновления полей с игнорированием незаполненных значений: [PATCH]/api/v1/registration/requests/{registrationRequestId}.
В результате вернется системное сообщение об успешном обновлении реквизитов.
[Обязательно] Выбрать или обновить тарифный план.
Чтобы завершить процесс создания заявки, необходимо выбрать тарифный план и указать его. Метод [PUT]/api/v1/registration/requests/{registrationRequestId}/tariff позволит обновить сведения о выбранном тарифе. В результате вернется системное сообщение об успешном обновлении тарифа в заявке.
Примечание — список доступных тарифов можно получить с помощью метода [GET]/api/v1/registration/tariffs, а также расширений [GET]/api/v1/registration/tariffs/extensions.
[Опционально] Удалить заявку.
Чтобы удалить созданную заявку, необходимо воспользоваться методом [DELETE]/api/v1/registration/requests/{registrationRequestId}.
ВАЖНО: Удалить заявку возможно только в статусе
New
илиRejected
. В случае попытки удаления заявки в любом другом статусе, система вернет сообщение об ошибке: “Невозможно удалить отправленную или принятую заявку на регистрацию”.Примечание — для получения актуального статуса можно воспользоваться методом [GET]/api/v1/registration/requests/{registrationRequestId}.
- [Обязательно] Отправить заявку на обработку.
С целью завершить регистрацию, необходимо отправить заявку на подключение в сервис Астрал.ЭДО с помощью метода [PUT]/api/v1/registration/requests/{registrationRequestId}/dispatch. В результате вернется системное сообщение об успешной отправке заявки.
Процесс регистрации на стороне клиента завершен. С отправленной заявкой можно выполнить следующие действия:
- [Опционально] Получить информацию по отправленной заявке.
Чтобы получить подробную информацию по заявке и узнать ее статус, необходимо воспользоваться методом [GET]/api/v1/registration/requests/{registrationRequestId}.
- [Опционально] Получить список отправленных заявок.
Для получения списка активных заявок на подключение можно воспользоваться методом [GET]/api/v1/registration/requests. В результате вернется список отправленных ранее заявок.
Получение идентификатора пользователя
Большинство методов API требуют идентификатор абонента, от имени которого выполняются действия в системе. Данный идентификатор записывается в Header
многих запросов (подробнее о структуре методов в документации или же в "Swagger" сервиса).
Для получения идентификатора абонента необходимо выполнить следующие шаги:
- [Обязательно] Получить список абонентов.
Для получения списка абонентов, к которым пользователь имеет доступ, необходимо выполнить метод API [GET]/api/v1/abonents. В результате вернется подробный список абонентов, с названиями организаций, идентификаторами и другой информацией. Для дальнейшей работы, в методы API необходимо будет прокидывать идентификатор абонента используя заголовки.
- [Опционально] Получить подробную информацию об абоненте.
В случае, если вам необходимо получить подробную информацию об абоненте (информация о лицензиях, адресах или сотродниках), вы можете воспользоваться методом API [GET]/api/v1/abonents/{abonentId}. В результате работы метода вернется полная информация по указанному идентификатору абонента.
Первичная установка связи
Перед тем, как начать обмен документами, необходимо настроить связь с контрагентом с помощью отправки приглашений. После настройки связи он появится в адресной книге абонента. Обмениваться документами можно только с контрагентами из адресной книги. Для настройки связи необходимо выполнить следующие шаги (они делятся по сторонам «Инициатор» и «Контрагент»).
Методы для инициатора
- [Опционально] Получить идентификатор участника ЭДО (ИдЭДО).
Необходимо найти идентификатор участника ЭДО (ИдЭДО) контрагента, используя метод API [GET]/api/v1/counterparties/globalIds (возможно наличие идентификаторов, в такой ситуации, необходимо уточнить верный идентификатор у вашего контрагента).
[Обязательно] Отправить приглашение контрагенту.
Для отправки приглашения необходимо воспользоваться методом API [POST]/api/v1/invitations используя идентификатор участника ЭДО (ИдЭДО). В результате успешного выполнения данного запроса будет возвращен идентификатор приглашения. Идентификатор необходим для получения подробной информации о приглашении.
Примечание — идентификатор ЭДО можно получить запросив его у контрагента напрямую, не используя метод поиска.
[Опционально] Проверить состояние отправленного приглашения.
Для определения состояния приглашения необходимо воспользоваться методом [GET]/api/v1/invitations/{invitationId}, используя ранее полученный идентификатор. Это позволит узнать характер ответа в случае получения его от контрагента. Для определения состояния обратите внимание на статус в ответе.
ВАЖНО: Если контрагент отклонил приглашение, его можно отправить повторно. Если контрагент добавил вас в черный список, отправить приглашение будет невозможно до тех пор, пока он не исключит вас из черного списка.
- [Опционально] Проверить адресную книгу.
Если получатель примет приглашение, то он автоматически появится в вашей адресной книге, посмотреть которую можно с помощью метода [GET]/api/v1/counterparties/contacts. Данный метод вернет вам информацию по контрагентам, с которыми налажена связь.
- [Опционально] Проверить список исходящих приглашений.
В случае, если вы отправили приглашения сразу нескольким контрагентам, возможно посмотреть все исходящие приглашения, вызвав метод [GET]/api/v1/invitations/outgoing. Обратите внимание, что в данный список попадают приглашения, статусы которых принимают одно из следующих значений:
Sent
,Rejected
илиDeferred
. Если ваше приглашение приняли, cтатус примет значениеAccept
, следовательно, оно не попадет в этот список.
Методы для получателя
[Обязательно] Запросить список входящих приглашений.
Другие контрагенты также могут отправлять приглашения. Для того чтобы узнать, есть ли у вас входящие приглашения, необходимо воспользоваться методом [GET]/api/v1/invitations/incoming. результате вернется список входящих приглашений (если они есть), на которые можно сформировать ответ (как принять, так и отклонить).
ВАЖНО: В списке выводятся приглашения только в статусе
Sent
.
[Обязательно] Принять или отклонить приглашение.
Заключительным шагом для установки связи с контрагентом является формирование ответа на приглашение. В данном случае есть два возможных варианта ответа:
- [PUT]/api/v1/invitations/{invitationId}/acceptance - метод позволяет принять приглашение и начать обмен документами. Приглашение перейдет в статус
Accept
; - [PUT]/api/v1/invitations/{invitationId}/rejection - метод позволяет отклонить приглашение, если вы считаете, что установка связи вам не требуется. Приглашение перейдет в статус
Rejected
.
ВАЖНО: Нельзя принять приглашение в статусе
Rejected
- "Отклонено". Если требуется установить связь после ее разрыва, необходимо снова воспользоваться методом отправки приглашения.- [PUT]/api/v1/invitations/{invitationId}/acceptance - метод позволяет принять приглашение и начать обмен документами. Приглашение перейдет в статус
Разрыв установленной связи (Любая сторона)
Даже после принятия приглашения, есть возможность разорвать существующую связь.
В случае, если вы не знаете идентификатор контакта, то можно воспользоваться следующим способом:
- [Обязательно] Получить идентификатор контакта.
Для получения вашей адресной книги и идентификатора контакта необходимо воспользоваться методом [GET]/api/v1/counterparties/contacts. Данный метод вернет вам информацию по контрагентам, с которыми уже налажена связь.
- [Обязательно] Выполнить удаление контакта по идентификатору.
После того как вы получили идентификатор контакта контрагента, с которым вы хотите разорвать связь, необходимо восползоваться методом для удаления контакта [DELETE]/api/v1/counterparties/contacts/{contactId}.
Импорт и отправка документа (Инициатор)
[Обязательно] Проимпортировать документ в систему.
Для импортирования документа в систему необходимо воспользоваться методом [POST]/api/v2/drafts. В результате выполнения будет создан черновик, и система вернет результат импорта с описанием.
ВАЖНО: Все формализованные документы после импорта в систему обновляются в автоматическом режиме. Это означает, что файл, загруженный в систему, будет автоматически изменен (будут подставлены актуальные данные оператора, отправителя и получателя).
Для того чтобы система не меняла содержимое формализованного документа необходимо воспользоваться методом [POST]/api/v2/drafts/withoutmodify. В результате выполнения будет создан черновик, и система вернет идентификатор черновика. В случае если данные из формализованного документа будут не валидны, система вернет ошибку с описанием.
[Опционально] Посмотреть информацию о созданном черновике.
После импорта черновика есть возможность посмотреть информацию о только что созданном черновике. Для этого необходимо воспользоваться методом [GET]/api/v1/drafts/{draftId}. В результате отобразится информация по ранее загруженному черновику.
- [Опционально] Посмотреть список черновиков.
После импорта черновика есть возможность посмотреть список всех импортированных (но не отправленных) черновиков в систему. Для этого необходимо воспользоваться методом [GET]/api/v1/drafts.
- [Опционально] Скачать файл из системы.
После импорта черновика есть возможность скачать ранее загруженный файл из хранилища (если система производила изменения, они уже будут внесены в файл). Для этого необходимо воспользоваться методом [GET]/api/v1/drafts/{draftId}/file.
- [Опционально] Удаление черновика.
Если отправлять загруженный ранее документ не требуется, можно удалить черновик из системы. Для этого необходимо воспользоваться методом [DELETE]/api/v1/drafts/{draftId}. В результате документ пропадет из списка черновиков.
[Обязательно] Обновить информацию о черновике.
В случае, если автоматически определить получателей не удалось, следует обновить информацию о получателях вручную, используя метод [PUT]/api/v1/drafts/{draftId}/metadata.
ВАЖНО: Если для неформализованного документа необходимо потребовать ответную подпись, то в предыдущий метод необходимо передать параметр
ResponseSignatureRequired = true
.ДОПОЛНИТЕЛЬНО: Если вы не планируете смотреть итоговый документ, то его можно сразу же отправить, передав в предыдущий метод параметр
ShouldSend = true
. Этот признак означает, что следующий условно-обязательный пункт "Выполнить отправку файла" выполнится автоматически сразу после обновления данных в черновике.
[Условно-Обязательно] Выполнить отправку файла.
В случае, если черновик находится в статусе «ReadyToSend», можно выполнить отправку документа контрагенту. Для этого необходимо воспользоваться методом [PUT]/api/v1/drafts/{draftId}/dispatch. В результате документооборот будет запущен в асинхронном режиме, а статус черновика будет изменен на
WaitingSignature
- "Ожидает подписи".Примечание — является условно-обязательным, так как документ может быть отправлен в предыдущем пункте.
[Обязательно] Запросить список входящих запросов на подпись.
В зависимости от ваших действий, вам будут поступать запросы на подпись. Одно из таких действий — отправка черновика. Черновик переходит в статус ожидания подписи, и система создает запрос на подпись документа. Для получения списка запросов на подпись необходимо воспользоваться методом [GET]/api/v1/cryptography/requests. Среди списка полученных запросов на подпись необходимо найти запрос с параметром
DocumentId == DraftId
. Этот запрос будет являться запросом на подпись ранее отправленного документа.Примечание — в запросе на подпись будет отсутствовать информация о документообороте и транзакции, так как на этапе подписи черновика документооборот еще не создан.
[Условно-Обязательно] Скачать документ для подписи.
В случае формализованного XML документа, он изменяется в процессе актуализации внутренних данных и потому его необходимо скачать воспользовавшись методом [GET]/api/v1/cryptography/requests/{requestId}/file. Неформализованные документы не подвергаются дополнительной обработке, а соответственно документ уже присутствует у вас в исходном виде и подписать можно именно его.
Примечание — является условно-обязательным, так как необходимости выполнять его для неформализованных документов нет.
- [Обязательно] Прикрепить подпись к запросу на подпись.
Для того, чтобы прикрепить подпись к документу, необходимо использовать метод [POST]/api/v1/cryptography/requests/{requestId}/sign. В результате выполнения метода подпись будет прикреплена к документу, и он будет отправлен. Отправленный документ будет удален из списка черновиков и перемещен в исходящий документооборот.
- [Опционально] Посмотреть список исходящих документооборотов.
После отправки документа, будет создана запись о документообороте в списке исходящих документов. Для просмотра данного списка необходимо воспользоваться методом [GET]/api/v1/docflows/outgoing.
Альтернативные методы
Вариант 1
[Обязательно] Прикрепить подпись к документу черновика.
Система так же готова принимать подпись к сформированному черновику через метод [POST]/api/v2/drafts/{draftId}/sign. В результате выполнения будет ответ, что подпись прикреплена и валидна. Иначе будет описанна причина не возможности прикрепления подписи к файлу черновика.
[Обязательно] Выполнить отправку документа для старта документооборота [POST]/api/v2/drafts/{draftId}/dispatch.
В результате выполнения будет ответ со списокм идентификаторов нового документооборота и их получателей.
Вариант 2
- [Обязательно] Сформировать готовый пакет к отправке.
Система так же готова принимать готовый пакет для формирования нового документооборота. Для этого необходимо восползоваться методом [POST]/api/v2/docflows/{draftId}/dispatch. В случае импорта НЕформализованного документа необходимо в теле запроса указать список идентификаторов получателей и при необходимости указать флаг о том, что требуется ответная подпись от получателя документа. Во всех остальных случаях достаточно указать валидный документ и актуальную открепленную подпись. Размер импортируемого документа не должен превышать объема 60 мб. В случае если документ не валиден, указаны получатели с которыми не осуществлена связь или информация отправителя не соответстует информации хранящейся в системе будет возвращена модель с описанием ошибки отправки.
Вариант 3
[Обязательно] Отправить подписанный документ (документ+подпись).
Для того чтобы отправить подписанный документ (документ и подпись в одном контейнере) необходимо отправить запрос [POST]/api/v2/docflows для создания документооборота. В заголовке запроса указывается внутренний идентификатор абонента. В теле запроса передается информация о документе, который необходимо отправить, а также файл подписи к этому документу. В случае успешного создания документооборота (200) возвращается список с информацией о созданном документообороте.
[Опционально] Для неформализованного документооборота можно добавить флаг ResponseSignatureRequired, который указывает на необходимость ответной подписи.
[Опционально] По умолчанию созданный черновик для отправки документа доступен для редактирования, но если необходимо ограничить доступ только на чтение, можно указать параметр IsReadOnly со значением true.
Прием входящего документа (Получатель)
- [Обязательно] Посмотреть список входящих документооборотов.
Для получения списка входящих документооборотов и их статусов необходимо воспользоваться методом [GET]/api/v1/docflows/incoming. В результате будет возвращен список документооборотов, соответствующих указанным фильтрам. Для получения актуальных документооборотов необходимо применить фильтрацию по дате создания ДО и/или по флагу "Просмотрено" -
IsViewed
.
- [Опционально] Отметить документообороты как просмотренные.
В случае пользования системой "просмотрено/не просмотрено", возможно отметить определенные ДО как просмотренные. Для этого необходимо воспользоваться методом [PUT]/api/v1/docflows/{docflowId}/viewed.
Действия с документооборотом (Любая сторона)
- [Обязательно] Получить информацию о возможных действиях над документооборотом.
Чтобы узнать, какие действия можно выполнить над документооборотом, необходимо воспользоваться методом [GET]/api/v1/docflows/{docflowId}/actions. В результате вернется список доступных действий с документооборотом.
- [Опционально] Получить полную информацию по документообороту.
Для того, чтобы получить полную информацию по документообороту и список возможных действий, необходимо воспользоваться методом [GET]/api/v1/docflows/{docflowId}.
Для того, чтобы получить архив с документами в рамках указанного документооборота, необходимо воспользоваться методом [GET]/api/v1/docflows/{docflowId}/documents/files.
- [Опционально] Получить документ из документооборота.
Для того, чтобы получить документ из документооборота, необходимо воспользоваться методом [GET]/api/v1/docflows/documents/{documentId}.
Помимо этого есть возможность посмотреть информацию о транзакциях документооборота используя, метод [GET]/api/v1/docflows/{docflowId}/transactions.
А так же есть возможность полуить печатный вид документа, метод [GET]/api/v1/docflows/documents/{documentId}/visualization.
[Условно-Обязательно] Выполнить действие в зависимости от ситуации.
После получения информации о возможных действиях над документооборотом, их можно выполнить с помощью следующих методов:
- [PUT]/api/v1/docflows/{docflowId}/actions/sign - принять документ (подписать документ);
- [PUT]/api/v1/docflows/{docflowId}/actions/rejection - отклонить документ;
- [PUT]/api/v1/docflows/{docflowId}/actions/cancellation/request - запросить анулирование документа;
- [PUT]/api/v1/docflows/{docflowId}/actions/cancellation/approval - подтвердить запрос на анулирование;
- [PUT]/api/v1/docflows/{docflowId}/actions/cancellation/rejection - отклонить запрос на анулирование документа.
Примечание — является условно-обязательным, так как полностью зависит от статуса документооборота и от наличия необходимых транзакций.
[Условно-Обязательно] Получить список запросов на подпись.
Документы, требующие подпись, находятся в списке запросов на подпись. Для получения запроса на подпись необходимо воспользоваться методом [GET]/api/v1/cryptography/requests. В результате вернется список запросов на подпись с информацией о документообороте, транзакции и документе.
Примечание — является условно-обязательным, так как полностью зависит от типа документооборота и выполненных действий (например формирование ответного титула).
[Условно-Обязательно] Скачать документ для подписи.
Для выполнения подписи сформированного документа (например ответного титула), его необходимо скачать с помощью следующего метода [GET]/api/v1/cryptography/requests/{requestId}/file. После скачивания документа его необходимо подписать.
Примечание — является условно-обязательным, так как полностью зависит от типа документооборота и выполненных действий (например формирование ответного титула).
[Условно-Обязательно] Прикрепить подпись к запросу на подпись.
Ранее вы уже использовали идентификатор запроса на подпись (RequestId), для того, чтобы скачать актуальную версию документа на подпись. Далее следует прикрепить подпись к документу используя следующий метод [POST]/api/v1/cryptography/requests/{requestId}/sign. В результате выполнения метода, подпись будет прикреплена к документу и выполнение документооборота продолжиться.
ВАЖНО: Каждый раз когда документ будет требовать подписи, в данный список будет добавлять новый запрос на подпись.