Создание нового репозитория

Создание нового репозитория
Beta
New

⚠️
Ограниченный доступ

Описание

Этот раздел документации описывает конечную точку для создания нового репозитория для аутентифицированного пользователя. В запросе можно указать различные параметры, такие как название, описание, приватность, шаблоны .gitignore, лицензию, README и другие настройки.

Общие замечания

  1. Для версий API указывайте заголовок Accept с соответствующей версией:
    Accept: application/vnd.gitverse+json;version=1
  2. Базовый URL для всех конечных точек:
    https://api.gitverse.ru
  3. Все даты возвращаются в формате ISO 8601.
  4. Если запрос завершается неудачно, 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} — требуется для аутентификации.

Тело запроса

Тело запроса должно содержать параметры нового репозитория:

ПолеТипОписание
namestringНазвание репозитория (обязательное поле).
descriptionstringОписание репозитория.
privatebooleanЯвляется ли репозиторий приватным.
labelsstringСписок меток через запятую (например, "bug,enhancement").
auto_initbooleanАвтоматически создать README файл.
templatebooleanСоздать репозиторий как шаблон.
gitignoresarrayМассив строк, представляющих типы .gitignore (например, ["Go", "Node"]).
licensestringЛицензия (например, "MIT").
readmestringТип README файла ("Default", "Blank" и т.д.).
default_branchstringНазвание ветки по умолчанию.
trust_modelstringМодель доверия к коммитам (например, "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
}

Поля ответа

ПолеТипОписание
idintegerУникальный ID репозитория.
ownerobjectИнформация о владельце репозитория.
namestringНазвание репозитория.
full_namestringПолное имя репозитория (логин_владельца/название).
descriptionstringОписание репозитория.
privatebooleanЯвляется ли репозиторий приватным.
forkbooleanЭто форк?
sizeintegerРазмер репозитория в килобайтах.
languagestringОсновной язык программирования.
stargazers_countintegerКоличество звёзд.
watchers_countintegerКоличество наблюдателей.
default_branchstringВетка по умолчанию.
created_atstring (ISO 8601)Дата создания репозитория.
updated_atstring (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 — внутренняя ошибка сервера.

Если у вас возникнут вопросы или потребуется дополнительная информация, пожалуйста, обращайтесь в службу поддержки или свяжитесь с командой разработки.