Skip to content

Commit 9f8b672

Browse files
feat: add message status methods (#33)
1 parent ad16d22 commit 9f8b672

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

knockapi/resources/messages.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,52 @@ def get(self, id):
3333
endpoint = '/messages/{}'.format(id)
3434
return self.client.request('get', endpoint)
3535

36+
def set_status(self, id, status):
37+
"""
38+
Set a specific status on a message
39+
40+
Args:
41+
id: The message ID
42+
status: One of `seen`, `read`, `interacted`, or `archived`
43+
44+
Returns:
45+
dict: Updated Message response from Knock
46+
"""
47+
48+
endpoint = '/messages/{}/{}'.format(id, status)
49+
return self.client.request('put', endpoint)
50+
51+
def unset_status(self, id, status):
52+
"""
53+
Unset a specific status on a message
54+
55+
Args:
56+
id: The message ID
57+
status: One of `seen`, `read`, `interacted`, or `archived`
58+
59+
Returns:
60+
dict: Updated Message response from Knock
61+
"""
62+
63+
endpoint = '/messages/{}/{}'.format(id, status)
64+
return self.client.request('delete', endpoint)
65+
66+
def batch_set_status(self, message_ids, status):
67+
"""
68+
Batch update status for multiple messages
69+
70+
Args:
71+
message_ids: List of message IDs to update
72+
status: One of `seen`, `read`, `interacted`, `archived` or `unseen`, `unread`, `unarchived`
73+
74+
Returns:
75+
dict: BulkOperation from Knock
76+
"""
77+
data={'message_ids': message_ids}
78+
endpoint = '/messages/batch/{}'.format(status)
79+
return self.client.request('post', endpoint, payload=data)
80+
81+
3682
def get_content(self, id):
3783
"""
3884
Get a message's content by its id

0 commit comments

Comments
 (0)