API RESTful para el sistema de Ecommerce
Bienvenido a la documentación de la API de Ecommerce. Esta API proporciona acceso a los recursos necesarios para gestionar productos, carritos de compras, usuarios y autenticación.
URL Base: http://tu-dominio.com/api
La mayoría de los endpoints requieren autenticación mediante JWT (JSON Web Token). Incluye el token en el encabezado de autorización:
Authorization: Bearer <token>
Registra un nuevo usuario en el sistema.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
first_name | String | Sí | Nombre del usuario |
last_name | String | Sí | Apellido del usuario |
String | Sí | Email del usuario (debe ser único) | |
age | Number | No | Edad del usuario |
password | String | Sí | Contraseña (mínimo 6 caracteres) |
POST /api/session/register // Headers Content-Type: application/json { "first_name": "Juan", "last_name": "Pérez", "email": "juan@example.com", "age": 30, "password": "miContraseña123" }
// 201 Created { "status": "success", "message": "Usuario registrado exitosamente", "data": { "user": { "first_name": "Juan", "last_name": "Pérez", "email": "juan@example.com", "age": 30, "role": "user" } } }
Inicia sesión de usuario y devuelve un token JWT.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
String | Sí | Email del usuario | |
password | String | Sí | Contraseña del usuario |
POST /api/session/login // Headers Content-Type: application/json { "email": "juan@example.com", "password": "miContraseña123" }
// 200 OK { "status": "success", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "user": { "first_name": "Juan", "last_name": "Pérez", "email": "juan@example.com", "role": "user", "cart": "cart_1234567890" } }
Endpoint para iniciar sesión de usuario.
Parámetros:
Endpoint para registrar un nuevo usuario.
Parámetros:
Endpoint para revalidar el token del usuario.
Endpoint para solicitar el cambio de la contraseña.
Parámetros:
Endpoint para cambiar la contraseña.
Parámetros:
Endpoint para eliminar un usuario.
Parámetros:
Endpoint para eliminar los usuarios inactivos.
Parámetros:
Obtiene un listado paginado de productos.
Parámetro | Tipo | Requerido | Descripción | Valor por defecto |
---|---|---|---|---|
limit | Number | No | Número de productos por página | 10 |
page | Number | No | Número de página | 1 |
sort | String | No | Ordenamiento: 'asc' o 'desc' | Ninguno |
query | String | No | Filtro de búsqueda (por título o descripción) | Ninguno |
category | String | No | Filtrar por categoría | Ninguno |
status | Boolean | No | Filtrar por estado (true/false) | Ninguno |
GET /api/products?limit=5&page=1&sort=desc&category=electronics // Headers Authorization: Bearer <token>
// 200 OK { "status": "success", "payload": [ { "_id": "60d21b4667d0d8992e610c85", "title": "Laptop HP", "description": "Laptop HP 15-dw1000la", "code": "LAP123", "price": 1299.99, "status": true, "stock": 25, "category": "electronics", "thumbnails": ["image1.jpg", "image2.jpg"], "owner": "admin@example.com" }, // ... más productos ], "totalPages": 3, "prevPage": null, "nextPage": 2, "page": 1, "hasPrevPage": false, "hasNextPage": true, "prevLink": null, "nextLink": "/api/products?page=2" }
Crea un nuevo producto. Requiere autenticación y rol de administrador o premium.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
title | String | Sí | Nombre del producto |
description | String | Sí | Descripción detallada |
code | String | Sí | Código único del producto |
price | Number | Sí | Precio del producto |
stock | Number | Sí | Cantidad en stock |
category | String | Sí | Categoría del producto |
thumbnails | File[] | No | Imágenes del producto (máx. 3) |
POST /api/products // Headers Authorization: Bearer <token> Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="title" Nuevo Producto ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="description" Descripción del nuevo producto ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="code" CODE123 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="price" 99.99 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="stock" 50 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="category" electronics ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="thumbnails"; filename="product.jpg" Content-Type: image/jpeg (binary data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
// 201 Created { "status": "success", "message": "Producto creado exitosamente", "data": { "_id": "60d21b4667d0d8992e610c86", "title": "Nuevo Producto", "description": "Descripción del nuevo producto", "code": "CODE123", "price": 99.99, "status": true, "stock": 50, "category": "electronics", "thumbnails": ["product-123.jpg"], "owner": "usuario@example.com" } }
Endpoint para obtener productos paginados.
Parámetros:
Endpoint para obtener un producto por id.
Parámetros:
Endpoint para crear un nuevo producto.
Parámetros:
Endpoint para actualizar un producto.
Parámetros:
Endpoint para eliminar un producto.
Parámetros:
Crea un nuevo carrito de compras.
POST /api/carts // Headers Authorization: Bearer <token>
// 201 Created { "status": "success", "message": "Carrito creado exitosamente", "data": { "_id": "60d21b4667d0d8992e610c90", "products": [], "user": "60d21b4667d0d8992e610c85", "createdAt": "2023-06-01T12:00:00.000Z", "updatedAt": "2023-06-01T12:00:00.000Z" } }
Obtiene los productos de un carrito específico.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
cid | String | Sí | ID del carrito |
GET /api/carts/60d21b4667d0d8992e610c90 // Headers Authorization: Bearer <token>
// 200 OK { "status": "success", "data": { "_id": "60d21b4667d0d8992e610c90", "products": [ { "product": { "_id": "60d21b4667d0d8992e610c85", "title": "Laptop HP", "price": 1299.99, "thumbnails": ["image1.jpg"] }, "quantity": 2 } ], "user": "60d21b4667d0d8992e610c85", "total": 2599.98, "createdAt": "2023-06-01T12:00:00.000Z", "updatedAt": "2023-06-01T12:30:00.000Z" } }
Agrega un producto al carrito o incrementa su cantidad si ya existe.
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
cid | String | Sí | ID del carrito |
pid | String | Sí | ID del producto a agregar |
Parámetro | Tipo | Requerido | Descripción | Valor por defecto |
---|---|---|---|---|
quantity | Number | No | Cantidad a agregar | 1 |
POST /api/carts/60d21b4667d0d8992e610c90/product/60d21b4667d0d8992e610c85 // Headers Authorization: Bearer <token> Content-Type: application/json { "quantity": 2 }
// 200 OK { "status": "success", "message": "Producto agregado al carrito", "data": { "_id": "60d21b4667d0d8992e610c90", "products": [ { "product": "60d21b4667d0d8992e610c85", "quantity": 2 } ], "user": "60d21b4667d0d8992e610c85", "updatedAt": "2023-06-01T13:00:00.000Z" } }
Endpoint para obtener un carrito.
Parámetros:
Endpoint para obtener agregar un producto al carrito.
Parámetros:
Endpoint para eliminar productos de un carrito.
Parámetros:
Endpoint para obtener productos.
Parámetros:
Endpoint para obtener productos.
Parámetros:
Endpoint para obtener el ticket de compra.
Parámetros:
Endpoint para Chat.
Parámetros:
Endpoint enviar un mensaje para Chat.
Parámetros: