[小ネタ]Backlog課題コメントから過去のバージョンを復元する

Backlogの「課題コメントの取得」 APIを使うと課題の更新履歴を参照することができます。Webでの省略表示ではなく、マークダウンで書いていた詳細フィールドも元の形式で取得して復元することができます。
2021.08.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

みなさんは何時間もかけて記入したタスク管理ツールのタスクの詳細文を意図しない操作で失ってしまったことはありますか?僕はあります。

具体的には月曜の朝から前の週に何時間もかけて記入したBacklog課題の「概要」のテキストを吹っ飛ばして泣きそうな顔になっていました。

しかしBacklogのAPIを使うことで変更前の内容を復元できてよかったね、というのが今回の内容です。

Backlog API

Backlogはワークスペース内の課題やプロジェクトなどの情報を取得、更新するためのWeb APIを提供しています。個人用のAPIキーを発行すれば試すことができて定型作業の自動化が簡単に行えます。

課題コメントの取得

今回は課題の更新履歴を取得したかったので「課題コメントの取得」APIを利用しました。

実行例

curlで実行する場合は以下のようになります。

curl --location --request GET 'https://your_workspace.backlog.jp/api/v2/issues/PRJ_1234/comments?apiKey=XXXXX'

最低限必要なパラメータは以下の通りです。

  • ワークスペースURL
  • 課題のID(パスパラメータ)
  • APIキー(クエリパラメータapiKey)

レスポンス例

レスポンスは以下のようになります。

changeLog フィールドに課題更新時の変更点が課題の各項目ごとに含まれています

[
  {
    "id": 12345,
    "content": null,
    "changeLog": [
      {
        "field": "description",
        "newValue": "新しい内容",
        "originalValue": "## 古い内容\n - list\n - list",
        "attachmentInfo": null,
        "attributeInfo": null,
        "notificationInfo": null
      }
    ],
    "createdUser": {
      "id": 12345,
      "userId": "annn@bird.me",
      "name": "ANNE",
      "roleType": 2,
      "lang": "ja",
      "mailAddress": "annn@bird.me",
      "nulabAccount": {
        "nulabId": "YYYYY",
        "name": "ANNE",
        "uniqueId": "anne"
      },
      "keyword": "ANNE"
    },
    "created": "2021-08-23T01:09:11Z",
    "updated": "2021-08-23T01:09:11Z",
    "stars": [],
    "notifications": []
  }
]

値の取り出し

上記の例だとoriginalValueには改行を含むマークダウン形式のテキストが含まれています。これはJSON形式にエスケープされているのでこのままでは使用できません。jqの-r オプションでraw stringを取り出します。

# (上記のレスポンスボディがクリップボードに入った状態で)
> pbpaste | jq -r .[0].changeLog[0].originalValue
## 古い内容
 - list
 - list

まとめ

Backlogの課題コメントの取得 APIを使うと課題の更新履歴を参照することができます。Webでの省略表示ではなく、マークダウンで書いていた詳細フィールドも元の形式で取得して復元することができます。