Meeting Operations¶
Operations for managing meetings and meeting-related data.
API Reference¶
MeetingOperations
¶
Bases: BaseOperations, MeetingOperationsMixin
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 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
attendees
¶
issues
¶
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
todos
¶
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
metrics
¶
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
details
¶
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
create
¶
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
delete
¶
create_many
¶
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
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
Async Version¶
The async version AsyncMeetingOperations provides the same methods as above, but with async/await support:
AsyncMeetingOperations
¶
Async class to handle all operations related to meetings.
Note
This class is already initialized via the client and usable as
client.meeting.method
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¶
Basic Operations¶
from bloomy import Client
with Client(api_key="your-api-key") as client:
# List all meetings for a user
meetings = client.meeting.list()
for meeting in meetings:
print(f"{meeting.name} (ID: {meeting.id})")
# List meetings for a specific user
meetings = client.meeting.list(user_id=456)
# 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 i.closed_date is None])}")
print(f"Todos: {len(meeting.todos)}")
# Get meeting details including closed items
meeting = client.meeting.details(meeting_id=123, include_closed=True)
# Get metrics for a meeting
metrics = client.meeting.metrics(meeting_id=123)
import asyncio
from bloomy import AsyncClient
async def main():
async with AsyncClient(api_key="your-api-key") as client:
# List all meetings for a user
meetings = await client.meeting.list()
for meeting in meetings:
print(f"{meeting.name} (ID: {meeting.id})")
# List meetings for a specific user
meetings = await client.meeting.list(user_id=456)
# 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 i.closed_date is None])}")
print(f"Todos: {len(meeting.todos)}")
# Get meeting details including closed items
meeting = await client.meeting.details(meeting_id=123, include_closed=True)
# Get metrics for a meeting
metrics = await client.meeting.metrics(meeting_id=123)
asyncio.run(main())
Creating and Deleting Meetings¶
from bloomy import Client
with Client(api_key="your-api-key") as client:
# Create a new meeting
result = client.meeting.create(
title="Weekly Team Meeting",
add_self=True,
attendees=[2, 3, 4]
)
print(f"Created meeting ID: {result['meeting_id']}")
# Create a meeting without adding yourself
result = client.meeting.create(
title="Leadership Meeting",
add_self=False,
attendees=[5, 6]
)
# Delete a meeting
success = client.meeting.delete(meeting_id=123)
if success:
print("Meeting deleted successfully")
import asyncio
from bloomy import AsyncClient
async def main():
async with AsyncClient(api_key="your-api-key") as client:
# Create a new meeting
result = await client.meeting.create(
title="Weekly Team Meeting",
add_self=True,
attendees=[2, 3, 4]
)
print(f"Created meeting ID: {result['meeting_id']}")
# Create a meeting without adding yourself
result = await client.meeting.create(
title="Leadership Meeting",
add_self=False,
attendees=[5, 6]
)
# Delete a meeting
success = await client.meeting.delete(meeting_id=123)
if success:
print("Meeting deleted successfully")
asyncio.run(main())
Bulk Operations¶
from bloomy import Client
with Client(api_key="your-api-key") as client:
# 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")
for error in result.failed:
print(f"Failed to retrieve meeting at index {error.index}: {error.error}")
# Bulk create meetings
meetings_to_create = [
{"title": "Q1 Planning", "attendees": [2, 3]},
{"title": "Team Standup", "add_self": True},
{"title": "1:1 with Manager", "attendees": [5]}
]
result = client.meeting.create_many(meetings_to_create)
print(f"Created {len(result.successful)} meetings")
for meeting in result.successful:
print(f"Meeting ID {meeting['meeting_id']}: {meeting['title']}")
import asyncio
from bloomy import AsyncClient
async def main():
async with AsyncClient(api_key="your-api-key") as client:
# Batch retrieve multiple meetings (with concurrency control)
result = await client.meeting.get_many([123, 456, 789], max_concurrent=10)
for meeting in result.successful:
print(f"{meeting.name}: {len(meeting.attendees)} attendees")
for error in result.failed:
print(f"Failed to retrieve meeting at index {error.index}: {error.error}")
# Bulk create meetings (with concurrency control)
meetings_to_create = [
{"title": "Q1 Planning", "attendees": [2, 3]},
{"title": "Team Standup", "add_self": True},
{"title": "1:1 with Manager", "attendees": [5]}
]
result = await client.meeting.create_many(
meetings_to_create,
max_concurrent=3
)
print(f"Created {len(result.successful)} meetings")
for meeting in result.successful:
print(f"Meeting ID {meeting['meeting_id']}: {meeting['title']}")
asyncio.run(main())
Async Concurrency Control
The async versions of get_many() and create_many() support a max_concurrent parameter to control the number of simultaneous requests. This helps prevent rate limiting and manage server load. The default is 5 concurrent requests.
Available Methods¶
| Method | Description | Parameters | Returns |
|---|---|---|---|
list() |
Get all meetings for a user | user_id (optional) |
list[MeetingListItem] |
details() |
Get detailed meeting information with attendees, issues, todos, and metrics | meeting_id, include_closed (optional, default: False) |
MeetingDetails |
attendees() |
Get meeting attendees | meeting_id |
list[MeetingAttendee] |
issues() |
Get issues from a meeting | meeting_id, include_closed (optional, default: False) |
list[Issue] |
todos() |
Get todos from a meeting | meeting_id, include_closed (optional, default: False) |
list[Todo] |
metrics() |
Get scorecard metrics from a meeting | meeting_id |
list[ScorecardMetric] |
create() |
Create a new meeting | title, add_self (optional, default: True), attendees (optional) |
dict |
delete() |
Delete a meeting | meeting_id |
bool |
create_many() |
Bulk create multiple meetings | meetings (list of dicts), max_concurrent (async only, default: 5) |
BulkCreateResult[dict] |
get_many() |
Batch retrieve multiple meetings by ID | meeting_ids, max_concurrent (async only, default: 5) |
BulkCreateResult[MeetingDetails] |