この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どうも!大阪オフィスの西村祐二です。
何番煎じかわかりませんが、Notion APIを試してみたいと思います。
他のブログと差を出すために、公式から提供されるPostmanのコレクションを使ってNotion APIを試してみたいと思います。
integrationを作成
はじめに、integrationを作成します。
下記リンクにアクセスします。
https://www.notion.com/my-integrations
「New Integration」からインテグレーションを作成します。
インテグレーションを作成したらInternal Integration Tokenをコピーしておきます。
データベース作成
Notion APIで操作対象となるデータベースを用意します。
こちらにデータベースのテンプレートがあるので自分のワークスペースへ複製しておきましょう。
自分のワークスペースに複製したら、右上のShareから先程作成したインテグレーションをInviteします。
最後にデータベースのIDを取得しておきます。
データベースIDはURLの「?v」の前にある文字列部分になります
https://www.notion.so/{workspace_name}/{database_id}?v={view_id}
Postman: Notion APIコレクションをfork
PostmanにNotion API用のワークスペースがあるので、ここにある「Notion API - Public Beta」というコレクションを自分のワークスペースにforkします。
※Postmanのアカウントはすでに持っている前提で進めています。
https://www.postman.com/notionhq/workspace/notion-s-public-api-workspace/overview
Notion APIを実行
環境変数を設定
自分のワークスペースにforkしたら環境変数の設定を行います。
今回、データベースに対して検索などの操作をする想定なので下記を設定します。
「BEARER_TOKEN」に「Internal Integration Token」
と
「DATABASE_ID」に「データベースID」
を設定します。
データベースの情報を取得
設定が完了したら実際にAPIを実行していきましょう。
はじめにデータベースの情報を取得してみます。
「Retrieve a database」からSendをクリックしてみましょう。
すると、レスポンスとしてデータベースの情報が返ってきます。
APIの詳細はAPIドキュメントを確認いただければと思います
データベース内のデータを検索
「Query a database」から検索APIを実行できます。
検索する方法としてbodyにfilterを指定することで検索条件を表現します。
今回bodyに設定する検索条件は下記とします。(forkしたらデフォルトでこの設定がセットされているかと思います)
ステータスが「Reading」で出版社が「NYT」のものをスコアでソートして取得、という条件になります。
{
"filter": {
"or": [
{
"property": "Status",
"select": {
"equals": "Reading"
}
},
{
"property": "Publisher",
"select": {
"equals": "NYT"
}
}
]
},
"sorts": [
{
"property": "Score /5",
"direction": "ascending"
}
]
}
APIを実行すると想定したレスポンスがかえって来ていることがわかります。
他にもコンテンツを取ってくるAPIやデータベース外のもっと広い範囲で検索するAPIなどもあります。
さいごに
PostmanからNotion APIを試してみました。
公式でNotion API用のコレクションが用意されているので、
APIの動作確認をする用途ならcurlよりも簡単で、レスポンスなど見やすいのでおすすめです。
誰かの参考になれば幸いです。