76 lines
2.0 KiB
Python
76 lines
2.0 KiB
Python
from typing import List, Optional
|
|
import strawberry
|
|
from strawberry.relay import GlobalID
|
|
|
|
|
|
@strawberry.input
|
|
class ConversationInput:
|
|
"""Input for creating a new conversation"""
|
|
subject: str
|
|
conversation_type: str # DIRECT, GROUP, SUPPORT
|
|
participant_ids: List[GlobalID] # List of TeamProfile or CustomerProfile IDs
|
|
entity_type: Optional[str] = None # e.g., "Project", "Service", "Account"
|
|
entity_id: Optional[GlobalID] = None # UUID of the entity
|
|
metadata: Optional[str] = None # JSON string
|
|
|
|
|
|
@strawberry.input
|
|
class ConversationUpdateInput:
|
|
"""Input for updating a conversation"""
|
|
id: GlobalID
|
|
subject: Optional[str] = None
|
|
is_archived: Optional[bool] = None
|
|
metadata: Optional[str] = None
|
|
|
|
|
|
@strawberry.input
|
|
class MessageInput:
|
|
"""Input for sending a new message"""
|
|
conversation_id: GlobalID
|
|
body: str
|
|
reply_to_id: Optional[GlobalID] = None # For threading
|
|
attachments: Optional[str] = None # JSON string with attachment metadata
|
|
metadata: Optional[str] = None # JSON string
|
|
|
|
|
|
@strawberry.input
|
|
class MessageUpdateInput:
|
|
"""Input for updating a message (limited fields)"""
|
|
id: GlobalID
|
|
body: str
|
|
attachments: Optional[str] = None # JSON string with attachment metadata
|
|
|
|
|
|
@strawberry.input
|
|
class AddParticipantInput:
|
|
"""Input for adding a participant to a conversation"""
|
|
conversation_id: GlobalID
|
|
participant_id: GlobalID # TeamProfile or CustomerProfile ID
|
|
|
|
|
|
@strawberry.input
|
|
class RemoveParticipantInput:
|
|
"""Input for removing a participant from a conversation"""
|
|
conversation_id: GlobalID
|
|
participant_id: GlobalID
|
|
|
|
|
|
@strawberry.input
|
|
class MarkAsReadInput:
|
|
"""Input for marking messages as read"""
|
|
conversation_id: GlobalID
|
|
|
|
|
|
@strawberry.input
|
|
class ArchiveConversationInput:
|
|
"""Input for archiving/unarchiving a conversation"""
|
|
conversation_id: GlobalID
|
|
is_archived: bool
|
|
|
|
|
|
@strawberry.input
|
|
class MuteConversationInput:
|
|
"""Input for muting/unmuting a conversation"""
|
|
conversation_id: GlobalID
|
|
is_muted: bool
|