3.1. Background
3.1.1. The Messaging Gateway was built for the purpose of providing a single unified API; while abstracting away the complexities of integrating with various Telco SMSCs and MMSCs,
3.1.2. The API aims to be simple and easily implementable by its API Client users.
3.1.3. The API aims to adhere to the REST architectural styles and RESTful principles.
3.2 System Architecture
Figure 3.2.1 System Architecture
3.3 Assumptions
3.3.1. The keywords “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119. The following are the assumptions on the User / developer:
3.3.1.1. Familiarity with HTTP concepts (e.g. urls, methods, status codes, user_agents, webservers, etc.).
3.3.1.2. Familiarity with REST concepts (e.g. resources, representations, etc).
3.3.1.3.Capability to develop, test, and run an API Client; usually in at least one of the many programming languages / platforms / frameworks with HTTP client support libraries
3.3.1.4. Capability to develop, test, and run Endpoints; usually involving web servers and the dynamic backend code handling of HTTP requests.
3.4 Connection Handling
3.4.1. The following are the general network connection policies / properties:
3.4.1.1. Request authentication scheme is Basic Access Authentication (see Appendix)
3.4.1.2. HTTP requests made by an API Client to the MGW Endpoint MUST be send via secure transport (e.g. HTTPS)
3.4.1.3. HTTP requests made by an API Client to the MGW Endpoint SHOULD be validated by the server
3.4.1.4. HTTP requests made from the MGW user-agent to the User’s Endpoint MUST be signed.
3.4.1.5. HTTP requests made from the MGW user-agent to the User’s endpoint SHOULD be handled as quickly as possible, with the messages queued – i.e. async delivery. (default timeout is 20 seconds).
3.4.1.6. HTTP requests MAY be rate-limited
3.4.1.7. HTTP requests with response status errors (code 5xx) MAY be subject to retries (default none).
3.4.1.8. HTTP requests with response status errors (code 5xx) MAY be subject to backoff
3.4.1.9. HTTP connections MAY remain open via the HTTP Keepalive mechanism; subject to timeouts (default 20 seconds)