Skip to content

Session

session

Functionality to initialize a Notion Session.

Session(cfg: Config | None = None, **kwargs: Any)

A session for the Notion API.

The session keeps tracks of all objects, e.g. pages, databases, etc. in an object store to avoid unnecessary calls to the API.

Parameters:

Name Type Description Default
cfg Config | None

configuration object

None
**kwargs Any

Arguments for the [Notion SDK Client][https://ramnes.github.io/notion-sdk-py/reference/client/]

{}

api: NotionAPI = NotionAPI(self.client) instance-attribute

cache: dict[UUID, DataObject | User] = {} class-attribute

client: notion_client.Client = notion_client.Client(auth=auth, **kwargs) instance-attribute

__enter__() -> Session

__exit__(exc_type: type[BaseException], exc_value: BaseException, traceback: TracebackType) -> None

all_users() -> list[User]

Retrieve all users of this workspace.

close()

Close the session and release resources.

create_db(parent: Page, schema: type[PageSchema] | None = None) -> Database

Create a new database within a page.

Implementation:

1. initialize external forward relations, i.e. relations pointing to other databases
2. create the database using a Notion API call and potential external forward relations
3. initialize self-referencing forward relations
4. create columns with self-referencing forward relations using an update call
5. update the backward references, i.e. two-way relations, using an update call

create_dbs(parents: Page | list[Page], schemas: list[type[PageSchema]]) -> list[Database]

Create new databases in the right order in case there a relations between them.

create_page(parent: Page, title: RichText | str | None = None) -> Page

Create a new page in a parent page.

get_active() -> Session classmethod

Return the current active session or None.

get_db(db_ref: ObjRef, *, use_cache: bool = True) -> Database

Retrieve Notion database by uuid

get_or_create(*args, **kwargs) -> Session classmethod

Return the current active session or create a new session.

get_or_create_db(parent: Page, schema: type[PageSchema]) -> Database

Get or create the database.

get_page(page_ref: ObjRef, *, use_cache: bool = True) -> Page

Retrieve a page by uuid.

get_user(user_ref: ObjRef, *, use_cache: bool = True) -> User

Get a user by uuid.

is_closed() -> bool

Determine if the session is closed or not.

raise_for_status()

Confirm that the session is active and raise otherwise.

Raises SessionError if there is a problem, otherwise returns None.

search_db(db_name: str | None = None, *, exact: bool = True, reverse: bool = False, deleted: bool = False) -> SList[Database]

Search a database by name or return all if db_name is None.

Parameters:

Name Type Description Default
db_name str | None

name/title of the database, return all if None

None
exact bool

perform an exact search, not only a substring match

True
reverse bool

search in the reverse order, i.e. the least recently edited results first

False
deleted bool

include deleted databases in search

False

search_page(title: str | None = None, *, exact: bool = True, reverse: bool = False, deleted: bool = False) -> SList[Page]

Search a page by name.

Parameters:

Name Type Description Default
title str | None

title of the page, return all if None

None
exact bool

perform an exact search, not only a substring match

True
reverse bool

search in the reverse order, i.e. the least recently edited results first

False
deleted bool

include deleted pages in search

False

search_user(name: str) -> SList[User]

Search a user by name.

whoami() -> User

Return the user object of this bot.

SessionError(message)

Raised when there are issues with the Notion session.