# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import List, Union, Optional
from typing_extensions import TypeAlias

from ..._models import BaseModel
from ..location import Location
from ..source_snippet import SourceSnippet
from ..participant_snippet import ParticipantSnippet
from ..organization_snippet import OrganizationSnippet

__all__ = ["CommunityGetMeetingsResponse", "UnionMember0", "UnionMember1"]


class UnionMember0(BaseModel):
    """Meeting linked to a technology community (basic info only)"""

    meeting_id: str

    similarity: float

    created_at: Optional[str] = None

    meeting_summary: Optional[str] = None


class UnionMember1(BaseModel):
    """Community meeting with full details (follows MeetingDetails pattern)"""

    meeting_id: str

    similarity: float

    created_at: Optional[str] = None

    locations: Optional[List[Location]] = None

    organizations: Optional[List[OrganizationSnippet]] = None

    participants: Optional[List[ParticipantSnippet]] = None

    sources: Optional[List[SourceSnippet]] = None

    summary: Optional[str] = None

    topic: Optional[str] = None

    updated_at: Optional[str] = None


CommunityGetMeetingsResponse: TypeAlias = Union[List[UnionMember0], List[UnionMember1]]
