概要
公式ドキュメントは割としっかり書いてある。
ただ、実例があまり見つからなかったので備忘録として残しておく。
トークン取得
Azure DevOps REST API を使ってみようを参考にトークンを取得する。
記事では Fiddler を使っているが、導入していないのでBashでトークンを使える形にした。
echo -n "hoge:fugaToken" | base64
dGVzdDpwYXNzd29yZA==
APIからページのデータを取得。
Pages - Get Page By Idを参考にしてRESTAPIを作成する。
GET https://dev.azure.com/{organization}/{project}/_apis/wiki/wikis/{wikiIdentifier}/pages/{id}?api-version=7.1-preview.1
のパスがドキュメントから確認できる。
たとえば、/pullrequest/mermaid
のパスに存在する、https://dev.azure.com/hogehoge/てすと/_wiki/wikis/ほげ/952/mermaid
のページの情報を取得する場合を下記に示す。
日本語や/が混じるとエラーとなるため、URLエンコードを行う。
GET https://dev.azure.com/hogehoge/%E3%81%A6%E3%81%99%E3%81%A8/_apis/wiki/wikis/%E3%81%BB%E3%81%92/pages/952?api-version=7.1-preview.1
Authorization: Basic dGVzdDpwYXNzd29yZA==
Content-Type: application/json
echo -n "てすと" | perl -MURI::Escape -ne 'print uri_escape($_)'
echo -n "ほげ" | perl -MURI::Escape -ne 'print uri_escape($_)'
このAPIのレスポンスヘッダに記載されているETag
のIDは、更新に使うため控えておく。
APIを通じてページの更新を行う。
ブランチをazureブランチとしてwikiの管理をしているとする。
path=
にURLエンコードしたパス(/
の変換)を指定する。( echo -n "pullrequest/mermaid" | perl -MURI::Escape -ne 'print uri_escape($_)'
)
If-Match
には先ほどGETした戻りのヘッダのETagを取得する。
PUT https://dev.azure.com/hogehoge/%E3%81%A6%E3%81%99%E3%81%A8/_apis/wiki/wikis/%E3%81%BB%E3%81%92/pages?path=pullrequest%2Fmermaid&versionDescriptor.version=azure&api-version=7.1-preview.1
Authorization: Basic dGVzdDpwYXNzd29yZA==
Content-Type: application/json
If-Match: "30d74d258442c7c65512eafab474568dd706c430"
{
"content": "piyopiyo"
}
参考
Azure DevOps REST API を使ってみよう
AzureDevOpsPipelineからRESTAPIをたたく