Skip to content

Chat Folders

albert.collections.chat_folders.ChatFolderCollection

ChatFolderCollection(*, session: AsyncAlbertSession)

Async collection for managing chat folders.

Parameters:

Name Type Description Default
session AsyncAlbertSession

The async session used to make API requests.

required

Methods:

Name Description
create

Create a new chat folder.

get_by_id

Retrieve a chat folder by its ID.

get_all

Iterate over chat folders with optional filters.

delete

Delete a chat folder by ID.

Attributes:

Name Type Description
base_path str
Source code in src/albert/collections/chat_folders.py
def __init__(self, *, session: AsyncAlbertSession):
    """
    Initializes the ChatFolderCollection with the provided session.

    Parameters
    ----------
    session : AsyncAlbertSession
        The async session used to make API requests.
    """
    self._session = session
    self.base_path: str = f"/api/{self._api_version}/chats/folders"

base_path

base_path: str = f'/api/{_api_version}/chats/folders'

create

create(*, folder: ChatFolder) -> ChatFolder

Create a new chat folder.

Parameters:

Name Type Description Default
folder ChatFolder

The folder to create.

required

Returns:

Type Description
ChatFolder

The created folder.

Source code in src/albert/collections/chat_folders.py
@validate_call
async def create(self, *, folder: ChatFolder) -> ChatFolder:
    """
    Create a new chat folder.

    Parameters
    ----------
    folder : ChatFolder
        The folder to create.

    Returns
    -------
    ChatFolder
        The created folder.
    """
    response = await self._session.post(
        self.base_path,
        json=folder.model_dump(by_alias=True, exclude_unset=True, mode="json"),
    )
    return ChatFolder(**response.json())

get_by_id

get_by_id(*, id: str) -> ChatFolder

Retrieve a chat folder by its ID.

Parameters:

Name Type Description Default
id str

The folder ID.

required

Returns:

Type Description
ChatFolder

The matching folder.

Source code in src/albert/collections/chat_folders.py
@validate_call
async def get_by_id(self, *, id: str) -> ChatFolder:
    """
    Retrieve a chat folder by its ID.

    Parameters
    ----------
    id : str
        The folder ID.

    Returns
    -------
    ChatFolder
        The matching folder.
    """
    response = await self._session.get(f"{self.base_path}/{id}")
    return ChatFolder(**response.json())

get_all

get_all(
    *,
    name: list[str] | None = None,
    created_by: str | None = None,
    updated_by: str | None = None,
    exact_match: bool = False,
    max_items: int | None = None,
) -> AsyncIterator[ChatFolder]

Iterate over chat folders with optional filters.

Parameters:

Name Type Description Default
name list[str] | None

Filter by folder name(s).

None
created_by str | None

Filter by the user who created the folder.

None
updated_by str | None

Filter by the user who last updated the folder.

None
exact_match bool

Whether name filtering uses exact matching (default False).

False
max_items int | None

Maximum number of items to return in total. If None, fetches all available items.

None

Yields:

Type Description
ChatFolder

Folders matching the given filters.

Source code in src/albert/collections/chat_folders.py
async def get_all(
    self,
    *,
    name: list[str] | None = None,
    created_by: str | None = None,
    updated_by: str | None = None,
    exact_match: bool = False,
    max_items: int | None = None,
) -> AsyncIterator[ChatFolder]:
    """
    Iterate over chat folders with optional filters.

    Parameters
    ----------
    name : list[str] | None, optional
        Filter by folder name(s).
    created_by : str | None, optional
        Filter by the user who created the folder.
    updated_by : str | None, optional
        Filter by the user who last updated the folder.
    exact_match : bool, optional
        Whether name filtering uses exact matching (default False).
    max_items : int | None, optional
        Maximum number of items to return in total. If None, fetches all available items.

    Yields
    ------
    ChatFolder
        Folders matching the given filters.
    """
    params: dict = {}
    if name:
        params["name"] = name
    if created_by is not None:
        params["createdBy"] = created_by
    if updated_by is not None:
        params["updatedBy"] = updated_by
    if exact_match:
        params["exactMatch"] = "true"

    async for folder in AsyncAlbertPaginator(
        session=self._session,
        path=self.base_path,
        deserialize=lambda item: ChatFolder(**item),
        params=params,
        max_items=max_items,
    ):
        yield folder

delete

delete(*, id: str) -> None

Delete a chat folder by ID.

Parameters:

Name Type Description Default
id str

The ID of the folder to delete.

required

Returns:

Type Description
None
Source code in src/albert/collections/chat_folders.py
@validate_call
async def delete(self, *, id: str) -> None:
    """
    Delete a chat folder by ID.

    Parameters
    ----------
    id : str
        The ID of the folder to delete.

    Returns
    -------
    None
    """
    await self._session.delete(f"{self.base_path}/{id}")