03 API Specification - Pioneer18/Rent-A-Car GitHub Wiki

Rent-A-Car Route Map

Auth: Login and manage account

  • @Post(login): Log a user into the application and grant them a JWT authentication token with an expiration date
  • @Post(logout): Log a user out of the application and expire their JWT authentication token
  • @Post(change-password): Replace a user's current password with the new user provided password
  • @Post(forgot-password): Send a user a password replacement email
  • @Post(reset-password): Reset a user's password with the password provided by the completed reset password email

User: Create and manage users

  • @Post(create-user): Create a new user account
  • @Pot(update-user): Update a user's account info; e.g. email, username
  • @Post(find-user): Find a user in the database by email
  • @Post(delete-profile): Delete a user profile

Rental: Create new rental listings or search for rentals near your location

  • @Post(rental): Create a new rental vehicle listing
  • @Get(search-rental): Search for rentals in a 2, 4, 6, or 8 mile radius from the user's location or a specified address
  • @Get(user-rentals): Returns all of the logged in user's listed rentals.
  • @Post(edit-price): Edit a rental's pricing
  • @Post(edit-details): Edit the details of a rental; e.g. # of seats, color, etc.
  • @Post(remove-rental): Delete a rental from a user's account

Unavailability: Schedule periods of unavailable time for your rentals

  • @Post(schedule-pickup-unavailability): Set a period of pickup unavailability for a rental; e.g. [Start] 2021 April 1, 11:30 - [End] 2021 June 15, 18:00
  • @Post(reschedule-pickup-unavailability): Reschedule a pickup-unavailability period for a rental
  • @Post(remove-unavailability): Remove a scheduled unavailability period from a rental
  • @Get(view-pickup-unavailability): Return all of a rental's scheduled pickup unavailability

Images: Upload images to AWS S3 Bucket

  • @Post(upload-vehicle-images): Upload a single or multiple photos for a vehicle
  • @Post(upload-profile-images): Upload a single or multiple profile photos
  • @Post(find-all-vehicle-images): Find all images of a vehicle from the database
  • @Post(find-vehicle-image): Find a specific image of a vehicle from the database
  • @Post(find-profile-images): Find all profile images of a user from the database
  • @Post(find-profile-image): Find a specific profile image of a user from the database
  • @Post(delete-images): Delete selected image(s)