Публичный APIРепозитории21. PUT /repos/{owner}/{repo}/collaborators/{username} — добавить или обновить права пользователя

21. PUT /repos/{owner}/{repo}/collaborators/{username} — добавить или обновить права пользователя

Описание

Добавляет указанного пользователя в качестве соавтора (collaborator) репозитория или обновляет его уровень доступа, если он уже является соавтором.

⚠️ Требуются права администратора текущего репозитория для выполнения операции.

Параметры URL

ПараметрТипОбязательныйОписание
ownerstringДаВладелец репозитория (пользователь или организация)
repostringДаНазвание репозитория
usernamestringДаЛогин пользователя, которого нужно добавить или обновить

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

Данный метод не использует параметры запроса.

Тело запроса

Формат: application/json
Обязательное поле:

{
  "permission": "read" | "write" | "admin"
}
ПолеТипОбязательныйВозможные значенияОписание
permissionstringДаread, write, adminУровень доступа пользователя к репозиторию

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

curl -X PUT "https://api.gitverse.ru/repos/gitverse/example-repo/collaborators/johndoe" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -H "Content-Type: application/json" \
  -d '{ "permission": "write"}'

Ответ (201 Created)

Пример JSON-ответа:

{
  "id": 12345,
  "created_at": "2025-10-23T12:00:00Z",
  "permissions": "write",
  "invitee": {
    "login": "johndoe",
    "id": 9876,
    "avatar_url": "https://gitverse.ru/avatars/johndoe.png",
    "html_url": "https://gitverse.ru/johndoe"
  },
  "inviter": {
    "login": "currentuser",
    "id": 5432,
    "avatar_url": "https://gitverse.ru/avatars/currentuser.png",
    "html_url": "https://gitverse.ru/currentuser"
  },
  "repository": {
    "id": 1111,
    "name": "example-repo",
    "full_name": "gitverse/example-repo",
    "html_url": "https://gitverse.ru/gitverse/example-repo"
  }
}

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

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

Поля ответа

ПолеТипОписание
idintegerИдентификатор приглашения
created_atstringВремя создания приглашения
permissionsstringУровень доступа (read/write/admin)
inviteeobjectИнформация о приглашенном пользователе
inviterobjectИнформация об инициаторе приглашения
repositoryobjectПубличная информация о репозитории

Подполе invitee / inviter

ПолеТипОписание
loginstringЛогин пользователя
idintegerУникальный идентификатор
avatar_urlstringСсылка на аватар
html_urlstringСсылка на профиль в вебе

Подполе repository

ПолеТипОписание
idintegerИдентификатор репозитория
namestringИмя репозитория
full_namestringПолное имя (owner/name)
html_urlstringСсылка на репозиторий в вебе

Коды ответа

КодСтатусОписание
201CreatedПриглашение успешно создано или обновлено
400Bad RequestНекорректный запрос (например, неверный permission)
401UnauthorizedТокен отсутствует или недействителен
403ForbiddenНедостаточно прав для управления соавторами
404Not FoundРепозиторий или пользователь не найден
422Unprocessable EntityОшибка валидации тела запроса
500Internal Server ErrorВнутренняя ошибка сервера