55
66from infobip_channels .core .channel import Channel
77from infobip_channels .core .models import PostHeaders , ResponseBase
8+ from infobip_channels .email .models .body .reschedule_messages import (
9+ RescheduleMessagesMessageBody ,
10+ )
811from infobip_channels .email .models .body .send_email import EmailMessageBody
12+ from infobip_channels .email .models .body .update_scheduled_status import (
13+ UpdateScheduledStatusMessageBody ,
14+ )
915from infobip_channels .email .models .query_parameters .delivery_reports import (
1016 DeliveryReportsQueryParameters ,
1117)
1218from infobip_channels .email .models .query_parameters .get_logs import (
1319 GetLogsQueryParameters ,
1420)
21+ from infobip_channels .email .models .query_parameters .get_sent_bulks import (
22+ GetSentBulksQueryParameters ,
23+ )
24+ from infobip_channels .email .models .query_parameters .get_sent_bulks_status import (
25+ GetSentBulksStatusQueryParameters ,
26+ )
27+ from infobip_channels .email .models .query_parameters .reschedule_messages import (
28+ RescheduleMessagesQueryParameters ,
29+ )
30+ from infobip_channels .email .models .query_parameters .update_scheduled_status import (
31+ UpdateScheduledStatusQueryParameters ,
32+ )
1533from infobip_channels .email .models .response .core import EmailResponseError
1634from infobip_channels .email .models .response .delivery_reports import (
1735 DeliveryReportsResponse ,
1836)
1937from infobip_channels .email .models .response .get_logs import GetLogsResponse
38+ from infobip_channels .email .models .response .get_sent_bulk_status import (
39+ GetSentEmailBulksStatusResponse ,
40+ )
41+ from infobip_channels .email .models .response .get_sent_bulks import (
42+ GetSentEmailBulksResponse ,
43+ )
44+ from infobip_channels .email .models .response .reschedule_messages import (
45+ RescheduleMessagesResponse ,
46+ )
2047from infobip_channels .email .models .response .send_email import SendEmailResponse
48+ from infobip_channels .email .models .response .update_scheduled_status import (
49+ UpdateScheduledStatusResponse ,
50+ )
2151
2252
2353class EmailChannel (Channel ):
@@ -51,7 +81,8 @@ def _get_custom_response_class(
5181 def send_email_message (
5282 self , message : Union [EmailMessageBody , Dict ]
5383 ) -> Union [ResponseBase , requests .Response , Any ]:
54- """Send an email or multiple emails to a recipient or multiple recipients
84+ """
85+ Send an email or multiple emails to a recipient or multiple recipients
5586 with CC/BCC enabled.
5687
5788 :param message: Body of the message to send
@@ -75,7 +106,7 @@ def email_delivery_reports(
75106 """
76107 Get one-time delivery reports for all sent emails.
77108
78- :param query_parameters: Body of the message to send
109+ :param query_parameters: Query parameters to send with the request
79110 :return: Received response
80111 """
81112
@@ -96,7 +127,7 @@ def get_email_logs(
96127 This method allows you to get email logs of sent Email messagesId for
97128 request. Email logs are available for the last 48 hours.
98129
99- :param query_parameters: Body of the message to send
130+ :param query_parameters: Query parameters to send with the request
100131 :return: Received response
101132 """
102133
@@ -109,3 +140,93 @@ def get_email_logs(
109140 params = query_parameters .dict (by_alias = True ),
110141 )
111142 return self ._construct_response (response , GetLogsResponse )
143+
144+ def get_sent_email_bulks (
145+ self , query_parameters : Union [GetSentBulksQueryParameters , Dict ]
146+ ) -> Union [ResponseBase , requests .Response , Any ]:
147+ """
148+ See the scheduled time of your Email messages.
149+
150+ :param query_parameters: Query parameters to send with the request
151+ :return: Received response
152+ """
153+
154+ query_parameters = self .validate_query_parameter (
155+ query_parameters , GetSentBulksQueryParameters
156+ )
157+
158+ response = self ._client .get (
159+ self .EMAIL_URL_TEMPLATE_V1 + "bulks" ,
160+ params = query_parameters .dict (by_alias = True ),
161+ )
162+ return self ._construct_response (response , GetSentEmailBulksResponse )
163+
164+ def get_sent_email_bulks_status (
165+ self , query_parameters : Union [GetSentBulksStatusQueryParameters , Dict ]
166+ ) -> Union [ResponseBase , requests .Response , Any ]:
167+ """
168+ See the status of scheduled email messages.
169+
170+ :param query_parameters: Query parameters to send with the request
171+ :return: Received response
172+ """
173+
174+ query_parameters = self .validate_query_parameter (
175+ query_parameters , GetSentBulksStatusQueryParameters
176+ )
177+
178+ response = self ._client .get (
179+ self .EMAIL_URL_TEMPLATE_V1 + "bulks/status" ,
180+ params = query_parameters .dict (by_alias = True ),
181+ )
182+ return self ._construct_response (response , GetSentEmailBulksStatusResponse )
183+
184+ def reschedule_email_messages (
185+ self ,
186+ query_parameters : Union [RescheduleMessagesQueryParameters , Dict ],
187+ message : Union [RescheduleMessagesMessageBody , Dict ],
188+ ) -> Union [ResponseBase , requests .Response , Any ]:
189+ """
190+ Change the date and time for sending scheduled Email messages.
191+
192+ :param query_parameters: Query parameters to send with the request
193+ :param message: Body of the message to send
194+ :return: Received response
195+ """
196+ query_parameters = self .validate_query_parameter (
197+ query_parameters , RescheduleMessagesQueryParameters
198+ )
199+
200+ message = self .validate_message_body (message , RescheduleMessagesMessageBody )
201+
202+ response = self ._client .put (
203+ self .EMAIL_URL_TEMPLATE_V1 + "bulks" ,
204+ message .dict (by_alias = True ),
205+ params = query_parameters .dict (by_alias = True ),
206+ )
207+ return self ._construct_response (response , RescheduleMessagesResponse )
208+
209+ def update_scheduled_email_messages (
210+ self ,
211+ query_parameters : Union [UpdateScheduledStatusQueryParameters , Dict ],
212+ message : Union [UpdateScheduledStatusMessageBody , Dict ],
213+ ) -> Union [ResponseBase , requests .Response , Any ]:
214+ """
215+ Change status or completely cancel sending of scheduled Email messages.
216+
217+ :param query_parameters: Query parameters to send with the request
218+ :param message: Body of the message to send
219+ :return: Received response
220+ """
221+ query_parameters = self .validate_query_parameter (
222+ query_parameters , UpdateScheduledStatusQueryParameters
223+ )
224+
225+ message = self .validate_message_body (message , UpdateScheduledStatusMessageBody )
226+
227+ response = self ._client .put (
228+ self .EMAIL_URL_TEMPLATE_V1 + "bulks/status" ,
229+ message .dict (by_alias = True ),
230+ params = query_parameters .dict (by_alias = True ),
231+ )
232+ return self ._construct_response (response , UpdateScheduledStatusResponse )
0 commit comments