21. POST /orgs/{org}/repos — создать репозиторий в организации

POST /orgs/{org}/repos — создать репозиторий в организации

Описание

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

Пользователь должен быть членом организации org и обладать правом на создание репозиториев в ней.

Требования

Убедитесь, что ключ API указан корректно и обладает необходимыми правами:

  • репозитории → Запись.

Параметры URL

ПараметрТипОбязательныйОписание
orgstringДаИмя (slug) организации, в которой создается репозиторий

Параметры запроса

Данный метод не принимает query-параметров.

Тело запроса

Тело запроса — JSON-объект со следующими полями:

ПолеТипОбязательныйПо умолчаниюОписание
1namestringДаИмя репозитория. Допустимые символы: a-z, A-Z, 0-9, _, ., -. Максимальная длина — 100 символов
2descriptionstringНетnullОписание репозитория. Максимальная длина — 2048 символов
3privatebooleanНетfalseСоздать приватный репозиторий. Если передано поле visibility, значение private игнорируется
4visibilitystringНетВидимость репозитория: public или private. Имеет приоритет над полем private
5is_templatebooleanНетfalseСделать репозиторий шаблоном для создания других репозиториев
6default_branchstringНетmasterИмя ветки по умолчанию. Максимальная длина — 100 символов
7auto_initbooleanНетfalseСоздать начальный коммит с пустым README.md. Требуется для применения gitignores и license_template
8gitignoresarray[string]НетnullСписок шаблонов .gitignore по имени языка, например, ["Python", "Go", "Java"]
9license_templatestringНетnullКлюч шаблона лицензии, например, mit
10allow_squash_mergebooleanНетtrueРазрешить squash-слияние pull-запросов
11allow_merge_commitbooleanНетtrueРазрешить создание merge-коммитов
12allow_rebase_mergebooleanНетtrueРазрешить rebase-слияние pull-запросов
13delete_branch_on_mergebooleanНетfalseАвтоматически удалять ветку после слияния pull-запроса

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

curl -X POST "https://api.gitverse.ru/orgs/user/repos" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=latest" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-new-repo",
    "description": "Описание репозитория",
    "private": true,
    "default_branch": "master",
    "auto_init": true,
    "gitignores": ["Python", "Go", "Java"],
    "license_template": "mit",
    "allow_squash_merge": true,
    "allow_merge_commit": true,
    "allow_rebase_merge": false,
    "delete_branch_on_merge": true
  }'

Ответ (201 Created)

При успешном создании сервер возвращает заголовок Location с URL созданного репозитория и тело — тот же объект Repository, что возвращает GET /orgs/{org}/repos.

Заголовки ответа:

Location: https://api.gitverse.ru/repos/user/my-new-repo
Content-Type: application/vnd.gitverse.object+json;version=latest

Тело ответа:

{
  "id": 545,
  "name": "my-new-repo",
  "full_name": "user/my-new-repo",
  "owner": {
    "login": "user",
    "id": 49,
    "avatar_url": "https://api.gitverse.ru/sc/avatars/avatar_hash",
    "url": "https://api.gitverse.ru/users/user",
    "html_url": "https://gitverse.ru/user",
    "followers_url": "https://api.gitverse.ru/users/user/followers",
    "following_url": "https://api.gitverse.ru/users/user/following{/other_user}",
    "organizations_url": "https://api.gitverse.ru/users/user/orgs",
    "repos_url": "https://api.gitverse.ru/users/user/repos",
    "type": "Organization",
    "site_admin": false
  },
  "private": true,
  "visibility": "private",
  "description": "Описание репозитория",
  "fork": false,
  "archived": false,
  "disabled": false,
  "size": 0,
  "default_branch": "master",
  "is_template": false,
  "has_issues": true,
  "has_wiki": true,
  "forks": 0,
  "forks_count": 0,
  "stargazers_count": 0,
  "watchers": 0,
  "watchers_count": 0,
  "open_issues": 0,
  "open_issues_count": 0,
  "topics": null,
  "language": null,
  "created_at": "2026-05-26T10:15:00Z",
  "updated_at": "2026-05-26T10:15:00Z",
  "pushed_at": "2026-05-26T10:15:00Z",
  "allow_merge_commit": true,
  "allow_squash_merge": true,
  "allow_rebase_merge": false,
  "delete_branch_on_merge": true,
  "html_url": "https://gitverse.ru/user/my-new-repo",
  "clone_url": "https://gitverse.ru/user/my-new-repo.git",
  "ssh_url": "git@gitverse.ru:user/my-new-repo.git",
  "mirror_url": "https://gitverse.ru/user/my-new-repo.git",
  "url": "https://api.gitverse.ru/repos/user/my-new-repo",
  "contents_url": "https://api.gitverse.ru/repos/user/my-new-repo/contents/{+path}",
  "issues_url": "https://api.gitverse.ru/repos/user/my-new-repo/issues{/number}",
  "issue_comment_url": "https://api.gitverse.ru/repos/user/my-new-repo/issues/comments{/number}",
  "pulls_url": "https://api.gitverse.ru/repos/user/my-new-repo/pulls{/number}",
  "forks_url": "https://api.gitverse.ru/repos/user/my-new-repo/forks",
  "languages_url": "https://api.gitverse.ru/repos/user/my-new-repo/languages",
  "permissions": {
    "pull": true,
    "push": true,
    "admin": true
  },
  "template_repository": null,
  "parent": null
}

Формат ответа: application/vnd.gitverse.object+json;version=latest

Поля ответа

Тело ответа содержит 57 полей, сгруппированных ниже по назначению.

Основные поля репозитория

ПолеТипОписание
idintegerУникальный числовой идентификатор репозитория
namestringИмя репозитория
full_namestringПолное имя репозитория в формате org/repo
privatebooleanПризнак приватности: true — приватный, false — публичный
visibilitystringВидимость репозитория: public или private
descriptionstring или nullОписание репозитория
forkbooleanЯвляется ли репозиторий форком
archivedbooleanАрхивирован ли репозиторий
disabledbooleanОтключен ли репозиторий
sizeintegerРазмер репозитория в килобайтах
default_branchstringИмя ветки по умолчанию
is_templatebooleanЯвляется ли репозиторий шаблоном
has_issuesbooleanВключены ли задачи (issues)
has_wikibooleanВключена ли вики

Счетчики

ПолеТипОписание
forksintegerКоличество форков
forks_countintegerКоличество форков (дубликат forks для совместимости с GitHub API)
stargazers_countintegerКоличество пользователей, поставивших «звезду»
watchersintegerКоличество наблюдателей
watchers_countintegerКоличество наблюдателей (дубликат watchers для совместимости с GitHub API)
open_issuesintegerКоличество открытых задач и pull-запросов
open_issues_countintegerКоличество открытых задач и pull-запросов (дубликат open_issues)

Темы и язык

ПолеТипОписание
topicsarray[string] или nullСписок тем (тегов) репозитория
languagestring или nullОсновной язык программирования репозитория

Даты

Все даты возвращаются в формате RFC3339 (UTC).

ПолеТипОписание
created_atstringДата и время создания репозитория
updated_atstringДата и время последнего обновления метаданных
pushed_atstringДата и время последнего git push в репозиторий

Merge-настройки

ПолеТипОписание
allow_merge_commitbooleanРазрешено ли создание merge-коммитов
allow_squash_mergebooleanРазрешено ли squash-слияние
allow_rebase_mergebooleanРазрешено ли rebase-слияние
delete_branch_on_mergebooleanУдалять ли ветку после слияния pull-запроса

URL-поля

ПолеТипОписание
html_urlstringURL веб-страницы репозитория
clone_urlstringСсылка для клонирования по HTTPS
ssh_urlstringСсылка для клонирования по SSH
mirror_urlstringURL зеркала репозитория
urlstringAPI URL репозитория
contents_urlstringAPI URL содержимого с шаблоном пути
issues_urlstringAPI URL задач с шаблоном номера
issue_comment_urlstringAPI URL комментариев к задачам с шаблоном номера
pulls_urlstringAPI URL pull-запросов с шаблоном номера
forks_urlstringAPI URL списка форков
languages_urlstringAPI URL статистики языков репозитория

Объект owner

Объект owner описывает организацию-владельца репозитория.

ПолеТипОписание
owner.loginstringЛогин (slug) владельца
owner.idintegerУникальный идентификатор владельца
owner.avatar_urlstringURL аватара владельца
owner.urlstringAPI URL владельца
owner.html_urlstringURL веб-страницы профиля владельца
owner.followers_urlstringAPI URL списка подписчиков
owner.following_urlstringAPI URL списка подписок
owner.organizations_urlstringAPI URL организаций пользователя
owner.repos_urlstringAPI URL списка репозиториев владельца
owner.typestringТип владельца: User или Organization
owner.site_adminbooleanЯвляется ли владелец администратором платформы

Объект permissions

Объект permissions описывает права аутентифицированного пользователя на созданный репозиторий.

ПолеТипОписание
permissions.pullbooleanПрава на чтение содержимого
permissions.pushbooleanПрава на запись (push)
permissions.adminbooleanПрава администратора

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

ПолеТипОписание
template_repositoryobject или nullОбъект Repository, на основе которого создан данный репозиторий (если использовался шаблон). Иначе — null
parentobject или nullОбъект Repository родительского репозитория (если данный репозиторий — форк). Иначе — null

💡 Поля template_repository и parent содержат полный объект репозитория с теми же полями, что и в корневом ответе.

Коды ответа

КодСтатусОписание
201CreatedРепозиторий успешно создан. В ответе — заголовок Location и объект Repository
401UnauthorizedТокен авторизации отсутствует или недействителен. Тело ответа пустое
403ForbiddenАутентифицированный пользователь не является членом организации или не имеет прав на создание репозитория. Тело ответа пустое
404Not FoundОрганизация с указанным org не найдена. Тело ответа пустое
409ConflictРепозиторий с таким именем уже существует в данной организации. Тело ответа пустое
422Unprocessable EntityОшибка валидации тела запроса: недопустимые символы в name, превышение длины полей, неизвестный шаблон gitignores или license_template, недопустимое значение visibility. Тело ответа пустое
500Internal Server ErrorВнутренняя ошибка сервера