git clone https://github.com/IgrowkerTraining/i005-beetrack-back.git
npm install
npm run dev
La API estará corriendo en http://localhost:3000
Método | Ruta | Descripción | Body requerido | Respuestas posibles |
---|---|---|---|---|
POST | /api/auth/register |
Registra un nuevo usuario | Ver ejemplo abajo | 201 OK Usuario creado400 Error de validación500 Error interno |
POST | /api/auth/login |
Crea la cookie con el token | { "email": string, "password": string } |
200 OK Login exitoso400/401 Error credenciales500 Error interno |
POST | /api/auth/logout |
Destruye la cookie | Sin body | 202 OK Logout exitoso500 Error interno |
GET | /api/products |
Devuelve todos los productos | Sin body | 200 OK Lista de productos500 Error interno |
POST | /api/products |
Crea un nuevo producto | formData (ver campos requeridos abajo) | 201 OK Producto creado400 Error de validación500 Error interno |
PATCH | /api/products/:id |
Actualiza un producto | formData (1 o más campos del ejemplo de crear producto) | 200 OK Producto actualizado400 Error de validación500 Error interno |
POST | /api/orders |
Crea una nueva orden | ver ejemplo más abajo | 201 OK Orden creada400 Error de validación500 Error interno |
GET | /api/orders |
Devuelve por defecto 10 ordenes (acepta 'limit' como query param) | Sin body | 200 OK Lista de ordenes500 Error interno |
{
"name": "Juan",
"last_name": "Pérez",
"email": "example@email.com",
"birthdate": "1985-05-02",
"password": "1234",
"storeName": "Super Juan",
"storeAddress": "Calle Siempre Viva 123",
"storeTel": "12345678"
}
{
"discountRate": 5,
"paymentMethod": "CASH",
"orderItems": [
{
"productId": "e3a6880b-d9f2-481d-9721-71f24b689754",
"quantity": 1
},
{
"productId": "690f9906-7893-4ae7-b958-998ebf66e0ac",
"quantity": 1
}
]
}
name: string,
barcode: string,
salesPrice: string,
costPrice: string,
stock: string,
stock_optimus: string,
stock_min: string,
file: File,(*)
description: string (opcional)
(*) La imágen del producto debe ser de hasta 2MB y estar en formato jpg/jpeg/png/webp
- El token JWT se entrega en una cookie con las siguientes características:
httpOnly: true
secure: true
(en producción)sameSite: 'lax'
maxAge: 1 día
path: '/'
- Como todavía no se van a implementar roles desde el frontend, los usuarios se crean con un rol "ADMIN" por defecto.