A NodeJS-based Backend REST API CRUD (Technical Test) using MySQL (with Sequelize ORM)
API Documentation (provided by user) : Technical Test - Postman documenter
Technical test guidelines : (root)/Payuung x gadjian.pdf
No authentication required for this API
Request :
- Method : POST
- Endpoint :
/api/fibonacci
- Header :
- Content-Type: application/json
- Accept: application/json
- Body :
{
"n": 10
}
Response :
- Status Code :
200
- Message Status :
200:Success
{
"status": 200,
"code": "200",
"data": {
"result": "0 1 1 2 3 5 8 13 21 34"
},
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Invalid Request
{
"status": 400,
"code": "400",
"data": null,
"message": "n is required"
}
Request :
- Method : POST
- Endpoint :
/api/combination
- Header :
- Content-Type: application/json
- Accept: application/json
- Body :
{
"n": 4,
"r": 2
}
Response :
- Status Code :
200
- Message Status :
200:Success
{
"status": 200,
"code": "200",
"data": {
"result": 6
},
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Invalid Request
{
"status": 400,
"code": "400",
"data": null,
"message": "n or r is required"
}
Request :
- Method : POST
- Endpoint :
/api/companies
- Header :
- Content-Type: application/json
- Accept: application/json
- Body :
{
"company_name": "",
"telephone_number": "",
"address": ""
}
Response :
- Status Code :
201
- Message Status :
201:Created
{
"status": 201,
"code": "201",
"data": {
"id": ""
},
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Invalid Request
{
"status": 400,
"code": "400",
"data": null,
"message": "company_name is required"
}
- Status Code :
409
- Message Status :
409:Conflict
{
"status": 409,
"code": "409",
"data": null,
"message": "Company Name already exist"
}
Request :
- Method : GET
- Endpoint :
/api/companies
- Header :
- Content-Type: application/json
- Accept: application/json
Response :
- Status Code :
200
- Message Status :
200:Success
{
"status": 200,
"code": "200",
"data": {
"count": 2,
"rows": [
{
"id": 1,
"company_name": "xxxx",
"telephone_number": "xxxx",
"is_active": false,
"address": "xxxx"
},
{
"id": 2,
"company_name": "xxxx",
"telephone_number": "xxxx",
"is_active": false,
"address": "xxxx"
}
]
},
"message": "Success"
}
- Status Code :
422
- Message Status :
422:Data Not Found
{
"status": 422,
"code": "422",
"data": null,
"message": "Data is not found"
}
Request :
- Method : PUT
- Endpoint :
/api/companies/:id/set_active
- Header :
- Content-Type: application/json
- Accept: application/json
Response :
- Status Code :
200
- Message Status :
200:OK
{
"status": 201,
"code": "201",
"data": {
"id": "",
"is_active": true
},
"message": "Success"
}
- Status Code :
422
- Message Status :
422:Data Not Found
{
"status": 422,
"code": "422",
"data": null,
"message": "Data is not found"
}
- Status Code :
400
- Message Status :
400:Company Already Active
{
"status": 400,
"code": "400",
"data": null,
"message": "Company is already active"
}
Request :
- Method : GET
- Endpoint :
/api/companies/:id/employees
- Header :
- Content-Type: application/json
- Accept: application/json
Response :
- Status Code :
200
- Message Status :
200:OK
{
"status": 200,
"code": "200",
"data": {
"id": 1,
"company_name": "",
"is_active": false,
"employees": [
{
"id": 1,
"name": "xxxx",
"phone_number": "xxxx",
"jobtitle": "xxxx"
},
{
"id": 2,
"name": "xxxx",
"phone_number": "xxxx",
"jobtitle": "xxxx"
}
]
},
"message": "Success"
}
- Status Code :
422
- Message Status :
422:Data Not Found
{
"status": 422,
"code": "422",
"data": null,
"message": "Data is not found"
}
Request :
- Method : GET
- Endpoint :
/api/companies/:id
- Header :
- Content-Type: application/json
- Accept: application/json
Response :
- Status Code :
200
- Message Status :
200:OK
{
"status": 200,
"code": "200",
"data": {
"id": 1,
"name": "xxxx",
"phone_number": "xxxx",
"jobtitle": "xxxx"
},
"message": "Success"
}
- Status Code :
422
- Message Status :
422:Data Not Found
{
"status": 422,
"code": "422",
"data": null,
"message": "Data is not found"
}
Request :
- Method : POST
- Endpoint :
/api/companies/:company_id/employees
- Header :
- Content-Type: application/json
- Accept: application/json
- Body :
{
"name": "",
"email": "",
"phone_number": "",
"jobtitle": ""
}
Response :
- Status Code :
201
- Message Status :
201:Success
{
"status": 201,
"code": "201",
"data": {
"id": "",
"company_id": ""
},
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Invalid Request
{
"status": 400,
"code": "400",
"data": null,
"message": "name is required"
}
- Status Code :
409
- Message Status :
409:Conflict
{
"status": 409,
"code": "409",
"data": null,
"message": "Email already exist"
}
Request :
- Method : PUT
- Endpoint :
/api/companies/:company_id/employees/:employee_id
- Header :
- Content-Type: application/json
- Accept: application/json
- Body :
{
"name": "",
"phone_number": "",
"jobtitle": ""
}
Response :
- Status Code :
201
- Message Status :
201:Created
{
"status": 201,
"code": "201",
"data": {
"id": "",
"company_id": ""
},
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Invalid Request
{
"status": 400,
"code": "400",
"data": null,
"message": "name is required"
}
- Status Code :
409
- Message Status :
409:Conflict
{
"status": 409,
"code": "409",
"data": null,
"message": "Email already exist"
}
Request :
- Method : DEL
- Endpoint :
/api/employees/:id
- Header :
- Content-Type: application/json
- Accept: application/json
Request :
- Method : GET
- Endpoint :
/api/countries
- Header :
- Content-Type: application/json
- Accept: application/json
Response :
- Status Code :
200
- Message Status :
201:Success
{
"status": 200,
"code": "200",
"data": [
{
"name": "",
"region": "",
"timezones": []
},
{
"name": "",
"region": "",
"timezones": []
}
],
"message": "Success"
}
- Status Code :
400
- Message Status :
400:Failed to get countries from restcountries.com
{
"status": 400,
"code": "400",
"data": null,
"message": "Something Went Wrong"
}