Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

NameDBO

DTO

  •  Message
    (Immutable after creation)
  • Primary key: Message ID
  • Foreign key: CreatedBy (UserGroup)
  • RecipientType (Enum ObjectType)
  • Recipients (gzip-blob of longs)
  • Subject (nullable)
  • Foreign key: S3 File Handle ID
  • CreatedOn
  • Foreign key: replyTo (Message ID) (nullable)
  • ID (derived from ID generator)
  • CreatedBy (principal ID) (upon creation filled in for the authenticated user)
  • RecipientBundle
    • List of recipient IDs
  • Subject (string, optional)
  • S3 File Handle ID
  • CreatedOn
  • inReplyTo* (optional)
  •  Message thread
  • Primary key: Message ID
  • Foreign key: Thread ID (is a Message ID)
    • Recursive foreign key to primary key
 
  •  Message Thread Object
  • Primary key: Thread ID
    •   
  • Unique key: Thread ID, Object ID, Object type
 
  •  Message votes
  • Primary key: Message ID
  • Up votes
  • Down votes
  • ID
  • Up
  • Down
  •  MessageStatus
  • Foreign key: Message ID
  • Foreign key: Recipient ID (UserGroup)
  • States: UNREAD, READ, ARCHIVED
  • ID
  • Recipient
  • State
  •  MessageSettings
  • Foreign key: User ID (UserGroup)
  • Etag
  • Blob of settings
  • ID
  • Notification levels
    • Update to an owned entity
    • Update to some favorite entity
    • Team
    • Message from user
    • Mail to everyone
    • Etc...
  • Message receipt email (if more than one)
  • Auto-mark mail as read if forwarded to email
  •  MessageBundle
 Bundles the Message and Message Status
  •  RecipientBundle
 
  • RecipientType
    • May be a principal, entity, ...
  • Array of IDs
    • All IDs must be valid (404 otherwise)

...

MethodURIBodyParametersReturnDescriptionPermission
  •  GET
/message/inbox 

Sorting + pagination

Paginated results<MessageBundle>Gets all messages the authenticated user has receivedAuthenticated User
  •  GET
/message/outbox 

Sorting + pagination

Paginated results<Message>Gets all messages the authenticated user has sentAuthenticated User
  •  POST
/messageMessagereplyToinReplyTo=null (i.e. another Message)MessageSends a message.  Note, message delivery permission is on a recipient-by-recipient basis, asynchronous to the message creation.  Unauthorized delivery may result in silent failure or a bounce message (TBD).

Authenticated User

 

Must be admin to send to AUTH_USERS

  •  POST
/message/checkMessagereplyToinReplyTo=null (i.e. another Message)

Boolean

ErrorResponse (question)

Checks to see if the message is correctly formatted and that the sender has permission to send to the indicated recipientsAuthenticated User
  •  POST
/message/{id}/forwardRecipientBundle  Forwards a message to other recipients. This is equivalent to getting a (visible) message and POST-ing it to /messageSender or Receiver
  •  POST
/entity/{id}/commentsMessage MessageConvenience method for commenting on an entity. The service fills out fields like message ID, thread ID, and recipients, leaving just subject and body for the user.

Authenticated user with SEND_MESSAGE permission on entity

  •  GET
/message/{id}  MessageGets a specific messageSender or Receiver
  •  GET
/message/{id}/thread 

Sorting + pagination

Paginated results<Message>Gets messages belonging in the same thread as the message ID.  The list is filtered according to the user's ID.Sender or Receiver
  •  GET
/entity/{id}/comments 

Sorting + pagination

Paginated results<Message>Gets message belonging to the thread tied to the entity.Authenticated user with READ permission on entity
  •  GET
/message/{id}/status  Message StatusGets the status of a messageReceiver
  •  PUT
/message/statusMessageStatus  

Marks a message as:

  • READ
  • UNREAD
  • ARCHIVED
Receiver
  •  GET
/message/settings  MessageSettingsGets the notification settings of the userAuthenticated User
  •  PUT
/message/settingsMessageSettings  Changes notification settingsAuthenticated User

...