Register
Submit a solution
The challenge is finished.

Challenge Overview

Project Background
There is a considerably large amount of information about business case studies that we need to make available for users to grasp and use quickly for their business purposes. METI (Ministry of Economy Trade and Industry - government of Japan) is creating a web application from scratch to help users finding this information and interacting with it.
 
Challenge Objectives
In the previous challenge, we have built the first set of API for the project. In this challenge, we need the community to help build part #2 of the REST API for the project.
 
Technology Stack
  • Java 9
  • Springboot
  • MySQL
  • Gradle
 
Challenge Scope
The endpoints listed below are in scope of this challenge. Keep reading to find out more details.
 
General Requirements
  • Please use the provided code as base, and implement the rest of endpoints in a consistent way.
  • Unit tests are required, make sure the tests coverage is good (should test both positive and negative cases).
  • Make sure coding style is inline with the existing code base.
  • Make sure code is well documented, all classes / methods / variables / parameters / return values must be documented in every single java code file, and appropriate inline comments should be provided too where code is not straightforward to understand.
  • Update postman files to cover the new endpoints, please follow the same way it’s done now to cover all possible cases of each endpoint.
 
Individual requirements
Below is the list of endpoints that are in scope of this challenge:
  • Update Case Study
    • PUT /case_studies/{id}
  • Delete Case Study
    • DELETE /case_studies/{id}
  • Create Image
    • "POST /case_studies/{id}/images { title, path, license, ... }"
  • Update Image
    • "PUT /case_studies/{id}/images/{image-id} { title, path, license, ... }"
  • Delete Image
    • DELETE /case_studies/{id}/images/{image-id}
  • Update Notification
    • PUT /notifications/{id}
  • Delete Notification
    • DELETE /notifications/{id}
  • Get Organizations
    • "GET /organizations?field [field]
    • - name ( ""*param"" -> LIKE '%param', ""param*"" -> LIKE 'param%' )
    • - corporate_number (exact match)
    • - address (exact match)"
  • Update Organization
    • "PUT /organizations/{id} { name, corporate_number, type, .. }"
  • Delete Organization
    • DELETE /organizations/{id}
  • Get Catalogs
    • "GET /catalogs?field [field]
    • - name ( ""*param"" -> LIKE '%param', ""param*"" -> LIKE 'param%' )
    • - publisher (exact match)"
  • Update Catalog
    • "PUT /catalogs/{id} { name, publisher, .. }"
  • Delete Catalog
    • DELETE /catalogs/{id}
 
Documentation
Register to download the following documents we provided in the forum
  • Base code
  • Swagger Documentation
  • Database Design (DDL / ERD)


Final Submission Guidelines

  • Full source code with all the requirements implemented, including unit tests
  • Other docs like postman file, sql scripts, gradle build script, etc... as mentioned above
  • Detailed readme in markdown format that describes how to configure, build, run and verify the code

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30074181