内容

Notion API で、全てのブロックタイプ(ページを含む)に対して、Delete a block を使って削除を実行できるようになった。この作業は Notion のアプリケーションにおけるゴミ箱に追加するという振る舞いに相当する。加えて、この ブロックオブジェクト は削除されたときに、archived という boolean 属性を追加する。

削除後に、ブロックの更新 または ページの更新 を使い、 { archived: false }に変更することで、アーカイブから復元できる。

検証

テスト用に削除するブロックオブジェクトを作成しておく。この下に「削除予定のオブジェクト」という箇条書きを作っておいた。この箇条書きの block_id は「a87896c4b4ed4e429bb0fafa595570e4」だった。

この block_id のオブジェクトを削除するスクリプトを作成した。

#!/bin/sh
curl '<https://api.notion.com/v1/blocks/a87896c4b4ed4e429bb0fafa595570e4>' \\
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
  -H 'Notion-Version: 2021-08-16' \\
  -X DELETE \\

返ってきた JSON はこちら。「"archived": true」となっており、削除されていることがわかる。

{
    "object": "block",
    "id": "a87896c4-b4ed-4e42-9bb0-fafa595570e4",
    "created_time": "2021-11-10T13:54:00.000Z",
    "last_edited_time": "2021-11-10T14:02:00.000Z",
    "has_children": false,
    "archived": true,
    "type": "bulleted_list_item",
    "bulleted_list_item": {
        "text": [
            {
                "type": "text",
                "text": {
                    "content": "削除予定のオブジェクト",
                    "link": null
                },
                "annotations": {
                    "bold": false,
                    "italic": false,
                    "strikethrough": false,
                    "underline": false,
                    "code": false,
                    "color": "default"
                },
                "plain_text": "削除予定のオブジェクト",
                "href": null
            }
        ]
    }
}

せっかくなので、復元も実施してみる。復元するには上に書いてあるように {archived: false}に戻せばよい。スクリプトはこんな感じになる。せっかくなので、テキストも「復元したブロック」に変更してみた。

#!/bin/sh
curl <https://api.notion.com/v1/blocks/a87896c4b4ed4e429bb0fafa595570e4\\>
  -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
  -H "Content-Type: application/json" \\
  -H "Notion-Version: 2021-08-16" \\
  -X PATCH \\
  --data '{
  "bulleted_list_item": {
    "text": [{
      "text": { "content": "復元したブロック" }
    }]
  },
  "archived": false
}'

返された JSON はこちら。archived が false になっていることを確認できた。

{
    "object": "block",
    "id": "a87896c4-b4ed-4e42-9bb0-fafa595570e4",
    "created_time": "2021-11-10T13:54:00.000Z",
    "last_edited_time": "2021-11-10T14:07:00.000Z",
    "has_children": false,
    "archived": false,
    "type": "bulleted_list_item",
    "bulleted_list_item": {
        "text": [
            {
                "type": "text",
                "text": {
                    "content": "復元したブロック",
                    "link": null
                },
                "annotations": {
                    "bold": false,
                    "italic": false,
                    "strikethrough": false,
                    "underline": false,
                    "code": false,
                    "color": "default"
                },
                "plain_text": "復元したブロック",
                "href": null
            }
        ]
    }
}

復元されたブロックはここにあるように一番下に追加された。


Notion API Changelog まとめ