diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/mailersend')
25 files changed, 2052 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/mailersend/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/__init__.py new file mode 100644 index 00000000..3ad21155 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/__init__.py @@ -0,0 +1,7 @@ +""" +MailerSend Official Python DSK +@maintainer: Igor HrĨek (igor at mailerlite dot com) +""" + +__version_info__ = ("0", "5", "8") +__version__ = ".".join(__version_info__) diff --git a/.venv/lib/python3.12/site-packages/mailersend/activity/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/activity/__init__.py new file mode 100644 index 00000000..e8e8a3fe --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/activity/__init__.py @@ -0,0 +1,37 @@ +""" +Handles /activity endpoint +Doc: https://developers.mailersend.com/api/v1/activity.html +""" + +import requests +from mailersend.base import base + + +class NewActivity(base.NewAPIClient): + """ + Instantiates the /activity endpoint object + """ + + pass + + def get_domain_activity( + self, domain_id, page=None, limit=None, date_from=None, date_to=None, event=None + ): + """ + Returns a JSON response from the MailerSend API + """ + + _data = { + "page": page or None, + "limit": limit or None, + "date_from": date_from or None, + "date_to": date_to or None, + "event": event or None, + } + + request = requests.get( + f"{self.api_base}/activity/{domain_id}", + headers=self.headers_default, + json=_data, + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/analytics/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/analytics/__init__.py new file mode 100644 index 00000000..cbc436c7 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/analytics/__init__.py @@ -0,0 +1,118 @@ +""" +Handles /analytics endpoint +Doc: https://developers.mailersend.com/api/v1/analytics.html +""" + +import requests +from mailersend.base import base + + +class NewAnalytics(base.NewAPIClient): + """ + Instantiates the /activity endpoint object + """ + + pass + + def get_activity_by_date( + self, date_from, date_to, event, domain_id=None, group_by=None + ): + """ + Returns a JSON response from the MailerSend API + """ + + _data = { + "date_from": date_from, + "date_to": date_to, + "event[]": event, + } + + if domain_id is not None: + _data["domain_id"] = domain_id + + if group_by is not None: + _data["group_by"] = group_by + + request = requests.get( + f"{self.api_base}/analytics/date", + headers=self.headers_default, + params=_data, + ) + + return request.text + + def get_opens_by_country(self, date_from, date_to, domain_id=None, recipients=None): + """ + Returns a JSON response from the MailerSend API + """ + + _data = { + "date_from": date_from, + "date_to": date_to, + } + + if domain_id is not None: + _data["domain_id"] = domain_id + + if recipients is not None: + _data["recipient_id"] = recipients + + request = requests.get( + f"{self.api_base}/analytics/country", + headers=self.headers_default, + json=_data, + ) + + return request.text + + def get_opens_by_user_agent( + self, date_from, date_to, domain_id=None, recipients=None + ): + """ + Returns a JSON response from the MailerSend API + """ + + _data = { + "date_from": date_from, + "date_to": date_to, + } + + if domain_id is not None: + _data["domain_id"] = domain_id + + if recipients is not None: + _data["recipient_id"] = recipients + + request = requests.get( + f"{self.api_base}/analytics/ua-name", + headers=self.headers_default, + json=_data, + ) + + return request.text + + def get_opens_by_reading_environment( + self, date_from, date_to, domain_id=None, recipients=None + ): + """ + Returns a JSON response from the MailerSend API + """ + + _data = { + "date_from": date_from, + "date_to": date_to, + } + + if domain_id is not None: + _data["domain_id"] = domain_id + + if recipients is not None: + _data["recipient_id"] = recipients + + request = requests.get( + f"{self.api_base}/analytics/ua-type", + headers=self.headers_default, + json=_data, + ) + + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/api_quota/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/api_quota/__init__.py new file mode 100644 index 00000000..fcd027b8 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/api_quota/__init__.py @@ -0,0 +1,25 @@ +""" +Handles /api-quota endpoint +""" + +import requests +from mailersend.base import base + + +class NewApiQuota(base.NewAPIClient): + """ + Instantiates the /api-quota endpoint object + """ + + pass + + def get_quota(self, page=1, limit=25, verified=False): + query_params = {"page": page, "limit": limit, "verified": verified} + + request = requests.get( + f"{self.api_base}/api-quota", + headers=self.headers_default, + params=query_params, + ) + + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/base/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/base/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/base/__init__.py diff --git a/.venv/lib/python3.12/site-packages/mailersend/base/base.py b/.venv/lib/python3.12/site-packages/mailersend/base/base.py new file mode 100644 index 00000000..68d72f4f --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/base/base.py @@ -0,0 +1,45 @@ +""" +Base object handles connection information to the MailerSend API +""" + +import os + +API_BASE = "https://api.mailersend.com/v1" +API_KEY = os.environ.get("MAILERSEND_API_KEY") + + +class NewAPIClient: + """ + Instantiates the parent object all endpoints follow. + Provides necessary connection information to perform API operations. + """ + + def __init__( + self, + mailersend_api_key=API_KEY, + api_base=None, + headers_default=None, + headers_auth=None, + ): + """ + NewAPIClient constructor + """ + + self.api_base = API_BASE + self.mailersend_api_key = mailersend_api_key + self.headers_auth = f"Bearer {self.mailersend_api_key}" + self.headers_default = { + "Content-Type": "application/json", + "X-Requested-With": "XMLHttpRequest", + "User-Agent": "MailerSend-Client-python-v1", + "Authorization": f"{self.headers_auth}", + } + + +def generate_config_change_json_body(key, value): + """ + Returns a key:value pair + """ + data = {key: value} + + return data diff --git a/.venv/lib/python3.12/site-packages/mailersend/domains/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/domains/__init__.py new file mode 100644 index 00000000..2645d491 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/domains/__init__.py @@ -0,0 +1,128 @@ +""" +Handles /domains endpoint +Doc: https://developers.mailersend.com/api/v1/domains.html +""" + +import requests +from mailersend.base import base + + +class NewDomain(base.NewAPIClient): + """ + Instantiates the /domains endpoint object + """ + + pass + + def get_domains(self): + """ + Get a list of all domains + + Returns the JSON response of MailerSend API + """ + request = requests.get(f"{self.api_base}/domains", headers=self.headers_default) + return request.text + + def get_domain_by_id(self, domain_id): + """ + Get info on a domain by its ID + + @params: + domain_id (str): A domain ID + + Returns the JSON response of MailerSend API + """ + request = requests.get( + f"{self.api_base}/domains/{domain_id}", headers=self.headers_default + ) + return request.text + + def add_domain(self, domain_data): + """ + Add a domain + + @params: + domain_data (dic): Contains key:value data needed for creating a new domain + + """ + + request = requests.post( + f"{self.api_base}/domains", + headers=self.headers_default, + json=domain_data, + ) + return request.text + + def delete_domain(self, domain_id): + """ + Delete a domain + + @params: + domain_id (str): A domain ID + + Returns the JSON response of MailerSend API + """ + request = requests.delete( + f"{self.api_base}/domains/{domain_id}", headers=self.headers_default + ) + return request.status_code + + def get_recipients_for_domain(self, domain_id): + """ + List all recipients for a domain + + @params: + domain_id (str): A domain ID + + Returns the JSON response of MailerSend API + """ + request = requests.get( + f"{self.api_base}/domains/{domain_id}/recipients", + headers=self.headers_default, + ) + return request.text + + def update_domain_setting(self, domain_id, domain_data): + """ + Returns the JSON response of MailerSend API + + @params: + domain_id (str): A domain ID + domain_data (dict): A key:value list that contains parameters for updating domain name + + """ + request = requests.put( + f"{self.api_base}/domains/{domain_id}/settings", + headers=self.headers_default, + json=domain_data, + ) + return request.text + + def get_dns_records(self, domain_id): + """ + Returns the JSON response of dns records + + @params: + domain_id (str): A domain ID + + """ + + request = requests.get( + f"{self.api_base}/domains/{domain_id}/dns-records", + headers=self.headers_default, + ) + return request.text + + def verify_domain(self, domain_id): + """ + Returns the JSON response of verified domain + + @params: + domain_id (str): A domain ID + + """ + + request = requests.get( + f"{self.api_base}/domains/{domain_id}/verify", headers=self.headers_default + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/email_verification/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/email_verification/__init__.py new file mode 100644 index 00000000..adebad09 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/email_verification/__init__.py @@ -0,0 +1,91 @@ +""" +Handles /email-verification endpoint +""" + +import requests +from mailersend.base import base + + +class NewEmailVerification(base.NewAPIClient): + """ + Instantiates the /email-verification endpoint object + """ + + # you shall not + pass + + def get_all_lists(self, page=1, limit=25): + """ + Returns all email verification lists + :param page: int + :param limit: int + """ + query_params = {"page": page, "limit": limit} + + request = requests.get( + f"{self.api_base}/email-verification", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_list(self, email_verification_id): + """ + Retrieve single email verification list + :type email_verification_id: object + """ + + query_params = {"email_verification_id": email_verification_id} + + request = requests.get( + f"{self.api_base}/email-verification", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def create_list(self, name, emails): + """ + Create email verification list + :param name: str + :param emails: list + :return: + """ + + data = {"name": name, "emails": emails} + + request = requests.post( + f"{self.api_base}/email-verification", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def verify_list(self, email_verification_id): + """ + Verify an email verification list + :type email_verification_id: str + """ + + request = requests.get( + f"{self.api_base}/email-verification/{email_verification_id}/verify", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" + + def get_list_results(self, email_verification_id): + """ + Get the result for each individual email of an email verification list + :type email_verification_id: str + """ + + request = requests.get( + f"{self.api_base}/email-verification/{email_verification_id}/results", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/emails/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/emails/__init__.py new file mode 100644 index 00000000..c34f30d2 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/emails/__init__.py @@ -0,0 +1,137 @@ +""" +Handles /email endpoint +Doc: https://developers.mailersend.com/api/v1/email.html +""" + +import requests +from mailersend.base import base + + +class NewEmail(base.NewAPIClient): + """ + Send an e-mail + """ + + pass + + def set_mail_from(self, mail_from, message): + """ + Appends the 'from' part on an e-mail + """ + message["from"] = mail_from + + def set_mail_to(self, mail_to, message): + """ + Appends the 'to' part on an e-mail + """ + message["to"] = mail_to + + def set_subject(self, subject, message): + """ + Appends the 'subject' part on an e-mail + """ + message["subject"] = subject + + def set_html_content(self, content, message): + """ + Appends the HTML content of an e-mail + """ + message["html"] = content + + def set_plaintext_content(self, text, message): + """ + Appends the plaintext content of an e-mail + """ + message["text"] = text + + def set_template(self, template_id, message): + """ + Appends the 'template_id' part on an e-mail + """ + message["template_id"] = template_id + + def set_personalization(self, personalization, message): + """ + Handles advanced personalization + """ + message["personalization"] = personalization + + def set_cc_recipients(self, cc_recipient, message): + """ + Appends the 'cc' part on an e-mail + """ + message["cc"] = cc_recipient + + def set_bcc_recipients(self, bcc_recipient, message): + """ + Appends the 'bcc' part on an e-mail + """ + message["bcc"] = bcc_recipient + + def set_tags(self, tags, message): + """ + Handles e-mail tags + """ + message["tags"] = tags + + def set_attachments(self, attachments, message): + """ + Appends an attachment on an e-mail + """ + message["attachments"] = attachments + + def set_reply_to(self, reply_to, message): + """ + Appends 'reply to' on an e-mail + """ + message["reply_to"] = reply_to + + def set_in_reply_to(self, in_reply_to, message): + """ + Appends 'in reply to' on an e-mail + """ + message["in_reply_to"] = in_reply_to + + def set_send_at(self, send_at, message): + """ + Sets the 'send_at' parameter for scheduled messages + """ + message["send_at"] = send_at + + def send(self, message): + """ + Handles e-mail sending + + @params: + message (dict): A dict containing required parameters for mail sending + """ + + request = requests.post( + f"{self.api_base}/email", headers=self.headers_default, json=message + ) + return f"{request.status_code}\n{request.text}" + + def get_bulk_status_by_id(self, bulk_email_id): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/bulk-email/{bulk_email_id}", headers=self.headers_default + ) + return request.text + + def send_bulk(self, message_list): + """ + Handles bulk e-mail sending + + @params: + message_list (list): A list containing e-mail dicts + """ + + request = requests.post( + f"{self.api_base}/bulk-email", + headers=self.headers_default, + json=message_list, + ) + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/inbound_routing/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/inbound_routing/__init__.py new file mode 100644 index 00000000..61a16f4e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/inbound_routing/__init__.py @@ -0,0 +1,126 @@ +""" +Handles /inbound endpoint +Doc: https://developers.mailersend.com/api/v1/inbound.html +""" + +import requests +from mailersend.base import base + + +class NewInbound(base.NewAPIClient): + """ + Instantiates the /inbound endpoint object + """ + + pass + + def get_inbound_routes(self): + """ + Get a list of all inbound routes + + Returns the JSON response of MailerSend API + """ + request = requests.get(f"{self.api_base}/inbound", headers=self.headers_default) + return f"{request.status_code}\n{request.text}" + + def get_inbound_by_id(self, inbound_id): + """ + Get info on an inbound route by its ID + + @params: + inbound_id (str): An inbound route ID + + Returns the JSON response of MailerSend API + """ + request = requests.get( + f"{self.api_base}/inbound/{inbound_id}", headers=self.headers_default + ) + return request.text + + def update_inbound_route(self, inbound_id, options): + """ + Update an inbound route + + @params: + inbound_id (str): An inbound route ID + key (str): The key param to change + value (object): The value to update key with + + Returns the JSON response of MailerSend API + """ + + request = requests.put( + f"{self.api_base}/inbound/{inbound_id}", + headers=self.headers_default, + json=options, + ) + return f"{request.status_code}\n{request.text}" + + def delete_inbound_route(self, inbound_id): + """ + Returns the status code of delete inbound route operation + + @params: + inbound_id (str): An inbound route ID + """ + + request = requests.delete( + f"{self.api_base}/inbound/{inbound_id}", + headers=self.headers_default, + ) + return request.status_code + + def set_name(self, name, options): + """ + Appends the 'name' param of inbound route options + """ + options["name"] = name + + def set_domain_enabled(self, enabled, options): + """ + Appends the 'domain_enabled' param of inbound route options + """ + options["domain_enabled"] = enabled + + def set_inbound_domain(self, domain, options): + """ + Appends the 'inbound_domain' param of inbound route options + """ + options["inbound_domain"] = domain + + def set_catch_filter(self, content_json, options): + """ + Appends the 'catch_filter' param of inbound route options + """ + options["catch_filter"] = content_json + + def set_match_filter(self, content_json, options): + """ + Appends the 'match_filter' param of inbound route options + """ + options["match_filter"] = content_json + + def set_forwards(self, content_json, options): + """ + Appends the 'forwards' param of inbound route options + """ + options["forwards"] = content_json + + def add_inbound_route(self, domain_id, options): + """ + Add a new inbound route + + @params: + domain_id (str): For which domain will inbound route be created + options (str): Creation options as defined in https://developers.mailersend.com/api/v1/inbound.html#add-an-inbound-route + + """ + + options["domain_id"] = domain_id + + request = requests.post( + f"{self.api_base}/inbound", + headers=self.headers_default, + json=options, + ) + return f"{request.text}\n{request.status_code}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/messages/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/messages/__init__.py new file mode 100644 index 00000000..8ceb3bf4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/messages/__init__.py @@ -0,0 +1,35 @@ +""" +Handles /messages endpoint +Doc: https://developers.mailersend.com/api/v1/messages.html +""" + +import requests +from mailersend.base import base + + +class NewMessage(base.NewAPIClient): + """ + Instantiates the /messages endpoint object + """ + + pass + + def get_message_by_id(self, message_id): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/messages/{message_id}", headers=self.headers_default + ) + return request.text + + def get_messages(self): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/messages", headers=self.headers_default + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/recipients/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/recipients/__init__.py new file mode 100644 index 00000000..5761a8f1 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/recipients/__init__.py @@ -0,0 +1,255 @@ +""" +Handles /recipients endpoint +Doc: https://developers.mailersend.com/api/v1/recipients.html +""" + +import requests +from mailersend.base import base + + +class NewRecipient(base.NewAPIClient): + """ + Instantiates the /recipients endpoint object + """ + + pass + + def get_recipients(self): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/recipients", headers=self.headers_default + ) + return request.text + + def get_recipient_by_id(self, recipient_id): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/recipients/{recipient_id}", headers=self.headers_default + ) + return request.text + + def delete_recipient(self, recipient_id): + """ + Returns a HTTP status code from the MailerSend API + """ + + request = requests.delete( + f"{self.api_base}/recipients/{recipient_id}", headers=self.headers_default + ) + return request.status_code + + def get_recipients_from_blocklist(self, domain_id=None, limit=None, page=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + message["limit"] = limit + message["page"] = page + + request = requests.get( + f"{self.api_base}/suppressions/blocklist", + headers=self.headers_default, + json=message, + ) + return request.text + + def get_hard_bounces(self, domain_id=None, limit=None, page=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + message["limit"] = limit + message["page"] = page + + request = requests.get( + f"{self.api_base}/suppressions/hard_bounces", + headers=self.headers_default, + json=message, + ) + return request.text + + def get_spam_complaints(self, domain_id=None, limit=None, page=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + message["limit"] = limit + message["page"] = page + + request = requests.get( + f"{self.api_base}/suppressions/spam-complaints", + headers=self.headers_default, + json=message, + ) + return request.text + + def get_unsubscribes(self, domain_id=None, limit=None, page=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + message["limit"] = limit + message["page"] = page + + request = requests.get( + f"{self.api_base}/suppressions/unsubscribes", + headers=self.headers_default, + json=message, + ) + return request.text + + def add_to_blocklist(self, domain_id, recipients=None, patterns=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if recipients is not None: + message["recipients"] = recipients + if patterns is not None: + message["patterns"] = patterns + + request = requests.post( + f"{self.api_base}/suppressions/blocklist", + headers=self.headers_default, + json=message, + ) + return request.text + + def delete_from_blocklist(self, domain_id, ids=None, remove_all=False): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if ids is not None: + message["ids"] = ids + if remove_all is True: + message["all"] = "true" + + request = requests.delete( + f"{self.api_base}/suppressions/blocklist", + headers=self.headers_default, + json=message, + ) + return request.text + + def add_hard_bounces(self, domain_id=None, recipients=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if recipients is not None: + message["recipients"] = recipients + + request = requests.post( + f"{self.api_base}/suppressions/hard-bounces", + headers=self.headers_default, + json=message, + ) + return request.text + + def delete_hard_bounces(self, domain_id, ids=None, remove_all=False): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if ids is not None: + message["ids"] = ids + if remove_all is True: + message["all"] = "true" + + request = requests.delete( + f"{self.api_base}/suppressions/hard-bounces", + headers=self.headers_default, + json=message, + ) + return request.text + + def add_spam_complaints(self, domain_id=None, recipients=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if recipients is not None: + message["recipients"] = recipients + + request = requests.post( + f"{self.api_base}/suppressions/spam-complaints", + headers=self.headers_default, + json=message, + ) + return request.text + + def delete_spam_complaints(self, domain_id, ids=None, remove_all=False): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if ids is not None: + message["ids"] = ids + if remove_all is True: + message["all"] = "true" + + request = requests.delete( + f"{self.api_base}/suppressions/spam-complaints", + headers=self.headers_default, + json=message, + ) + return request.text + + def add_unsubscribes(self, domain_id=None, recipients=None): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if recipients is not None: + message["recipients"] = recipients + + request = requests.post( + f"{self.api_base}/suppressions/unsubscribes", + headers=self.headers_default, + json=message, + ) + return request.text + + def delete_unsubscribes(self, domain_id, ids=None, remove_all=False): + """ + Returns a HTTP status code from the MailerSend API + """ + message = {} + message["domain_id"] = domain_id + + if ids is not None: + message["ids"] = ids + if remove_all is True: + message["all"] = True + + request = requests.delete( + f"{self.api_base}/suppressions/unsubscribes", + headers=self.headers_default, + json=message, + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/scheduled_messages/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/scheduled_messages/__init__.py new file mode 100644 index 00000000..1971ea9e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/scheduled_messages/__init__.py @@ -0,0 +1,47 @@ +""" +Handles /message-schedules endpoint +Doc: https://developers.mailersend.com/api/v1/message-schedules.html +""" + +import requests +from mailersend.base import base + + +class NewMessageSchedule(base.NewAPIClient): + """ + Instantiates the /message-schedules endpoint object + """ + + pass + + def get_scheduled_messages(self): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/message-schedules", headers=self.headers_default + ) + return request.text + + def get_scheduled_message_by_id(self, message_id): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.get( + f"{self.api_base}/message-schedules/{message_id}", + headers=self.headers_default, + ) + return request.text + + def delete_scheduled_message(self, message_id): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.delete( + f"{self.api_base}/message-schedules/{message_id}", + headers=self.headers_default, + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/sender_identities/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sender_identities/__init__.py new file mode 100644 index 00000000..c6dce4d8 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sender_identities/__init__.py @@ -0,0 +1,137 @@ +""" +Handles /identities endpoint +""" + +import requests +from mailersend.base import base + +class NewSenderIdentities(base.NewAPIClient): + """ + Instantiates the /identities endpoint object + """ + + # you shall not + pass + + def get_identities(self, domain_id=None, page=None, limit=25): + """ + Get all sender identities + + @params: + domain_id (string) + page (int) + limit (int): Min: `10`, Max: `100`, default is 25 + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + if key != "self" and value is not None: + query_params[key] = value + + request = requests.get( + f"{self.api_base}/identities", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_identity(self, identity_id): + """ + Get a single sender identity + + @params: + identity_id (string) + """ + + request = requests.get( + f"{self.api_base}/identities/{identity_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" + + def add_identitity(self, domain_id, name, email, reply_to_email=None, reply_to_name=None, add_note=False, personal_note=None): + """ + Add a sender identity + + @params: + domain_id (string) + name (string) - Max 191 characters + email (string) - Max 191 characters, unique + reply_to_email (string) + reply_to_name (string) + add_note (boolean) + personal_note (string) + """ + + data = { + "domain_id": domain_id, + "name": name, + "email": email + } + + if reply_to_email != None: + data["reply_to_email"] = reply_to_email + + if reply_to_name != None: + data["reply_to_name"] = reply_to_name + + if add_note == True: + data["add_note"] = add_note + data["personal_note"] = personal_note + + request = requests.post( + f"{self.api_base}/identities", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def update_identitity(self, identity_id, domain_id=None, name=None, email=None, reply_to_email=None, reply_to_name=None, add_note=False, personal_note=None): + """ + Update a sender identity + + @params: + identity_id (string) + domain_id (string) + name (string) - Max 191 characters + email (string) - Max 191 characters, unique + reply_to_email (string) + reply_to_name (string) + add_note (boolean) + personal_note (string) + """ + + passed_arguments = locals() + data = {} + + for key, value in passed_arguments.items(): + if key != "self" and key != "identity_id" and value is not None: + data[key] = value + + request = requests.put( + f"{self.api_base}/identities/{identity_id}", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def delete_identity(self, identity_id): + """ + Delete a sender identity + + @params: + identity_id (string) + """ + + request = requests.delete( + f"{self.api_base}/identities/{identity_id}", + headers=self.headers_default, + ) + + return request.text
\ No newline at end of file diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_activity/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_activity/__init__.py new file mode 100644 index 00000000..afe9044c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_activity/__init__.py @@ -0,0 +1,68 @@ +""" +Handles /sms-activity endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsActivity(base.NewAPIClient): + """ + Instantiates the /sms-activity endpoint object + """ + + pass + + def get_activities( + self, + sms_number_id=None, + date_from=None, + date_to=None, + status=[], + page=None, + limit=25, + ): + """ + Retrieve every single data point of the activity that happened for a specific phone number. + + @params: + sms_number_id (str) + date_from (int): Timestamp is assumed to be `UTC`. Must be lower than `date_to` + date_to (int): Timestamp is assumed to be `UTC`. Must be higher than `date_from` + status (dict): Possible types: `processed`,`queued`,`sent`,`delivered`, `failed` + page (int) + limit (int): Min: `10`, Max: `100`, default is 25 + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + if key != "self": + if key == "status": + query_params[key + "[]"] = value + else: + query_params[key] = value + + request = requests.get( + f"{self.api_base}/sms-activity", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_activity(self, sms_message_id): + """ + Get every single activity data point that happened to a specific SMS message + + @params: + sms_message_id (str) + """ + + request = requests.get( + f"{self.api_base}/sms-messages/{sms_message_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_inbounds/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_inbounds/__init__.py new file mode 100644 index 00000000..2ac3a663 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_inbounds/__init__.py @@ -0,0 +1,134 @@ +""" +Handles /sms-inbounds endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsInbounds(base.NewAPIClient): + """ + Instantiates the /sms-inbounds endpoint object + """ + + # you shall not + pass + + def get_inbound_routes(self, sms_number_id=None, enabled=True, page=1, limit=25): + """ + Get a list of SMS inbound routes. + + @params: + sms_number_id (string) + enabled (bool) + page (int) + limit (int) + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + if key != "self": + if key == "enabled": + query_params[key] = int(value) + else: + query_params[key] = value + + request = requests.get( + f"{self.api_base}/sms-inbounds", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_inbound_route(self, sms_inbound_id): + """ + Get a single SMS inbound route. + + @params: + sms_inbound_id (string) + """ + + request = requests.get( + f"{self.api_base}/sms-inbounds/{sms_inbound_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" + + def create_inbound_route( + self, sms_number_id, name, forward_url, filter={}, enabled=True + ): + """ + Add an SMS inbound route. + + @params: + sms_number_id (string) + name (string) + forward_url (string) + filter (object) + enabled (bool) + """ + + data = { + "sms_number_id": sms_number_id, + "name": name, + "forward_url": forward_url, + "filter": filter, + "enabled": int(enabled), + } + + request = requests.post( + f"{self.api_base}/sms-inbounds", headers=self.headers_default, json=data + ) + + return f"{request.status_code}\n{request.text}" + + def update_inbound_route( + self, sms_inbound_id, name=None, forward_url=None, filter=None, enabled=None + ): + """ + Update an inbound route. + + @params: + sms_inbound_id (string) + name (string) + forward_url (string) + filter (object) + enabled (bool) + """ + + passed_arguments = locals() + data = {} + + for key, value in passed_arguments.items(): + if key != "self" and key != "sms_inbound_id" and value is not None: + if key == "enabled": + data[key] = int(value) + else: + data[key] = value + + request = requests.put( + f"{self.api_base}/sms-inbounds/{sms_inbound_id}", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def delete_inbound_route(self, sms_inbound_id): + """ + Delete an SMS inbound route. + + @params: + sms_inbound_id (string) + """ + + request = requests.delete( + f"{self.api_base}/sms-inbounds/{sms_inbound_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_messages/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_messages/__init__.py new file mode 100644 index 00000000..03db8f63 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_messages/__init__.py @@ -0,0 +1,52 @@ +""" +Handles /sms-messages endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsMessages(base.NewAPIClient): + """ + Instantiates the /sms-messages endpoint object + """ + + pass + + def get_messages(self, page=1, limit=25): + """ + Get a list of SMS messages. + + @params: + page (int) + limit (int): Min: `10`, Max: `100`, default is 25 + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + query_params[key] = value + + request = requests.get( + f"{self.api_base}/sms-messages", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_message(self, sms_message_id): + """ + Get a single SMS message. + + @params: + sms_message_id (string) + """ + + request = requests.get( + f"{self.api_base}/sms-messages/{sms_message_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_phone_numbers/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_phone_numbers/__init__.py new file mode 100644 index 00000000..1f47b417 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_phone_numbers/__init__.py @@ -0,0 +1,95 @@ +""" +Handles /sms-numbers endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsNumbers(base.NewAPIClient): + """ + Instantiates the /sms-numbers endpoint object + """ + + pass + + def get_phone_numbers(self, paused=False, page=None, limit=25): + """ + Get a list of SMS phone numbers information. + + @params: + paused (bool) + page (int) + limit (int): Min: `10`, Max: `100`, default is 25 + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + if key != "self": + if key == "paused": + query_params[key] = int(value) + else: + query_params[key] = value + + request = requests.get( + f"{self.api_base}/sms-numbers", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_phone_number(self, sms_number_id): + """ + Get information about a specific SMS phone number + + @params: + sms_number_id (string) + """ + + request = requests.get( + f"{self.api_base}/sms-numbers/{sms_number_id}", headers=self.headers_default + ) + + return f"{request.status_code}\n{request.text}" + + def update_phone_number(self, sms_number_id, paused=True): + """ + Update a specific SMS phone number + + @params: + sms_number_id (string) + paused (bool) + """ + + query_params = {"paused": int(paused)} + data = {"sms_number_id": sms_number_id} + + request = requests.put( + f"{self.api_base}/sms-numbers/{sms_number_id}", + headers=self.headers_default, + params=query_params, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def delete_phone_number(self, sms_number_id): + """ + Delete a specific SMS phone number + + @params: + sms_number_id (string) + """ + + data = {"sms_number_id": sms_number_id} + + request = requests.delete( + f"{self.api_base}/sms-numbers/{sms_number_id}", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_recipients/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_recipients/__init__.py new file mode 100644 index 00000000..ae8774f2 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_recipients/__init__.py @@ -0,0 +1,76 @@ +""" +Handles /sms-recipients endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsRecipients(base.NewAPIClient): + """ + Instantiates the /sms-recipients endpoint object + """ + + pass + + def get_recipients(self, status="active", sms_number_id=None, page=None, limit=25): + """ + Get information about SMS recipients. + + @params: + status (string) - Possible values are `active` and `opt_out` + sms_number_id (string) + page (int) + limit (int): Min: `10`, Max: `100`, default is 25 + """ + + passed_arguments = locals() + query_params = {} + + for key, value in passed_arguments.items(): + if key != "self": + query_params[key] = value + + request = requests.get( + f"{self.api_base}/sms-recipients", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_recipient(self, sms_recipient_id): + """ + Get information about a specific SMS recipient. + + @params: + sms_recipient_id (string) - Possible values are `active` and `opt_out` + """ + + request = requests.get( + f"{self.api_base}/sms-recipients/{sms_recipient_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" + + def update_recipient(self, sms_recipient_id, status): + """ + Update a specific SMS recipient + + @params: + sms_recipient_id (string) + status (string) + """ + + query_params = {"status": status} + data = {"sms_recipient_id": sms_recipient_id} + + request = requests.put( + f"{self.api_base}/sms-recipients/{sms_recipient_id}", + headers=self.headers_default, + params=query_params, + json=data, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_sending/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_sending/__init__.py new file mode 100644 index 00000000..c45d09fd --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_sending/__init__.py @@ -0,0 +1,43 @@ +""" +Handles /sms endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsSending(base.NewAPIClient): + """ + Instantiates the /sms endpoint object + """ + + pass + + def send_sms(self, number_from, numbers_to, text, personalization=None): + """ + Send SMS message to one or more recipients + + Returns the JSON response of MailerSend API + + @params: + number_from (str): Number belonging to your account in E164 format + numbers_to (dict): Recipient phone numbers (up to 50) + text (str): Message test + personalization: Allows using personalization in {{ var }} syntax. Can be used in the text fields + """ + + data = { + "from": number_from, + "to": numbers_to, + "text": text, + "personalization": personalization, + } + + if personalization is None: + data["personalization"] = [] + + request = requests.post( + f"{self.api_base}/sms", headers=self.headers_default, json=data + ) + + return f"{request.status_code}\n{request.headers['X-SMS-Message-Id']}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/sms_webhooks/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/sms_webhooks/__init__.py new file mode 100644 index 00000000..21070536 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/sms_webhooks/__init__.py @@ -0,0 +1,122 @@ +""" +Handles /sms-webhooks endpoint +""" + +import requests +from mailersend.base import base + + +class NewSmsWebhooks(base.NewAPIClient): + """ + Instantiates the /sms-webhooks endpoint object + """ + + # you shall not + pass + + def get_webhooks(self, sms_number_id): + """ + Get a list of SMS webhooks. + + @params: + sms_number_id (string) + """ + + passed_arguments = locals() + query_params = {"sms_number_id": sms_number_id} + + request = requests.get( + f"{self.api_base}/sms-webhooks", + headers=self.headers_default, + params=query_params, + ) + + return f"{request.status_code}\n{request.text}" + + def get_webhook(self, sms_webhook_id): + """ + Get a single SMS webhook. + + @params: + sms_webhook_id (string) + """ + + request = requests.get( + f"{self.api_base}/sms-webhooks/{sms_webhook_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" + + def create_webhook(self, url, name, events, sms_number_id, enabled=True): + """ + Create an SMS webhook. + + @params: + url (string) + name (string) + events (dict) + enabled (bool) + sms_number_id (string) + """ + + data = { + "url": url, + "name": name, + "events": events, + "sms_number_id": sms_number_id, + "enabled": int(enabled), + } + + request = requests.post( + f"{self.api_base}/sms-webhooks", headers=self.headers_default, json=data + ) + + return f"{request.status_code}\n{request.text}" + + def update_webhook( + self, sms_webhook_id, url=None, name=None, events=None, enabled=None + ): + """ + Update a single SMS Webhook. + + @params: + sms_webhook_id (string) + url (string) + name (string) + events (dict) + enabled (bool) + """ + + passed_arguments = locals() + data = {} + + for key, value in passed_arguments.items(): + if key != "self" and key != "sms_webhook_id" and value is not None: + if key == "enabled": + data[key] = int(value) + else: + data[key] = value + + request = requests.put( + f"{self.api_base}/sms-webhooks/{sms_webhook_id}", + headers=self.headers_default, + json=data, + ) + + return f"{request.status_code}\n{request.text}" + + def delete_webhook(self, sms_webhook_id): + """ + Delete an SMS webhook. + + @params: + sms_webhook_id (string) + """ + + request = requests.delete( + f"{self.api_base}/sms-webhooks/{sms_webhook_id}", + headers=self.headers_default, + ) + + return f"{request.status_code}\n{request.text}" diff --git a/.venv/lib/python3.12/site-packages/mailersend/templates/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/templates/__init__.py new file mode 100644 index 00000000..deee93f7 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/templates/__init__.py @@ -0,0 +1,42 @@ +""" +Handles /templates endpoint +Doc: https://developers.mailersend.com/api/v1/templates.html +""" + +import requests +from mailersend.base import base + + +class NewTemplate(base.NewAPIClient): + """ + Instantiates the /templates endpoint object + """ + + pass + + def get_templates(self): + """ + Returns a JSON response from the MailerSend API + """ + request = requests.get( + f"{self.api_base}/templates", headers=self.headers_default + ) + return request.text + + def get_template_by_id(self, template_id): + """ + Returns a JSON response from the MailerSend API + """ + request = requests.get( + f"{self.api_base}/templates/{template_id}", headers=self.headers_default + ) + return request.text + + def delete_template(self, template_id): + """ + Returns a JSON response from the MailerSend API + """ + request = requests.delete( + f"{self.api_base}/templates/{template_id}", headers=self.headers_default + ) + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/tokens/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/tokens/__init__.py new file mode 100644 index 00000000..82954132 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/tokens/__init__.py @@ -0,0 +1,54 @@ +""" +Handles /tokens endpoint +Doc: https://developers.mailersend.com/api/v1/tokens.html +""" + +import requests +from mailersend.base import base + + +class NewToken(base.NewAPIClient): + """ + Instantiates the /tokens endpoint object + """ + + pass + + def create_token(self, token_name, token_scopes): + """ + Returns a JSON response from the MailerSend API + """ + + _data = {"name": token_name, "scopes": token_scopes} + + request = requests.post( + f"{self.api_base}/token", headers=self.headers_default, json=_data + ) + return request.text + + def update_token(self, token_id, pause=True): + """ + Returns a JSON response from the MailerSend API + """ + + if pause: + _data = base.generate_config_change_json_body("status", "pause") + else: + _data = base.generate_config_change_json_body("status", "unpause") + + request = requests.put( + f"{self.api_base}/token/{token_id}/settings", + headers=self.headers_default, + json=_data, + ) + return request.text + + def delete_token(self, token_id): + """ + Returns a HTTP status code from the MailerSend API + """ + + request = requests.delete( + f"{self.api_base}/token/{token_id}/", headers=self.headers_default + ) + return request.status_code diff --git a/.venv/lib/python3.12/site-packages/mailersend/utils/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/utils/__init__.py new file mode 100644 index 00000000..d57e2fb5 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/utils/__init__.py @@ -0,0 +1,43 @@ +""" +Provides helper functions to convenience devs +""" + +import requests +from mailersend.base import base + + +class NewHelper(base.NewAPIClient): + """ + NewHelper extends base.NewAPIClient to inherit connection details + """ + + def __init__(self): + """ + NewHelper constructor + """ + pass + + def get_id_by_name(self, category, name): + """ + Returns an ID given a category and item name from the MailerSend API + + @params: + category (str): Can be one of "recipients", "domains" + name (str): Object name + """ + + request = requests.get( + f"{self.api_base}/{category}", headers=self.headers_default + ) + + _json_req = request.json() + + category_search_asset = {"recipients": "email", "domains": "name"} + + _data_block = _json_req["data"] + + for data in _data_block: + if data[category_search_asset.get(category)] == name: + return data["id"] + + return request.text diff --git a/.venv/lib/python3.12/site-packages/mailersend/webhooks/__init__.py b/.venv/lib/python3.12/site-packages/mailersend/webhooks/__init__.py new file mode 100644 index 00000000..92152b17 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/mailersend/webhooks/__init__.py @@ -0,0 +1,135 @@ +""" +Handles /webhooks endpoint +Doc: https://developers.mailersend.com/api/v1/webhooks.html +""" + +import requests +from mailersend.base import base + +data = {} + + +class NewWebhook(base.NewAPIClient): + """ + Instantiates the /webhooks endpoint object + """ + + def __init__(self): + """ + NewWebhook constructor + """ + pass + + def get_webhooks(self, domain_id): + """ + Returns a JSON response from the MailerSend API + + @params: + domain_id (str): A domain ID + """ + request = requests.get( + f"{self.api_base}/webhooks", + headers=self.headers_default, + json={"domain_id": domain_id}, + ) + return request.text + + def get_webhook_by_id(self, webhook_id): + """ + Returns a JSON response from the MailerSend API + + @params: + webhook_id (str): A webhook ID + """ + request = requests.get( + f"{self.api_base}/webhooks/{webhook_id}", headers=self.headers_default + ) + return request.text + + def set_webhook_url(self, webhook_url): + """ + Sets the webhook 'url' field + + @params: + webhook_url (str): A webhook URL + """ + data["url"] = webhook_url + + def set_webhook_name(self, webhook_name): + """ + Sets the webhook 'name' field + + @params: + webhook_name (str): A webhook name + """ + + data["name"] = webhook_name + + def set_webhook_events(self, events): + """ + Sets the webhook 'events' field + + @params: + events (list): A list containing valid events + """ + data["events"] = events + + def set_webhook_enabled(self, enabled=True): + """ + Sets the webhook 'enabled' status field + + @params: + enabled (bool): Controls webhook status + """ + + data["enabled"] = enabled + + def set_webhook_domain(self, domain_id): + """ + Sets the webhook 'domain_id' status field + + @params: + domain_id (str): A valid domain ID + """ + + data["domain_id"] = domain_id + + def update_webhook(self, webhook_id, key, value): + """ + Updates a webhook setting + + @params: + webhook_id (str): A valid webhook ID + key (str): A setting key + value (str): Corresponding keys value + """ + + request = requests.put( + f"{self.api_base}/webhooks/{webhook_id}", + headers=self.headers_default, + json={f"{key}": value}, + ) + return request.text + + def delete_webhook(self, webhook_id): + """ + Returns a JSON response from the MailerSend API + + @params: + webhook_id (str): A valid webhook ID + """ + + request = requests.delete( + f"{self.api_base}/webhooks/{webhook_id}", headers=self.headers_default + ) + return request.text + + def create_webhook(self): + """ + Returns a JSON response from the MailerSend API + """ + + request = requests.post( + f"{self.api_base}/webhooks", headers=self.headers_default, json=data + ) + return request.text |