Невозможно связать новые репозитории с проектами, использующими API Bitbucket
Я создаю приложение оболочки, которое позволяет моим товарищам по команде запускать новые проекты, выполняя несколько команд. Он должен иметь возможность создать новый проект и новый репозиторий внутри этого проекта.
Хотя я указываю ключ проекта /uuid при создании нового репозитория, он не работает. Я ожидаю сообщения об успехе с подробностями для нового хранилища. В большинстве случаев это то, что я получаю:
{"type": "error", "error": {"message": "string indices must be integers", "id": "ef4c2b1b49c74c7fbd557679a5dd0e58"}}
или репозиторий переходит к первому проекту, созданному для этой команды (это поведение по умолчанию, когда ключ /uuid проекта не указан, согласно документации API Bitbucket).
Итак, я предполагаю, что между моим запросом и кодом, получающим его, что-то есть? Потому что, похоже, они даже не получают данные запроса.
# Setup Request Body
rb = {
"scm": "git",
"project": {
"key": "PROJECT_KEY_OR_UUID"
}
}
# Setup URL
url = "https://api.bitbucket.org/2.0/repositories/TEAM_NAME/REPOSITORY_NAME"
# Request
r = requests.post(url, data=rb)
1 ответ
В коде из документации API вы заметите, что заголовок Content-Type - это "application/json".
$ curl -X POST -H "Content-Type: application/json" -d '{
"scm": "git",
"project": {
"key": "MARS"
}
}' https://api.bitbucket.org/2.0/repositories/teamsinspace/hablanding
В вашем коде вы передаете свои данные в data
параметр, который создает заголовок Content-Type "application/x-www-form-urlencoded" и кодирует ваши почтовые данные.
Вместо этого вы должны использовать json
параметр.
rb = {
"scm": "git",
"project": {
"key": "PROJECT_KEY_OR_UUID"
}
}
url = "https://api.bitbucket.org/2.0/repositories/TEAM_NAME/REPOSITORY_NAME"
r = requests.post(url, json=rb)