Метод PATCH /api/v1/connector/{id_connector}/configuration-metadata/{configuration_metadata_type}

Краткое описание

  • Частичная/полная замена поля data существующей записи метаданных конфигурации 1С.

  • Требует, чтобы запись (id_connector + type) уже существовала — иначе возвращает 404.

  • Принимает данные потоково и поддерживает gzip.

Параметры пути

  • id_connector (string, обяз.) — идентификатор коннектора.

  • configuration_metadata_type (enum, обяз.) — тип метаданных (значения из ConfigurationMetadataType).

Заголовки

  • Content-Encoding: gzip (опционально) — указывайте, если тело запроса сжато gzip.

  • Content-Type: application/octet-stream или подходящий для бинарного потока.

Тело запроса

  • Поток бинарных данных (обычно JSON). Данные отправляются по частям (streaming). Если Content-Encoding: gzip — сервер распакует на лету.

Алгоритм работы метода

Что делает эндпоинт:

  • Проверяет валидность configuration_metadata_type (выполнит 400 при неверном значении).

  • Подключается к БД и ищет запись WHERE id_connector = .. AND type = ..:

    • Если запись не найдена — возвращает 404 с описанием.

  • Создаёт временную таблицу cm_tmp_data (data json) ON COMMIT DROP.

  • По механизму COPY FROM STDIN записывает поток запроса во временную таблицу (экранирует кавычки для CSV).

    • При gzip — распаковывает чанки через zlib.decompressobj(16 + zlib.MAX_WBITS).

  • Выполняет UPDATE configuration_metadata_entity SET data = s.data, ecc_dt = now() FROM cm_tmp_data s WHERE id = target_id.

  • Коммитит транзакцию и возвращает результат с id записи.

Успешный ответ (200)

JSON CommonResponse вида:

{ "success": true, "message": "Entity updated successfully.", "data": { "id_configuration_metadata_entity": "<uuid>" } }