Áslákur’s cousin, Dósóþeus Tímóteusson (a well known poet and philosopher), took a course on software design and construction and has offered to design the system. You’ve graciously agreed to help out by implementing the system based Dósóþeus’s designs. The design is based on microservices where the functionality is broken down into individual services although to simplify the implementation, the services are not required to run independently and the data may be stored in a single central repository.
- /tapes [GET] - Get information about all tapes
- /tapes [POST] - Add tape
- /tapes/{tape_id} [GET] - Get information about a specific tape
- /tapes/{tape_id} [DELETE] - delete a tape
- /tapes/{tape_id} [PUT] - Update a tape
- /users [GET] - Get information about all users
- /users [POST] - Add a user
- /users/{user_id} [GET] - Get information about a given user
- /users/{user_id} [DELETE] - Remove a user
- /users/{user_id} [PUT] - Update a user
- /users/{user_id}/tapes [GET] - Update information about the tapes a given user has on loan
- /users/{user_id}/tapes/{tape_id} [POST] - Register a tape on loan
- /users/{user_id}/tapes/{tape_id} [DELETE] - Return a tape
- /users/{user_id}/tapes/{tape_id} [PUT] - Update borrowing information
- /users/{user_id}/reviews [GET] - Get reviews by a given user
- /users/{user_id}/reviews/{tape_id} [GET] - Get user reviews for a given tape
- /users/{user_id}/reviews/{tape_id} [POST] - Add a user review for a tape
- /users/{user_id}/reviews/{tape_id} [DELETE] - Remove review
- /users/{user_id}/reviews/{tape_id} [PUT] - Update tape review
- /users/{user_id}/recommendation [GET] - Get a recommendation for a given user
- /tapes/reviews [GET] - Get reviews for all tapes
- /tapes/{tape_id}/reviews [GET] - Get all reviews for a given tape
- /tapes/{tape_id}/reviews/{user_id} [GET] - Get a user's review for a tape
- /tapes/{tape_id}/reviews/{user_id} [PUT] - Update a user's review
- /tapes/{tape_id}/reviews/{user_id} [DELETE] - Remove a user's review