はじめに
hkob の雑記録の第376回目(通算773日目)は、久しぶりに Notion API 活用術の改訂作業に戻ります。今日は先日修正したばかりの Section-014 の一覧取得の変更です。これは、先日追加された List data source templates API を追加するためです。
テンプレートの取得 (List data source templates) を追加
この部分は完全に新規項目です。子ブロック一覧を取得の後ろに以下のように追記しました。子ブロックの取得が GET であり、次のデータソースからのページ取得が POST になるためです。
2025年10月に API によるページ作成時にテンプレートを指定できるようになりました。この対応のために、データソースに登録されているテンプレートを取得する API が急遽追加されました。この API の説明はここで行われています。
ここでは 10 節でプロパティの説明に使用したデータソースを使います。テンプレートにデータソースの ID が同期されているので、これを利用してください。メソッドは GET であり、データソースの取得の URL に templates を追加するだけになります。SCHEME は以下のようになります。
https://api.notion.com/v1/data_sources/{data_source_id}/templates実行すると以下のような結果が出てきました。これまでの API では複数のデータが返ってくる場合には、必ず List object が返ってきたのですが、これは特例のようです。ただし、List object と同様に1回で取得できない場合のために、Pagination のための has_more や next_cursor が含まれています。それぞれのテンプレートには、id キー値に page_id、name キー値にテンプレートのタイトル、 is_default にデフォルトテンプレートの場合に true を返すブール値が入っています。
List data source templates の結果
データソースからページを検索の修正
テンプレートの取得ですでに data_source_id を使ったので、その部分を削除しました。また、テンプレートを取得の SCHEME が
https://api.notion.com/v1/data_sources/{data_source_id}/templates
なのに対し、ページ検索の SCHEME が
https://api.notion.com/v1/data_sources/{data_source_id}/query
となっています。このため、「SCHEME は以下のようになります」という文章の後に「テンプレートの取得の SCHEME の templates の部分が query に変わっただけです。」という文章を追加しました。
NotionRubyMapping の実装に向けて
実はまだ List data source templates は NotionRubyMapping に実装されていません。前述したように、このレスポンスの JSON が List object でないためです。Pagination 処理は List object の中に実装しており、templates のためだけに Pagination を実装するのは無駄に思えるためです。Notion API からは List object として返却されないのですが、NotionRubyMapping 内ではあくまで List object として管理する方がソース規模を増やさずに済むのではないかと検討しています。
おわりに
書籍の改訂作業も進めなければならないのですが、この新規 API への対応も必要ですね。先にこちらを手がけてしまうかもしれません。
