Обмен по HTTP
Основные методы
Метод | URL |
---|---|
GET | /api/v1/configs/get-all |
POST | /api/v1/tasks/create |
GET | /api/v1/transactions/get-one |
GET | /api/v1/task-reports/get-ready-tasks |
POST | /api/v1/task-reports/create-report |
GET | /api/v1/task-reports/get-report |
PATCH | /api/v1/task-reports/confirm-report |
Для работы с нашим API должен использоваться следующий заголовок:
Создание задачи на L2 из L3
- Начать необходимо с получения используемой конфигурации в API со следующим телом запроса:
В качестве примера, ответ будет следующим:
[
{
"id": 1,
"name": "Line 1",
"host": "localhost",
"port": 5445,
"user": "postgres",
"database": "ETL",
"password": "postgres",
"dialect": "postgres",
"logging": false
}
]
Используем полученную конфигурацию с id 1.
- Необходимо отправить запрос на создание задачи со следующим телом запроса:
и следующее содержание в запросе.
Пример:
{
//Data Types: String, REQUIRED IN STRUCTURE
"config_id": 1,
//Data Types: Object, REQUIRED IN STRUCTURE
"document": {
//Data Types: String, REQUIRED IN STRUCTURE
"document_type": "IN_MARK",
//Data Types: Object, REQUIRED IN STRUCTURE
"parameters_document": {
//Data Types: String, REQUIRED IN STRUCTURE
"document_id": '88fe2774-6512-4537-b3df-f4a158b50e43',
//Data Types: String, REQUIRED IN STRUCTURE
"organization_name": "ООО \"Энкод\"", // Наименование организации
//Data Types: String, REQUIRED IN STRUCTURE
"organization_inn": "1234567890", // ИНН организации
//Data Types: String, REQUIRED IN STRUCTURE
"product_name": "Тестовый продукт", // Наименование продукции
//Data Types: String, REQUIRED IN STRUCTURE
"product_gtin": "42842838617575", // GTIN продукции
//Data Types: String, Date format: DD.MM.YYYY, REQUIRED IN STRUCTURE
"product_expiration_date": "17.03.2025", // Срок годности
//Data Types: String, Date format: DD.MM.YYYY, REQUIRED IN STRUCTURE
"product_production_date": "10.03.2025", // Дата производства
//Data Types: String, REQUIRED IN STRUCTURE
"batch": "10000", // Номер задания
//Data Types: String, REQUIRED IN STRUCTURE
"lot": "10000", // Номер партии
//Data Types: Integer, REQUIRED IN STRUCTURE
"count_level_0": 1, // Количество кодов потребительских упаковок
//Data Types: Integer, REQUIRED IN STRUCTURE
"count_level_1": 0, // Количество кодов коробов
//Data Types: Integer, REQUIRED IN STRUCTURE
"count_level_2": 0, // Количество кодов паллет
//Data Types: Integer, REQUIRED IN STRUCTURE
"in_count_level_1": 0, // Количество кодов в составе короба
//Data Types: Integer, REQUIRED IN STRUCTURE
"in_count_level_2": 0, // Количество кодов в составе паллеты
//Data Types: Boolean, REQUIRED IN STRUCTURE
"printing_house": false, // Это типография. Да/Нет?
//Data Types: Array of objects, REQUIRED IN STRUCTURE
"set_content": [ // Состав набора
{
//Data Types: String
"GTIN": "04620131970032", // GTIN продукта 14-значный в наборе
//Data Types: String
"product_name": "Сыр Чедер - ЭНКОД ТЕХНО", // Наименование
//Data Types: Integer
"quantity_in_set": 2 // Количество продукта в рамках набора
},
{
//Data Types: String
"GTIN": "04620131970100", // GTIN продукта в наборе
//Data Types: String
"product_name": "Молоко 3,8% - ЭНКОД ТЕХНО", // Наименование
//Data Types: Integer
"quantity_in_set": 2 // Количество продукта в рамках набора
}
],
//Data Types: String, REQUIRED IN STRUCTURE
"presentation_name": "Тестовый продукт для Вас" // Представление
},
//Data Types: Array of objects, REQUIRED IN STRUCTURE
"parameters_product": [
{
//Data Types: Integer
"parameter_product_id": 1,
//Data Types: String
"paramName": "Вид_товара_Артрибут12gr103",
//Атрибут принадлежности к национальному каталогу
//Data Types: String
"paramValue": "ГЕЛЬ",
//Data Types: String
"category": "Потребительские свойства",
//Data Types: String
"subcategory": "Вид товара"
}
],
//Data Types: Array of objects, REQUIRED IN STRUCTURE
"codes": [
{
//Data Types: Real or Float
"aggregation_level": 0, // Уровень агрегации (0, 0.5 (набор), 1, 2)
//Data Types: String, Date Format: DD.MM.YYYY HH:mm:ss
"expiration_date": "17.03.2025 00:10:34", // Срок годности кода
//Data Types: String
"code": "0142842838617575215b38c7\u001d93624a" // Код
}
]
}
}
Минимальная требуемая структура:
{
//Data Types: String
"config_id": 1,
//Data Types: Object
"document": {
//Data Types: String
"document_type": "IN_MARK",
//Data Types: Object
"parameters_document": {
//Data Types: String
"document_id": '88fe2774-6512-4537-b3df-f4a158b50e43',
//Data Types: String
"organization_name": "ООО \"Энкод\"",
//Data Types: String
"organization_inn": "1234567890",
//Data Types: String
"product_name": "Тестовый продукт",
//Data Types: String
"product_gtin": "42842838617575",
//Data Types: String, Date format: DD.MM.YYYY
"product_expiration_date": "17.03.2025",
//Data Types: String, Date format: DD.MM.YYYY
"product_production_date": "10.03.2025",
//Data Types: String
"batch": "10000",
//Data Types: String
"lot": "10000",
//Data Types: Integer
"count_level_0": 1,
//Data Types: Integer
"count_level_1": 0,
//Data Types: Integer
"count_level_2": 0,
//Data Types: Integer
"in_count_level_1": 0,
//Data Types: Integer
"in_count_level_2": 0,
//Data Types: Boolean
"printing_house": false,
//Data Types: Array of objects
"set_content": [],
//Data Types: String
"presentation_name": "Тестовый продукт для Вас"
},
//Data Types: Array of objects
"parameters_product": [],
//Data Types: Array of objects
"codes": []
}
}
Ответ после запроса, сделанного выше должен быть таким:
{
"date": '19.03.2025 11:12:59:524',
"status": 'OK',
"description": 'Задание принято для добавления на Line 1. ',
"document_id": '88fe2774-6512-4537-b3df-f4a158b50e43',
"transaction_uuid": 'a0895541-1d98-4f14-9e75-ec960833e32b'
}
Запрос поставлен в очередь на обработку.
Получены данные из значения "transaction_uuid" для уточнения статуса транзакции.
- Далее, статус транзакции запрашивается в виде:
Ответ:
{
"uuid": 'a0895541-1d98-4f14-9e75-ec960833e32b',
"method": '/tasks/create',
"status": 'Success',
"description": 'Задание 88fe2774-6512-4537-b3df-f4a158b50e43 добавлено на линию 1'
}
Статусы транзакций могут быть трех видов: "Success", "Error", "In progress".
Создание отчета о задаче
- Следующим шагом, нужно получить готовые задания для отчетности.
Для этого используем следующий запрос:
Если у L2 нет этих задач, то получаем такой ответ:
В иных случаях, ответ будет таким:
- Теперь, мы получили ответ о интересующий нас задаче.
Далее, используем запрос на создание отчета по этой задаче.
Пишем запрос следующего содержания:
И получаем следующий ответ:
{
"date": "19.03.2025 14:02:30:480",
"status": "OK",
"description": "Создание отчёта добавлено в очередь. Получить его можно будет по transaction_uuid",
"document_id": "ec669d35-2f90-11ef-a40f-0800270ad510",
"transaction_uuid": "3702fe88-2ff7-43bb-9e1f-acb3809c29cc"
}
Теперь с "transaction_uuid" можем получить отчет.
- Для получения отчета, используем следующий запрос:
Если отчет создан, ответ будет следующим:
{
"document_id": "ec669d35-2f90-11ef-a40f-0800270ad510",
"report": [
{
"code": "252571239410019128", // Код
"code_weight": 0, // Масса продукции связанная с кодом
"aggregation_level": 2, // Уровень агрегации
"code_item_to": [ // Коды внутри этого агрегата
{
"code": "152571239410010890",
"code_weight": 0
},
{
"code": "152571239410010883",
"code_weight": 0
}
]
},
{
"code": "152571239410010890",
"code_weight": 0,
"aggregation_level": 1,
"code_item_to": [
{
"code": "0104607971454762215aLlg;936lHl",
"code_weight": null
},
{
"code": "0104607971454762215AlQh893QUKd",
"code_weight": null
}
]
},
{
"code": "152571239410010883",
"code_weight": 0,
"aggregation_level": 1,
"code_item_to": [
{
"code": "0104607971454762215a1WKT93TlJj",
"code_weight": null
},
{
"code": "0104607971454762215a2&oc93Vvr8",
"code_weight": null
}
]
},
{
"code": "0104607971454762215aLlg;936lHl",
"code_weight": null,
"aggregation_level": 0
},
{
"code": "0104607971454762215AlQh893QUKd",
"code_weight": null,
"aggregation_level": 0
},
{
"code": "0104607971454762215a1WKT93TlJj",
"code_weight": null,
"aggregation_level": 0
},
{
"code": "0104607971454762215a2&oc93Vvr8",
"code_weight": null,
"aggregation_level": 0
}
]
}
- Теперь, если отчет верный, необходимо отправить запрос на подтверждение отчета:
В итоге, успешный ответ системы будет следующим: