Repository navigation
API consumption
📑 Chapter summary
In this section your group must design, implement and test a client application that uses the RESTful API implemented by you. If you utilize HTML and JavaScript, it is mandatory that the HTML is contained in static files. It means that your server cannot generate HTML dynamically (using PHP or JSP). All modifications made to the webpage must be done in the client side using javascript. Of course, you can use anchors () to load a new URL. Please, consider the Same Origin Policy" because it might cause problems to your client implementation. It is recommend to host the files in a local HTTP server and not directly in your file system. We will give you more instructions in Exercise 4.In addition, you must include an auxiliary service that interacts with your API (and possibly the client).
- Learn how to use APIs
- Implement a client that uses the project API
- Implement an auxiliary service that interacts with your API
✔️ Chapter evaluation (max 30 points)
You can get a maximum of 30 points after completing this section. You can check more detailed assessment criteria in the Lovelace return box for Deadline 5.📑 Content that must be included in the section
You must provide a description of the application. You must clarify which are the goals of the application and why a user would like to use this application. You must also state what is the functionality provided by the RESTful API used by this application.✏️ Write here your application description
The Email notification service API is a crucial tool for organizations seeking to communicate with their customer base effectively. This app enables companies to send bulk emails, which is an efficient way to keep customers informed and improve their experience. The Email notification service provides high cohesion and low coupling, enabling other services in the system to consume it efficiently. With this API, organizations can quickly send emails to their users and programmers in case of system issues. The service ensures that a large number of emails are sent efficiently and effectively, saving time and enhancing productivity.
We are using RESTful API to manage recipient data, template data. All the resources have REST endpoints for GET, POST(add), DELETE, and PUT(edit) functionalities.
The below table specifies the API resource/s that cover the client.
| Usecase | Resource url | Supported Methods |
|---|---|---|
| Add recipient | v1/notification/email/recipient/ | POST |
| Modify/delete recipient | v1/notification/email/recipient/{recipientID} | PATCH, DELETE |
| Retrieve all recipient | v1/notification/email/recipient/ | GET |
| Add template | v1/notification/email/template/ | POST |
| Modify/delete template | v1/notification/email/template/{templateID} | PATCH, DELETE |
| Send a Notification | v1/notification/email/push-notification | POST |
| Retrieve all email audits | v1/notification/email/push-notification | GET |
📑 Content that must be included in the section
Provide a use case diagram of your application. For each case, specify which is the API resource/s that cover the given functionality✏️ Draw your diagram here including a discussion of use cases

📑 Content that must be included in the section
Draw a diagram of the client layout. Students can use any software they want to do the sketching. For more professional-like design, students can use any wireframing tool available in Internet. Some of them can be found from http://webdesignledger.com/tools/13-super-useful-ui-wireframe-tools. Pencil is free, open source and easy to use. Other options are Visio and Balsamiq (you need a license). You can also create the UI using a paper and a pencil and scan the resulting drawing.✏️ Add your diagrams here

📑 Content that must be included in the section
Draw the screen workflow of your client (which are the possible screens that you can access from one specific screen?)✏️ Add your diagrams here

💻 TODO: SOFTWARE TO DELIVER IN THIS SECTION
The code repository must contain:- The source code for the client application.
- External libraries. You can also report them in the README.md if the libraries are very big or need to be installed.
- The code for testing the application (if it exists).
- We recommend to include a set of scripts to run your application and tests (if they exist).
- A README.md file containing:
- Dependencies (external libraries)
- How to setup/install the client
- How to configure and run the client
- How to run the different tests of your client (if you have implemented unit testing)
✏️ Implement your client and include a few screenshots of the final version of the client to show that meets the requirements
📑 Content that must be included in the section
You must provide a description of the service. You must clarify which are the goals of the service and how it interacts with your API (and possibly the client). The service can be autonomous entity that does some automated work on the API (data cleaning, calculating composites etc.), or it can be commanded from the client interface to perform heavier tasks that would clog the API server itself (statistics generation, recommendation algorithms etc.).✏️ Write your description here
For our email notification service, we utilized Amazon Web Services (AWS) as our cloud service provider. Specifically, we made use of two AWS services as Auxiliary Services - Amazon Cognito and Amazon SES.
-
Amazon Cognito was used for authentication and user management. We used it to securely authenticate users who needed to access our email notification service, and to manage user accounts and permissions. This ensured that only authorized users could access and use our service, and that their personal data was kept secure.
-
Amazon SES (Simple Email Service) was used for sending email notifications to our users. We integrated our email notification service with Amazon SES to send emails to our users reliably and securely, and to ensure that the emails were delivered to their intended recipients. Amazon SES provides a scalable and cost-effective way to send email notifications, and we were able to leverage this service to provide a reliable and efficient email notification system for our users.
-
AWS Lambda to cache the email audit entries retrieved from the database. This allowed us to reduce the response time for subsequent requests and avoid making unnecessary database calls. We leveraged the power of Lambda's automatic scaling feature to ensure that our caching layer was always available and responsive, even during times of high traffic.
By leveraging the power and capabilities of these AWS services, we were able to build a robust and secure email notification service that met the needs of our users.
📑 Content that must be included in the section
Provide a diagram that shows how the service communicates with other parts in the ecosystem.✏️ Put your diagram here

| Request | Method | Response | Response Data |
|---|---|---|---|
| genarete notification data | GET | notification json | json notifications |
💻 TODO: SOFTWARE TO DELIVER IN THIS SECTION
The code repository must contain:- The source code for the auxiliary service.
- External libraries. You can also report them in the README.md if the libraries are very big or need to be installed.
- The code for testing the service (if it exists).
- We recommend to include a set of scripts to run your service and tests (if they exist).
- A README.md file containing:
- Dependencies (external libraries)
- How to setup/install the service
- How to configure and run the service
- How to run the different tests of your service (if you have implemented unit testing)
✏️ Do not need to write anything here. Implement your service
| Task | Student | Estimated time |
|---|---|---|
| Client application & Wiki | Kavindu Ravishan | 25 hours |
| Client testing | Windula Kularatne | 20 hours |
| Bug fixing | Achira Hendalage | 10 hours |
| Wiki | Sameera Gamage | 10 hours |
| Discussion | Everybody | 5 hours |