# General Translation Platform: Перемещение файлов URL: https://generaltranslation.com/ru/docs/platform/openapi/reference/files/move-files.mdx --- title: Перемещение файлов description: Перемещайте или переименовывайте файлы в проекте General Translation. Справочник по API для перемещения файлов. method: POST --- Перемещает или переименовывает файлы, клонируя каждый исходный файл и его переводы под новым ID и именем файла. Отправляйте по одной записи для каждого перемещаемого файла. ## Обзор [#overview] ```http POST https://api2.gtx.dev/v2/project/files/moves ``` **Разрешение** `project:files:write` · **Лимит запросов** Средний (120/мин) Позволяет учесть переименование или перемещение исходных файлов без потери их переводов. Чтобы определить, какие файлы стали неактуальными, используйте [Получить осиротевшие файлы](/docs/platform/openapi/reference/files/orphaned-files). ## Как это работает [#how-it-works] * При каждом перемещении существующий исходный файл и его переводы клонируются в `newFileId` и `newFileName`, при этом переводы сохраняются. * Если `branchId` не указан, используется ветка по умолчанию. Указанный `branchId` должен принадлежать Проекту, иначе запрос вернёт `404`. * Пустой массив `moves` возвращает пустой набор результатов без ошибки. * Ответ содержит результат по каждому перемещению, а также сводные данные: общее количество, число успешных и неуспешных перемещений. ## Запрос [#request] ### Заголовки | Заголовок | Описание | Обязателен | | ----------------- | ----------------------------------------------------------- | ---------- | | `x-gt-api-key` | API-ключ проекта или организации. | Да | | `x-gt-project-id` | ID проекта. Обязателен при использовании ключа организации. | Нет | ### Тело **Тип контента** `application/json` | Поле | Описание | Тип | Необязательное | По умолчанию | | ----------------- | ---------------------------------------- | ---------- | -------------- | ------------------ | | [`moves`](#moves) | Массив перемещений файлов для обработки. | `object[]` | Нет | — | | `branchId` | Ветка, к которой относятся файлы. | `string` | Да | Ветка по умолчанию | #### `moves` [#moves] **Тип** `object[]` Каждый элемент описывает одно перемещение файла: | Поле | Описание | Тип | Необязательно | По умолчанию | | ------------- | --------------------------------------------------- | -------- | ------------- | ------------ | | `oldFileId` | Идентификатор текущего файла; не может быть пустым. | `string` | Нет | — | | `newFileId` | Идентификатор нового файла; не может быть пустым. | `string` | Нет | — | | `newFileName` | Имя нового файла; не может быть пустым. | `string` | Нет | — | ## Ответ [#response] **Статус** `200 OK` ```json title="Response" { "results": [ { "oldFileId": "file_old...", "newFileId": "file_new...", "success": true, "newSourceFileId": "sf_...", "clonedTranslationsCount": 2 } ], "summary": { "total": 1, "succeeded": 1, "failed": 0 } } ``` ## Ошибки [#errors] | Статус | Причина | | ------ | ---------------------------------------------------------- | | `400` | Недопустимое тело запроса. | | `401` | Отсутствует API-ключ или указан недействительный API-ключ. | | `403` | У API-ключа отсутствует `project:files:write`. | | `404` | Указанный `branchId` не найден в проекте. | | `429` | Превышен лимит запросов. | ## Пример [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/files/moves \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "moves": [ { "oldFileId": "file_old...", "newFileId": "file_new...", "newFileName": "en/renamed.json" } ] }' ```