Запустить миграцию репозитория

POST /repos/migrate

Описание

Асинхронно создает репозиторий и запускает задачу миграции.

Токен

Требуется токен с правами на Запись для Репозитория.

Заголовки

ПараметрОбязательныйОписание
acceptНетТип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=latest
content-typeДаТип содержимого запроса. Укажите application/json

Параметры запроса

Данный метод не принимает параметров в строке запроса.

Тело запроса

ПолеТипОбязательноеОписаниеЗначение по умолчанию
source_urlstringДаURL исходного Git-репозитория
namestringДаИмя создаваемого репозитория. Максимальная длина — 100 символов
ownerstringНетПользователь или организация. Если поле не указано, владельцем становится владелец токенаВладелец токена
source_typestringНетТип исходного Git-сервиса: git, github, gitea или gitlabgit
source_usernamestringНетЛогин для доступа к исходному репозиторию
source_passwordstringНетПароль для доступа к исходному репозиторию
source_tokenstringНетТокен исходного Git-сервиса
privatebooleanНетСоздать приватный репозиторийfalse
descriptionstringНетОписание создаваемого репозитория. Максимальная длина — 350 символов
use_lfsbooleanНетМигрировать объекты Git LFSfalse
lfs_endpointstringНетАдрес внешнего LFS-сервера
pull_requestsbooleanНетМигрировать pull/merge requestsfalse
releasesbooleanНетМигрировать релизыfalse

Пример запроса

curl -X POST "https://api.gitverse.ru/repos/migrate" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=latest" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://gitlab.example.com/acme/platform-api.git",
    "name": "platform-api",
    "owner": "acme",
    "source_type": "gitlab",
    "source_token": "<SOURCE_TOKEN>",
    "private": true,
    "description": "API сервиса платформы",
    "use_lfs": true,
    "lfs_endpoint": "https://gitlab.example.com/acme/platform-api.git/info/lfs",
    "pull_requests": true,
    "releases": true
  }'

Ответ (202 Accepted)

Миграция принята в обработку.

{
  "repository": {
    "id": 12345,
    "name": "platform-api",
    "full_name": "acme/platform-api"
  },
  "status": "queued",
  "status_url": "https://api.gitverse.ru/repos/acme/platform-api/migration/status"
}

Формат ответа

application/vnd.gitverse.object+json;version=latest

Поля ответа

ПолеТипОписание
repositoryobjectИнформация о созданном репозитории
repository.idintegerИдентификатор созданного репозитория
repository.namestringИмя созданного репозитория
repository.full_namestringПолное имя репозитория в формате owner/name
statusstringТекущий статус задачи: queued, running, finished, failed, stopped или unknown
status_urlstringURL метода проверки статуса миграции

Коды ответа

КодСтатусОписание
202AcceptedМиграция принята в обработку
400Bad RequestНекорректный запрос
401UnauthorizedПользователь не авторизован
403ForbiddenНедостаточно прав или миграция отключена
409ConflictРепозиторий уже существует
422Unprocessable EntityПараметры миграции не могут быть обработаны
500Internal Server ErrorВнутренняя ошибка сервера

Примечания

  1. Код 202 Accepted означает, что миграция принята в обработку, но еще не завершена.
  2. Для отслеживания задачи используйте URL из поля status_url.
  3. Не передавайте пароль или токен исходного сервиса в URL. Используйте поля source_password и source_token в теле запроса.