Как удалить репозиторий GitHub с помощью API

Я знаком с API GitHub http://developer.github.com/v3/ Я пробую все как с плагином RESTClient для Firefox, так и с помощью инструмента командной строки curl.

Я выяснил, как создать репо с API, однако я не могу его удалить с помощью API.

В соответствии с помощью здесь: http://developer.github.com/v3/repos/#delete-a-repository Я должен отправить запрос DELETE следующим образом:

curl -X DELETE -H 'Authorization: token xxx' https://api.github.com/repos/:owner/:repo

Справка не указывается, и я не уверен, что они означают: owner и: repo - являются ли эти имена или идентификаторы, но я пробовал оба имени и идентификаторы в нескольких комбинациях без успеха. Я получаю в ответ:

404 Not Found

Что мне не хватает?

Ответы

Ответ 1

Если вы создали токен, который вы используете на странице Applications, то этот токен будет иметь эти scopes: user, public_repo, repo, gist. Вы можете проверить это, сделав запрос API с этим токеном и просмотрев HTTP-заголовки ответа:

curl -v -H 'Authorization: token xxx' https://api.github.com

Найдите заголовок ответа X-OAuth-Scopes, который будет иметь список областей:

X-OAuth-Scopes: user, public_repo, repo, gist

Однако для удаления репозитория маркер должен иметь область delete_repo.

Итак, вам нужен токен с разными областями, чем тот, который у вас есть. Вы можете создать такой токен, используя API авторизации:

curl -v -u username -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}'

Это вернет документ JSON с новым токеном, который вы сможете использовать для удаления репозитория:

{
  "id": XXXXX,
  "url": "https://api.github.com/authorizations/XXXXX",
  "app": {
    "name": "GitHub API",
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
    "client_id": "00000000000000000000"
  },
  "token": "XXXXXX",
  "note": "token with delete repo scope",
  "note_url": null,
  "created_at": "2013-10-11T20:34:49Z",
  "updated_at": "2013-10-11T20:34:49Z",
  "scopes": [
    "delete_repo"
  ]
}

Конечно, при создании маркера таким образом вы можете запросить несколько областей, а не только область delete_repo.

Кроме того, в качестве побочной заметки причина, по которой API возвращает ошибку 404, когда у вас нет правильной авторизации, является предотвратить утечку информации.

Ответ 2

Удалить репозиторий

curl -X DELETE -H 'Authorization: token {access token goes here}' https://api.github.com/repos/{yourUsername}/{name of repo} Замените фигурные скобки и текст внутри.

Заголовок дисплея

curl -I https://api.github.com -I означает выбор только HTTP-заголовка.

Создать репозиторий

curl -u yourUsername -X POST https://api.github.com/user/repos -d '{"name":"nameOfRepo"}'