Метод PATCH /v1/connector/{id_connector}/configuration-metadata
Краткое описание
Частично обновляет существующие метаданные конфигурации 1С для указанного коннектора. Позволяет обновить только те типы метаданных (справочники, документы, перечисления и т.д.), которые уже существуют. Требуется аутентификация (Depends(check_login_pass)).
Входные параметры
Параметры пути (обязательные):
id_connector(string, IDConnectorPath)Уникальный идентификатор коннектора
Коннектор должен существовать в системе
Тело запроса (JSON) — схема: ConfigurationMetadataUpdateSchema
data(object, обязательный)Словарь метаданных для обновления
Ключ:
type(тип метаданных)Значение: данные метаданных (любая JSON структура)
Пример:
{ "catalogs": { "Товары": {...}, "Контрагенты": {...} }, "documents": { "Счета-фактуры": {...} } }
Заголовки:
Content-Type:application/jsonAuthorization(опционально) — токен аутентификации
Алгоритм работы метода
ЭТАП 1: Парсинг параметра пути
Извлекается
id_connectorиз URL
ЭТАП 2: Валидация тела запроса
Тело запроса валидируется по схеме
ConfigurationMetadataUpdateSchemaЕсли валидация не пройдена — возвращается HTTP 400
ЭТАП 3: Формирование SQL запроса
Создаётся SELECT для поиска существующих метаданных:
SELECT * FROM ConfigurationMetadataEntity WHERE id_connector = {id_connector} AND type IN ({entity_types})entity_types— список типов из переданных данных
ЭТАП 4: Выполнение запроса поиска
db_session.exec(stmt).all()— получаются все совпадающие записиПреобразуются в словарь: {type: entity, ...}
ЭТАП 5: Проверка существования
Если ни один тип не найден в БД — возвращается HTTP 404 Not Found
Ошибка:
Configuration metadata entities not found
ЭТАП 6: Обновление существующих типов
Для каждого типа из передаваемых данных:
Если тип существует в БД (в db_entities):
Обновляется поле
dataс новыми значениямиОбновляется поле
ecc_dt = datetime.now()Добавляется в
response_entities(для ответа)Если тип НЕ существует в БД:
Добавляется в
failed_typesс сообщениемEntity not foundНЕ создаётся новая запись (используйте PUT для создания)
ЭТАП 7: Сохранение изменений
db_session.add(db_entity) — добавляет обновлённые записи в сессию db_session.commit() — фиксирует все изменения в БД атомарно
ЭТАП 8: Возврат результата
Возвращается объект
ConfigurationMetadataUpdateResponseSchemaСодержит:
id_connector— переданный идентификаторdata— словарь успешно обновленных типовfailed_types— словарь типов, которые не удалось обновить (не найдены)
Успешный ответ (200 OK)
Формат:
JSON, схемаConfigurationMetadataUpdateResponseSchema