Skip to content

Database and Endpoints

Daniel Somorov edited this page Aug 11, 2023 · 18 revisions

Database Schema

image

Endpoints

Authentication

GET /api/auth/logout

res: {
  "message": "User logged out"
}

POST /api/auth/login

req: {
  "credential",
  "password"
}

res: {
  "email",
  "firstName",
  "id",
  "lastName",
  "phone"
}

POST /api/auth/signup

req: {
  "email",
  "first_name",
  "last_name",
  "password",
  "phone"
}

res: {
  "email",
  "first_name",
  "id",
  "last_name",
  "phone"
}

POST /api/auth/validate_email

req: {
  "email"
}

res: {
  "message": "email valid"
}

POST /api/auth/validate_phone

req: {
  "phone"
}

res: {
  "message": "phone valid"
}

User Businesses

GET /api/user_businesses/all

res: {
  "businesses": {
    business_id: {
      "address",
      "cuisine",
      "deliveryFee",
      "id",
      "image",
      "name",
      "priceRange",
      "rating",
      "type",
      "userId"
    }
  }
}

GET /api/user_businesses/:business_id

res: {
  "business": {
    "address",
    "categories": {
      category_id: {
        "count",
        "id",
        "itemIds": [],
        "name",
        "order"
      }
    }, 
    "cuisine",
    "deliveryFee",
    "id",
    "items": {
      item_id: {
        "about",
        "cartItemId",
        "categoryId",
        "createdAt",
        "id",
        "image",
        "name",
        "price",
        "updatedAt"
      }
    },
    "image",
    "name",
    "priceRange",
    "rating",
    "type",
    "userId"
  }
}

POST /api/user_businesses/new

req: {
  "address",
  "cuisine",
  "image",
  "name",
  "type"
}

res: {
  "business": {
    "address",
    "cuisine",
    "deliveryFee",
    "id",
    "image",
    "name",
    "priceRange",
    "rating",
    "type",
    "userId"
  }
}

PUT /api/user_businesses/:business_id/edit

req: {
  "address",
  "cuisine",
  "delivery_fee",
  "image",
  "price_range",
  "name",
  "type"
}

res: {
  "business": {
    "address",
    "cuisine",
    "deliveryFee",
    "id",
    "image",
    "name",
    "priceRange",
    "rating",
    "type",
    "userId"
  }
}

DELETE /api/user_businesses/:business_id/delete

  res: {
    "message": "successfully deleted"
  }

Businesses

Differs from User Businesses in that User Businesses will return private business information, such as financials and orders, when those features are implemented.

Getting User Business data requires authorization.

GET /api/businesses/all

Currently same as GET /api/user_businesses/all

GET /api/businesses/:business_id

Currently same as GET /api/user_businesses/:business_id

Categories

POST /api/categories/new

  req: {
    "business_id",
    "name"
  }

  res: {
    "category": {
      "count",
      "id",
      "itemIds": [],
      "name",
      "order"
    }
  }

PUT /api/categories/:category_id/edit

  req: {
    "name"
  }

  res: {
    "category": {
      "count",
      "id",
      "itemIds": [],
      "name",
      "order"
    }
  }

PUT /api/categories/reorder

  req: {
    "business_id",
    "categories": {
      category_id: order
    }
  }

  res: {
    "categories": {
      category_id: {
        "count",
        "id",
        "itemIds": [],
        "name",
        "order"
      }
    }
  }

DELETE /api/categories/:category_id/delete

  res: {
    "message": "successfully deleted"
  }

Items

GET /api/items/:item_id

  res: {
    "item": {
      "about",
      "cartItemId",
      "categoryId",
      "createdAt",
      "id",
      "image",
      "name",
      "price",
      "updatedAt"
    }
  }

POST /api/items/new

  req: {
    "about",
    "business_id",
    "category_id"
    "image",
    "name",
    "price",
  }

  res: {
    "item": {
      "about",
      "cartItemId",
      "categoryId",
      "createdAt",
      "id",
      "image",
      "name",
      "price",
      "updatedAt"
    }
  }

PUT /api/items/:item_id/edit

  req: {
    "about",
    "business_id",
    "category_id"
    "image",
    "name",
    "price",
  }

  res: {
    "item": {
      "about",
      "cartItemId",
      "categoryId",
      "createdAt",
      "id",
      "image",
      "name",
      "price",
      "updatedAt"
    }
  }

PUT /api/items/:item_id/delete

  res: {
    "message": "successfully deleted"
  }

Carts

GET /api/carts/current

res: {
  "carts": {
    cartId: {
      "address",
      "businessId",
      "cartItems": {
         cartItemId: {
           "cartId",
           "id",
           "itemId", 
           "price",
           "quantity"
         }
      },
      "count",
      "id",
      "price"
      "userId"
    },
  }, 
  "items": {
    itemId: {
      "about",
      "cartItemId",
      "categoryId",
      "createdAt",
      "id",
      "image",
      "name",
      "price",
      "updatedAt"
    }
  }
}

GET /api/carts/:cart_id

  res: {
    "cart": {
      "address",
      "businessId",
      "cartItems": {
        cartItemId: {
          "cartId",
          "id",
          "itemId", 
          "price",
          "quantity"
        }
      },
      "count",
      "id",
      "price"
      "userId"
    }
  }

POST /api/carts/add_item

req: {
  "cart": {
    "address",
    "businessId",
    "cartItems": {
      cartItemId: {
        "cartId",
        "id",
        "itemId", 
        "price",
        "quantity"
      }
    },
    "count",
    "id",
    "price"
    "userId"
  },
}

res: {
  "cart": {
    "address",
    "businessId",
    "cartItems": {
      cartItemId: {
        "cartId",
        "id",
        "itemId", 
        "price",
        "quantity"
      }
    },
    "count",
    "id",
    "price"
    "userId"
  },
  "cartItemId"
}

PUT /api/carts/:cart_id/edit

req: {
  "address"
}

res: {
  "cart": {
    "address",
    "businessId",
    "cartItems": {
      cartItemId: {
        "cartId",
        "id",
        "itemId", 
        "price",
        "quantity"
      }
    },
    "count",
    "id",
    "price"
    "userId"
  }
}

PUT /api/carts/:cart_id/items/:item_id/edit

req: {
  "quantity"
}

res: {
  "cartItem": {
    "cartId",
    "id",
    "itemId", 
    "price",
    "quantity"
  },
  "cart": {
    "businessId",
    "count",
    "price"
  }
}

DELETE /api/carts/:cart_id/delete

res: {
  "message": "successfully deleted"
}

DELETE /api/carts/:cart_id/items/:item_id/delete

res: {
  "message": "successfully deleted"
}