Challenge Overview
Challenge Overview
Welcome to the EWS middleware API challenge. Our goal here is to implement messaging related EWS (Exchange Web Services) API endpoints 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.
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 messaging related endpoints. MAPI support would be added in a future challenge.
Technology Stack
-
Typescript
-
Loopback 4
-
EWS
Assets
See forums for access to the project repository.
Individual requirements
NOTE: Outlook integration only works on OSX - you will need Outlook client on OSX to work on this challenge
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.
In the previous challenge we have implemented account related endpoints. In this challenge we’re targeting only messaging related endpoints, a Postman collection to verify the implementation (see below for the list of required endpoints) and a demo video to show the app working with Outlook. 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. Implement a data store in memory, or on disk that the endpoints will read/write data to - this is to showcase that Outlook works with the implemented apis (for example creating a folder, upload/get attachment, move item, send item should all work in outlook).
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 (wsdl and xsd files available in the project repo too). The endpoints that need to be implemented are
-
GetFolder
-
UploadItems
-
CreateFolder
-
CreateFolderPath
-
UpdateFolder
-
SyncFolderHierarchy
-
SyncFolderItems
-
GetItem
-
CreateItem
-
DeleteItem
-
UpdateItem
-
SendItem
-
MoveItem
-
CopyItem
-
ArchiveItem
-
CreateAttachment
-
DeleteAttachment
-
GetAttachment
-
MarkAllItemsAsRead
-
MarkAsJunk
-
ReportMessage
What to submit
-
Submit a git patch for the updated codebase
-
README document with deployment and verification steps
-
Postman collection to verify the endpoints and a demo video