#Что означает проблема и как её распознать
HTTP 409 Conflict при одновременном изменении одного файла через API означает конфликт с текущим состоянием ресурса. В отличие от универсальной ошибки сервера, он требует согласования версий или правил блокировки, а не простого увеличения числа повторов.
#Основные причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Два клиента меняют один файлПри сохранении второго изменения сервер обнаруживает конфликт. | Один участник успел записать новую версию раньше другого. | Перезагрузить текущую версию и объединить изменения. |
| Занят замок или нарушена структура папокAPI/WebDAV требуют владения блокировкой либо существования родительского каталога. | 409 возникает и без другого редактора, но при определённой операции. | Проверить правила блокировок и целевой путь. |
| Клиент не учитывает версионность APIКод посылает изменённые данные без проверки ресурса. | Повторение операции снова даёт 409 или перезапись. | Добавить обработку конфликта и условий обновления. |
#Пошаговая диагностика и устранение
- Сохраните локальный вариант до повторной отправкиСначала сохраните свою редакцию файла на устройстве под новым именем и запишите время изменения. Если API вызван автоматической интеграцией, остановите повторные задания по этому ресурсу в панели интеграции, не отключая все остальные задачи. Не применяйте «перезаписать поверх» до сравнения данных: чужая работа может пропасть.
- Прочитайте текст ответа сервераВ интерфейсе программы откройте сведения об ошибке или журнал запроса. Для веб-приложения: Chrome → F12 → Network → найдите красную строку запроса → Headers/Response. Запишите код 409, метод, URL ресурса и человекочитаемое описание; не копируйте Authorization, Cookie, токены и личные сведения. Если сервер отвечает о Lock Token или конфликте каталога, это другая ветка, не связанная с ETag.
- Получите актуальную версию файла без измененияОткройте текущую версию в браузере или используйте разрешённую в вашем API операцию чтения GET. Сравните её с локальной копией обычным инструментом сравнения файлов; для текста подойдёт редактор с функцией сравнения или последовательное открытие двух окон. Не принимайте пустой ответ на GET за разрешение стереть файл: проверьте права и актуальный адрес.
- Разрешите конфликт осознанноЕсли редактор поддерживает «Сравнить», «Объединить» или «Сохранить как копию», выберите безопасный вариант. В общих проектах согласуйте изменение со вторым пользователем. Если конфликт вызван блокировкой WebDAV, уточните у владельца замка, можно ли её снять штатно; не удаляйте чужие блокировки. Если конфликт касается создания вложенного объекта, сначала проверьте существование родительского каталога, а не создавайте дубли случайными путями.
- Разработчику: исправьте конкурентный сценарийСмоделируйте два редактирования тестового файла. После первого успешного изменения второй клиент должен показать конфликт и предложить сравнение, а не бессистемно повторить PUT/PATCH. Используйте предусмотренные API средства версионности (ETag/If-Match, номер ревизии или замок) и проверяйте семантику 409 и 412 отдельно. После исправления повторите опыт на тестовом файле и убедитесь, что оба набора правок сохранены.
#Как проверить результат и что делать, если не помогло
После объединения изменений актуальный файл содержит согласованные правки; следующая операция в тестовом сценарии завершается без 409. При сохранении конфликта приложите обезличенный ответ и идентификатор версии в поддержку API.