32 lines
2.0 KiB
Markdown
32 lines
2.0 KiB
Markdown
# Notion
|
|
|
|
## Overview
|
|
|
|
Notion is an application that provides components such as notes, databases, kanban boards, wikis, calendars and reminders. Notion REST API allows a developer to retrieve pages, databases, blocks, and users on the Notion platform.
|
|
|
|
## Endpoints
|
|
|
|
Notion API consists of three endpoints which can be extracted data from:
|
|
|
|
1. **User**: The User object represents a user in a Notion workspace. Users include guests, full workspace members, and bots.
|
|
2. **Block**: A block object represents content within Notion. Blocks can be text, lists, media, and more. Page and database is also a type of block.
|
|
3. **Search**: This endpoint is used to get list of pages and databases.
|
|
|
|
## Quick Notes
|
|
|
|
- Notion stores content in hierarchy, each node is called a 'block'. Block is a generic term which can be text, lists, media, even page and database are also block.
|
|
|
|
- Due to this hierarchical structure, we use recursive request to get the full list of blocks.
|
|
|
|
- Pages and databases can be extracted from the `Search` endpoint separately, so they are excluded from the block list request.
|
|
|
|
- Airbyte CDK doesn't support recursive schema, so some elements of the block schema which can be recursive are replaced with empty objects.
|
|
|
|
- Page and database must grant permission to the internal integration, otherwise API cannot extract data from them. See [https://developers.notion.com/docs/authorization#authorizing-internal-integrations](https://developers.notion.com/docs/authorization#authorizing-internal-integrations)
|
|
|
|
- Rate limiting is a standard exponential backoff when a 429 HTTP status code returned. The rate limit for incoming requests is an average of 3 requests per second. Some bursts beyond the average rate are allowed. Notion API also has size limit, see [https://developers.notion.com/reference/errors#request-limits](https://developers.notion.com/reference/errors#request-limits)
|
|
|
|
## API Reference
|
|
|
|
The API reference documents: [https://developers.notion.com/reference/intro](https://developers.notion.com/reference)
|