https://developers.notion.com/docs/getting-started
こちらの記事をざっくり日本語訳したものになります。
前提
- 対象のワークスペースのAdminであること
- curlコマンド使えること
- って書いてあるけど別にPostmanとか、HTTPリクエストが投げれれば良いはず
手順
Integrationを作成する
こちら から新しいIntegrationを作成します。
名前、画像、対象のワークスペースを入力し、次へ。
次の画面でInternal Integration Token
というTokenが取得できるので、控えておきます。
Integrationと対象のページ、データベースを共有する
Integrationはユーザとの記事共有のような形式になります。Integrationは最初はどのページ、データベースにもアクセス権は有りません。APIを使うためには、Integrationと特定の記事やデータベースを共有する必要があります。
ユーザを招待するように、APIからアクセスしたいページ、データベースをIntegrationと共有します。
(今回はわかりやすいのでDatabaseで行います)
この時点で、Integrationは対象のデータベースに対して、read, write, edit権限を持ちます。この手順はどのユーザも作業可能です。
データベース、ページのIDを取得
次に、データベースのIDが必要になります。
- アプリの場合
- Share→Copy linkからURLを取得し、そのURLの最後のセグメントがIDをになります
- Webの場合
- 対象のデータベースをフルページで開いて、URLの最後のセグメントがIDになります。
https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=...
|--------- Database ID --------|
データベースにアイテムを追加する
Notionにおいて、データベースの中のItemはページです。なので、create a page
のエンドポイントを利用し、対象のデータベース配下にページを作成します。
以下のようなPOSTリクエストを送信します。(もちろんcurl以外でもなんでもOKです)
curl -X POST https://api.notion.com/v1/pages \
-H "Authorization: Bearer {MY_NOTION_TOKEN}" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2021-05-13" \
--data '{
"parent": { "database_id": "{DATABASE_ID}" },
"properties": {
"Name": {
"title": [
{
"text": {
"content": "Yurts in Big Sur, California"
}
}
]
}
}
}'
成功すると、200で以下のようなレスポンスが返ってきます。
{
"object": "page",
"id": "31840a55-35d2-4320-91e9-*********",
"created_time": "2021-05-26T13:35:16.271Z",
"last_edited_time": "2021-05-26T13:35:16.271Z",
"parent": {
"type": "database_id",
"database_id": "4a212d83-bfb3-4f2f-8dd1-e**********"
},
"archived": false,
"properties": {
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Yurts in Big Sur, California",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Yurts in Big Sur, California",
"href": null
}
]
}
}
}
ちゃんとデータが作成されていました。
まとめ
NotionのAPIの基本はこんな感じかと思います。
- 作成するユーザはAdmin権限が要る
- Integrationを作成、Tokenを取得
- 対象のデータベース、ページにIntegrationを追加する
- 対象のデータベース、ページのIDを取得
- 実現したい動作に合ったエンドポイントにリクエストを投げる
待ちにまったNotion APIのリリースですね!
データの収集はもちろん捗りそうですが、色々な使い方がありそうです。どんどん活用していきましょう。