Создание нового репозиторияBetaNew
Описание
Этот раздел документации описывает конечную точку для создания нового репозитория для аутентифицированного пользователя. В запросе можно указать различные параметры, такие как название, описание, приватность, шаблоны .gitignore
, лицензию, README и другие настройки.
Общие замечания
- Для версий API указывайте заголовок
Accept
с соответствующей версией:Accept: application/vnd.gitverse+json;version=1
- Базовый URL для всех конечных точек:
https://api.gitverse.ru
- Все даты возвращаются в формате ISO 8601.
- Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением.
Скоупы
Для успешного выполнения этого запроса требуется один из следующих скоупов:
"write:public_api"
;"public_api"
.
🔒 Обратите внимание: использование скоупа
public_api
предоставляет все возможности (чтение, запись, удаление), поэтому рекомендуется использовать минимально необходимые привилегии.
Конечная точка
POST /user/repos
Параметры пути
Нет обязательных параметров пути. Конечная точка /user/repos
автоматически определяет текущего аутентифицированного пользователя на основе предоставленного токена.
Заголовки запроса
Content-Type: application/json
— указывает, что тело запроса имеет формат JSON;Accept: application/vnd.gitverse+json;version=1
— указывает версию API;Authorization: Bearer {user_token}
— требуется для аутентификации.
Тело запроса
Тело запроса должно содержать параметры нового репозитория:
Поле | Тип | Описание |
---|---|---|
name | string | Название репозитория (обязательное поле). |
description | string | Описание репозитория. |
private | boolean | Является ли репозиторий приватным. |
labels | string | Список меток через запятую (например, "bug,enhancement" ). |
auto_init | boolean | Автоматически создать README файл. |
template | boolean | Создать репозиторий как шаблон. |
gitignores | array | Массив строк, представляющих типы .gitignore (например, ["Go", "Node"] ). |
license | string | Лицензия (например, "MIT" ). |
readme | string | Тип README файла ("Default" , "Blank" и т.д.). |
default_branch | string | Название ветки по умолчанию. |
trust_model | string | Модель доверия к коммитам (например, "default" ). |
Пример запроса
POST https://api.gitverse.ru/user/repos
Content-Type: application/json
Accept: application/vnd.gitverse+json;version=1
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"name": "newTestRepo4.0",
"description": "This is a test repository with all options",
"private": false,
"labels": "bug,enhancement,question",
"auto_init": true,
"template": false,
"gitignores": ["Go", "Node"],
"license": "",
"readme": "Default",
"default_branch": "main",
"trust_model": "default"
}
Пример ответа
{
"id": 26,
"owner": {
"id": 1,
"name": "dlborun",
"login": "dlborun",
"full_name": "Milo Kachinsky",
"type": "User",
"bio": "?",
"email": "new1@example.com",
"avatar_url": "http://localhost:3000/avatars/3bfba3c4f86761021789182cf44ab8eea9e37b3f1df7d1a7d85e1fa41b1b690c",
"html_url": "dlborun",
"url": "https://api.gitverse.ru/users/dlborun",
"followers_url": "https://api.gitverse.ru/users/dlborun/followers",
"repos_url": "https://api.gitverse.ru/users/dlborun/repos",
"organizations_url": "https://api.gitverse.ru/users/dlborun/orgs",
"site_admin": true,
"visibility": "public",
"public_repos": 7,
"created_at": "2025-04-28T11:40:21+03:00",
"updated_at": "2025-05-20T15:40:17+03:00"
},
"name": "newTestRepo4.0",
"full_name": "dlborun/newTestRepo4.0",
"description": "This is a test repository with all options",
"topics": null,
"private": false,
"fork": false,
"parent": null,
"size": 0,
"language": "",
"ssh_url": "borun.d.l@sbertech.ru@localhost:dlborun/newTestRepo4.0.git",
"clone_url": "dlborun/newTestRepo4.0.git",
"html_url": "http://localhost:3000/dlborun/newTestRepo4.0",
"url": "",
"git_url": "dlborun/newTestRepo4.0.git",
"mirror_url": "dlborun/newTestRepo4.0.git",
"website": "",
"homepage": "",
"stargazers_count": 0,
"forks": 0,
"forks_count": 0,
"watchers": 0,
"watchers_count": 0,
"network_count": 0,
"subscribers_count": 0,
"open_issues": 0,
"open_issues_count": 0,
"open_pr_counter": 0,
"default_branch": "main",
"archived": false,
"created_at": "2025-05-20T15:40:17+03:00",
"updated_at": "2025-05-20T15:40:17+03:00",
"pushed_at": "2025-05-20T15:40:17+03:00",
"has_issues": true,
"has_projects": true,
"has_discussions": false,
"has_wiki": true,
"has_pages": false,
"disabled": false,
"visibility": "",
"is_template": false,
"template_repository": null,
"allow_merge_commits": true,
"allow_squash_merge": true,
"default_delete_branch_after_merge": false
}
Поля ответа
Поле | Тип | Описание |
---|---|---|
id | integer | Уникальный ID репозитория. |
owner | object | Информация о владельце репозитория. |
name | string | Название репозитория. |
full_name | string | Полное имя репозитория (логин_владельца/название). |
description | string | Описание репозитория. |
private | boolean | Является ли репозиторий приватным. |
fork | boolean | Это форк? |
size | integer | Размер репозитория в килобайтах. |
language | string | Основной язык программирования. |
stargazers_count | integer | Количество звёзд. |
watchers_count | integer | Количество наблюдателей. |
default_branch | string | Ветка по умолчанию. |
created_at | string (ISO 8601) | Дата создания репозитория. |
updated_at | string (ISO 8601) | Дата последнего обновления репозитория. |
Обработка ошибок
Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением:
Пример ошибки
{
"error": "Unauthorized",
"message": "Authentication failed. Invalid or missing access token.",
"status": 401
}
Возможные коды ошибок
400 Bad Request
— некорректный запрос или отсутствуют обязательные поля;401 Unauthorized
— необходима аутентификация. Отсутствует или неверен токен;403 Forbidden
— у пользователя нет прав для создания репозиториев;500 Internal Server Error
— внутренняя ошибка сервера.
Если у вас возникнут вопросы или потребуется дополнительная информация, пожалуйста, обращайтесь в службу поддержки или свяжитесь с командой разработки.