# -*- coding: utf-8 -*- """ flowroutenumbersandmessaging.controllers.messages_controller This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ). """ from .base_controller import BaseController from ..api_helper import APIHelper from ..configuration import Configuration from ..models.mdr_2 import MDR2 import json class MessagesController(BaseController): """A Controller to access Endpoints in the flowroutenumbersandmessaging API.""" def look_up_a_set_of_messages(self, start_date, end_date=None, limit=None, offset=None): """Does a GET request to /v2.1/messages. Retrieves a list of Message Detail Records (MDRs) within a specified date range. Date and time is based on Coordinated Universal Time (UTC). Args: start_date (datetime): The beginning date and time, in UTC, on which to perform an MDR search. The DateTime can be formatted as YYYY-MM-DDor YYYY-MM-DDTHH:mm:ss.SSZ. end_date (datetime, optional): The ending date and time, in UTC, on which to perform an MDR search. The DateTime can be formatted as YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.SSZ. limit (int, optional): The number of MDRs to retrieve at one time. You can set as high of a number as you want, but the number cannot be negative and must be greater than 0 (zero). offset (int, optional): The number of MDRs to skip when performing a query. The number must be 0 (zero) or greater, but cannot be negative. Returns: mixed: Response from the API. OK Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ parsed_end_date = None if end_date is not None: parsed_end_date = APIHelper.RFC3339DateTime(end_date) # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages' _query_parameters = { 'start_date': APIHelper.RFC3339DateTime(start_date), 'end_date': parsed_end_date, 'limit': limit, 'offset': offset } _query_builder = APIHelper.append_url_with_query_parameters( _query_builder, _query_parameters, Configuration.array_serialization) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/json' } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) return self.handle_request_and_response(_request) def look_up_a_message_detail_record(self, id): """Does a GET request to /v2.1/messages/{id}. Searches for a specific message record ID and returns a Message Detail Record (in MDR2 format). Args: id (string): The unique message detail record identifier (MDR ID) of any message. When entering the MDR ID, the number should include the mdr2- preface. Returns: MDR2: Response from the API. OK Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages/{id}' _query_builder = APIHelper.append_url_with_template_parameters( _query_builder, { 'id': id }) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/json' } # Prepare and execute request _request = self.http_client.get(_query_url, headers=_headers) return self.handle_request_and_response(_request) def send_a_message(self, body): """Does a POST request to /v2.1/messages. Sends an SMS or MMS from a Flowroute long code or toll-free phone number to another valid phone number. Args: body (Message): The SMS or MMS message to send. Returns: mixed: Response from the API. ACCEPTED Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages' _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/vnd.api+json', 'content-type': 'application/vnd.api+json; charset=utf-8' } # Prepare and execute request _request = self.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(json.loads(body))) return self.handle_request_and_response(_request) def set_account_level_sms_callback(self, url): """Does a PUT request to /v2.1/messages/sms_callback. Sets the callback url for all sms messages. Args: url (string): The callback url to be hit. Returns: mixed: Response from the API. ACCEPTED Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages/sms_callback' _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/vnd.api+json', 'content-type': 'application/vnd.api+json; charset=utf-8' } body = { 'data': { 'attributes': { 'callback_url': url } } } # Prepare and execute request _request = self.http_client.put(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body)) return self.handle_request_and_response(_request) def set_account_level_mms_callback(self, url): """Does a PUT request to /v2.1/messages/mms_callback. Sets the callback url for all mms messages. Args: url (string): The callback url to be hit. Returns: mixed: Response from the API. ACCEPTED Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages/mms_callback' _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/vnd.api+json', 'content-type': 'application/vnd.api+json; charset=utf-8' } body = { 'data': { 'attributes': { 'callback_url': url } } } # Prepare and execute request _request = self.http_client.put(_query_url, headers=_headers, parameters=APIHelper.json_serialize( body)) return self.handle_request_and_response(_request) def set_account_level_dlr_callback(self, url): """Does a PUT request to /v2.1/messages/dlr_callback. Sets the callback url for all delivery receipts (dlrs) Args: url (string): The callback url to be hit. Returns: mixed: Response from the API. ACCEPTED Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2.1/messages/dlr_callback' _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/vnd.api+json', 'content-type': 'application/vnd.api+json; charset=utf-8' } body = { 'data': { 'attributes': { 'callback_url': url } } } # Prepare and execute request _request = self.http_client.put(_query_url, headers=_headers, parameters=APIHelper.json_serialize( body)) return self.handle_request_and_response(_request) def set_did_level_dlr_callback(self, number_id, dlr_url): """Does a POST request to /v2/numbers/number_id/relationships/dlr_callback Sets the callback url for all delivery receipts (dlrs) for the specified did Args: number_id (integer): pk of the DID record url (string): The callback url to be hit. Returns: mixed: Response from the API. ACCEPTED Raises: APIException: When an error occurs while fetching the data from the remote API. This exception includes the HTTP Response code, an error message, and the HTTP body that was received in the request. """ # Prepare query URL _query_builder = Configuration.base_uri _query_builder += '/v2/numbers/{}/relationships/dlr_callback'.format(number_id) _query_url = APIHelper.clean_url(_query_builder) # Prepare headers _headers = { 'accept': 'application/vnd.api+json', 'content-type': 'application/vnd.api+json; charset=utf-8' } body = { 'data': { 'attributes': { 'callback_url': dlr_url } } } # Prepare and execute request _request = self.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize( body)) return self.handle_request_and_response(_request)