SE(しがないエンジニア)のブログ

IT技術ネタ(クラウド・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

Redmine(+ Digest 認証環境下)で curl コマンドを利用し issue create を行う

Redmine REST API

自社でプロジェクト管理のために Redmine を利用しているのですが今まで REST API を利用したことがありませんでした。そもそも、Redmine で仕様として公開されている REST API ってどんなものがあるの?という情報は下記の通りで。
https://www.redmine.org/projects/redmine/wiki/rest_api
今回、とある開発の絡みで調べていたのですが、結構色んなことができるんだなぁ、と感心しました。(もっと早く活用すれば良かった。笑)

本題の Redmine (+ digest Auth) における curl issue create のはなし

前述のとある開発の絡みは php + MySQL で作成している Web アプリにて「問い合わせを1件立てると Redmine でチケット(issue)を1件発行する」といった連携を行います。ちなみに自社の場合は Digest 認証だったり何なりとちょっと複雑な環境下だったりするため、ネットで中々合致する参考資料(コマンド例)が見つかりませんでした・・・・しかし、結果として色々組み合わせていく中で 200 の status を返せました!

# curl --insecure --anyauth --user (username):(password) --location-trusted -X POST -H "Content-Type: application/json" -d '{"issue":{"project_id": (project_id), "subject": "(subject)", "tracker_id": (tracker_id), "status_id": (status_id), "watcher_user_ids": ["user_id"(, "user_id") ... ]}}' (redmine_url)/issues.json?key=(redmine_target_user_api_key)
といった感じです。これを導き出すのに結果丸一日くらい使ってしまいました。ちなみに curl コマンドの方は元々 php で組んでいたプログラムから流用し、後半の記述の仕方は下記サイトを参考にしております。
利用・活用 Redmine API - ファーエンドテクノロジー株式会社
Thank you, FAR END Technologies 様!

追記(Appendix)

2020/07/29

どうも、最後の方の「?key=」以降はなくても大丈夫なようです。失礼致しました。