Создать новый репозиторий

POST /user/repos

Описание

Создает новый репозиторий для аутентифицированного пользователя.

Токен

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

Заголовки

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

Параметры пути

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

Тело запроса

Передается в формате JSON. Обязательное поле — name.

{
  "name": "my-new-repo",
  "description": "Мой первый репозиторий",
  "private": true,
  "auto_init": true,
  "gitignores": ["Node"],
  "is_template": false
}
ПолеТипОбязательныйОписание
namestringДаНазвание репозитория
descriptionstringНетОписание репозитория
privatebooleanНетПриватный (true) или публичный (false)
auto_initbooleanНетСоздать репозиторий с начальным README.md
gitignoresarray[string]НетСписок шаблонов .gitignore (например, ["Node", "Python"])
is_templatebooleanНетСделать репозиторий шаблоном

⚠️ Все поля, кроме name, необязательные. Поля license_template, has_wiki, has_issues и др. не поддерживаются в этом API.

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

curl -X POST "https://api.gitverse.ru/user/repos" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -d '{
    "name": "hello-world",
    "private": false,
    "auto_init": true,
    "gitignores": ["Node"]
  }'

Ответ (201 Created)

Пример JSON-ответа:

{
  "id": 67890,
  "name": "hello-world",
  "full_name": "current-user/hello-world",
  "private": false,
  "fork": false,
  "owner": {
    "login": "current-user",
    "id": 55555,
    "avatar_url": "https://gitverse.ru/avatars/current-user.png"
  },
  "html_url": "https://gitverse.ru/current-user/hello-world",
  "description": null,
  "created_at": "2025-04-05T11:20:00Z",
  "default_branch": "main",
  "permissions": {
    "admin": true,
    "push": true,
    "pull": true
  },
  "clone_url": "https://gitverse.ru/current-user/hello-world.git",
  "ssh_url": "git@gitverse.ru:current-user/hello-world.git",
  "has_issues": true,
  "has_wiki": true,
  "language": null,
  "stargazers_count": 0,
  "watchers_count": 0,
  "forks_count": 0,
  "size": 0,
  "pushed_at": "2025-04-05T11:20:00Z",
  "updated_at": "2025-04-05T11:20:00Z",
  "visibility": "public"
}

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

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

Поля ответа

ПолеТипОписание
idintegerУникальный числовой идентификатор репозитория
namestringНазвание репозитория
full_namestringПолное имя репозитория (owner/repo)
privatebooleanПризнак приватности: true — приватный, false — публичный
forkbooleanЯвляется ли репозиторий форком
ownerobjectИнформация о владельце: login (строка), id (целое число), avatar_url (строка)
html_urlstringСсылка на веб-страницу репозитория
descriptionstring или nullОписание репозитория
created_atstringДата и время создания (ISO 8601)
updated_atstringДата и время последнего обновления метаданных
pushed_atstringДата и время последнего пуша
default_branchstringИмя основной ветки (например, main)
permissionsobjectПрава текущего пользователя: admin, push, pull (все — boolean)
clone_urlstringСсылка для клонирования по HTTPS
ssh_urlstringСсылка для клонирования по SSH
has_issuesbooleanВключены ли задачи (issues)
has_wikibooleanВключена ли вики
languagestring или nullОсновной язык программирования
stargazers_countintegerКоличество пользователей, поставивших «звезду»
watchers_countintegerКоличество наблюдателей
forks_countintegerКоличество форков
sizeintegerРазмер репозитория в килобайтах
visibilitystringВидимость: public, private или internal
allow_merge_commitbooleanРазрешено ли создание merge-коммитов
allow_rebase_mergebooleanРазрешено ли rebase-слияние
allow_squash_mergebooleanРазрешено ли squash-слияние
archivedbooleanАрхивирован ли репозиторий
disabledbooleanОтключен ли репозиторий
forksintegerКоличество форков (устаревшее поле)
forks_urlstringURL к списку форков
is_templatebooleanЯвляется ли репозиторий шаблоном
open_issuesintegerКоличество открытых задач и запросов на слияние(устаревшее)
open_issues_countintegerКоличество открытых задач и запросов на слияние
topicsarray[string]Список тем (тегов) репозитория
urlstringAPI-ссылка на репозиторий
watchersintegerКоличество наблюдателей (устаревшее)

Коды ответа

КодСтатусОписание
201CreatedРепозиторий успешно создан
400Bad RequestНекорректные данные: пустое имя, недопустимые символы
401UnauthorizedНе передан или невалиден токен авторизации
403ForbiddenОтсутствует право на создание репозитория
429Too Many RequestsПревышен лимит запросов
500Internal Server ErrorВнутренняя ошибка сервера

Пример тела ошибки

При ответе 400 тело ответа имеет следующий вид:

{
  "error": {
    "code": "BAD_REQUEST",
    "documentation_url": "https://gitverse.ru/docs/developers/public-api/",
    "message": "The request format is invalid",
    "status": 400
  }
}