Topcoder Connect - Phases and Products Models and REST API

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

In this new challenge we are adding two new endpoints to topcoder Connect.
 

Requirements


1. Add new models in tc-project-service for project_phase, phase_product, product_template

2. Add new routes in tc-project-service for project_phase
-- GET /v4/projects/{projectId}/phases to list all phases of the project
-- GET /v4/projects/{projectId}/phases/{phaseId} to read the particular phase of the project
-- POST /v4/projects/{projectId}/phases to create new phase in the project
-- PUT /v4/projects/{projectId}/phases/{phaseId} to update a phase of the project
-- DELETE /v4/projects/{projectId}/phases/{phaseId} to delete a phase of the project

Schema:

+-----------+-------------------------+---------------+
| column    | type                    | default value |
+-----------+-------------------------+---------------+
| id        | long                    |               |
+-----------+-------------------------+---------------+
| name      | varchar(255)            |               |
+-----------+-------------------------+---------------+
| status    | varchar(45)             |               |
+-----------+-------------------------+---------------+
| projectId | long                    |               |
+-----------+-------------------------+---------------+
| startDate | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| endDate   | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| budget    | double                  | 0.0           |
+-----------+-------------------------+---------------+
| progress  | double                  | 0.0           |
+-----------+-------------------------+---------------+
| details   | json                    | empty         |
+-----------+-------------------------+---------------+
| deletedAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| createdAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| updatedAt | timestamp with timezone |               |
+-----------+-------------------------+---------------+
| deletedBy | long                    |               |
+-----------+-------------------------+---------------+
| createdBy | long                    |               |
+-----------+-------------------------+---------------+
| updatedBy | long                    |               |
+-----------+-------------------------+---------------+

3. Add new routes in tc-project-service for phase_product
-- GET /v4/projects/{projectId}/phases/{phaseId}/products to list all produts of the phase
-- GET /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to read the particular product of the phase
-- POST /v4/projects/{projectId}/phases/{phaseId}/products to add new product in the phase. DO NOT allow the number of products per phase to be greater than a environment configured value which would be 1 for now.
-- PUT /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to update a product of the phase
-- DELETE /v4/projects/{projectId}/phases/{phaseId}/products/{productId} to delete a product of the phase

Schema:

+--------------------+-------------------------+---------------+
| column             | type                    | default value |
+--------------------+-------------------------+---------------+
| id                 | long                    |               |
+--------------------+-------------------------+---------------+
| name               | varchar(255)            |               |
+--------------------+-------------------------+---------------+
| phaseId            | long                    |               |
+--------------------+-------------------------+---------------+
| projectId          | long                    |               |
+--------------------+-------------------------+---------------+
| directProjectId    | long                    |               |
+--------------------+-------------------------+---------------+
| billingAccountId   | long                    |               |
+--------------------+-------------------------+---------------+
| templateId         | long                    |               |
+--------------------+-------------------------+---------------+
| type               | varchar(255)            |               |
+--------------------+-------------------------+---------------+
| estimatedPrice     | double                  | 0.0           |
+--------------------+-------------------------+---------------+
| actualPrice        | double                  | 0.0           |
+--------------------+-------------------------+---------------+
| details            | json                    | empty         |
+--------------------+-------------------------+---------------+
| deletedAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| createdAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| updatedAt          | timestamp with timezone |               |
+--------------------+-------------------------+---------------+
| deletedBy          | long                    |               |
+--------------------+-------------------------+---------------+
| createdBy          | long                    |               |
+--------------------+-------------------------+---------------+
| updatedBy          | long                    |               |
+--------------------+-------------------------+---------------+


4. Unit tests for all new endpoints

5. Code is provided in forum

Final Submission Guidelines

  • Zip file with the code developed
  • Updated deployment guide

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30065204