From fa2cc90b280dd2d13ede3175944a3397e4060e60 Mon Sep 17 00:00:00 2001 From: Connor Lindsey Date: Mon, 28 Oct 2024 11:53:41 -0700 Subject: [PATCH] feat: add message status methods --- knockapi/resources/messages.py | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/knockapi/resources/messages.py b/knockapi/resources/messages.py index 05b9b54..50bdff3 100644 --- a/knockapi/resources/messages.py +++ b/knockapi/resources/messages.py @@ -33,6 +33,52 @@ def get(self, id): endpoint = '/messages/{}'.format(id) return self.client.request('get', endpoint) + def set_status(self, id, status): + """ + Set a specific status on a message + + Args: + id: The message ID + status: One of `seen`, `read`, `interacted`, or `archived` + + Returns: + dict: Updated Message response from Knock + """ + + endpoint = '/messages/{}/{}'.format(id, status) + return self.client.request('put', endpoint) + + def unset_status(self, id, status): + """ + Unset a specific status on a message + + Args: + id: The message ID + status: One of `seen`, `read`, `interacted`, or `archived` + + Returns: + dict: Updated Message response from Knock + """ + + endpoint = '/messages/{}/{}'.format(id, status) + return self.client.request('delete', endpoint) + + def batch_set_status(self, message_ids, status): + """ + Batch update status for multiple messages + + Args: + message_ids: List of message IDs to update + status: One of `seen`, `read`, `interacted`, `archived` or `unseen`, `unread`, `unarchived` + + Returns: + dict: BulkOperation from Knock + """ + data={'message_ids': message_ids} + endpoint = '/messages/batch/{}'.format(status) + return self.client.request('post', endpoint, payload=data) + + def get_content(self, id): """ Get a message's content by its id