Introducción
Bienvenido a la guía de desarrollo de API basada en nuestra estructura recomendada. Este documento tiene como objetivo ayudarte a construir una API que gestione eficientemente información clave como tiendas, clientes y ventas.
A través de esta estructura JSON sugerida, podrás implementar una solución que facilite la sincronización de datos, la automatización de procesos y el análisis avanzado.
Estructura General del Modelo JSON
Todas las respuestas de la API deben seguir la siguiente estructura:
{
"page": 1,
"per_page": 10,
"total_items": 50,
"total_pages": 5,
"data": {
"tiendas": [...],
"clientes": [...],
"ventas": [...]
}
}Paginación
Es fundamental que los endpoints soporten parámetros de paginación para controlar la cantidad de datos devueltos y facilitar la navegación entre páginas.
page: Número de la página actual.per_page: Cantidad de elementos por página.total_items: Número total de elementos disponibles.total_pages: Número total de páginas disponibles.
Autenticación
La API debe utilizar autenticación mediante api_key. Esta clave debe ser enviada en la cabecera de cada solicitud:
Authorization: Basic <api_key>
Buenas Prácticas
Validación de Datos: Verificar que todos los campos obligatorios estén presentes y correctamente formateados.
Datos: Aunque algunos campos son opcionales, recomendamos proporcionar la mayor cantidad de información posible. Esto permitirá aprovechar al máximo los datos procesados y habilitar análisis más precisos y completos.
Seguridad: Asegurar que todas las solicitudes estén autenticadas adecuadamente.
Disponibilidad: La API debe estar disponible el 100% del tiempo para garantizar una integración confiable.
Filtrabilidad: El endpoint debe permitir filtrar los datos por los campos
documentycreatetime(fecha), facilitando así consultas específicas y optimizando el uso de la API.
Tiendas
Representa las sucursales o puntos de venta donde se realizan las transacciones.
Estructura
{
"name": "A101",
"display_name": "Sucursal Palermo",
"branch_zone_code": "13",
"branch_zone_name": "Buenos Aires"
}
Campos / Cabeceras de la entidad Tiendas
Campo | Tipo | Descripción | Ejemplo | Obligatorio |
name |
| Identificador único de la tienda | A101 | Sí |
display_name |
| Nombre de la tienda | Sucursal Palermo | Sí |
branch_zone_code |
| Código de la zona | 13 | No |
branch_zone_name |
| Nombre de la zona | Buenos Aires | No |
❗En esta entidad no es posible incluir atributos extendidos
Clientes
Contiene la información detallada de los clientes.
❗Debes enviar al menos un identificador del cliente (document y/o email)
❗Los campos createtime y updatetime deben estar en horario UTC
Estructura
{
"document": "30300300",
"email": "[email protected]",
"createtime": "2024-04-28 10:39:00",
"updatetime": "2024-06-22 20:52:00",
"first_name": "Christian",
"last_name": "Vitale",
"telephone": "1173682446",
"birthdate": "1992-03-31",
"gender": "M",
"street": "ohm 2220",
"city": "CABA",
"state": "CABA",
"department": "Villa Urquiza",
"country": "Argentina",
"postcode": "1431",
"points": 100,
"mailing_enabled": "disabled",
"sms_enabled": "disabled"
}
}Campos / Cabeceras de la entidad Clientes
Campo | Tipo | Descripción | Ejemplo | Obligatorio |
document |
| Documento o cédula | 30300300 | Si |
| Si | |||
createtime |
| Fecha creación del cliente [hora UTC] | 2024-04-28 10:39:00 | Si |
updatetime |
| Fecha actualización del cliente [hora UTC] | 2024-06-22 20:52:00 | Si |
first_name |
| Nombre | Christian | No |
last_name |
| Apellido | Vitale | No |
telephone |
| Telefono | 1173682446 | No |
birthdate |
| Fecha de Nacimiento (sin hora) | 1992-03-31 | No |
gender |
| Género ["M", "F", ""] | M | No |
street |
| Calle | ohm 2220 | No |
city |
| Ciudad | CABA | No |
state |
| Estado | CABA | No |
department |
| Departamento | Villa Urquiza | No |
country |
| País | Argentina | No |
postcode |
| Código Postal | 1431 | No |
points |
| Puntos | 100 | No |
mailing_enabled |
| Habilitación para enviar mail ["enabled", "disabled"] | disabled | No |
sms_enabled |
| Habilitación para enviar sms ["enabled", "disabled"] | disabled | No |
Ventas
Registra las transacciones realizadas por los clientes.
❗Debes enviar al menos un identificador del cliente (document y/o email)
Estructura
{
"document": "36872489",
"email": "[email protected]",
"invoice_number": "FAC0230321",
"createtime": "2020-01-23 16:32:05",
"channel": "in-store",
"branch_name": "A101",
"shipping": 500.0,
"gross": 9000.0,
"tax": 1400.0,
"discount": 2000.0,
"total": 9400.0,
"payment_type": "debit",
"payment_brand": "Visa",
"payment_bank": "Banco Galicia",
"payment_installments": 6,
"seller_name": "Gil Gunderson",
"seller_external_id": "10",
"SKU": "AB123324",
"product_name": "Celular Moto Z",
"brand": "Motorola",
"quantity": 2,
"unit_price": 1000.0,
"variations": "Color: Blanco | Talle: XXXL",
"custom_attributes": {
"cupon_descuento": "PROMO2025"
}
}
Campos / Cabeceras de la entidad Ventas
Campo | Tipo | Descripción | Ejemplo | Obligatorio |
document |
| Documento o cédula del cliente | 36872489 | Si |
| Email del cliente | Si | ||
invoice_number |
| Número de la Factura (ID) | FAC0230321 | Si |
createtime |
| Fecha y Hora de la Venta | 2020-01-23 16:32:05 | Si |
channel |
| Canal de venta ["web", "in-store"] | in-store | Si |
branch_name |
| Código de la tienda donde se realizó la venta. Se debe utilizar el campo 'name' del archivo de Tiendas. | A101 | Si |
shipping |
| Costo de Envío | 500 | No |
gross |
| Subtotal (Sin impuestos, sin envíos y sin descuentos) | 9000 | Si |
tax |
| Impuestos de la Factura | 1400 | No |
discount |
| Descuento de la factura | 2000 | Si |
total |
| Total de la Factura | 9400 | Si |
payment_type |
| Medio de pago ['credit', 'debit', 'mercadopago', 'todopago', 'cash', 'other'] | debit | Si |
payment_brand |
| Marca de la Tarjeta | Visa | No |
payment_bank |
| Banco emisor de la tarjeta | Banco Galicia | No |
payment_installments |
| Cantidad de cuotas | 6 | No |
seller_name |
| Nombre del Vendedor | Gil Gunderson | No |
seller_external_id |
| Id externo del vendedor | 10 | No |
SKU |
| Código del producto (productReferenceCode de Vtex) | AB123324 | Si |
product_name |
| Nombre del producto | Celular Moto Z | Si |
brand |
| Marca del producto | Motorola | No |
quantity |
| Cantidad de unidades | 2 | Si |
unit_price |
| Precio unitario del producto (Sin impuestos y descuentos) | 1000 | Si |
variations |
| Características por las que se puede agrupar productos. Por ejemplo: color, talle, temporada (Formato llave valor, separados por pipes "|") | Color: Blanco | Talle: XXXL | No |
👉 En el JSON, el nombre del campo para un atributo extendido se debe enviar en el formato custom_attributes.{nombre_atributo}. Este atributo será creado automáticamente en WoowUp utilizando el nombre especificado en la clave del objeto custom_attributes.
Ejemplo de json
{
"page": 1,
"per_page": 10,
"total_items": 50,
"total_pages": 5,
"data": {
"tiendas": [
{
"name": "A101",
"display_name": "Sucursal Palermo",
"branch_zone_code": "13",
"branch_zone_name": "Buenos Aires"
}
// ... más tiendas
],
"clientes": [
{
"document": "30300300",
"email": "[email protected]",
"createtime": "2024-04-28T10:39:00Z",
"updatetime": "2024-06-22T20:52:00Z",
"first_name": "Christian",
"last_name": "Vitale",
"telephone": "1173682446",
"birthdate": "1992-03-31",
"gender": "M",
"street": "Ohm 2220"
"city": CABA,
"state": CABA,
"department": Villa Urquiza,
"country": Argentina,
"postcode": 1432,
"points": 100,
"mailing_enabled": enabled,
"sms_enabled": enabled,
// ... otros campos según sea necesario utilizando custom_attributes
}
// ... más clientes
],
"ventas": [
{
"document": "36872489",
"email": "[email protected]",
"invoice_number": "FAC0230321",
"createtime": "2020-01-23T16:32:05Z",
"channel": "in-store",
"branch_name": "A101",
"shipping": 500.0,
"gross": 9000.0,
"tax": 1400.0,
"discount": 2000.0,
"total": 9400.0,
"payment_type": "debit",
"payment_brand": "Visa",
"payment_bank": "Banco Galicia",
"payment_installments": 6,
"seller_name": "Gil Gunderson",
"seller_external_id": "10",
"SKU": "AB123324",
"product_name": "Celular Moto Z",
"brand": "Motorola",
"quantity": 2,
"unit_price": 1000.0,
"variations": "Color: Blanco | Talle: XXXL",
"custom_attributes": {
"cupon_descuento": "PROMO2025"
// ... otros campos según sea necesario utilizando custom_attributes
}
// ... más ventas
]
}
}
