Как я могу использовать GitHub Rest API для обновления репозитория, который является частью организации?

#github-api

#github-api

Вопрос:

У меня есть большое количество репозиториев GitHub, которые были отсортированы по различным организациям. Я хочу изменить видимость репозиториев по пакетам на общедоступные, используя следующий вызов API:

 curl -u {user}:{pat} -H "Accept: application/vnd.github.v3 json"  -X PATCH https://api.github.com/repos/{user}/angular.powershifter -d '{"private":false}'
  

Насколько я могу судить, это вызов API (см. Документы github). {user] И {pat} в приведенном выше примере являются реальными значениями, и {pat} выбран каждый параметр. {user} Является владельцем репозитория и организации.

В ответ я получаю a 404 со следующим телом.

 {
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/reference/repos#update-a-repository"
}
  
  1. Возможно ли установить свойства репозиториев в организации с помощью API?
  2. Что такое вызов API?
  3. Бонусные баллы, если вы можете указать мне на документацию!

Спасибо.

Комментарии:

1. попробуйте добавить -H "Content-Type: application/json"

2. это не помогло

Ответ №1:

Используйте аутентификацию на основе токенов на предъявителя. Github не рекомендует аутентификацию на основе пароля.

 curl 
 -H 'Authorization: Bearer ${GITHUB-TOKEN}' 
 -X PATCH 
 -H "Accept: application/vnd.github.v3 json" 
 https://api.github.com/repos/${OWNER}/${repo} 
 -d '{"private":"false"}' 
  

Ссылка на документацию github
https://docs.github.com/en/free-pro-team@latest/rest/overview/other-authentication-methods

Ответ №2:

  1. Да, это возможно.

  2. У меня тоже были некоторые проблемы с этим.
    Короткий ответ используйте токен на предъявителя (как сказал @shek) и измените false на «false»:

    curl -v -H «Авторизация: предъявитель $ {GITHUB_TOKEN}»
    -X ПАТЧ https://api.github.com/repos /${ОРГАНИЗАЦИЯ}/${РЕПОЗИТОРИЙ} -H «Принять: application/vnd.github.v3 json» -d ‘{«private»: «false»}’;

Обратите внимание, что ваш токен имеет полный контроль над частными репозиториями при создании токена: изображение полного контроля над частными репозиториями

Ссылка довольно запутанная, потому что, если, например, вам нужно получить все репозитории из GitHub, вам придется использовать:

 https://api.github.com/orgs/${ORGANIZATION}/repos?${parameters}
  

Также, когда вам нужно изменить разрешения, вам нужно использовать:

 https://api.github.com/orgs/${ORGANIZATION}/teams/${TEAM}/repos/${ORGANIZATION}/${REPO}
  

(Обратите внимание на организации, которые отсутствуют в команде PATCH).

  1. Документация по репозиториям GitHub:
    https://docs.github.com/en/rest/reference/repos#update-a-repository
    Методы аутентификации GitHub (от @shek):
    https://docs.github.com/en/free-pro-team@latest/rest/overview/other-authentication-methods