Skip to content

Issue Operations

Operations for managing issues and issue-related data.

API Reference

IssueOperations

IssueOperations(client: Client)

Bases: BaseOperations

Class to handle all operations related to issues.

Provides functionality to create, retrieve, list, and solve issues associated with meetings and users.

Methods:

  • details

    Retrieve detailed information about a specific issue.

  • list

    List issues filtered by user or meeting.

  • solve

    Mark an issue as completed/solved.

  • create

    Create a new issue in the system.

  • create_many

    Create multiple issues in a best-effort manner.

Functions

details
details(issue_id: int) -> IssueDetails

Retrieve detailed information about a specific issue.

Parameters:

  • issue_id (int) –

    Unique identifier of the issue

Returns:

  • IssueDetails

    An IssueDetails model instance containing detailed information

  • IssueDetails

    about the issue

Example
client.issue.details(123)
# Returns: IssueDetails(id=123, title='Issue Title',
#          created_at='2024-06-10', ...)
list
list(user_id: int | None = None, meeting_id: int | None = None) -> list[IssueListItem]

List issues filtered by user or meeting.

Parameters:

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

    Unique identifier of the user (optional)

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

    Unique identifier of the meeting (optional)

Returns:

  • list[IssueListItem]

    A list of IssueListItem model instances matching the filter criteria

Raises:

  • ValueError

    When both user_id and meeting_id are provided

Example
# List issues for current user
client.issue.list()
# Returns: [IssueListItem(id=1, title='Issue 1', ...), ...]

# List issues for specific meeting
client.issue.list(meeting_id=456)
# Returns: [IssueListItem(id=2, title='Issue 2', ...), ...]
solve
solve(issue_id: int) -> bool

Mark an issue as completed/solved.

Parameters:

  • issue_id (int) –

    Unique identifier of the issue to be solved

Returns:

  • bool

    True if issue was successfully solved

Example
client.issue.solve(123)
# Returns: True
create
create(meeting_id: int, title: str, user_id: int | None = None, notes: str | None = None) -> CreatedIssue

Create a new issue in the system.

Parameters:

  • meeting_id (int) –

    Unique identifier of the associated meeting

  • title (str) –

    Title/name of the issue

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

    Unique identifier of the issue owner (defaults to current user)

  • notes (str | None, default: None ) –

    Additional notes or description for the issue (optional)

Returns:

  • CreatedIssue

    A CreatedIssue model instance containing the newly created issue details

Example
client.issue.create(
    meeting_id=123,
    title="New Issue",
    notes="This is a detailed description"
)
# Returns: CreatedIssue(id=456, title='New Issue', meeting_id=123, ...)
create_many
create_many(issues: list[dict[str, Any]]) -> BulkCreateResult[CreatedIssue]

Create multiple issues in a best-effort manner.

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

Parameters:

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

    List of dictionaries containing issue data. Each dict should have: - meeting_id (required): ID of the associated meeting - title (required): Title of the issue - user_id (optional): ID of the issue owner (defaults to current user) - notes (optional): Additional notes for the issue

Returns:

  • BulkCreateResult[CreatedIssue]

    BulkCreateResult containing: - successful: List of CreatedIssue instances for successful creations - failed: List of BulkCreateError instances for failed creations

Raises:

  • ValueError

    When required parameters are missing in issue data

Example
result = client.issue.create_many([
    {"meeting_id": 123, "title": "Issue 1", "notes": "Details"},
    {"meeting_id": 123, "title": "Issue 2", "user_id": 456}
])

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

Async Version

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

AsyncIssueOperations

AsyncIssueOperations(client: AsyncClient)

Async class to handle all operations related to issues.

Initialize the async issue operations.

Parameters:

  • client (AsyncClient) –

    The async HTTP client to use for API requests.

Async Usage

All methods have the same parameters and return types as their sync counterparts. Simply add await before each method call.

Usage Examples

from bloomy import Client

with Client(api_key="your-api-key") as client:
    # Create a new issue
    issue = client.issue.create(
        meeting_id=123,
        title="Server performance degradation",
        notes="Response times increased by 50% during peak hours"
    )

    # Get issue details
    details = client.issue.details(issue_id=issue.id)
    print(f"Created: {details.created_at}")
    print(f"Meeting: {details.meeting_title}")
    print(f"Assigned to: {details.user_name}")

    # List issues for current user
    my_issues = client.issue.list()

    # List issues for a specific meeting
    meeting_issues = client.issue.list(meeting_id=123)

    # Solve an issue (mark as completed)
    client.issue.solve(issue_id=issue.id)
import asyncio
from bloomy import AsyncClient

async def main():
    async with AsyncClient(api_key="your-api-key") as client:
        # Create a new issue
        issue = await client.issue.create(
            meeting_id=123,
            title="Server performance degradation",
            notes="Response times increased by 50% during peak hours"
        )

        # Get issue details
        details = await client.issue.details(issue_id=issue.id)
        print(f"Created: {details.created_at}")
        print(f"Meeting: {details.meeting_title}")
        print(f"Assigned to: {details.user_name}")

        # List issues for current user
        my_issues = await client.issue.list()

        # List issues for a specific meeting
        meeting_issues = await client.issue.list(meeting_id=123)

        # Solve an issue (mark as completed)
        await client.issue.solve(issue_id=issue.id)

asyncio.run(main())

Available Methods

Method Description Parameters
details() Get detailed issue information issue_id
list() Get issues user_id, meeting_id
create() Create a new issue meeting_id, title, user_id, notes
solve() Mark an issue as solved issue_id

Issue Resolution

Issues can only be marked as solved, not deleted. Use the solve() method to close an issue.