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[Schema] | 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 properties 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[Schema]]) -> list[Database]
¶
Create new databases in the right order in case there a relations between them.
create_page(parent: Page, title: Text | str | None = None) -> Page
¶
Create a new page in a parent page.
get_active() -> Session
classmethod
¶
Return the current active session or None.
get_block(block_ref: UUID | str, *, use_cache: bool = True) -> Block
¶
Retrieve a single block by an object reference.
get_db(db_ref: UUID | str, *, 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[Schema]) -> Database
¶
Get or create the database.
get_page(page_ref: UUID | str, *, use_cache: bool = True) -> Page
¶
Retrieve a page by uuid.
get_user(user_ref: UUID | str, *, use_cache: bool = True) -> User
¶
Get a user by uuid.
Warning
Trying to retrieve yourself, i.e. the bot integration, only works if use_cache
is true, since the low-level api, i.e. api.users.retrieve()
does not work for the bot integration. Better use whoami()
to get the bot integration user object.
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 |
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) -> SList[Page]
¶
Search a page by name. Deleted pages, i.e. in trash, are not included in the search.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
title | str | None | title of the page, return all if | 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 |
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.