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 

  1. GetFolder

  2. UploadItems

  3. CreateFolder

  4. CreateFolderPath

  5. UpdateFolder

  6. SyncFolderHierarchy

  7. SyncFolderItems

  8. GetItem

  9. CreateItem

  10. DeleteItem

  11. UpdateItem

  12. SendItem

  13. MoveItem

  14. CopyItem

  15. ArchiveItem

  16. CreateAttachment

  17. DeleteAttachment

  18. GetAttachment

  19. MarkAllItemsAsRead

  20. MarkAsJunk

  21. 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
     



Final Submission Guidelines

See above

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30121676