Перейти к содержанию
+7 (495) 991 35 10 info@encode.one
Скачать в PDF

Обмен по 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 должен использоваться следующий заголовок:

{
    ...
    "content-type": "application/json"
    ...
}

Создание задачи на L2 из L3

  • Начать необходимо с получения используемой конфигурации в API со следующим телом запроса:
GET /api/v1/configs/get-all

В качестве примера, ответ будет следующим:

[
    {
        "id": 1,
        "name": "Line 1",
        "host": "localhost",
        "port": 5445,
        "user": "postgres",
        "database": "ETL",
        "password": "postgres",
        "dialect": "postgres",
        "logging": false
    }
]

Используем полученную конфигурацию с id 1.

  • Необходимо отправить запрос на создание задачи со следующим телом запроса:
POST /api/v1/tasks/create

и следующее содержание в запросе.

Пример:

{
    //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" для уточнения статуса транзакции.

  • Далее, статус транзакции запрашивается в виде:
GET /api/v1/transactions/get-one?uuid=a0895541-1d98-4f14-9e75-ec960833e32b

Ответ:

{
    "uuid": 'a0895541-1d98-4f14-9e75-ec960833e32b',
    "method": '/tasks/create',
    "status": 'Success',
    "description": 'Задание 88fe2774-6512-4537-b3df-f4a158b50e43 добавлено на линию 1'
}

Статусы транзакций могут быть трех видов: "Success", "Error", "In progress".

Создание отчета о задаче

  • Следующим шагом, нужно получить готовые задания для отчетности.

Для этого используем следующий запрос:

GET /api/v1/task-reports/get-ready-tasks

Если у L2 нет этих задач, то получаем такой ответ:

[]

В иных случаях, ответ будет таким:

[
    {
        "config_id": 1,
        "document_id": "ec669d35-2f90-11ef-a40f-0800270ad510"
    }
]
  • Теперь, мы получили ответ о интересующий нас задаче.

Далее, используем запрос на создание отчета по этой задаче.

POST     /api/v1/task-reports/create-report

Пишем запрос следующего содержания:

{
    "config_id": 1,
    "document_id": "ec669d35-2f90-11ef-a40f-0800270ad510"
}

И получаем следующий ответ:

{
    "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" можем получить отчет.

  • Для получения отчета, используем следующий запрос:
GET /api/v1/task-reports/get-report?transaction_uuid=3702fe88-2ff7-43bb-9e1f-acb3809c29cc

Если отчет создан, ответ будет следующим:

{
    "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
        }
    ]
}
  • Теперь, если отчет верный, необходимо отправить запрос на подтверждение отчета:
PATCH /api/v1/task-reports/confirm-report?transaction_uuid=3702fe88-2ff7-43bb-9e1f-acb3809c29cc

В итоге, успешный ответ системы будет следующим:

"Задание ec669d35-2f90-11ef-a40f-0800270ad510 завершено."