Запустить миграцию репозитория
POST /repos/migrate
Описание
Асинхронно создает репозиторий и запускает задачу миграции.
Токен
Требуется токен с правами на Запись для Репозитория.
Заголовки
| Параметр | Обязательный | Описание |
|---|---|---|
accept | Нет | Тип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=latest |
content-type | Да | Тип содержимого запроса. Укажите application/json |
Параметры запроса
Данный метод не принимает параметров в строке запроса.
Тело запроса
| Поле | Тип | Обязательное | Описание | Значение по умолчанию |
|---|---|---|---|---|
source_url | string | Да | URL исходного Git-репозитория | — |
name | string | Да | Имя создаваемого репозитория. Максимальная длина — 100 символов | — |
owner | string | Нет | Пользователь или организация. Если поле не указано, владельцем становится владелец токена | Владелец токена |
source_type | string | Нет | Тип исходного Git-сервиса: git, github, gitea или gitlab | git |
source_username | string | Нет | Логин для доступа к исходному репозиторию | — |
source_password | string | Нет | Пароль для доступа к исходному репозиторию | — |
source_token | string | Нет | Токен исходного Git-сервиса | — |
private | boolean | Нет | Создать приватный репозиторий | false |
description | string | Нет | Описание создаваемого репозитория. Максимальная длина — 350 символов | — |
use_lfs | boolean | Нет | Мигрировать объекты Git LFS | false |
lfs_endpoint | string | Нет | Адрес внешнего LFS-сервера | — |
pull_requests | boolean | Нет | Мигрировать pull/merge requests | false |
releases | boolean | Нет | Мигрировать релизы | 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
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
repository | object | Информация о созданном репозитории |
repository.id | integer | Идентификатор созданного репозитория |
repository.name | string | Имя созданного репозитория |
repository.full_name | string | Полное имя репозитория в формате owner/name |
status | string | Текущий статус задачи: queued, running, finished, failed, stopped или unknown |
status_url | string | URL метода проверки статуса миграции |
Коды ответа
| Код | Статус | Описание |
|---|---|---|
202 | Accepted | Миграция принята в обработку |
400 | Bad Request | Некорректный запрос |
401 | Unauthorized | Пользователь не авторизован |
403 | Forbidden | Недостаточно прав или миграция отключена |
409 | Conflict | Репозиторий уже существует |
422 | Unprocessable Entity | Параметры миграции не могут быть обработаны |
500 | Internal Server Error | Внутренняя ошибка сервера |
Примечания
- Код
202 Acceptedозначает, что миграция принята в обработку, но еще не завершена. - Для отслеживания задачи используйте URL из поля
status_url. - Не передавайте пароль или токен исходного сервиса в URL. Используйте поля
source_passwordиsource_tokenв теле запроса.