# Update API route ## GET /messages #### Params > **messageId** [messageId] > to load the search history, where the message with this messageId must be present in the middle of the pack > *Example: messageId = 10 will return pack [ ..9, { messageId: 10 }, 11...]* > **nextId** [hash] > cursor to the edge element in the pack, oldest if isLoadNextMessages = 0, newest if isLoadNextMessages = 1 > **isLoadNextMessages**(!) [0; 1] > if 0, you need to return older ones, BEFORE nextId > if 1, you need to load newer messages, AFTER nextId > **limit**(default = 20) [positive number] > indicates the number of messages in each pack > **sessionId**(!) [sessionId] > sessionId of session we want to get messages from * (!) - required param #### Functional requirements 1. get the latest history + 2. get previous history 3. get the following history 4. get history that contains the message *(messageId)* inside #### Usage examples unreads(4) = [21, 22, 23, 24] last message = 24 limit = 10 ``` response: { data: [ { messageId: 15 }, // 1 { messageId: 16 }, // 2 { messageId: 17 }, // 3 { messageId: 18 }, // 4 { messageId: 19 }, // 5 { messageId: 20 }, // 6 { messageId: 21 }, // 7 { messageId: 22 }, // 8 { messageId: 23 }, // 9 { messageId: 24 }, // 10 ], meta: { cursor: { next: null, prev: string }, firstUnreadMessageId: 21 } } ``` --- unreads(10) = [15, 16, 17, 18, 19, 20, 21, 22, 23, 24] last message = 24 limit = 10 ``` response: { data: [ { messageId: 15 }, // 1 { messageId: 16 }, // 2 { messageId: 17 }, // 3 { messageId: 18 }, // 4 { messageId: 19 }, // 5 { messageId: 20 }, // 6 { messageId: 21 }, // 7 { messageId: 22 }, // 8 { messageId: 23 }, // 9 { messageId: 24 }, // 10 ], meta: { cursor: { next: null, prev: string }, firstUnreadMessageId: 15 } } ``` --- unreads(15) = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] last message = 24 limit = 10 ``` response: { data: [ { messageId: 10 }, // 1 { messageId: 11 }, // 2 { messageId: 12 }, // 3 { messageId: 13 }, // 4 { messageId: 14 }, // 5 { messageId: 15 }, // 6 { messageId: 16 }, // 7 { messageId: 17 }, // 8 { messageId: 18 }, // 9 { messageId: 19 }, // 10 ], meta: { cursor: { next: string, prev: string }, firstUnreadMessageId: 10 } } ``` #### Response ```response: { metaData: { nextCursorId: <someHash> }, data: <message>[] }``` GET /messages? [R]sessionId=Number [P]limit=Number [P]sort=JSONString <{ "sentAt": "asc" | "desc" }> [P]search=JSONString <{ "messageIds": [34,125], "sentAt": { "gt|lt": ISOString } }> <isSkipUnread|isUnread>=Boolean <isSelfHistory|isAvaialbleForUser>=Boolean | <entityId>=Number if (header.entityId === query.entityId) { return next(); } if (headers.include(systemFunction)) { return next(); } Q: Якщо ми ігноруємо анріди, чи маєми їх позначити як прочинатні? -- промаркувати все решта прочитаним