Публичный APIРепозитории3. POST /user/repos — создать новый репозиторий

3. POST /user/repos — создать новый репозиторий

Описание

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

Параметры URL

Данный метод не содержит параметров 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/public/api/user/repos" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=latest" \
  -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=latest

Поля ответа

ПолеТипОписание
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Количество открытых задач и PR (устаревшее)
open_issues_countintegerКоличество открытых задач и PR
topicsarray[string]Список тем (тегов) репозитория
urlstringAPI-ссылка на репозиторий
watchersintegerКоличество наблюдателей (устаревшее)

Коды ответа

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