Mapa de endpoints

Documentación visual de la API

Todos los endpoints del proyecto agrupados por recurso, con método HTTP, ruta exacta y una descripción corta de su función.

8grupos de rutas
21endpoints documentados
base path/api

tag: contactos

/api/contactos

2 operations

Alta y consulta de contactos generales enviados desde formularios.

  • GET/api/contactos
    Listar contactosruntime nodejs

    Lista todos los contactos ordenados por fecha de creacion descendente.

    Ver detalle técnico
    Request

    Sin body. Consulta simple ordenada por fechaCreacion desc.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/contactos
    Crear contactoruntime nodejs

    Crea un contacto nuevo validando los datos recibidos.

    Ver detalle técnico
    Request

    Body JSON con datos del contacto. Valida formato antes de insertar.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombrestringrequired

      Nombre completo del contacto.

    • emailstringrequired

      Correo valido. Se normaliza a minusculas.

    • telefonostringrequired

      Telefono de contacto.

    • aceptaPromocionesbooleanrequired

      Acepta true/false o equivalentes parseables.

    • preguntastring | nulloptional

      Consulta adicional. Puede enviarse null.

    Example JSON
    {
      "nombre": "Marta Soto",
      "email": "marta.duplicado.postman@example.com",
      "telefono": "+5215555555510",
      "aceptaPromociones": true,
      "pregunta": "Tienen disponibilidad inmediata?"
    }
    Responses
    201 Created400 Bad Request
    Notes

    Devuelve mensaje de error si el body no cumple la validacion.

tag: productos

/api/productos

6 operations

Catalogo de productos con variantes para filtrar, crear, actualizar y desactivar.

  • GET/api/productos
    Listar productosruntime nodejs

    Lista todos los productos registrados, sin filtrar por estado o visibilidad.

    Ver detalle técnico
    Request

    Sin body. Devuelve catalogo completo.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/productos
    Crear productoruntime nodejs

    Crea un producto nuevo despues de validar nombre, categoria, precios y banderas.

    Ver detalle técnico
    Request

    Body JSON con datos del producto. Requiere validacion previa.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombrestringrequired

      Nombre comercial del producto.

    • categoriastringrequired

      Categoria visible o interna del producto.

    • descripcionstringrequired

      Descripcion del producto.

    • preciostring | numberrequired

      Valor numerico con hasta 2 decimales.

    • imagenUrlstringrequired

      URL de la imagen principal.

    • activobooleanoptional

      Si no se envia, toma true por defecto.

    • visiblebooleanoptional

      Si no se envia, toma true por defecto.

    Example JSON
    {
      "nombre": "Producto Postman",
      "categoria": "Accesorios",
      "descripcion": "Creado desde la coleccion de Postman",
      "precio": "220.00",
      "imagenUrl": "https://example.com/postman.jpg",
      "activo": true,
      "visible": true
    }
    Responses
    201 Created400 Bad Request
    Notes

    activo y visible son opcionales en create; si no llegan, ambos quedan en true.

  • GET/api/productos/activos
    Listar productos activosruntime nodejs

    Devuelve solo productos activos y visibles para consumo publico.

    Ver detalle técnico
    Request

    Sin body. Filtra por activo=true y visible=true.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • GET/api/productos/visibles
    Listar productos visiblesruntime nodejs

    Devuelve productos visibles, esten o no activos.

    Ver detalle técnico
    Request

    Sin body. Filtra por visible=true.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • PUT/api/productos/[id]
    Actualizar productoruntime nodejs

    Actualiza un producto existente usando un id entero positivo.

    Ver detalle técnico
    Request

    Body JSON parcial o completo. Requiere id entero positivo en ruta.

    Route params
    • idintegerrequired

      Identificador del producto. Debe ser entero positivo.

    Body fields
    • nombrestringoptional

      Nuevo nombre del producto.

    • categoriastringoptional

      Nueva categoria.

    • descripcionstringoptional

      Nueva descripcion.

    • preciostring | numberoptional

      Nuevo precio con hasta 2 decimales.

    • imagenUrlstringoptional

      Nueva URL de imagen.

    • activobooleanoptional

      Permite activar o desactivar explicitamente.

    • visiblebooleanoptional

      Controla la visibilidad publica.

    Example JSON
    {
      "nombre": "Producto Actualizado Postman",
      "categoria": "Hogar",
      "precio": "180.00",
      "visible": false
    }
    Responses
    200 OK400 Bad Request
    Notes

    El endpoint valida el parametro id antes de intentar actualizar. Debes enviar al menos un campo.

  • DELETE/api/productos/[id]
    Desactivar productoruntime nodejs

    Realiza baja logica del producto cambiando activo a false.

    Ver detalle técnico
    Request

    Sin body. Requiere id entero positivo en ruta.

    Route params
    • idintegerrequired

      Identificador del producto. Debe ser entero positivo.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK400 Bad Request
    Notes

    No elimina el registro fisicamente; actualiza activo=false.

tag: contactos-whats

/api/contactos-whats

3 operations

Solicitudes de cotizacion iniciadas desde WhatsApp.

  • GET/api/contactos-whats
    Listar solicitudes WhatsAppruntime nodejs

    Lista las solicitudes de WhatsApp mas recientes primero.

    Ver detalle técnico
    Request

    Sin body. Ordena por fechaCreacion desc.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/contactos-whats
    Crear solicitud WhatsAppruntime nodejs

    Registra una nueva solicitud con nombre opcional, estatus y fecha estimada opcional.

    Ver detalle técnico
    Request

    Body JSON con datos del pedido. Acepta nombre y fecha estimada opcionales.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombrestring | nulloptional

      Nombre del cliente. Puede ser null.

    • cotizacionstringrequired

      Texto principal de la solicitud.

    • clienteEstatusstringoptional

      Si se omite, toma pendiente por defecto.

    • fechaEntregaEstimadastring | nulloptional

      Fecha en formato YYYY-MM-DD o null.

    Example JSON
    {
      "nombre": null,
      "cotizacion": "Necesito una cotizacion para 20 piezas del Producto Base",
      "clienteEstatus": "pendiente",
      "fechaEntregaEstimada": "2026-04-20"
    }
    Responses
    201 Created400 Bad Request
  • PATCH/api/contactos-whats/[id]
    Actualizar estatus WhatsAppruntime nodejs

    Actualiza unicamente el estatus del cliente de una solicitud de WhatsApp existente.

    Ver detalle técnico
    Request

    Body JSON con solo clienteEstatus. Requiere id entero positivo en ruta.

    Route params
    • idintegerrequired

      Identificador de la solicitud. Debe ser entero positivo.

    Body fields
    • clienteEstatusstringrequired

      Nuevo estatus del cliente. Debe ser un texto no vacio.

    Example JSON
    {
      "clienteEstatus": "confirmado"
    }
    Responses
    200 OK400 Bad Request404 Not Found
    Notes

    Rechaza cualquier campo distinto de clienteEstatus para mantener la actualizacion estrictamente acotada.

tag: boton-whats

/api/boton-whats

2 operations

Registro de clics del boton de mandar mensaje por WhatsApp.

  • GET/api/boton-whats
    Listar clics WhatsAppruntime nodejs

    Lista todos los clics registrados del boton de WhatsApp, mostrando primero los mas recientes.

    Ver detalle técnico
    Request

    Sin body. Ordena por fechaClick desc y luego por id desc.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/boton-whats
    Registrar clic WhatsAppruntime nodejs

    Registra un clic del boton de WhatsApp a partir de los headers de la peticion.

    Ver detalle técnico
    Request

    Sin body obligatorio. Obtiene IP, dispositivo, navegador y fechaClick desde la peticion actual.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Example JSON
    {}
    Responses
    201 Created
    Notes

    La IP se toma de headers proxy comunes; dispositivo y navegador se derivan del user-agent. En Postman puedes simularlo añadiendo los headers 'x-forwarded-for' y 'user-agent'.

tag: cotizacion-detalle

/api/cotizacion-detalle

1 operations

Detalle de piezas y productos vinculados a una cotizacion de WhatsApp.

  • POST/api/cotizacion-detalle
    Crear detalle de cotizacionruntime nodejs

    Crea un detalle de cotizacion validando que existan el pedido y el producto activo.

    Ver detalle técnico
    Request

    Body JSON con idPedido, idProducto y numeroPiezas.

    Route params

    Sin parámetros de ruta.

    Body fields
    • idPedidointegerrequired

      Id del registro de contactoWhats.

    • idProductointegerrequired

      Id del producto activo relacionado.

    • numeroPiezasintegerrequired

      Cantidad de piezas. Debe ser entero positivo.

    Example JSON
    {
      "idPedido": 1,
      "idProducto": 1,
      "numeroPiezas": 20
    }
    Responses
    201 Created400 Bad Request
    Notes

    Comprueba que exista el contactoWhats y que el producto este activo.

tag: usuarios-acceso

/api/usuarios-acceso

4 operations

Gestion de usuarios administrativos y validacion de permisos.

  • GET/api/usuarios-acceso
    Listar usuarios de accesoruntime nodejs

    Lista usuarios de acceso administrativo ordenados por creacion.

    Ver detalle técnico
    Request

    Sin body. Consulta usuarios administrativos.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/usuarios-acceso
    Crear usuario de accesoruntime nodejs

    Crea un usuario administrativo y guarda la contrasena hasheada.

    Ver detalle técnico
    Request

    Body JSON con nombreUsuario, contrasena, nombreCompleto y permiso.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombreUsuariostringrequired

      Minimo 3 caracteres. Se normaliza a minusculas.

    • contrasenastringrequired

      Minimo 6 caracteres.

    • nombreCompletostringrequired

      Nombre descriptivo del usuario.

    • tienePermisobooleanrequired

      Indica acceso a la pagina administrativa.

    Example JSON
    {
      "nombreUsuario": "supervisor",
      "contrasena": "Supervisor123",
      "nombreCompleto": "Supervisor Comercial",
      "tienePermiso": true
    }
    Responses
    201 Created400 Bad Request409 Conflict
    Notes

    Si el nombreUsuario ya existe responde conflicto por restriccion unica.

  • PUT/api/usuarios-acceso/[id]
    Actualizar usuario de accesoruntime nodejs

    Actualiza usuario, permisos y contrasena de forma parcial usando id.

    Ver detalle técnico
    Request

    Body JSON parcial. Requiere id entero positivo en ruta.

    Route params
    • idintegerrequired

      Identificador del usuario. Debe ser entero positivo.

    Body fields
    • nombreUsuariostringoptional

      Minimo 3 caracteres. Se normaliza a minusculas.

    • contrasenastringoptional

      Minimo 6 caracteres.

    • nombreCompletostringoptional

      Nuevo nombre descriptivo del usuario.

    • tienePermisobooleanoptional

      Actualiza el permiso administrativo.

    Example JSON
    {
      "nombreCompleto": "Supervisor Ventas",
      "tienePermiso": false,
      "contrasena": "NuevaClave123"
    }
    Responses
    200 OK400 Bad Request404 Not Found409 Conflict
    Notes

    Todos los campos son opcionales, pero debes enviar al menos uno.

  • POST/api/usuarios-acceso/validar
    Validar acceso administrativoruntime nodejs

    Valida credenciales y confirma si el usuario tiene permiso administrativo.

    Ver detalle técnico
    Request

    Body JSON con nombreUsuario y contrasena.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombreUsuariostringrequired

      Minimo 3 caracteres.

    • contrasenastringrequired

      Minimo 6 caracteres.

    Example JSON
    {
      "nombreUsuario": "admin",
      "contrasena": "Admin123"
    }
    Responses
    200 OK401 Unauthorized403 Forbidden400 Bad Request

tag: inicios-sesion

/api/inicios-sesion

1 operations

Registro de accesos administrativos exitosos.

  • POST/api/inicios-sesion
    Registrar inicio de sesionruntime nodejs

    Valida credenciales, verifica permisos y registra el inicio de sesion.

    Ver detalle técnico
    Request

    Body JSON con nombreUsuario y contrasena.

    Route params

    Sin parámetros de ruta.

    Body fields
    • nombreUsuariostringrequired

      Minimo 3 caracteres.

    • contrasenastringrequired

      Minimo 6 caracteres.

    Example JSON
    {
      "nombreUsuario": "admin",
      "contrasena": "Admin123"
    }
    Responses
    201 Created401 Unauthorized403 Forbidden400 Bad Request

tag: logs-errores

/api/logs-errores

2 operations

Consulta y registro de errores provenientes de dominios externos.

  • GET/api/logs-errores
    Listar logs de erroresruntime nodejs

    Lista errores ordenados por fecha de ocurrencia y fecha de creacion.

    Ver detalle técnico
    Request

    Sin body. Ordena por fechaOcurrencia y fechaCreacion descendentes.

    Route params

    Sin parámetros de ruta.

    Body fields

    Este endpoint no recibe body.

    Responses
    200 OK
  • POST/api/logs-errores
    Crear log de errorruntime nodejs

    Registra un log de error con dominio, origen, metodo, codigo y contexto.

    Ver detalle técnico
    Request

    Body JSON con datos del error y su contexto.

    Route params

    Sin parámetros de ruta.

    Body fields
    • dominiostringrequired

      Sistema o dominio que origino el error.

    • origenstring | nulloptional

      Modulo o pantalla de origen.

    • metodostring | nulloptional

      Metodo HTTP o accion. Se normaliza a mayusculas.

    • codigostring | nulloptional

      Codigo interno del error.

    • mensajestringrequired

      Mensaje principal del error.

    • detallestring | nulloptional

      Detalle ampliado del error.

    • contextostring | object | nulloptional

      Puede enviarse como JSON serializable o texto.

    • fechaOcurrenciastring | nulloptional

      Fecha-hora valida. Si se omite, usa la fecha actual.

    Example JSON
    {
      "dominio": "frontend-web",
      "origen": "checkout",
      "metodo": "POST",
      "codigo": "PAYMENT_TIMEOUT",
      "mensaje": "No fue posible completar el cobro.",
      "detalle": "La pasarela no respondio dentro del tiempo esperado.",
      "contexto": {
        "pedidoId": 123,
        "traceId": "req-01HXYZ"
      },
      "fechaOcurrencia": "2026-04-05T18:45:12.000Z"
    }
    Responses
    201 Created400 Bad Request