angee.messaging.schema
GraphQL schema for the messaging addon — threads, messages, and the inbox.
Messages arrive through channel sync and the manager-owned ingest path; the console browses and moderates them through Hasura resources. Parts, participants, edges, and reactions remain nested read projections reached through their message/thread owners.
ChannelType
@strawberry_django.type(Channel)
class ChannelType(IntegrationLabelMixin, AngeeNode)GraphQL projection of a connected message channel (e.g. an email account).
FragmentType
@strawberry_django.type(Fragment)
class FragmentType(AngeeNode)GraphQL projection of a content-addressed text fragment.
PartType
@strawberry_django.type(Part)
class PartType(AngeeNode)GraphQL projection of one message body part.
MessageSubtypeType
@strawberry_django.type(MessageSubtype)
class MessageSubtypeType(AngeeNode)GraphQL projection of an Odoo-style message subtype.
TrackingValueType
@strawberry_django.type(TrackingValue)
class TrackingValueType(AngeeNode)GraphQL projection of one tracked field change on a chatter message.
ParticipantType
@strawberry_django.type(Participant)
class ParticipantType(AngeeNode)GraphQL projection of a thread/message participant.
MessageReactionGroupType
@strawberry.type
class MessageReactionGroupType()Odoo-style grouped reactions for one message.
MessageType
@strawberry_django.type(Message)
class MessageType(AngeeNode)GraphQL projection of a message.
reaction_groups
@strawberry.field
def reaction_groups(info: strawberry.Info) -> list[MessageReactionGroupType]Return reactions grouped by content, with current-user state.
starred
@strawberry.field
def starred(info: strawberry.Info) -> boolReturn whether the current user has starred this message.
needaction
@strawberry.field
def needaction(info: strawberry.Info) -> boolReturn whether the current user has unread action on this message.
can_edit
@strawberry_django.field(prefetch_related=["tracking_values"])
def can_edit(info: strawberry.Info) -> boolReturn whether the current actor may edit this message's body.
Delegates to the message's own :meth:Message.can_edit owner (post access plus the mail edit rule), passing the record post access resolved and memoized once per thread by :func:_message_post_access. The tracking_values prefetch hint lets the optimizer batch the edit-rule predicate instead of an exists() per row.
can_delete
@strawberry.field
def can_delete(info: strawberry.Info) -> boolReturn whether the current actor may delete this message.
Delegates to :meth:Message.can_delete (the record thread's post access; deletion carries no mail-kind restriction of its own), passing the post access memoized once per thread by :func:_message_post_access.
ThreadType
@strawberry_django.type(Thread)
class ThreadType(AngeeNode)GraphQL projection of a thread.
ThreadAttachmentType
@strawberry_django.type(ThreadAttachment)
class ThreadAttachmentType(AngeeNode)GraphQL projection of a model-record thread attachment.
ThreadFollowerType
@strawberry_django.type(ThreadFollower)
class ThreadFollowerType(AngeeNode)GraphQL projection of a user following a record chatter thread.
ThreadActivityType
@strawberry_django.type(ThreadActivity)
class ThreadActivityType(AngeeNode)GraphQL projection of a scheduled record chatter activity.
state
@strawberry.field
def state() -> strReturn the Odoo-style activity state.
ThreadNotificationType
@strawberry_django.type(ThreadNotification)
class ThreadNotificationType(AngeeNode)GraphQL projection of a per-recipient chatter notification.
MessageEdgeType
@strawberry_django.type(MessageEdge)
class MessageEdgeType(AngeeNode)GraphQL projection of a cross-message edge.
ReactionType
@strawberry_django.type(Reaction)
class ReactionType(AngeeNode)GraphQL projection of an attributed reaction.
MessageStarType
@strawberry_django.type(MessageStar)
class MessageStarType(AngeeNode)GraphQL projection of a user's starred message marker.
MessageSubtypeOptionType
@strawberry.type
class MessageSubtypeOptionType()Follower-selectable chatter subtype option.
SuggestedRecipientType
@strawberry.type
class SuggestedRecipientType()One Odoo-style suggested recipient for a record chatter composer.
RecordReferenceInput
@strawberry.input
class RecordReferenceInput()Record identity for a model-backed chatter thread.
RecordThreadInput
@strawberry.input
class RecordThreadInput(RecordReferenceInput)Fields accepted when fetching a model-backed chatter thread.
RecordMessagePostInput
@strawberry.input
class RecordMessagePostInput(RecordReferenceInput)Fields accepted when posting an internal chatter message.
RecordMessageUpdateInput
@strawberry.input
class RecordMessageUpdateInput(RecordReferenceInput)Fields accepted when editing an existing chatter comment.
RecordMessageDeleteInput
@strawberry.input
class RecordMessageDeleteInput(RecordReferenceInput)Fields accepted when deleting an existing chatter message.
RecordMessageReactionInput
@strawberry.input
class RecordMessageReactionInput(RecordReferenceInput)Fields accepted when reacting to a chatter message.
RecordMessageStarInput
@strawberry.input
class RecordMessageStarInput(RecordReferenceInput)Fields accepted when starring or unstarring a chatter message.
RecordMessageDoneInput
@strawberry.input
class RecordMessageDoneInput(RecordReferenceInput)Fields accepted when marking a chatter message done for the user.
RecordFollowInput
@strawberry.input
class RecordFollowInput(RecordReferenceInput)Fields accepted when following or unfollowing a record chatter thread.
RecordActivityScheduleInput
@strawberry.input
class RecordActivityScheduleInput(RecordReferenceInput)Fields accepted when scheduling a record activity.
RecordActivityFeedbackInput
@strawberry.input
class RecordActivityFeedbackInput()Fields accepted when completing a record activity.
RecordActivityCancelInput
@strawberry.input
class RecordActivityCancelInput()Fields accepted when canceling a record activity.
RecordThreadPayload
@strawberry.type
class RecordThreadPayload()A record chatter thread, or the error that prevented resolving it.
RecordMessagePostPayload
@strawberry.type
class RecordMessagePostPayload()A posted chatter message, or the error that prevented posting it.
RecordMessageUpdatePayload
@strawberry.type
class RecordMessageUpdatePayload()An updated chatter message, or the error that prevented editing it.
RecordMessageDeletePayload
@strawberry.type
class RecordMessageDeletePayload()A deleted chatter message id plus refreshed thread state, or an error.
RecordMessageReactionPayload
@strawberry.type
class RecordMessageReactionPayload()A reacted chatter message, or the error that prevented reacting.
RecordMessageStarPayload
@strawberry.type
class RecordMessageStarPayload()A starred/unstarred chatter message result, or the error that prevented it.
RecordMessageDonePayload
@strawberry.type
class RecordMessageDonePayload()A message marked done for the user, or the error that prevented it.
RecordFollowPayload
@strawberry.type
class RecordFollowPayload()A record follower update result, or the error that prevented it.
RecordActivityPayload
@strawberry.type
class RecordActivityPayload()A record activity update result, or the error that prevented it.
MessagingQuery
@strawberry.type
class MessagingQuery()Record-backed chatter queries.
record_thread
@strawberry.field(name="record_thread")
def record_thread(info: strawberry.Info,
input: RecordThreadInput) -> RecordThreadPayloadReturn the existing chatter thread attached to a model record.
MessagingMutation
@strawberry.type
class MessagingMutation()Record-backed chatter mutations.
post_record_message
@strawberry.mutation(name="post_record_message")
def post_record_message(
info: strawberry.Info,
input: RecordMessagePostInput) -> RecordMessagePostPayloadPost an internal comment to the record's chatter thread.
update_record_message
@strawberry.mutation(name="update_record_message")
def update_record_message(
info: strawberry.Info,
input: RecordMessageUpdateInput) -> RecordMessageUpdatePayloadUpdate an existing internal comment in the record's chatter thread.
delete_record_message
@strawberry.mutation(name="delete_record_message")
def delete_record_message(
info: strawberry.Info,
input: RecordMessageDeleteInput) -> RecordMessageDeletePayloadDelete a message from the record's chatter thread.
set_record_message_reaction
@strawberry.mutation(name="set_record_message_reaction")
def set_record_message_reaction(
info: strawberry.Info,
input: RecordMessageReactionInput) -> RecordMessageReactionPayloadAdd, remove, or toggle the current user's reaction on a chatter message.
set_record_message_starred
@strawberry.mutation(name="set_record_message_starred")
def set_record_message_starred(
info: strawberry.Info,
input: RecordMessageStarInput) -> RecordMessageStarPayloadSet or toggle the current user's star on a chatter message.
mark_record_message_done
@strawberry.mutation(name="mark_record_message_done")
def mark_record_message_done(
info: strawberry.Info,
input: RecordMessageDoneInput) -> RecordMessageDonePayloadMark one chatter message done for the current user.
set_record_following
@strawberry.mutation(name="set_record_following")
def set_record_following(info: strawberry.Info,
input: RecordFollowInput) -> RecordFollowPayloadFollow or unfollow a record's chatter thread as the current user.
schedule_record_activity
@strawberry.mutation(name="schedule_record_activity")
def schedule_record_activity(
info: strawberry.Info,
input: RecordActivityScheduleInput) -> RecordActivityPayloadSchedule an activity on the record's chatter thread.
complete_record_activity
@strawberry.mutation(name="complete_record_activity")
def complete_record_activity(
info: strawberry.Info,
input: RecordActivityFeedbackInput) -> RecordActivityPayloadComplete a scheduled record activity and log its feedback.
cancel_record_activity
@strawberry.mutation(name="cancel_record_activity")
def cancel_record_activity(
info: strawberry.Info,
input: RecordActivityCancelInput) -> RecordActivityPayloadCancel a scheduled record activity.
mark_record_thread_read
@strawberry.mutation(name="mark_record_thread_read")
def mark_record_thread_read(
info: strawberry.Info,
input: RecordReferenceInput) -> RecordThreadPayloadMark the current user's notifications on a record thread as read.