Features¶
Some of the feature listed here, loosely correspond to the features of the endpoints defined in the Notion API. Please note that a slightly different terminology is used. Since the term properties is highly overloaded, we call the properties of a database as a whole schema and refer to the individual properties as database properties or sometimes columns in the context of a table or view. With page properties, we denote only the properties of a page within a database that correspond to the properties of the database schema. In contrast to that, the properties that every page has, e.g. title, icon, last edited by/time, etc., are called page attributes.
General¶
- high-level and pythonic interface for the Notion API
- caching to avoid unnecessary calls to the Notion API
- 100% feature parity with the official Notion API
Databases¶
- retrieve a database by its ID
- search for a database by its title
- create a new database with a given schema, i.e. properties and their types
- delete and restore a database
- update a database schema, i.e. adding/removing properties or changing their types
- change database properties, e.g. name, formula of formula property, options, etc.
- read the database attributes like title, description, cover, icon, etc.
- change database attributes like title, description, etc.
- retrieve all pages of a database
- query with filters and sortings to retrieve only specific pages
- display the content of a database as a table, e.g. in JupyterLab
- create new pages with properties within the database respecting the schema
Pages¶
- retrieve a page by its ID
- search for a page by its title
- create a new page
- delete and restore a page
- read page attributes like title, cover, icon, etc.
- change page attributes like title, cover, icon, etc.
- read page properties defined by a database schema
- change page properties
- navigate pages using parent and children links
- retrieve the blocks within a page
- add or remove blocks within a page
- view the content of a page as Markdown
Blocks¶
- create a new block and append it to a page or a parent block
- delete a block
- change the content of a block
- navigate blocks using references of parent and children
Users¶
- retrieve all users
- retrieve a user by their ID
- retrieve own bot user, i.e. self-identify
Comments¶
- create a comment in a page or existing discussion thread
- retrieve unresolved comments from a page or block
Adapters¶
- general synchronization capabilities with external services
- client for Google Tasks API and synchronization adapter to sync google tasks with a Notion database
- synchronization adapter for Google Sheets API to sync google sheets with a Notion database
Notion API Limitations¶
Some features that the Notion UI provides are not possible to implement due to limitations of the API itself.
- creating a Status property or updating the options as well as option groups. Sending an Status property within a create database call is currently accepted but just ignored, i.e. a database without the property will show up.
- creating a Unique ID property or updating its properties like the prefix. This property type is not even mentioned as one of the database properties.
- creating a Wiki database which has a special Verification property.
- updating the database schema with respect to the options of a select/multi-select property, the formula of a formula property, and synced content.
- referencing in a formula expression another formula property, e.g.
prop("other formula")
. Use substitution instead. - creating a two-way relation with the same source and target database, i.e. self-referencing. The update database call is currently accepted but only a one-way relation created, which seems to be a bug.
- uploading files as icons or in general uploading files.
- setting the icon and cover of a database.
- moving pages is not possible as a page’s parent cannot be changed.
- setting a reminder based on date and/or time.
- modifying the url of file-like block, e.g.
File
,Image
, etc. - creating inline comments to start a new discussion thread.
- resolving comments or listing unresolved comments.
- locking or unlocking a page or database.
If you think those limitations should be fixed, let the developers of Notion know 😆