21. PUT /repos/{owner}/{repo}/collaborators/{username} — добавить или обновить права пользователя
Описание
Добавляет указанного пользователя в качестве соавтора (collaborator) репозитория или обновляет его уровень доступа, если он уже является соавтором.
⚠️ Требуются права администратора текущего репозитория для выполнения операции.
Параметры URL
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
owner | string | Да | Владелец репозитория (пользователь или организация) |
repo | string | Да | Название репозитория |
username | string | Да | Логин пользователя, которого нужно добавить или обновить |
Параметры запроса
Данный метод не использует параметры запроса.
Тело запроса
Формат: application/json
Обязательное поле:
{
"permission": "read" | "write" | "admin"
}| Поле | Тип | Обязательный | Возможные значения | Описание |
|---|---|---|---|---|
permission | string | Да | 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
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор приглашения |
created_at | string | Время создания приглашения |
permissions | string | Уровень доступа (read/write/admin) |
invitee | object | Информация о приглашенном пользователе |
inviter | object | Информация об инициаторе приглашения |
repository | object | Публичная информация о репозитории |
Подполе invitee / inviter
| Поле | Тип | Описание |
|---|---|---|
login | string | Логин пользователя |
id | integer | Уникальный идентификатор |
avatar_url | string | Ссылка на аватар |
html_url | string | Ссылка на профиль в вебе |
Подполе repository
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор репозитория |
name | string | Имя репозитория |
full_name | string | Полное имя (owner/name) |
html_url | string | Ссылка на репозиторий в вебе |
Коды ответа
| Код | Статус | Описание |
|---|---|---|
| 201 | Created | Приглашение успешно создано или обновлено |
| 400 | Bad Request | Некорректный запрос (например, неверный permission) |
| 401 | Unauthorized | Токен отсутствует или недействителен |
| 403 | Forbidden | Недостаточно прав для управления соавторами |
| 404 | Not Found | Репозиторий или пользователь не найден |
| 422 | Unprocessable Entity | Ошибка валидации тела запроса |
| 500 | Internal Server Error | Внутренняя ошибка сервера |