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
}
]
}
}
復元されたブロックはここにあるように一番下に追加された。