SHOP API

Simple API (still WIP)

Requires:

  1. Redis Simple redis installation, no further configuration needed

  2. MariaDB (or MySQL) Make sure a proper database is set up with shop.sql

Running:

Gunicorn is the simplest way to run this project

gunicorn -w 4 -b HOST:PORT main:app

Routes

Hello World

GET /

  • Description: A simple route that returns a JSON message saying 'Hello, Flask!'.
  • Response:
    • JSON with the following structure:
      {
        "message": "Hello, Flask!"
      }
      
  • Status Code:
    • 200: Success.

Users

POST /register

  • Description: Register a new user.
  • Request Body:
    • JSON with the following fields:
      • username (string): User's username.
      • displayname (string): User's display name.
      • email (string): User's email address.
      • password (string): User's password.
  • Response:
    • JSON indicating the success of the registration.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if any required field is missing).

POST /login

  • Description: Log in a user.
  • Request Body:
    • JSON with the following fields:
      • username (string): User's username.
      • password (string): User's password.
  • Response:
    • JSON containing authentication token and user information.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if any required field is missing).

DELETE /logout

  • Description: Log out a user by invalidating the JWT token.
  • Authentication:
    • Requires a valid JWT token.
  • Response:
    • JSON indicating the success of the logout.
  • Status Codes:
    • 200: Success.
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /update/username

  • Description: Update the username of the authenticated user.
  • Authentication:
    • Requires a valid JWT token.
  • Request Body:
    • JSON with the following field:
      • new_username (string): New username.
  • Response:
    • JSON indicating the success of the username update.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if new_username is missing).
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /update/displayname

  • Description: Update the display name of the authenticated user.
  • Authentication:
    • Requires a valid JWT token.
  • Request Body:
    • JSON with the following field:
      • new_displayname (string): New display name.
  • Response:
    • JSON indicating the success of the display name update.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if new_displayname is missing).
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /update/email

  • Description: Update the email address of the authenticated user.
  • Authentication:
    • Requires a valid JWT token.
  • Request Body:
    • JSON with the following field:
      • new_email (string): New email address.
  • Response:
    • JSON indicating the success of the email update.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if new_email is missing).
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /update/password

  • Description: Update the password of the authenticated user.
  • Authentication:
    • Requires a valid JWT token.
  • Request Body:
    • JSON with the following field:
      • new_password (string): New password.
  • Response:
    • JSON indicating the success of the password update.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if new_password is missing).
    • 401: Unauthorized (if JWT token is missing or invalid).

DELETE /delete

  • Description: Delete the account of the authenticated user.
  • Authentication:
    • Requires a valid JWT token.
  • Response:
    • JSON indicating the success of the account deletion.
  • Status Codes:
    • 200: Success.
    • 401: Unauthorized (if JWT token is missing or invalid).

Cart

GET /

  • Description: Retrieve the contents of the user's shopping cart.
  • Authentication:
    • Requires a valid JWT token.
  • Response:
    • JSON containing a list of dictionaries representing the cart contents.
  • Status Codes:
    • 200: Success.
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /add/<int:product_id>

  • Description: Add a specified quantity of a product to the user's shopping cart.
  • Authentication:
    • Requires a valid JWT token.
  • Parameters:
    • count (optional, int): Quantity of the product to add. Defaults to 1.
  • Response:
    • JSON indicating the success of adding the product to the cart.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if count is less than 1).
    • 401: Unauthorized (if JWT token is missing or invalid).

DELETE /remove/<int:product_id>

  • Description: Remove a specific product from the user's shopping cart.
  • Authentication:
    • Requires a valid JWT token.
  • Response:
    • JSON indicating the success of removing the product from the cart.
  • Status Codes:
    • 200: Success.
    • 401: Unauthorized (if JWT token is missing or invalid).

PUT /update/<int:product_id>

  • Description: Update the quantity of a product in the user's shopping cart.
  • Authentication:
    • Requires a valid JWT token.
  • Parameters:
    • count (int): New quantity of the product.
  • Response:
    • JSON indicating the success of updating the product quantity in the cart.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if count is missing or not a valid integer).
    • 401: Unauthorized (if JWT token is missing or invalid).

GET /purchase

  • Description: Complete a purchase, transferring items from the user's cart to the purchase history.
  • Authentication:
    • Requires a valid JWT token.
  • Response:
    • JSON indicating the success of the purchase.
  • Status Codes:
    • 200: Success.
    • 401: Unauthorized (if JWT token is missing or invalid).

Products

GET /get

  • Description: Retrieve a paginated list of products.
  • Parameters:
    • page (optional, int): Page number for pagination. Defaults to 0.
  • Response:
    • JSON containing a list of products.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if the page is less than 0).

GET /<int:id>

  • Description: Retrieve information about a specific product.
  • Parameters:
    • id (int): Product identifier.
    • fields (optional, string): Comma-separated list of fields to retrieve (e.g., 'name,price,image').
  • Response:
    • JSON containing information about the specified product.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if invalid fields are provided).

POST /create

  • Description: Create a new product listing.
  • Authentication:
    • Requires a valid JWT token.
  • Request Body:
    • JSON with the following fields:
      • name (string): Product name.
      • price (float): Product price.
  • Response:
    • JSON indicating the success of the product listing creation.
  • Status Codes:
    • 200: Success.
    • 400: Bad Request (if name or price is missing or if price is not a valid float).
    • 401: Unauthorized (if JWT token is missing or invalid).
Description
No description provided
Readme 424 KiB
Languages
Python 100%