Публичный APIРепозитории20. POST /repos/{owner}/{repo}/forks — создать форк репозитория

20. POST /repos/{owner}/{repo}/forks — создать форк репозитория

Описание

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

Параметры URL

ПараметрОбязательныйОписание
ownerДаВладелец исходного репозитория
repoДаНазвание исходного репозитория

Тело запроса

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

{
  "name": "my-fork",
  "description": "Форк проекта для доработки",
  "organization": "my-org"
}
ПолеТипОбязательныйОписание
namestringНетНазвание форка (по умолчанию — как у оригинала)
descriptionstringНетОписание форка
organizationstringНетЛогин организации, в которую нужно создать форк (только если у вас есть права)

📌 Если поле organization не указано, форк создается в личном аккаунте текущего пользователя.

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

curl -X POST "https://api.gitverse.ru/repos/awesome-org/project-x/forks" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=latest" \
  -d '{
    "organization": "my-team"
  }'

Ответ (200 OK)

Возвращается объект репозитория ($ref: "#/definitions/response.Repository").

Пример:

{
  "id": 12345,
  "name": "project-x",
  "full_name": "my-team/project-x",
  "private": false,
  "fork": true,
  "owner": {
    "login": "my-team",
    "id": 987,
    "avatar_url": "https://gitverse.ru/avatars/my-team.png"
  },
  "html_url": "https://gitverse.ru/my-team/project-x",
  "created_at": "2025-04-05T10:00:00Z",
  "default_branch": "main",
  "parent": {
    "full_name": "awesome-org/project-x",
    "owner": { "login": "awesome-org" }
  }
}

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

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

Поля ответа (response.Repository)

ПолеТипОписание
allow_merge_commitbooleanРазрешено ли создание merge-коммитов
allow_rebase_mergebooleanРазрешено ли rebase-слияние
allow_squash_mergebooleanРазрешено ли squash-слияние
archivedbooleanАрхивирован ли репозиторий
clone_urlstringURL для клонирования по HTTPS
contents_urlstringURL к API содержимого репозитория
created_atstringДата создания репозитория (ISO 8601)
default_branchstringИмя основной ветки
delete_branch_on_mergebooleanУдалять ли ветку после слияния
descriptionstring или nullОписание репозитория
disabledbooleanОтключен ли репозиторий
forkbooleanЯвляется ли репозиторий форком
forksintegerКоличество форков (устаревшее, используйте forks_count)
forks_countintegerКоличество форков
forks_urlstringURL к списку форков
full_namestringПолное имя репозитория (owner/repo)
has_issuesbooleanВключены ли задачи (issues)
has_wikibooleanВключена ли вики
idintegerУникальный числовой идентификатор репозитория
is_templatebooleanЯвляется ли репозиторий шаблоном
issue_comment_urlstringURL для комментариев к задачам
issues_urlstringURL к списку задач
languagestring или nullОсновной язык программирования
languages_urlstringURL к списку языков
mirror_urlstring или nullURL зеркала (если репозиторий является зеркалом)
namestringНазвание репозитория
open_issuesintegerКоличество открытых задач и PR (устаревшее)
open_issues_countintegerКоличество открытых задач и PR
privatebooleanПриватный ли репозиторий
pulls_urlstringURL к списку pull request’ов
pushed_atstringДата последнего пуша (ISO 8601)
sizeintegerРазмер репозитория в килобайтах
ssh_urlstringURL для клонирования по SSH
stargazers_countintegerКоличество «звезд»
topicsarray[string]Список тем (тегов) репозитория
updated_atstringДата последнего обновления (ISO 8601)
urlstringAPI-ссылка на репозиторий
visibilitystringВидимость: public, private или internal
watchersintegerКоличество наблюдателей (устаревшее)
watchers_countintegerКоличество наблюдателей

Вложенные объекты

owner (информация о владельце)

ПолеТипОписание
owner.avatar_urlstringURL аватара владельца
owner.followers_urlstringURL к подписчикам владельца
owner.following_urlstringURL к подпискам владельца
owner.html_urlstringВеб-ссылка на профиль владельца
owner.idintegerID владельца
owner.loginstringЛогин владельца
owner.organizations_urlstringURL к организациям владельца
owner.repos_urlstringURL к репозиториям владельца
owner.site_adminbooleanЯвляется ли владелец администратором сайта
owner.typestringТип: User или Organization
owner.urlstringAPI-ссылка на владельца

permissions (права текущего пользователя)

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

parent (исходный репозиторий, если это форк)

Содержит те же поля, что и основной объект репозитория (см. выше), включая owner, permissions, и т.д.
Например: parent.name, parent.full_name, parent.owner.login и пр.

template_repository (если репозиторий создан из шаблона)

Также содержит полный набор полей репозитория, как parent.

Коды ответа

КодСтатусОписание
201CreatedФорк успешно создан
400Bad RequestНекорректное тело запроса (например, несуществующая организация)
401UnauthorizedНе передан или невалиден токен авторизации
403ForbiddenНет прав на чтение исходного репозитория или создание репозиториев в указанной организации
404Not FoundРепозиторий {owner}/{repo} не существует
500Internal Server ErrorВнутренняя ошибка сервера