Challenge Overview

Project Overview

TopCoder and the TopCoder community have worked hard to get the platform to its currently level of maturity, but we're far from done. It's time to take the platform to the next level. TopCoder is going to start taking some steps to open up the platform API to the outside and community developers so they could incorporate it in their websites, applications or build their own applications (web, mobile or desktop).

The ultimate goal is to open up and build an "API" that is targeting all different type of audiences - Software and Studio Competitors, SRM/MM competitors, Copilots, Admins and TopCoder partners - each audience will have different interests and usages of the API, so it will be a huge project and we need to make sure that we are in the right direction from the beginning.

In this contest, we will build the REST service for Tops data of Software Tracks. for example, Top 10 section of http://community.topcoder.com/tc and the corresponding View All links like (http://community.topcoder.com/stat?c=top_architects)

Competition Task Overview

Please raise questions as quick as you can, I am familiar with related database and code base, I can provide as much support as I can.

The updated code must still deploy and work on heroku - any submission which can't be deployed on heroku successfully will be failed in screening phase - primary reviewer must check this.

The implementation will base on the node.js version of TC platform API - https://github.com/cloudspokes/tc-api. Please follow the existing actionhero pattern for your development.

Software Tops REST API

This API is going to return Tops member data that is shown at Top 10 section of http://community.topcoder.com/tc and the corresponding View All links like (http://community.topcoder.com/stat?c=top_architects).

All Software Tracks are in scopes - Design, Development, Conceptualization, Specification, Architecture, Assembly, Test Suites, Test Scenarios, UI Prototype, RIA Build and Content Creation.

Currently, there is no pages for Test Scenarios, UI Prototype, RIA Build and Content Creation track, but it should be similar to support that.

RIA
 

Endpoint: base-url/software/statistics/tops/{contest_type}, the contest_type should be meaningful like design, ui_prototype etc, See following.

Software Track Name contest_type value
Design design
Development development
Conceptualization conceptualization
Specification specification
Architecture architecture
Assembly assembly
Test Suites test_suites
Test Scenarios test_scenarios
UI Prototype ui_prototype
RIA Build ria_build
Content Creation content_creation


Verb: GET
Success Response: 200
Request Parameters:

Name Description Required?
top_count the number of tops to return N, default to 10

Response Data:
the response should properly return the ordered list of top member datas, or error messages if the contest_type is invalid.

following data should be returned like coder_id, tracking rating, handle etc.

Failure Response Codes
Following https://dev.twitter.com/docs/error-codes-responses

config.apiCodes = {
OK : {name : 'OK', value : 200, description : 'Success' },
notModified : {name : 'Not Modified', value: 304, description : 'There was no new data to return.' },
badRequest : {name : 'Bad Request', value: 400, description : 'The request was invalid. An accompanying message will explain why.' },
unauthorized : {name : 'Unauthorized', value: 401, description : 'Authentication credentials were missing or incorrect.' },
forbidden : {name : 'Forbidden', value: 403, description : 'The request is understood, but it has been refused or access is not allowed.' },
notFound : {name : 'Not Found', value: 404, description : 'The URI requested is invalid or the requested resource does not exist.' },
serverError : {name : 'Internal Server Error', value: 500, description : 'Something is broken. Please contact support.' }
};
with an optional "message" parameter for more details

Implementation Notes

Configurations

In the previous changes for API framework, we are removing configuration files. and use environment variables as described here: http://12factor.net/config

  • Please provide initial support/documentation for dev (local), staging (heroku), and production environments.
  • Please provide two bash scripts to set the dev / heroku configuration values to environment variables.

API Docs

Blueprint is a simple way of documenting APIs using Markdown. See:

http://apiblueprint.org/
https://github.com/apiaryio/api-blueprint
https://github.com/apiaryio/api-blueprint/blob/master/Tutorial.md

We want to start using it for the TC API:

http://docs.tcapi.apiary.io/
https://github.com/cloudspokes/tc-api/blob/master/apiary.apib

Please Document Software Tops API by following the example.

Testing

Please provide testing to make sure the Software Tops API can working properly for various cases.

The API Framework supports tests. Use supertest (https://github.com/visionmedia/supertest) with mocha (http://visionmedia.github.io/mocha/). Don't install mocha globally.

Winner Only

Winner will create pull request against the main github repo in final fix phase.

Virutal Machines (VMs)

VM specific information is found here: http://www.topcoder.com/wiki/display/docs/VM+Image+2.5

Upon registration as a submitter or reviewer you will need to request a VM based on the TopCoder systems image. The VM will be active through aggregation review, after which it will be terminated except for the winner's and the reviewers'. To request your image, please post in contest forum.

Before requesting your VM, you need to ensure that you have an SSH key created and in your member profile. Instructions to do so are here: http://www.topcoder.com/wiki/display/projects/Generate+SSH+Key, and instructions to connect afterwards are here: http://www.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.

Please realize that VMs are currently issued manually. We make every attempt to issue the VM as soon as it is requested, however, there may be delays of up to 12 hours depending on time of day when you request. We encourage everyone to request a VM as soon as possible to minimize any such delays.

Review Board Requirements

Reviewers need to write Supertest tests for the APIs.

There are three roles:

  • Accuracy - Tests the implementation on the accuracy of the results when using the component.
  • Failure - Tests the implementation's ability to handle bad data and incorrect usage.
  • Security - Tests the oauth, sql inject and other security related requirements.

Reviewer could send preferred role by Contact Manager after system selected the reviwer.

Copilot will assign the role to reviewers if reviewer didn't send the preferred role information.

Reviewer must create pull request from GitHub for the tests.

Technology Overview

Documentation Provided

Please check the deployment guide in codebase for reference.



Final Submission Guidelines

Submission Deliverables

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorial 

Below is an overview of the deliverables:

  • Source Code.
  • Deployment guide to configure and verify the application.

Final Submission

For each member, the final submission should be uploaded to the Online Review Tool.

ELIGIBLE EVENTS:

2014 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30036153