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

Документ - это базовая модель по работе с различными бизнес-процессами.

Базовая структура документа#

Документы содержат общую базовую структуру и имеют набор стандартных полей:

ПолеТипОписание
document_idUUIDИдентификатор документа в системе MarkingHub
statusstringСм. справочник "Статусы документов".
external_idstringИдентификатор документа во внешней системе (СУЗ, ГИСМТ и т.п.)
external_statusstringСтатус документа во внешней системе (СУЗ, ГИСМТ и т.п.)
directionstringСм. справочник "Направления документов".
createddatetimeДата создание документа в системе MarkingHub
product_groupstringСм. справочник "Товарные группы".
stockstringИдентификатор склада в системе MarkingHub
doctypestringТип документа в системе MarkingHub
dataobjectОбъект которые содержит основной атрибутивный состав документа. Зависит от типа документа.
extraobjectОбъект которые содержит произваольные данные которые можно использовать при интеграции.
childrenarrayМассив позиций документа.
children_generatorarrayПараметры для автозаполнения позиций.

Методы API по процессам#

Для каждого типа документа есть свои урлы с общим набором методов.

МетодURLОписание
GET/bp/processes/{process_name}/Список документов
POST/bp/processes/{process_name}/Создание нового документа
POST/bp/processes/{process_name}/execute/Отправка документов на обработку
POST/bp/processes/{process_name}/fetch_update/Обновление статуса документов из внешней системы (СУЗ, ГИСМТ, НК и тд)
POST/bp/processes/{process_name}/load_file/Импорт нового документа из CSV или XLSX
GET/bp/processes/{process_name}/{document_id}/Получение одного документа по ID
PATCH/bp/processes/{process_name}/{document_id}/Изменение документа
DELETE/bp/processes/{process_name}/{document_id}/Удаление документа
POST/bp/processes/{process_name}/{document_id}/renew/Сброс документа до состояния "Черновик"
GET/bp/processes/{process_name}/{document_id}/children/Список позиций документа
POST/bp/processes/{process_name}/{document_id}/children/create/Создание новой позиции документа
GET/bp/processes/{process_name}/{document_id}/children/{child_id}/Получение одной позиции по ID
DELETE/bp/processes/{process_name}/{document_id}/children/{child_id}/Удаление одной позиции по ID

Методы API без привязки к процессам#

Если нужно делать выборки или манипуляции по документам без привязки к определенному процессу, есть следующие запросы:

МетодURLОписание
GET/bp/document/document/Список все документов. Подробнее в Swagger
POST/bp/document/search/Поиск документов с помощью MHQL. Подробнее в Swagger
GET/bp/document/document/{document_id}/Получение одного документа по ID. Подробнее в Swagger
DELETE/bp/document/document/{document_id}/Удаление одного документа по ID. Подробнее в Swagger

Обработка документов#

Документы подразумевают что они должны быть обработаны. В зависимости от типа документа, обработка происходит на различных уровнях:

  • Обработка внутри системы (Запросы на печать, перемещение между складами)
  • Обработка через СУЗ (Заказы на эмиссию)
  • Обработка через ГИС МТ (Ввод в оборот, Отгрузка, Приемка, Агрегация и т.д.)

Отправить документ на обработку можно только в статусе Черновик.

После отправки документа на обработку, документ переходит в статус В обработке, и находится в этом статусе до перехода в статусы Обработан или Ошибка