Описание методов API сервиса ЭДО.МИГ24

Тестовая среда - https://test-edo.ntssoft.ru/ Продуктовая среда - https://edo.mig24.online/
Запрос вашего код авторизации АПИ - info@mig24.ru
Telegram поддержки https://t.me/NTSsupport

Тестовый Swagger
https://test-edo.ntssoft.ru/api-docs
Продуктовый Swagger
https://edo.mig24.online/api-docs

Авторизация

Для доступа к сервису необходимо указать следующий заголовок:
Authorization: Bearer <token>
Токен для авторизации однозначно связан с организацией - Абонентом ЭДО.МИГ24. Для каждого Абонента необходимо получение своего токена.

Запросить token можно через info@mig24.ru или в Telegram https://t.me/NTSsupport
Предоставление доступа к тестовой среде - бесплатно на 30 дней.
Предоставление доступа к продуктовой среде осуществляется на платной основе. При окончании оплаченного срока (или тестового периода) доступа авторизация возвращает ошибку: "Оплаченный срок доступа истек".

Базовый сценарий работы

swagger

  1. Загружаем необходимые для отправки документы (неформализованные - файлом через - /api/v1/documents/{DocumentId}/informal, формализованные УПД через json - /api/v1/documents/upd.
  2. Создаем для загруженных файлов ПАКЕТ методом - /api/v1/package-groups, указывая код абонента получателя документов.
  3. Подписываем документы:
  • Пользовательским сертификатом:
Запрашиваем хеши документов пакета для подписания, передавая сертификат подписанта - /api/v1/sign/package-group/prepare, подписываем хеши на клиенте и завершаем подписание методом - /api/v1/sign/package-group/finish

  • Серверным сертификатом, указав UserId сотрудника, чей сертификат хранится на сервере - /api/v1/sign/package-group/

  • Отправляем ссылку на подписание нужному сотруднику, указав идентификатор сотрудника, кто будет подписывать документы - /api/v1/sign/package-group/.

Идентификатор Абонента можно получить методом ZZZ или указать свой.
Идентификатор Сотрудника можно получить методом /{orgId}/users

После подписания документов сервис автоматически проверит наличие связи с указанным Абонентом, если ее нет - сервис автоматически высылает приглашение. При наличии установленной связи документ автоматически отправляется получателю.

Для отслеживания статусов обработки пакета используется асинхронный метод - /api/v1/packages/{id}/status/async

Работа с документами

Загрузка неформализованного документа -/api/v1/documents/{DocumentId}/informal
DocumentId - guid документа, присваивается пользователем самостоятельно

Загрузка формализованного документа УПД (через json) - /api/v1/documents/upd.

Загрузка документа с автоматическим определением типа - -/api/v1/documents/{id}
Позволяет загрузить, например, готовый xml УПД

Получение списка документов, загруженных и хранящихся в сервисе авторизовавшимся пользователем - /api/v1/documents

"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"signatureIds": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"creationDateTime": "2024-06-20T13:59:42.197Z"

Возвращается массив сведений. Для каждого файла:
"Id": - id файла в сервисе
"ContentType": - тип файла(null, text/xml, application/pdf, application/octet-stream)
"Name": - название файла
"CreationDateTime": - дата время загрузки файла в сервис

Получение файла из сервиса - /api/v1/documents/{id}/file

Получение сведений о документе - /api/v1/documents/{id}
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"signatureIds": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"creationDateTime": "2024-06-20T14:02:07.536Z"
}

"Id": - id файла в сервисе
"ContentType": - тип файла(null, text/xml, application/pdf, application/octet-stream)
"Name": - название файла
"RegId": null ??
"Size": размер в байтах
"Sha1": "4C09CC37B09F988F60D58A127B759F741A3DB6F5" ??


Создаем группу документов package-groups
packageGroupId
documents
recipientAbonentCode

Подготовка к подписанию группы пакетов

sign/package-group/prepare

с параметрами:

packageGroupId
token
certificate

4. Отправляем подписанный хэш
sign/package-group/finish

с параметрам:

token
files
packageGroupId
mchdInfoId


Работа с пакетами документов

swagger

Создаем группу пакетов документов -/api/v1/package-groups

packageGroupId
documents
recipientAbonentCode

Создать пакеты в группе пакетов - /api/v1/package-groups/{id}/packages

Обновить группу пакетов - /api/v1/package-groups/{id}

Получить информацию о группе пакетов - /api/v1/package-groups/{id}/info

Получить информацию о пакете - /api/v1/packages/{id}/info

Скачать файлы пакета - /api/v1/packages/{id}/files

Запросить текущий статус пакета асинхронно - /api/v1/packages/{id}/status/async

DELETE /api/v1/package-groups/{id}

Подписание документов

swagger

Подготовка к подписанию группы пакетов - получение хэшей документов - /api/v1/sign/package-group/prepare

Финальный метод подписания группы пакета - формирование подписей документов - /api/v1/sign/package-group/finish

Подписать группу пакетов серверным сертификатом по идентификатору сотрудника - /api/v1/sign/package-group/user

Подписать группу пакетов серверным сертификатом по имени контейнера - /api/v1/sign/package-group

Списки контрагентов

swagger

Для того, чтобы можно было обмениваться документами, необходимо установить "дружбу".
Для этого сторонами высылаются приглашения, которые могут быть в сервисе в разных статусах:
New - приглашение сформировано, не отправлено/ Sent - приглашение отправлено / Delivered - приглашение доставлено / Accepted - приглашение принято / Rejected - приглашение отклонено.

Получить все входящих приглашения - /api/v1/counteragent-requests/inbox
Ответом является массив данных, содержащих информацию из приглашений: Id Абонентов, названия, ИНН, КПП сторон, комментарии, статус и его дата.

Получить все исходящие приглашения - /api/v1/counteragent-requests/outbox
Ответом является массив данных, содержащих информацию из приглашений: Id Абонентов, названия, ИНН, КПП сторон, комментарии, статус и его дата.

Получить список всех контрагентов (дружба) - /api/v1/counteragents
Ответом является массив данных, содержащих список контрагентов, с которыми успешно завершен обмен приглашениями (IDАбонента, название, ИНН, КПП, дата. idКонтрагента в сервисе)

Получение события успешного добавления контрагента (успешный обмен приглашениями) и отказа принять приглашение (или разрыв существующей связи) осуществляется через сервис очередей RabbitMQ
В данных присутствует OrgId Code Name Inn Kpp


Сотрудники

swagger

Получить информацию /{orgId}/users?page=&limit=
page - номер страницы (1 по умолчанию), limit - размер страницы (25 по умолчанию)

{ "meta": { "totalCount": 1, "currentPage": 1, "limit": 25 }, "data": [ { "userId": "guid" "name": "фио", "certContainerName": "название контейнера серта", "position": "должность" } ] }

GET /api/v1/orgs/{orgId}/users/{userId}


"userId": "b25fb305-e1ca-480e-89bc-27ee31ed5d65", "snils": "15989387255", "organizationId": "95e84dfb-0ca7-4511-b33a-14cd3bc8364c", "isAdmin": true, "canCreateDocs": false, "canDeleteAndRestoreDocs": false, "canSignDocs": false, "canAgreeDocs": false, "canSignDocsByAnotherUser": false, "isRequireAuthenticationForFileAccess": true, "isRequireSameOrganizationForFileAccess": true, "canEditContractors": false, "mchdInfoId": null, "certContainerName": null, "position": null


Сервисные функции

swagger

Получить информацию об операторах, с которыми установлена роуминговая связь - /api/v1/operators
Массив сведений об операторах:
"code", "companyName", "productName", "inn", "kpp"

Очередь обмена сообщениями

swagger

Общее описание работы