Register
Submit a solution
The challenge is finished.

Challenge Overview

Challenge Objectives

  • Update existing api to integrate with ElasticSearch as well as post messages to event api

 

Project Background

  • Topcoder is starting to streamline its APIs and we are in the process of upgrading our existing APIs to version 5.

  • One of the APIs is called Submission API. Kindly don’t confuse this with one of the resources in the Submission API, which is itself called Submission.

  • The Submission API consists of 4 resources namely Submission, ReviewSummation, Review and ReviewType.

  • This is an ongoing project which is being enhanced periodically.

 

Technology Stack

  • This is a backend only app (with REST endpoints)

  • We are using Nodejs version 8

  • Our database currently is Dynamodb.

  • For this contest, we will be interfacing with ElasticSearch as well

 

Code Access

  • You can get the code here. Please make sure you are using the develop branch

 

Individual Requirements

Integrate with ElasticSearch (Major Requirement)

  • During integration of the api with Dynamodb, we realized that the database does not offer elegant solutions to fetch all rows in a table. We also realized that pagination or filtering features were also not possible out of the box.

  • To make up for this, while still using Dynamodb as our database of choice, we want to integrate with Elasticsearch and fill the gap.

  • For GET requests to any of the 4 resources, you will get the data from ElasticSearch only and not from Dynamodb. You will need to support both Pagination and filtering / searching.

  • For POST, PUT, PATCH and DELETE requests, you will NOT be interfacing with ElasticSearch. This will be carried out separately through another app (which we call the processor, which is not in scope for this contest).

Sending message to event bus (Major Requirement)

  • Event bus is an endpoint that is located here. It’s basically another API that takes in the request payload and sends a message to Kafka.

  • For this contest, when the submission api receives a POST, PUT, PATCH and DELETE request, after updating the data in Dynamodb, you will prepare the data and send it to the event bus.

  • It is this data, that is eventually picked up by the processor app to be updated in ElasticSearch. This point is important and make sure that you understand it well. The Submission API will only read data from ElasticSearch. Creation and updating of data will be managed by another app (which is not in scope for this contest).

  • The data format to be sent to the event bus will be shared in the contest forum

 

Deployment Guide and Validation Document

  • Kindly update the README file with any additional points as relevant for this contest.

  • You are expected to update the POSTMAN collection and provide the endpoints to get all records, in addition to demonstrating filtering and pagination features.

 

Important Notes

  • Kindly use the official Elasticsearch library for interfacing with ElasticSearch.

  • Kindly use the standard library to lint your code

  • Certain elasticsearch specific points:

    • The index to use in elasticsearch needs to be a configuration read off an environment variable. There will only be one index.

    • There will be 4 document types - submission, review, reviewType and reviewSummation.

  • There will be no write operations. You will only be reading data in elasticsearch.



Final Submission Guidelines

  • You can submit a git patch or the entire code base to Topcoder

  • Kindly do not submit a pull request. Please ensure that you don’t accidentally submit a pull request when the contest is active.

  • Verify that there are no lint errors before you submit

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30067952