synced_block
, link_to_page
と template
のブロックタイプが API でサポートされた。以下、実際に試してみる。
UI と同じで、二つの synced_block
が存在する。-- 最初のものはオリジナルでこれは同期しない。参照ブロックはオリジナルの synced_block に同期する。
Original Synced Block
synced_block
を作るために、開発者はオリジナルの synced block を作る必要がある。開発者は synced_from
が設定されていない(null
にセットされている)ことを確認することで、それがオリジナルかどうかを確認することができる。
ChangeLog にあったサンプルをこのページに追加してみる。コードはこんな感じ。
#!/bin/sh
curl -X PATCH '<https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children>' \\
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
-H "Content-Type: application/json" \\
-H "Notion-Version: 2021-08-16" \\
--data '{
"children": [
{
"type": "synced_block",
"synced_block": {
"synced_from": null,
"children": [
{
"callout": {
"text": [
{
"type": "text",
"text": {
"content": "Synced block 内の Callout"
}
}
]
}
}
]
}
}
]
}'
返ってきた JSON はこちら。synced_from が null の synced_block が生成されている。has_children が true になっているので、この id で block children を取得すれば、上の callout が入っていると思う。
{
"object": "list",
"results": [
{
"object": "block",
"id": "d3137469-5cd5-4372-9e39-10183c6dd028",
"created_time": "2021-11-18T01:36:00.000Z",
"last_edited_time": "2021-11-18T01:36:00.000Z",
"has_children": true,
"archived": false,
"type": "synced_block",
"synced_block": {
"synced_from": null
}
}
],
"next_cursor": null,
"has_more": false
}
作成されたオリジナルの synced block はこれ。
<aside> 💡 Synced block 内の Callout
</aside>
Reference Synced Blocks
オリジナル synced_block
を他の synced_block
と同期するには、開発者は単に synced_block
を synced_from
プロパティを使って参照すればよい。
説明通りにsynced_from に block_id を設定する。先ほどの JSON に先ほど作成した synced block の id が入っているので、それを設定すればよい。
#!/bin/sh
curl -X PATCH '<https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children>' \\
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
-H "Content-Type: application/json" \\
-H "Notion-Version: 2021-08-16" \\
--data '{
"children": [
{
"type": "synced_block",
"synced_block": {
"synced_from": {
"block_id": "d3137469-5cd5-4372-9e39-10183c6dd028"
}
}
}
]
}'
返ってきた JSON はこんな感じ。synced_from に block_id が設定されています。上のスクリプトには子供を設定していないが、同期しているため has_children が設定されている。
{
"object": "list",
"results": [
{
"object": "block",
"id": "b329ea36-e5a6-41ab-8e2c-d49af1f14ab5",
"created_time": "2021-11-18T04:51:00.000Z",
"last_edited_time": "2021-11-18T04:51:00.000Z",
"has_children": true,
"archived": false,
"type": "synced_block",
"synced_block": {
"synced_from": {
"type": "block_id",
"block_id": "d3137469-5cd5-4372-9e39-10183c6dd028"
}
}
}
],
"next_cursor": null,
"has_more": false
}
作成された参照の synced block はこれ。見た目ではどちらかはわからない。