20. POST /repos/{owner}/{repo}/forks
— создать форк репозитория
Описание
Создает форк указанного репозитория под аутентифицированным пользователем или в указанной организации.
Параметры URL
Параметр | Обязательный | Описание |
---|---|---|
owner | Да | Владелец исходного репозитория |
repo | Да | Название исходного репозитория |
Тело запроса
Передается в формате JSON. Все поля необязательные.
{
"name": "my-fork",
"description": "Форк проекта для доработки",
"organization": "my-org"
}
Поле | Тип | Обязательный | Описание |
---|---|---|---|
name | string | Нет | Название форка (по умолчанию — как у оригинала) |
description | string | Нет | Описание форка |
organization | string | Нет | Логин организации, в которую нужно создать форк (только если у вас есть права) |
📌 Если поле
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_commit | boolean | Разрешено ли создание merge-коммитов |
allow_rebase_merge | boolean | Разрешено ли rebase-слияние |
allow_squash_merge | boolean | Разрешено ли squash-слияние |
archived | boolean | Архивирован ли репозиторий |
clone_url | string | URL для клонирования по HTTPS |
contents_url | string | URL к API содержимого репозитория |
created_at | string | Дата создания репозитория (ISO 8601) |
default_branch | string | Имя основной ветки |
delete_branch_on_merge | boolean | Удалять ли ветку после слияния |
description | string или null | Описание репозитория |
disabled | boolean | Отключен ли репозиторий |
fork | boolean | Является ли репозиторий форком |
forks | integer | Количество форков (устаревшее, используйте forks_count ) |
forks_count | integer | Количество форков |
forks_url | string | URL к списку форков |
full_name | string | Полное имя репозитория (owner/repo ) |
has_issues | boolean | Включены ли задачи (issues) |
has_wiki | boolean | Включена ли вики |
id | integer | Уникальный числовой идентификатор репозитория |
is_template | boolean | Является ли репозиторий шаблоном |
issue_comment_url | string | URL для комментариев к задачам |
issues_url | string | URL к списку задач |
language | string или null | Основной язык программирования |
languages_url | string | URL к списку языков |
mirror_url | string или null | URL зеркала (если репозиторий является зеркалом) |
name | string | Название репозитория |
open_issues | integer | Количество открытых задач и PR (устаревшее) |
open_issues_count | integer | Количество открытых задач и PR |
private | boolean | Приватный ли репозиторий |
pulls_url | string | URL к списку pull request’ов |
pushed_at | string | Дата последнего пуша (ISO 8601) |
size | integer | Размер репозитория в килобайтах |
ssh_url | string | URL для клонирования по SSH |
stargazers_count | integer | Количество «звезд» |
topics | array[string] | Список тем (тегов) репозитория |
updated_at | string | Дата последнего обновления (ISO 8601) |
url | string | API-ссылка на репозиторий |
visibility | string | Видимость: public , private или internal |
watchers | integer | Количество наблюдателей (устаревшее) |
watchers_count | integer | Количество наблюдателей |
Вложенные объекты
owner
(информация о владельце)
Поле | Тип | Описание |
---|---|---|
owner.avatar_url | string | URL аватара владельца |
owner.followers_url | string | URL к подписчикам владельца |
owner.following_url | string | URL к подпискам владельца |
owner.html_url | string | Веб-ссылка на профиль владельца |
owner.id | integer | ID владельца |
owner.login | string | Логин владельца |
owner.organizations_url | string | URL к организациям владельца |
owner.repos_url | string | URL к репозиториям владельца |
owner.site_admin | boolean | Является ли владелец администратором сайта |
owner.type | string | Тип: User или Organization |
owner.url | string | API-ссылка на владельца |
permissions
(права текущего пользователя)
Поле | Тип | Описание |
---|---|---|
permissions.admin | boolean | Есть ли права администратора |
permissions.pull | boolean | Есть ли права на чтение |
permissions.push | boolean | Есть ли права на запись |
parent
(исходный репозиторий, если это форк)
Содержит те же поля, что и основной объект репозитория (см. выше), включая
owner
,permissions
, и т.д.
Например:parent.name
,parent.full_name
,parent.owner.login
и пр.
template_repository
(если репозиторий создан из шаблона)
Также содержит полный набор полей репозитория, как
parent
.
Коды ответа
Код | Статус | Описание |
---|---|---|
201 | Created | Форк успешно создан |
400 | Bad Request | Некорректное тело запроса (например, несуществующая организация) |
401 | Unauthorized | Не передан или невалиден токен авторизации |
403 | Forbidden | Нет прав на чтение исходного репозитория или создание репозиториев в указанной организации |
404 | Not Found | Репозиторий {owner}/{repo} не существует |
500 | Internal Server Error | Внутренняя ошибка сервера |