Challenge Overview
Welcome to the IBM Castle Strongloop Messaging API contest. IBM is building a versatile, extensible Mail and Calendaring interface on top of their existing infrastructure. As part of this contest, you will make use of Strongloop’s Loopback Framework to create an API server and expose multiple API endpoints. These endpoints will be used by an Angular application and native mobile clients to be built in subsequent challenges.
This challenge is part of the *IBM Castle* Challenge Series. Competitors who win challenges in this series will compete in a leaderboard of points for additional prizes. We have lots of contests coming in this series so it is best that you participate early and frequently. More information, rules, and leaderboards available here.
Project Overview
This project is the foundation for a complex, enterprise email, calendaring, and messaging system. We will be building a robust REST API to allow multiple frontend clients to connect to many different services, including multiple mail server backends.
Contest Overview
In this challenge, we will be implementing the basis of connectivity from the client, through to the first of many mail systems. The front side of the REST API will be built using Strongloop’s Loopback Framework and will be referred to as the Castle API. Within the Node application, we will be then connecting to other services called the Domino Proxy API that will be shared in the contest forum. You will need to stand up the Castle API endpoints and consume the Proxy API to get and post information.
The Use Case for this challenge is to be able to:
-
Log in with the given credentials
-
Send an email to an email address
For the Castle API that you will build, you will be implementing the endpoints as defined in this swagger doc.
-
POST /login
-
POST /messages
On the Proxy API Server, you will be utilizing the following endpoints:
-
POST /api/login - Authentication. This requires a JSON object as the request body. We will share the details in the contest forums.
-
POST /api/messages/new - Create a new email message. This requires a JSON object whose details we will share in the contest forums.
The endpoints use Javascript Web Token based authentication. When you POST /api/login, it will return a token that you need to pass for every other API request to the proxy API server.
Kindly note the following points:
-
You need to use AirBnb’s ESLinter for both javascript code style and checks.
-
Your solution should compulsorily use Strongloop’s Loopback framework.
-
The Castle API that you are building will interact with many other Proxy API servers in the future as well as contain node services providing other endpoints for the client applications. As such, your solution should take this into consideration and it should NOT tie the app to a specific Proxy API. Basically, your solution should be agnostic / unaware of the type of Proxy API it will be interacting with.
-
There is no database for this API server in this challenge. All interactions will be with the Proxy API, a database will be incorporated for future services
Final Submission Guidelines
Kindly make sure that before uploading your submission, it:
-
Meets the specification outlined in the YAML document shared
-
Passes all the lint checks using the ESLint rules that we mentioned
-
Includes Unit Tests. POSTMAN extension based imports are NOT allowed
-
Implements all the endpoints requested
Once you are ready, create a .zip file of the submission and upload this through the Submit and Review tool for this contest.