Skip to content

Meeting Operations

Operations for managing meetings and meeting-related data.

API Reference

MeetingOperations

MeetingOperations(client: Client)

Bases: BaseOperations

Class to handle all operations related to meetings.

Note

This class is already initialized via the client and usable as client.meeting.method

Methods:

  • list

    List all meetings for a specific user.

  • attendees

    List all attendees for a specific meeting.

  • issues

    List all issues for a specific meeting.

  • todos

    List all todos for a specific meeting.

  • metrics

    List all metrics for a specific meeting.

  • details

    Retrieve details of a specific meeting.

  • create

    Create a new meeting.

  • delete

    Delete a meeting.

  • create_many

    Create multiple meetings in a best-effort manner.

  • get_many

    Retrieve details for multiple meetings in a best-effort manner.

Functions

list
list(user_id: int | None = None) -> list[MeetingListItem]

List all meetings for a specific user.

Parameters:

  • user_id (int | None, default: None ) –

    The ID of the user (default is the initialized user ID)

Returns:

  • list[MeetingListItem]

    A list of MeetingListItem model instances

Example
client.meeting.list()
# Returns: [MeetingListItem(id=123, name="Team Meeting", ...), ...]
attendees
attendees(meeting_id: int) -> list[MeetingAttendee]

List all attendees for a specific meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting

Returns:

  • list[MeetingAttendee]

    A list of MeetingAttendee model instances

Example
client.meeting.attendees(1)
# Returns: [MeetingAttendee(user_id=1, name='John Doe',
#          image_url='...'), ...]
issues
issues(meeting_id: int, include_closed: bool = False) -> list[Issue]

List all issues for a specific meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting

  • include_closed (bool, default: False ) –

    Whether to include closed issues (default: False)

Returns:

  • list[Issue]

    A list of Issue model instances

Example
client.meeting.issues(1)
# Returns: [Issue(id=1, name='Issue Title',
#          created_at='2024-06-10', ...), ...]
todos
todos(meeting_id: int, include_closed: bool = False) -> list[Todo]

List all todos for a specific meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting

  • include_closed (bool, default: False ) –

    Whether to include closed todos (default: False)

Returns:

  • list[Todo]

    A list of Todo model instances

Example
client.meeting.todos(1)
# Returns: [Todo(id=1, name='Todo Title', due_date='2024-06-12', ...), ...]
metrics
metrics(meeting_id: int) -> list[ScorecardMetric]

List all metrics for a specific meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting

Returns:

  • list[ScorecardMetric]

    A list of ScorecardMetric model instances

Example
client.meeting.metrics(1)
# Returns: [ScorecardMetric(id=1, title='Sales', target=100.0,
#           metric_type='>', unit='currency', ...), ...]
details
details(meeting_id: int, include_closed: bool = False) -> MeetingDetails

Retrieve details of a specific meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting

  • include_closed (bool, default: False ) –

    Whether to include closed issues and todos (default: False)

Returns:

  • MeetingDetails

    A MeetingDetails model instance with comprehensive meeting information

Raises:

  • APIError

    If the meeting with the specified ID is not found

Example
client.meeting.details(1)
# Returns: MeetingDetails(id=1, name='Team Meeting', attendees=[...],
#                        issues=[...], todos=[...], metrics=[...])
create
create(title: str, add_self: bool = True, attendees: list[int] | None = None) -> dict[str, Any]

Create a new meeting.

Parameters:

  • title (str) –

    The title of the new meeting

  • add_self (bool, default: True ) –

    Whether to add the current user as an attendee (default: True)

  • attendees (list[int] | None, default: None ) –

    A list of user IDs to add as attendees

Returns:

  • dict[str, Any]

    A dictionary containing meeting_id, title and attendees array

Example
client.meeting.create("New Meeting", attendees=[2, 3])
# Returns: {"meeting_id": 1, "title": "New Meeting", "attendees": [2, 3]}
delete
delete(meeting_id: int) -> bool

Delete a meeting.

Parameters:

  • meeting_id (int) –

    The ID of the meeting to delete

Returns:

  • bool

    True if deletion was successful

Example
client.meeting.delete(1)
# Returns: True
create_many
create_many(meetings: list[dict[str, Any]]) -> BulkCreateResult[dict[str, Any]]

Create multiple meetings in a best-effort manner.

Processes each meeting sequentially to avoid rate limiting. Failed operations are captured and returned alongside successful ones.

Parameters:

  • meetings (list[dict[str, Any]]) –

    List of dictionaries containing meeting data. Each dict should have: - title (required): Title of the meeting - add_self (optional): Whether to add current user as attendee (default: True) - attendees (optional): List of user IDs to add as attendees

Returns:

  • BulkCreateResult[dict[str, Any]]

    BulkCreateResult containing: - successful: List of dicts with meeting_id, title, and attendees - failed: List of BulkCreateError instances for failed creations

Raises:

  • ValueError

    When required parameters are missing in meeting data

Example
result = client.meeting.create_many([
    {"title": "Weekly Team Meeting", "attendees": [2, 3]},
    {"title": "1:1 Meeting", "add_self": False}
])

print(f"Created {len(result.successful)} meetings")
for error in result.failed:
    print(f"Failed at index {error.index}: {error.error}")
get_many
get_many(meeting_ids: list[int]) -> BulkCreateResult[MeetingDetails]

Retrieve details for multiple meetings in a best-effort manner.

Processes each meeting ID sequentially to avoid rate limiting. Failed operations are captured and returned alongside successful ones.

Parameters:

  • meeting_ids (list[int]) –

    List of meeting IDs to retrieve details for

Returns:

  • BulkCreateResult[MeetingDetails]

    BulkCreateResult containing: - successful: List of MeetingDetails instances for successfully retrieved meetings - failed: List of BulkCreateError instances for failed retrievals

Example
result = client.meeting.get_many([1, 2, 3])

print(f"Retrieved {len(result.successful)} meetings")
for error in result.failed:
    print(f"Failed at index {error.index}: {error.error}")

Async Version

The async version AsyncMeetingOperations provides the same methods as above, but with async/await support:

AsyncMeetingOperations

AsyncMeetingOperations(client: AsyncClient)

Async class to handle all operations related to meetings.

Note

This class is already initialized via the client and usable as client.meeting.method

Initialize the async meeting operations.

Parameters:

  • client (AsyncClient) –

    The async HTTP client to use for API requests.

Performance Benefit

The async details() method fetches attendees, issues, todos, and metrics concurrently, providing better performance than the sync version which fetches them sequentially.

Usage Examples

from bloomy import Client

with Client(api_key="your-api-key") as client:
    # List all meetings
    meetings = client.meeting.list()
    for meeting in meetings:
        print(f"{meeting.name} - {meeting.meeting_date}")

    # Get meeting details with all related data
    meeting = client.meeting.details(meeting_id=123)
    print(f"Attendees: {len(meeting.attendees)}")
    print(f"Open Issues: {len([i for i in meeting.issues if not i.closed])}")
    print(f"Todos: {len(meeting.todos)}")

    # Get metrics for a meeting
    metrics = client.meeting.metrics(meeting_id=123)

    # Batch retrieve multiple meetings
    result = client.meeting.get_many([123, 456, 789])
    for meeting in result.successful:
        print(f"{meeting.name}: {len(meeting.attendees)} attendees")
import asyncio
from bloomy import AsyncClient

async def main():
    async with AsyncClient(api_key="your-api-key") as client:
        # List all meetings
        meetings = await client.meeting.list()
        for meeting in meetings:
            print(f"{meeting.name} - {meeting.meeting_date}")

        # Get meeting details with all related data
        meeting = await client.meeting.details(meeting_id=123)
        print(f"Attendees: {len(meeting.attendees)}")
        print(f"Open Issues: {len([i for i in meeting.issues if not i.closed])}")
        print(f"Todos: {len(meeting.todos)}")

        # Get metrics for a meeting
        metrics = await client.meeting.metrics(meeting_id=123)

        # Batch retrieve multiple meetings
        result = await client.meeting.get_many([123, 456, 789])
        for meeting in result.successful:
            print(f"{meeting.name}: {len(meeting.attendees)} attendees")

asyncio.run(main())

Available Methods

Method Description Parameters
list() Get all meetings include_closed
details() Get detailed meeting information with attendees, issues, todos, and metrics meeting_id
get_many() Batch retrieve multiple meetings by ID meeting_ids
attendees() Get meeting attendees meeting_id
issues() Get issues from a meeting meeting_id
todos() Get todos from a meeting meeting_id
metrics() Get scorecard metrics from a meeting meeting_id