Challenge Overview
Challenge Overview
Welcome to the EWS middleware API challenge. Our goal here is to create EWS (Exchange Web Services) API middleware that would read and write the resources (ex emails, contacts, etc) from a custom data source instead of Exchange data sources like an outlook email inbox.
NOTE: There are quite a few challenges planned as a followup for this challenge - it is a good time to start working on the project.
Project Overview
The project goal is to create EWS and MAPI middlewares and use them to provide access from Outlook to data from non-Microsoft apps/data sources. Integrating with those data sources is out of scope for this challenge - we will use static/demo data for verification only. This challenge will only implement account related endpoints. Followup challenges will implement calendar and messages endpoints. MAPI support would be added in a future challenge.
NOTE: There are quite a few challenges planned as a followup for this challenge - it is a good time to start working on the project.
Technology Stack
-
Typescript
-
Loopback 4
-
EWS
Assets
We are starting a new project - you should create the base API structure in this challenge.
Individual requirements
The goal here is to implement EWS API that reads some static data, point Outlook client to that API and get the communication working between them. Here is a system diagram of what we’re trying to do
See the EWS Managed API reference for API details. Note that we don’t need to implement all the EWS API features - at this point, we’re targeting only account related endpoints and a Postman collection to verify the implementation (see below for the list of required endpoints). Since there is no business logic to implement (we’re not integrating with external services yet), most of the endpoints should be straightforward to implement and you can just use mock data to serve the responses (ex mock user accounts). You can store the files in any format you like (ex json) as this is just for demo/verification purposes.
Try using auto-generated EWS generated models to implement the API proxy/middleware. Note that these are .NET managed model classes (so can't be used directly in NodeJS land), but should still be helpful to resolve any endpoint model mappings.
Latest WSDL for EWS APIs are available here - you need to log in with a Microsoft account to access it. The endpoints that need to be implemented are
-
GetUserPhoto
-
SetUserPhoto
-
GetClientAccessToken
-
GetUserAvailability
-
GetUserOofSettings
-
SetUserOofSettings
-
FindPeople
-
GetPersona
-
GetInboxRules
-
UpdateInboxRules
Use Loopback and typescript to implement the API.
NOTE: Challenge winner will be offered an additional task to implement EWS autodiscover feature and verify the API using Outlook
What to submit
-
Submit the API implementation
-
README document with deployment and verification steps
-
Postman collection to verify the endpoints