2016-07-13 5 views
2

mainprojectという名前のプロジェクトがある私のビットバケットアカウントのチームmyteamがあります。私がリポジトリを作成したいときは、次のコマンドラインを実行するだけです:Bitbucket API 2 - チームプロジェクトでリポジトリを作成する

$ 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という2番目のプロジェクトを作成するときに問題が発生します。リポジトリが属するプロジェクトを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"} }' 

をこれは、プロジェクトmainprojectでリポジトリrepo2を作成します。

私はuuidを使ってみましたが、同じことが起こりました。メインプロジェクトにrepoが作成されました。

私は、リンクでプロジェクト名を入れてみました:

$ 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"}} 

どのように私は私が作成したいリポジトリが属するプロジェクトを指定することができますか? 私はGUIソリューションを探しているわけではありません。この方法でリポジトリの作成を自動化する必要があるため、コマンドラインに固執したいと思います。

答えて

8

コンテンツタイプを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"}}' 
+0

パスワードを書く/書くことなくこれをスクリプト化する方法はありますか?例えばSSHを使う? – Wingjam

+0

URLのTEAMは大文字と小文字を区別します。この場合は「myteam」です。私の場合、その名前に大文字の文字がいくつかありましたが、失敗したときはフレンドリーなエラーにはなりませんでした。 –

関連する問題