# Загрузка новой версии файла

`POST /v1/files/:id/versions`

Метод Битрикс24: `disk.file.uploadVersion`. Scope: `disk`.

**Повторная загрузка тем же автором в течение примерно пяти минут ПЕРЕЗАПИСЫВАЕТ последнюю версию. Её предыдущее содержимое не сохранится в истории.** Имя не меняется; переименование выполняется PATCH /v1/files/:id. Формат определяется текущим именем. Файл в корзине допускает загрузку; meta.inTrash будет true. Не повторяйте запрос автоматически после таймаута: исход неизвестен, перечитайте файл.

Тело: `content` — непустой строгий стандартный base64; `expectedContentGeneration` — необязательное целое >=0. Несовпадение с globalContentVersion предчтения даёт 409 DISK_VERSION_CONFLICT. Это предварительная проверка, НЕ атомарный CAS: параллельная запись возможна после предчтения. Лимит JSON 70 МиБ, превышение 413; допуск больших тел может дать 429 LARGE_BODY_BACKEND_BUSY. Пустой код отказа Б24 даёт 422 DISK_FILE_NOT_SAVED с текстом Б24.

```bash
curl -X POST -H "X-Api-Key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"content":"YWJj","expectedContentGeneration":2}' https://vibecode.bitrix24.tech/v1/files/7/versions
```

Ответ: проекция files и `meta.joinedIntoPreviousVersion` — true при том же id верхней версии до и после, false при новом id, null при недоступной истории или отказе чтения истории по правам; `meta.inTrash` — по DELETED_TYPE, не по дате удаления.

Ошибки: 400 неверный id или параметры, 401 ключ отсутствует, 403 нет scope disk или прав Б24, 404 запись отсутствует, 422 бизнес-отказ Б24. READONLY-ключ читает, но не загружает и не восстанавливает. На записи 502 DISK_OUTCOME_UNKNOWN требует перечитать файл перед повтором.
