Inicio
BASE_URL=https://rest.qloud.ar
Esta API permite consultar ordenes de compra y sincronizar productos, marcas y categorías de una tienda Qloud. Todas las respuestas se devuelven en formato JSON y todos los endpoints requieren autenticación HTTP Basic.
Los endpoints disponibles actualmente son:
| Método | Endpoint | Uso |
|---|---|---|
| GET | /orders/{id}/ | Obtiene el detalle de una orden. |
| GET | /orders/?from=YYYYMMDD&to=YYYYMMDD | Lista ordenes en un rango de fechas. |
| POST | /productos/ | Alta, modificación o baja lógica de productos. |
| POST | /marcas/ | Alta o modificación de marcas. |
| POST | /categorias/ | Alta o modificación de categorías. |
Autenticación
Authorization: Basic base64(usuario:contrasena)
En cada request se debe enviar el header Authorization con credenciales HTTP Basic.
El usuario corresponde al ID de cliente y la contraseña corresponde a la clave API suministrada por Qloud.
Si las credenciales no son enviadas o no son válidas, la API responde con HTTP 401.
curl -u "292:C5mTz8XpQ2vRn6LwY9kFa3" \
"https://rest.qloud.ar/orders/28041/"
Notificaciones
{
"topic": "ordenes",
"resource": "28041"
}
La URL de notificaciones debe ser una URL pública del dominio donde se quieren recibir avisos sobre ordenes de compra.
Por ejemplo: https://myshoes-app.com/callbacks.
Para comenzar a recibir notificaciones, enviar la URL a [email protected] indicando el ID de cliente. Ese ID se encuentra en el Administrador de Qloud.ar.
Envío de notificaciones
Qloud enviará un POST a la callback URL. La aplicación receptora debe responder HTTP 200 para confirmar la recepción correcta. Si no responde HTTP 200, el mensaje se considera no recibido y podrá reintentarse.
Variables enviadas
| Campo | Tipo | Descripción |
|---|---|---|
| topic | String | Para ordenes, el valor enviado es ordenes. |
| resource | Integer/String | ID de la orden que luego debe consultarse en /orders/{id}/. |
Eventos que disparan notificaciones
- Nueva orden de compra.
- Pago acreditado por Mobbex.
- Pago acreditado por Nave.
- Pago acreditado por Modo.
- Pago acreditado por Mercado Pago.
- Comprobante subido en ordenes con pago vía transferencia bancaria.
Detalle de orden
curl -u "USUARIO:CLAVE_API" \
"https://rest.qloud.ar/orders/28041/"
Después de recibir una notificación, realizar una solicitud GET al recurso para acceder a los datos completos de la orden.
La respuesta es un array JSON. Para una consulta por ID normalmente contiene un solo objeto.
[
{
"ventaWeb": 28041,
"usuarioWeb": 292,
"ciente": {
"id": 25032,
"DNI": 23516593,
"CUIT": "20235165938",
"nombre": "Claudio",
"apellido": "Zarate",
"email": "[email protected]",
"tel": "011-38794291"
},
"fecha": "2022-09-27 09:25:29",
"productos": [
{
"id": 14817,
"sku": "SKU-14817",
"nombre": "Disco Externo 1 Tb Seagate Expansion Negro",
"cantidad": 1,
"precio": 9954,
"precio_financiado": 9954,
"categoria": "Almacenamiento",
"subcategoria": "Discos externos"
}
],
"envio": {
"tipo": "Retiro por Local",
"costo": 0,
"free": 0
},
"precio": 9954,
"precio_financiado": 0,
"descuento": 0,
"descuentoCupon": "",
"pago": {
"tipo": "Transferencia"
},
"facturaA": 1,
"mensaje": "",
"estado": 0,
"finalizada": "0"
}
]
Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| ventaWeb | Integer | ID de venta en Qloud. |
| usuarioWeb | Integer | ID de usuario o tienda propietaria de la orden. |
| ciente | Object | Datos del cliente. El nombre del campo se mantiene así por compatibilidad con la API actual. |
| productos | Array | Productos vendidos, con SKU, cantidad, precio, categoría y subcategoría. |
| envio | Object | Tipo, costo y condición de envío gratis. Si la orden tiene envío a domicilio incluye dirección. |
| precio | Number | Total de la orden. En algunos medios de pago puede excluir el costo de envío. |
| precio_financiado | Number | Monto financiado acreditado, cuando aplica. |
| descuento | Number/String | Descuento aplicado a la orden. |
| descuentoCupon | Number/String | Descuento aplicado por cupón. |
| pago | Object | Método de pago, pagos asociados y comprobantes subidos cuando existen. |
| facturaA | Integer/String | Indica si la orden solicita factura A. |
| estado | Integer | Estado interno de la orden. |
| finalizada | Integer/String | Indica si la orden se encuentra finalizada. |
Ordenes por fecha
curl -u "USUARIO:CLAVE_API" \
"https://rest.qloud.ar/orders/?from=20220901&to=20220930"
Permite consultar ordenes de compra por rango de fechas. Los parámetros from y
to son obligatorios y deben enviarse con formato YYYYMMDD.
La respuesta es un array JSON con hasta 999 ordenes, ordenadas de forma descendente por ID. Cada elemento usa la misma estructura del endpoint de detalle.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| from | String | Sí | Fecha inicial del rango en formato YYYYMMDD. |
| to | String | Sí | Fecha final del rango en formato YYYYMMDD. |
Productos
curl -u "USUARIO:CLAVE_API" \
-X POST "https://rest.qloud.ar/productos/" \
-d "accion=UP" \
-d "sku=SKU-001" \
-d "stock=12" \
-d "priceW=15999.90" \
-d "status=active"
Permite insertar, actualizar o eliminar lógicamente productos. Los datos deben enviarse como POST tradicional
(application/x-www-form-urlencoded o multipart/form-data).
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| accion | String | Sí | IN inserta, UP actualiza y DEL marca como eliminado. |
| sku | String | Sí | Código de artículo usado para localizar el producto. |
| titulo | String | No | Nombre público del producto. No se actualiza el slug. |
| descripcion | String | No | Descripción del producto. |
| stock | Number | No | Stock web. |
| priceL | Number | No | Precio de lista o Mercado Libre. Si no se envía priceW, también se usa como precio web. |
| priceW | Number | No | Precio web. Debe ser mayor a cero para aplicarse. |
| priceE | Number | No | Precio para transferencia. |
| status | String | No | Estado web del producto, por ejemplo active o paused. |
| thumb | String | No | URL o path de imagen principal. |
| img | String | No | Lista de imágenes entre corchetes, por ejemplo [url1,url2]. |
| peso, alto, largo, ancho | Number | No | Dimensiones y peso usados para envíos. |
| categoria | String/Integer | No | ID externo de categoría. La API lo vincula contra el identificador sincronizado. |
| marca | String/Integer | No | ID externo de marca. La API lo vincula contra el identificador sincronizado. |
| garantia | String | No | Texto de garantía. |
| eliminado | Integer | No | Marca manual de eliminado. Con accion=DEL se fuerza a 1. |
{
"error": 0,
"msn": "Actualizado ok",
"id": 14817,
"link": "https://tienda.example.com/producto-ejemplo/"
}
Marcas
curl -u "USUARIO:CLAVE_API" \
-X POST "https://rest.qloud.ar/marcas/" \
-d "accion=IN" \
-d "nombre=Logitech" \
-d "habilitado=true" \
-d "logo=https://cdn.example.com/logitech.png"
Permite insertar o actualizar marcas. Para actualizar una marca existente se debe enviar
accion=UP junto con idqloud.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| accion | String | Sí | IN inserta y UP actualiza. |
| idqloud | Integer | Solo UP | ID de marca en Qloud. |
| nombre | String | Sí | Nombre de la marca. También actualiza el slug. |
| habilitado | Boolean/String | No | Enviar true para dejarla activa; cualquier otro valor la deja pausada. |
| logo | String | No | Imagen principal o logo de la marca. |
| foto | String | No | Imagen grande de la marca. |
| carrousel | String | No | Imagen para carrousel. |
| marcadestecada | Boolean/String | No | Permite agregar o quitar la marca del menú destacado durante una actualización. |
| chequeado | Boolean/String | No | Cuando marcadestecada está activo, define si se agrega al menú. |
{
"error": 0,
"msn": "Insertado ok",
"id": 91,
"link": "https://tienda.example.com/logitech/"
}
Categorías
curl -u "USUARIO:CLAVE_API" \
-X POST "https://rest.qloud.ar/categorias/" \
-d "accion=UP" \
-d "idqloud=12" \
-d "nombre=Notebooks" \
-d "habilitado=true" \
-d "parent=3"
Permite insertar o actualizar categorías. Para actualizar una categoría existente se debe enviar
accion=UP junto con idqloud.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| accion | String | Sí | IN inserta y UP actualiza. |
| idqloud | Integer | Solo UP | ID de categoría en Qloud. |
| nombre | String | Sí | Nombre de la categoría. También actualiza el slug. |
| habilitado | Boolean/String | No | Enviar true para dejarla activa; cualquier otro valor la deja pausada. |
| icono | String | No | Icono de la categoría. |
| foto | String | No | Imagen de la categoría. |
| parent | Integer/String | No | ID de categoría padre. |
{
"error": 0,
"msn": "Actualizado ok",
"id": 12,
"link": "https://tienda.example.com/notebooks/"
}
Errores
{
"error": 1,
"msn": "variables incompletas"
}
Los endpoints POST devuelven un objeto JSON con error, msn,
id y link cuando la operación es exitosa.
| Respuesta | Descripción |
|---|---|
| HTTP 401 | Credenciales ausentes o inválidas. |
| variables incompletas | Faltan campos requeridos para la acción solicitada. |
| No se ha actualizado nada | No se pudo aplicar la actualización solicitada. |
| No se ha insertado nada | No se pudo insertar el recurso solicitado. |
| La marca ya existe / La categoría ya existe | Ya existe un recurso con el mismo slug. |