タグ別アーカイブ: REST API

PowerShellでRedmine REST APIにJSON形式でPOSTしてプロジェクトを新規作成する

PowerShellでRedmine REST APIにJSON形式でデータをPOSTしてプロジェクトを新規作成するとき、注意すべき事項は以下の2点。

・連想配列(ハッシュ)でPOSTするデータを用意するとき、プロジェクトの属性データ全体を”project”キーの値とした連想配列にする必要がある。
・連想配列(ハッシュ)をUTF8でエンコードする必要がある。
・APIアクセスキーを access_key をキーとしてデータに含める必要がある。

たとえば、作成したいプロジェクトの属性データは下記とします。


$data = @{
"name" = "テストのプロジェクト";
"identifier" = "testproject";
"description" = "";
"status" = 1;
"is_public" = "true";
"enabled_module_names" = @("issue_tracking", "time_tracking");
};

このデータを http://(ホスト名)/projects.json にPOSTしても422 Errorになります。

まずaccess_keyを追加する必要があります。


$data["access_key"] = "(APIアクセスキーの文字列)"

次に属性データ全体を project というキーの値にしてからPOSTする必要があります。


$postdata = @{"project" = $data}

さらにUTF8にエンコードする必要があるので。


$jsondata = ConvertTo-Json -InputObject $postdata
$jsonUTF8data = [System.Text.Encoding]::UTF8.GetBytes($jsondata)

この $jsonUTF8data をInvoke-RestMethodの-Bodyパラメータに設定します。


Invoke-RestMethod -Uri $postURI -Method POST -ContentType "application/json" -Body $jsonUTF8data -Credential $cred

これでようやく422 Errorが解消します。