Please keep the following in mind while working on this challenge:
- Code implementations will not be graded for correctness but rather on practicality
- Articulate clear and concise design methodologies, if necessary
- Use clean coding etiquette
- E.g. avoid liberal use of new-lines, odd variable and method names, random indentation, etc...
- Test cases are not required
Your employer has recently purchased a license to top-tier SaaS platform, Employees-R-US, to off-load all employee management responsibilities. Unfortunately, your company's product has an existing employee management solution that is tightly coupled to other services and therefore cannot be replaced whole-cloth. Product and Development leads in your department have decided it would be best to interface the existing employee management solution with the commercial offering from Employees-R-US for the time being until all employees can be migrated to the new SaaS platform.
Your ask is to expose employee information as a protected, secure REST API for consumption by Employees-R-US web hooks. The initial REST API will consist of 3 endpoints, listed in the following section. If for any reason the implementation of an endpoint is problematic, the team lead will accept pseudo-code and a pertinent description (e.g. java-doc) of intent.
Good luck!
See com.challenge.api.controller.EmployeeController for details.
getAllEmployees()
output - list of employees
description - this should return all employees, unfiltered
getEmployeeByUuid(...)
path variable - employee UUID
output - employee
description - this should return a single employee based on the provided employee UUID
createEmployee(...)
request body - attributes necessary to create an employee
output - employee
description - this should return a single employee, if created, otherwise error
This project utilizes Gradle plugin Diffplug Spotless to enforce format and style guidelines with every build.
To format code according to style guidelines, you can run spotlessApply task.
./gradlew spotlessApply
The spotless plugin will also execute check-and-validation tasks as part of the gradle build task.
./gradlew build