Bitbucket API 2 — создание репозитория в командном проекте

У меня есть команда в моей учетной записи bitbucket, myteam, которая содержит проект с именем mainproject. Всякий раз, когда я хочу создать репозиторий внутри, мне нужно только выполнить эту командную строку:

$ curl -X POST -v -u myaccount:passwd "https://api.bitbucket.org/2.0/repositories/myteam/repo1" -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks"}'

Это работает. Однако проблема возникает, когда я создаю второй проект с именем secondproject. Как я должен сообщить API, к какому проекту должен принадлежать репозиторий?

Я попытался указать информацию о проекте в данных (-d):

$ curl -X POST -v -u myaccount:passwd "https://api.bitbucket.org/2.0/repositories/myteam/repo2" -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks", "project": {"name": "secondproject"} }'

или с ключевым параметром:

$ curl -X POST -v -u myaccount:passwd "https://api.bitbucket.org/2.0/repositories/myteam/repo2" -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks", "project": {"key": "SEC"} }'

Это создаст репозиторий repo2 в проекте mainproject.

Я пытался использовать uuid, но происходит то же самое, репо создается в основном проекте.

Я попытался указать название проекта в ссылке:

$ curl -X POST -v -u myaccount:passwd "https://api.bitbucket.org/2.0/repositories/myteam/secondproject/repo1" -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks"

...
{"error": {"message": "Resource not found", "detail": "There is no API hosted at this URL.\n\nFor information about our API's, please refer to the documentation at: https://confluence.atlassian.com/x/IYBGDQ"}}

Как я могу указать, к какому проекту принадлежит репозиторий, который я хочу создать? Я не ищу решение с графическим интерфейсом, я хочу придерживаться командной строки, так как мне нужно автоматизировать создание репозиториев таким образом.


person kaligne    schedule 13.07.2016    source источник


Ответы (1)


Тип содержимого должен быть указан как curl с этим аргументом: -H "Content-Type: application/json". Тогда доступ к данным json будет осуществляться нормально. Таким образом, окончательная команда будет выглядеть так:

$ curl -X POST -v -u myaccount:passwd "https://api.bitbucket.org/2.0/repositories/myteam/repo2" -H "Content-Type: application/json"  -d '{"has_wiki": true, "is_private": true, "project": {"key": "PRJ_KEY"}}'
person kaligne    schedule 13.07.2016
comment
Есть ли способ написать это без написания/запроса пароля? Например, с помощью SSH? - person Wingjam; 15.03.2017
comment
Следует отметить, что TEAM в URL-адресе чувствителен к регистру... в данном случае «myteam». В моем случае у нас было несколько заглавных букв в этом имени, и мы НЕ получили дружественной ошибки, когда это не удалось. - person Brett Green; 21.03.2017
comment
Я пробовал, у меня получилось * Connection #0 to host api.bitbucket.org left intact {"type": "error", "error": {"message": "Forbidden"}} - person cyb3rZ; 03.10.2019
comment
Документы находятся по адресу разработчика. .atlassian.com/bitbucket/api/2/reference/resource/ - person brian d foy; 24.01.2021