GET /showAvailableSpots
Send the list of the available spots in the parking lot, such as the floor, the schedule for that spot (in case some appointed it)
{
"floor": 2,
"schedule": {
"startDate": "02/02/2026 - 12:00:00",
"endDate": "02/02/2026 - 15:00:00"
}
}
POST /makeReservation
Make a reservation fot a parking spot, the user have to send the info of his car (brand, model), the period of time he is going to stay.
http body:
{
"carInfo" : {
"brand": "Ford",
"model": "Fiesta 2022" ,
"numberPlate": "XBD-123"
},
"startTime": "02/02/2026 - 14:00:00",
"endTime": "02/02/2026 - 19:00:00"
}
reponse:
{
"reserved": true
}
POST /makePayment
Make the payment of the reservation and save the info in case the user spends more time parked
http body:
{
"cardNumber": 400000000001
"expirationDate": "02/02/2029"
"securityCode": 123,
"orderNumber": 321
}
response:
{
"successPayment": true,
}
POST /checkIn
Save the date and hour when the user enters the parking spot
httpBody
{
"startDate": "02/02/2026 - 12:00:00",
"plateNumber": "WBM-234"
}
response:
{
"success": true
}
POST /chekOut
Calculate the extra time the user spended in the parking spot and charge an extra fee, based on the startTime and free the space the user were using.
http body:
{
"plateNumber": WBD-234,
"leavingTime": "02/03/2026 - 12:00:00"
}
response:
{
"extraFee": false,
}
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.