Saltar al contenido principal

API de Gestión de Marcas

La API de Gestión de Marcas permite administrar la información de marcas en la plataforma Nilo. Estos endpoints ayudan a crear, actualizar y recuperar datos de marcas, incluyendo detalles y estado de las marcas.

Entendiendo las Marcas​

Las marcas en Nilo representan los fabricantes o propietarios de marcas comerciales de productos:

  • Estructura de Marca

    • Código interno único para identificación
    • Nombre e imagen para visualización
    • Peso para controlar el orden de visualización
    • Estado para habilitar/deshabilitar visibilidad
    • Metadatos opcionales para información adicional
  • Jerarquía de Marca

    • Entidades independientes no vinculadas a categorías
    • Pueden estar asociadas a múltiples productos
    • Mantienen su propio estado y visibilidad
    • Soportan operaciones por lotes para actualizaciones masivas

Consideraciones Importantes​

  1. Códigos Únicos: Cada marca requiere un código interno único para identificación
  2. Gestión de Imágenes: Las imágenes de marca deben seguir pautas específicas de formato y tamaño
  3. Sistema de Pesos: Controla el orden de aparición en listados y búsquedas
  4. Control de Estado: Las marcas pueden ser habilitadas o deshabilitadas sin eliminación
  5. Operaciones por Lotes: Soporte para actualizaciones masivas para gestionar múltiples marcas eficientemente

Operaciones Individuales de Marca​

Crear Marca​

POST/brand

Crea una nueva marca en la plataforma Nilo. Este endpoint se utiliza para registrar todos los detalles de la marca, incluyendo:

  • Brand information (name, internal code)
  • Brand image and weight

Parámetros del Cuerpo de la Solicitud​

ParámetroTipoRequeridoDescripción
namestringYesNombre de la marca
internalCodestringYesCódigo de la marca (identificador único)
weightintegerNoPosición en la lista de ordenación
imagestringNoURL de la imagen de la marca

Ejemplo del Cuerpo de la Solicitud​

{
"name": "Marca 1",
"internalCode": "1235",
"weight": 1,
"image": "/qa/brand/12442.png"
}

Códigos de Respuesta​

CódigoDescripción
200Marca creada exitosamente
404Marca no encontrada

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
};

const data = {
name: "Marca 1",
internalCode: "1235",
weight: 1,
image: "/qa/brand/12442.png",
};

fetch("https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand", {
method: "POST",
headers: headers,
body: JSON.stringify(data),
})
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Obtener Todas las Marcas​

GET/brand

Recupera una lista paginada de todas las marcas. Este endpoint es útil para:

  • Navegar por el catálogo de marcas
  • Implementar paginación en tu aplicación
  • Filtrar marcas por estado habilitado

Parámetros de Consulta​

ParámetroTipoRequeridoDescripción
takenumberNoNúmero de items por página (predeterminado: 50, máx: 50)
pagestringNoNúmero de página (predeterminado: 1)
enabledbooleanNoFiltrar marcas por estado habilitado (true para activo, false para inactivo)
cursorstringNoCursor para paginación. Primer llamado usar 0, luego usar el cursor de la respuesta anterior

Ejemplo de Respuesta​

{
"data": [
{
"name": "Marca 1",
"internalCode": "1235",
"weight": 1,
"image": "/qa/brand/12442.png"
}
],
"page": {
"pageBased": {
"count": 100
},
"cursorBased": {
"hasNextPage": true,
"hasPreviousPage": false,
"firstCursor": "0",
"lastCursor": "49"
}
}
}

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
};

fetch(
"https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand?take=10&page=1&enabled=true",
{
method: "GET",
headers: headers,
}
)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Upsert Brand​

PUT/brand

Crea o actualiza una marca en la plataforma Nilo. Este endpoint es útil cuando necesitas:

  • Crear una nueva marca si no existe
  • Actualizar una marca existente con nueva información

Parámetros del Cuerpo de la Solicitud​

ParameterTypeRequiredDescription
namestringYesBrand name
internalCodestringYesBrand code (unique identifier)
weightintegerNoOrder positioning in listings
imagestringNoURL de la imagen de la marca
enabledbooleanYesSi la marca está activa

Ejemplo del Cuerpo de la Solicitud​

{
"name": "Marca 1",
"internalCode": "1235",
"weight": 1,
"image": "/qa/brand/12442.png",
"enabled": true
}

Códigos de Respuesta​

CódigoDescripción
200Marca actualizada exitosamente
404Marca no encontrada

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
};

const data = {
name: "Marca 1",
internalCode: "1235",
weight: 1,
image: "/qa/brand/12442.png",
enabled: true,
};

fetch("https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand", {
method: "PUT",
headers: headers,
body: JSON.stringify(data),
})
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Obtener Detalles de la Marca​

GET/brand/{code}

Obtiene información detallada sobre una marca específica. Este endpoint devuelve:

  • Metadatos de la marca
  • Imagen y peso de la marca

Parámetros de Ruta​

ParámetroTipoDescripción
codestringCódigo interno de la marca (identificador único)

Ejemplo de Respuesta​

{
"name": "Marca 1",
"internalCode": "1235",
"weight": 1,
"image": "/qa/brand/12442.png"
}

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
};

fetch("https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand/1235", {
method: "GET",
headers: headers,
})
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Actualizar Marca​

PUT/brand/{code}

Actualiza la información de una marca existente. Este endpoint te permite modificar:

  • Nombre de la marca
  • Imagen de la marca
  • Peso de la marca para ordenamiento

Parámetros de Ruta​

ParámetroTipoRequeridoDescripción
codestringSíCódigo interno de la marca (identificador único)

Parámetros del Cuerpo de la Solicitud​

ParámetroTipoRequeridoDescripción
namestringSíNombre de la marca
weightintegerNoPosición en la lista de ordenación
imagestringNoURL de la imagen de la marca

Ejemplo del Cuerpo de la Solicitud​

{
"name": "Nombre de Marca Actualizado",
"weight": 2,
"image": "/qa/brand/imagen-actualizada.png"
}

Códigos de Respuesta​

CódigoDescripción
200Marca actualizada exitosamente
404Marca no encontrada

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
};

const data = {
name: "Nombre de Marca Actualizado",
weight: 2,
image: "/qa/brand/imagen-actualizada.png",
};

fetch("https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand/1235", {
method: "PUT",
headers: headers,
body: JSON.stringify(data),
})
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Cambiar Estado de la Marca​

PUT/brand/{code}/status

Actualiza el estado de una marca. Este endpoint te permite:

  • Habilitar/deshabilitar una marca

Parámetros de Ruta​

ParámetroTipoRequeridoDescripción
codestringSíCódigo interno de la marca (identificador único)

Parámetros del Cuerpo de la Solicitud​

ParámetroTipoRequeridoDescripción
enabledbooleanSíSi la marca debe estar habilitada

Ejemplo del Cuerpo de la Solicitud​

{
"enabled": true
}

Códigos de Respuesta​

CódigoDescripción
200Estado actualizado exitosamente
404Marca no encontrada

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
};

const data = {
enabled: true,
};

fetch(
"https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/brand/1235/status",
{
method: "PUT",
headers: headers,
body: JSON.stringify(data),
}
)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Operaciones por Lotes​

Actualización/Creación de Marcas por Lotes​

POST/batch/brand

Realiza operaciones masivas en marcas. Este endpoint te permite:

  • Actualizar o crear múltiples marcas (actualizar o crear si no existen)

La operación por lotes se procesa de forma asíncrona, lo que significa que recibirás una confirmación inmediata de la solicitud, y las actualizaciones se procesarán en segundo plano.

Parámetros del Cuerpo de la Solicitud​

ParámetroTipoDescripción
upsertarrayArray de marcas para actualizar o crear si es necesario

Ejemplo del Cuerpo de la Solicitud​

{
"upsert": [
{
"name": "Marca 1",
"internalCode": "1235",
"weight": 1,
"image": "/qa/brand/12442.png",
"enabled": true
}
]
}

Códigos de Respuesta​

CódigoDescripción
202Solicitud por lotes aceptada para procesamiento
402Solicitud incorrecta

Ejemplo de Uso​

const headers = {
Authorization: "YOUR_AUTH_TOKEN",
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
};

const data = {
upsert: [
{
name: "Marca 1",
internalCode: "1235",
weight: 1,
image: "/qa/brand/12442.png",
enabled: true,
},
],
};

fetch(
"https://tm0cs5kjs6.execute-api.us-east-1.amazonaws.com/dev/batch/brand",
{
method: "POST",
headers: headers,
body: JSON.stringify(data),
}
)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));

Tipos de Respuesta​

Respuesta de Éxito​

{
"code": 200,
"message": "Operación exitosa"
}

Respuesta de Operación por Lotes​

{
"code": 202,
"batchIds": {
"upsert": ["550e8400-e29b-41d4-a716-446655440000"]
},
"message": "Procesamiento por lotes iniciado"
}

Respuesta de Error​

{
"code": 400,
"message": "Parámetros de solicitud inválidos"
}

Mejores Prácticas​

  1. Gestión de Marcas

    • Usar convenciones de nombres consistentes
    • Mantener imágenes de marca de alta calidad
    • Implementar gestión adecuada de estados
    • Mantener información de marca actualizada
  2. Estructura de Códigos

    • Crear códigos internos significativos
    • Usar patrones de código consistentes
    • Documentar convenciones de código
    • Validar códigos antes de usar
  3. Manejo de Imágenes

    • Usar formatos de imagen optimizados
    • Mantener dimensiones de imagen consistentes
    • Implementar caché de imágenes
    • Manejar actualizaciones de imágenes eficientemente
  4. Optimización de Rendimiento

    • Usar operaciones por lotes para múltiples actualizaciones
    • Implementar estrategias de caché adecuadas
    • Optimizar entrega de imágenes
    • Monitorear patrones de uso de API

Casos de Uso Comunes​

  1. Configuración Inicial de Marca

    • Crear perfiles de marca
    • Subir imágenes de marca
    • Establecer pesos iniciales
    • Configurar estado de marca
  2. Mantenimiento de Marca

    • Actualizar información de marca
    • Gestionar visibilidad de marca
    • Ajustar orden de visualización
    • Actualizar imágenes de marca
  3. Operaciones Masivas

    • Importar múltiples marcas
    • Actualizar estados de marca
    • Modificar pesos de marca
    • Sincronizar datos de marca
  4. Integración de Marca

    • Conectar con catálogo de productos
    • Implementar filtrado de marcas
    • Configurar búsqueda de marcas
    • Configurar visualización de marcas

Tipos de Respuesta​

Respuesta Exitosa​

{
"code": 200,
"message": "Operación exitosa",
"data": {
"name": "Marca Ejemplo",
"internalCode": "BRD-001",
"image": "/brands/ejemplo.png",
"enabled": true,
"weight": 1
}
}

Ejemplos de Respuesta de Error​

No Encontrado​

{
"code": 404,
"message": "Marca no encontrada"
}

Error de Validación​

{
"code": 400,
"message": "Datos de marca inválidos",
"errors": [
{
"field": "internalCode",
"message": "El código interno es requerido"
}
]
}

Error de Duplicado​

{
"code": 409,
"message": "Ya existe una marca con este código interno"
}

Guías de Implementación​

  1. Creación de Marca

    • Validar campos requeridos
    • Verificar códigos duplicados
    • Procesar imágenes de marca
    • Establecer valores predeterminados
  2. Actualizaciones de Marca

    • Verificar existencia de marca
    • Manejar actualizaciones parciales
    • Gestionar cambios de imagen
    • Actualizar marcas de tiempo
  3. Gestión de Estado

    • Manejar transiciones de estado
    • Actualizar productos relacionados
    • Mantener registros de auditoría
    • Notificar sistemas relevantes
  4. Procesamiento por Lotes

    • Validar datos por lotes
    • Manejar fallos parciales
    • Implementar rollback
    • Reportar resultados por lotes

Seguridad​

Todos los endpoints de la API requieren dos tipos de autenticación:

  1. API Key en el encabezado: x-api-key
  2. Token de autorización en el encabezado: Authorization

Permisos Requeridos​

Para los endpoints de gestión de marcas, se requieren los siguientes permisos:

  • Para operaciones de lectura: supplier/brand.read
  • Para operaciones de escritura: supplier/brand.write

Manejo de Errores​

  1. Validación de Entrada

    • Validar todos los campos requeridos
    • Verificar tipos y formatos de datos
    • Verificar especificaciones de imagen
    • Validar códigos internos
  2. Respuestas de Error

    • Usar códigos de estado HTTP apropiados
    • Proporcionar mensajes de error detallados
    • Incluir errores a nivel de campo
    • Agregar códigos de seguimiento de error
  3. Procedimientos de Recuperación

    • Manejar fallos de red
    • Implementar lógica de reintentos
    • Mantener consistencia de datos
    • Registrar detalles de error
  4. Monitoreo

    • Rastrear tasas de error
    • Monitorear rendimiento de API
    • Alertar sobre errores críticos
    • Analizar patrones de error
Tana

Tana

Preguntame lo que quieras sobre la API de Nilo: endpoints, autenticación, guías de integración o ejemplos de código.

Buena práctica: validá contra la documentación oficial para tener los detalles más actualizados.