Saltar a contenido

Usuarios

Este módulo maneja la gestión de perfiles de usuarios en el sistema AgroMarket.

Endpoints

GET /api/v1/user/info

Obtiene la información completa del usuario autenticado.

URL: /api/v1/user/info

Método: GET

Headers:

Authorization: Bearer <token>

Respuesta exitosa (200):

{
  "_id": "507f1f77bcf86cd799439011",
  "username": "usuario123",
  "email": "usuario@ejemplo.com",
  "address": "Calle Principal 123",
  "phone": "1234567890",
  "lat": 19.4326,
  "lng": -99.1332,
  "image": "https://ejemplo.com/imagen.jpg",
  "credits": 150.50
}

Respuesta de error (401):

{
  "message": "Token de autenticación inválido o faltante"
}

PATCH /api/v1/user/update

Actualiza la información del perfil del usuario autenticado.

URL: /api/v1/user/update

Método: PATCH

Headers:

Authorization: Bearer <token>
Content-Type: application/json

Body:

{
  "email": "nuevo@email.com",
  "address": "Nueva Dirección 456",
  "phone": "9876543210",
  "lat": 20.1234,
  "lng": -98.5678
}

Respuesta exitosa (200):

{
  "message": "Usuario actualizado exitosamente"
}

Respuesta de error (401):

{
  "message": "Token de autenticación inválido o faltante"
}

PUT /api/v1/user/change-password

Permite al usuario cambiar su contraseña.

URL: /api/v1/user/change-password

Método: PUT

Headers:

Authorization: Bearer <token>
Content-Type: application/json

Body:

{
  "currentPassword": "contraseña_actual",
  "newPassword": "nueva_contraseña"
}

Respuesta exitosa (200):

{
  "message": "Contraseña cambiada exitosamente"
}

Respuesta de error (403):

{
  "message": "Contraseña actual incorrecta"
}

PUT /api/v1/user/change-image

Permite al usuario cambiar su imagen de perfil.

URL: /api/v1/user/change-image

Método: PUT

Headers:

Authorization: Bearer <token>
Content-Type: application/json

Body:

{
  "image": "https://nueva-imagen.com/foto.jpg"
}

Respuesta exitosa (200):

{
  "message": "Imagen cambiada exitosamente"
}

Respuesta de error (401):

{
  "message": "Token de autenticación inválido o faltante"
}

GET /api/v1/user/nearby-sellers

Obtiene una lista de vendedores cercanos a la ubicación del usuario autenticado.

URL: /api/v1/user/nearby-sellers

Método: GET

Headers:

Authorization: Bearer <token>

Parámetros de consulta: - maxDistance (opcional): Distancia máxima en metros (por defecto: 15000)

Ejemplo:

GET /api/v1/user/nearby-sellers?maxDistance=10000

Respuesta exitosa (200):

{
  "sellers": [
    {
      "_id": "507f1f77bcf86cd799439012",
      "username": "vendedor1",
      "address": "Calle Comercial 789",
      "lat": 19.4327,
      "lng": -99.1333,
      "distance": 500.5
    },
    {
      "_id": "507f1f77bcf86cd799439013",
      "username": "vendedor2",
      "address": "Avenida Principal 456",
      "lat": 19.4328,
      "lng": -99.1334,
      "distance": 1200.3
    }
  ]
}

Respuesta de error (400):

{
  "message": "Ubicación del usuario no encontrada"
}

Códigos de Error Comunes

Código Descripción
400 Ubicación del usuario no encontrada
401 Token de autenticación inválido o faltante
403 Contraseña actual incorrecta
500 Error interno del servidor

Notas Importantes

  • Todos los endpoints requieren autenticación mediante token JWT
  • La distancia se calcula en metros usando la fórmula de Haversine
  • Los campos de actualización son opcionales
  • La nueva contraseña debe ser diferente a la actual
  • Las coordenadas (lat/lng) deben estar en formato decimal