Esta API reúne acciones administrativas. Nunca debe ser llamada desde el client-side.
Autenticación
Debes llamar a la API de autenticación, para poder utilizar los demás endpoints de nuestra API administrativa.
Obteniendo claves de autenticación
Accede al Dashboard y navega hasta Configuración > Integraciones. Luego, haz clic en API. Encontrarás:
- Customer key: tu identificador de cliente, utilizado como parámetro
{customer} en las URLs de los endpoints
- Client ID: identificador de tu aplicación para autenticación
- Client Secret: clave secreta para autenticación
Campos del cuerpo de la solicitud (JSON)
Ejemplo de cuerpo de la solicitud
{
"audience": "https://reviews-api.konfidency.com.br",
"grant_type": "client_credentials",
"client_id": "eSRTjDtxTaprkd6Yb97DouqFORbTT1dV",
"client_secret": "cSrP6TF1ktSAH1IV1p24Vztd9Lc4AoLA62f0KIPU1vkymSjd7a5QzpTy0Tqo51PZ"
}
Ejemplo de Respuesta
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 86400,
"token_type": "Bearer"
}
Campos
| campo | descripción |
|---|
| access_token | token de acceso generado |
| expires_in | tiempo de validez del token |
| token_type | tipo de token, siempre será Bearer |
Enlace de evaluación
Permite obtener el enlace de evaluación para un pedido
GET /{customer}/orders/{orderId}/ratelink
Parámetros de URL
Ejemplo de Respuesta
{
"link": "https://www.kfy.app/rate/konfidency/62b266a92bbbb599f720bb22/123456-1"
}
Campos de la respuesta
| campo | descripción |
|---|
| link | URL única para evaluación del pedido |
Crear Pedido
Integra un nuevo pedido en la plataforma Konfidency Reviews
POST /{customer}/orders
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| orderId | Número del pedido, identificación única en la plataforma del cliente |
| createdDate | Fecha de creación del pedido |
| userId | ID del usuario en la plataforma del cliente no utilizar datos sensibles |
| status | Estado del producto, created, authorized, shipped o delivered |
| estimatedDeliveryDate | Fecha de entrega prevista del pedido |
| deliveredDate | Fecha de entrega del pedido |
| name | Nombre del cliente |
| email | Correo electrónico del cliente - obligatorio para notificaciones por correo electrónico |
| phone | Teléfono móvil del cliente - obligatorio para notificaciones por SMS y WhatsApp |
| pointOfSale | Origen del pedido (ej: "Tienda Física", "E-commerce", "Marketplace") |
| deliveryMethod | Método de entrega (ej: "Correos", "Transportadora", "Retiro") |
| optOutEmail | Indica si el cliente realizó opt-out para recibir correos electrónicos |
| optOutSMS | Indica si el cliente realizó opt-out para recibir mensajes SMS |
| optOutWhatsApp | Indica si el cliente realizó opt-out para recibir mensajes vía WhatsApp |
| items.sku | SKU del producto |
Ejemplo de cuerpo de la solicitud
{
"orderId": "P123456-1",
"createdDate": "2022-06-01 12:34",
"userId": "12345",
"name": "João da Silva",
"email": "[email protected]",
"phone": "551191234-5678",
"status": "created",
"estimatedDeliveryDate": "2022-07-15",
"pointOfSale": "E-commerce",
"deliveryMethod": "Correos",
"optOutEmail": false,
"optOutWhatsApp": false,
"optOutSMS": true,
"items": [
{
"sku": "01001"
}
]
}
Respuesta
Esta API no genera un JSON de respuesta, un estado 200 significa que los datos se guardaron correctamente
Crear Pedido (V2)
Versión optimizada de la API de integración de pedidos con soporte para marketplace, datos expandidos de productos y actualización de pedidos existentes.
POST /{customer}/orders
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| version | Debe ser 2 para usar esta versión de la API |
| orderId | Número del pedido, identificación única en la plataforma del cliente |
| userId | ID del usuario en la plataforma del cliente no utilizar datos sensibles |
| createdDate | Fecha de creación del pedido |
| authorizedDate | Fecha de autorización/pago del pedido (opcional) |
| estimatedDeliveryDate | Fecha de entrega prevista del pedido (opcional) |
| deliveredDate | Fecha de entrega efectiva del pedido (opcional) |
| modifiedDate | Fecha de última modificación del pedido (opcional) |
| name | Nombre del cliente |
| email | Correo electrónico del cliente - obligatorio para notificaciones por correo electrónico |
| phone | Teléfono móvil del cliente - obligatorio para notificaciones por SMS y WhatsApp |
| pointOfSale | Origen del pedido (ej: "Tienda Física", "E-commerce", "Marketplace") (opcional) |
| deliveryMethod | Método de entrega (ej: "Correos", "Transportadora", "Retiro") (opcional) |
| status | Estado del pedido, created, authorized, paid, invoiced, shipped, delivered o cancelled |
| optOutEmail | Indica si el cliente realizó opt-out para recibir correos electrónicos |
| optOutSMS | Indica si el cliente realizó opt-out para recibir mensajes SMS |
| optOutWhatsApp | Indica si el cliente realizó opt-out para recibir mensajes vía WhatsApp |
| items | Array de ítems del pedido (ver estructura abajo) |
Estructura de items (V2)
| Parámetro | Descripción |
|---|
| items.productId | SKU/ID principal del producto |
| items.sku | SKU de la variante del producto (opcional) |
| items.skuName | Nombre/descripción de la variante (ej: "Talle P - Color Azul") (opcional) |
| items.status | Estado específico del ítem (opcional, usa estado del pedido si se omite) |
| items.cancelled | Indica si el ítem fue cancelado (boolean) (opcional) |
| items.sellerInfo | Información del seller/marketplace (opcional, ver estructura abajo) |
| items.productData | Datos completos del producto (opcional, ver estructura abajo) |
Estructura de items.sellerInfo (Marketplace)
| Parámetro | Descripción |
|---|
| items.sellerInfo.id | ID único del seller/vendedor |
| items.sellerInfo.name | Nombre del seller/vendedor |
Estructura de items.productData
| Parámetro | Descripción |
|---|
| items.productData.name | Nombre del producto |
| items.productData.productName | Nombre del producto (alternativo) |
| items.productData.brand | Marca del producto |
| items.productData.brandName | Marca del producto (alternativo) |
| items.productData.mpn | Manufacturer Part Number (opcional) |
| items.productData.ean | Código EAN (opcional) |
| items.productData.gtin | Global Trade Item Number (opcional) |
| items.productData.url | URL de la página del producto (será normalizada con la URL de la tienda) |
| items.productData.image | URL de la imagen principal del producto |
| items.productData.categories | Array de categorías del producto |
| items.productData.categoryName | Nombre de la categoría (alternativo, será convertido en array) |
Ejemplo de cuerpo de la solicitud (V2)
{
"version": 2,
"orderId": "P123456-1",
"userId": "12345",
"name": "João da Silva",
"email": "[email protected]",
"phone": "551191234-5678",
"createdDate": "2022-06-01 12:34",
"authorizedDate": "2022-06-01 13:00",
"estimatedDeliveryDate": "2022-06-15",
"deliveredDate": "2022-06-14",
"pointOfSale": "E-commerce",
"deliveryMethod": "Transportadora",
"status": "delivered",
"optOutEmail": false,
"optOutWhatsApp": false,
"optOutSMS": true,
"items": [
{
"productId": "CAM-001",
"sku": "CAM-001-P-AZUL",
"skuName": "Talle P - Color Azul",
"status": "authorized",
"cancelled": false,
"sellerInfo": {
"id": "SELLER123",
"name": "Tienda Partner ABC"
},
"productData": {
"name": "Camiseta Básica",
"brand": "Konfidency Store",
"mpn": "CAM001",
"ean": "7891234567890",
"url": "/productos/camiseta-basica",
"image": "https://example.com/camiseta.jpg",
"categories": ["Ropa", "Camisetas", "Masculino"]
}
}
]
}
Diferencias de la V2
| Característica | V1 | V2 |
|---|
| Actualización de pedidos existentes | No (retorna duplicate) | Sí (actualiza datos) |
| Soporte a marketplace/sellers | No | Sí |
| Datos expandidos de productos | No | Sí (productData) |
| Estado por ítem | No | Sí |
| Cancelación por ítem | No | Sí |
| Variantes de producto | Limitado | Completo (sku + skuName) |
| Normalización de URL de productos | No | Sí |
Respuesta
{
"_id": "62b266a92bbbb599f720bb22",
"customer": "konfidency",
"orderId": "P123456-1",
"userId": "12345",
"name": "João S.",
"createdDate": "2022-06-01T15:34:00.000Z",
"authorizedDate": "2022-06-01T16:00:00.000Z",
"email": "[email protected]",
"phone": "551191234-5678",
"status": "authorized",
"optOutEmail": false,
"optOutSMS": true,
"optOutWhatsApp": false,
"__v": 0
}
Actualizar Pedido
Actualiza el estado del pedido en la plataforma Konfidency Reviews
PUT /{customer}/orders/{orderId}
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| created | Fecha de creación del pedido |
| status | Estado, created, authorized, shipped o delivered |
| authorizedDate | Fecha de pago del pedido |
| deliveredDate | Fecha de entrega del pedido |
Ejemplo de cuerpo de la solicitud
{
"status": "authorized",
"authorizedDate": "2022-06-01 12:34"
}
Respuesta
Esta API no genera un JSON de respuesta, un estado 200 significa que los datos se guardaron correctamente
Enviar catálogo de productos
Registra o actualiza productos de su catálogo en lote. Utilice este endpoint cuando su plataforma no exponga una API o feed de catálogo que podamos consumir.
El envío es idempotente: reenviar el mismo producto actualiza el registro existente en lugar de duplicarlo. La identificación se realiza mediante el campo sku dentro de su customer.
POST /{customer}/products/batch
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| products | Array de productos. Mínimo de 1 y máximo de 200 ítems por solicitud |
Estructura de products
| Parámetro | Descripción |
|---|
| products.sku | Obligatorio. Identificador único del producto en su plataforma. Es la clave de actualización |
| products.name | Nombre del producto. Obligatorio al registrar un producto nuevo |
| products.categories | Array de categorías del producto. Obligatorio al registrar un producto nuevo |
| products.brand | Marca del producto |
| products.url | URL de la página del producto. Puede ser absoluta o relativa a la URL de su tienda |
| products.image | URL de la imagen principal del producto |
| products.description | Descripción completa del producto. Utilizada por las funcionalidades de IA (resumen de evaluaciones y respuestas automáticas de preguntas) |
| products.descriptionShort | Descripción resumida del producto |
| products.keywords | Palabras clave del producto |
| products.ean | Código EAN |
| products.gtin | Global Trade Item Number |
| products.mpn | Manufacturer Part Number |
| products.reference | Código de referencia del producto en su plataforma |
| products.internalSku | SKU interno, cuando es diferente del sku |
| products.externalId | Identificador del producto en un sistema externo |
| products.status | Situación del producto en su tienda (ej: active, inactive). Almacenado para consulta — no altera el comportamiento de la plataforma |
| products.variants | Array con los SKUs de las variantes del producto (ej: tallas, colores) |
| products.specifications | Array de especificaciones técnicas (vea la estructura abajo) |
Estructura de products.specifications
| Parámetro | Descripción |
|---|
| products.specifications[].name | Nombre de la especificación |
| products.specifications[].value | Valor de la especificación |
Comportamiento de actualización
- Los campos omitidos no se modifican. Si envía solamente
sku e image, los demás campos del producto permanecen como estaban. Esto permite enviar actualizaciones parciales sin riesgo de borrar datos ya registrados.
variants es acumulativo. Las variantes enviadas se agregan a las ya existentes, sin eliminar las anteriores. Esto preserva las variantes que identificamos a partir de los pedidos integrados.
categories y specifications se sustituyen íntegramente por el valor enviado.
- Los SKUs repetidos en el mismo lote se consolidan en un único producto: los campos escalares asumen el valor de la última ocurrencia y las variantes se unen.
- Las categorías y marcas informadas se registran automáticamente y quedan disponibles como filtro en el Dashboard.
Descontinuar un producto
No hay eliminación de productos por la API: excluir un producto dejaría las evaluaciones ya recolectadas sin referencia. Para productos fuera de línea, utilice el Dashboard para bloquear la recepción de nuevas evaluaciones y preguntas, o envíe status indicando la situación del ítem en su tienda.
Ejemplo de cuerpo de la solicitud
{
"products": [
{
"sku": "CAM-001",
"name": "Camiseta Básica",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"url": "/productos/camiseta-basica",
"image": "https://example.com/camiseta-basica.jpg",
"description": "Camiseta de algodón peinado, cuello redondo, con acabado reforzado en las costuras.",
"ean": "7891234567890",
"mpn": "CAM001",
"reference": "REF-CAM-001",
"status": "active",
"variants": ["CAM-001-P-AZUL", "CAM-001-M-AZUL", "CAM-001-G-AZUL"],
"specifications": [
{ "name": "Material", "value": "Algodón" },
{ "name": "Composición", "value": "100% algodón peinado" }
]
},
{
"sku": "CAN-014",
"name": "Taza de Porcelana 300ml",
"categories": ["Casa", "Cocina", "Tazas"],
"url": "/productos/taza-porcelana-300ml",
"image": "https://example.com/taza-300ml.jpg"
}
]
}
Ejemplo de respuesta
{
"received": 2,
"processed": 2,
"created": 1,
"updated": 1,
"unchanged": 0,
"failed": 0,
"errors": []
}
Ejemplo de respuesta con falla parcial
Los ítems inválidos se rechazan individualmente — los demás productos del lote se graban normalmente y la solicitud retorna 200.
Los mensajes del campo error son devueltos por la API en portugués.
{
"received": 3,
"processed": 3,
"created": 1,
"updated": 1,
"unchanged": 0,
"failed": 1,
"errors": [
{
"index": 2,
"sku": "CAN-015",
"error": "name é obrigatório para produto novo"
}
]
}
Campos de la respuesta
| campo | descripción |
|---|
| received | Cantidad de ítems recibidos en el array products |
| processed | Cantidad de productos procesados, tras la consolidación de SKUs repetidos |
| created | Cantidad de productos registrados por primera vez |
| updated | Cantidad de productos existentes que fueron actualizados |
| unchanged | Cantidad de productos cuyo envío no modificó ningún campo |
| failed | Cantidad de productos rechazados por error de validación |
| errors | Lista de los productos rechazados |
| errors[].index | Posición del producto en el array products que usted envió |
| errors[].sku | SKU del producto rechazado |
| errors[].error | Motivo del rechazo |
Respuestas de error
| Estado | Situación |
|---|
400 | Cuerpo inválido: products ausente, vacío, no es un array o excede 200 ítems |
401 | Token ausente, expirado o inválido |
403 | Token sin permiso para el customer informado |
413 | Cuerpo de la solicitud por encima del límite de 10 MB |
{
"error": "Invalid payload",
"message": "O campo products deve ser um array com 1 a 200 itens"
}
Recomendaciones de envío
- Envíe lotes de hasta 200 productos por solicitud. Los catálogos mayores deben paginarse en solicitudes secuenciales.
- Para la carga inicial, envíe el catálogo completo. En las sincronizaciones siguientes, envíe solamente los productos modificados.
- En caso de error
5xx, la solicitud puede reenviarse con seguridad: la operación es idempotente.
Actualizar producto
Registra o actualiza un único producto. Equivale a enviar un lote con un ítem y sigue exactamente las mismas reglas de actualización descritas en Enviar catálogo de productos.
PUT /{customer}/products/{sku}
Parámetros de URL
Parámetros del cuerpo de la solicitud
Los mismos campos de products[] descritos en Enviar catálogo de productos, sin el campo sku (que viene por la URL).
Ejemplo de cuerpo de la solicitud
{
"name": "Camiseta Básica",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"url": "/productos/camiseta-basica",
"image": "https://example.com/camiseta-basica.jpg"
}
Ejemplo de respuesta
A diferencia del envío en lote, este endpoint retorna el producto guardado.
{
"_id": "6284033fb0b7371985a42300",
"customer": "konfidency",
"sku": "CAM-001",
"name": "Camiseta Básica",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"url": "https://www.sutienda.com.br/productos/camiseta-basica",
"image": "https://example.com/camiseta-basica.jpg",
"variants": ["CAM-001-P-AZUL", "CAM-001-M-AZUL"],
"modified": "2026-08-14T18:22:31.204Z"
}
Respuestas de error
| Estado | Situación |
|---|
400 | Cuerpo inválido, o campo obligatorio ausente (name y categories en producto nuevo) |
401 | Token ausente, expirado o inválido |
403 | Token sin permiso para el customer informado |
{
"error": "Invalid product",
"message": "name é obrigatório para produto novo"
}
Obtener evaluaciones
Obtiene las evaluaciones según los criterios de búsqueda
GET /{customer}/reviews/all
POST /{customer}/reviews/all
El método POST permite filtros adicionales a través del cuerpo de la solicitud (ver sección abajo).
Parámetros de URL
Parámetros de Query (todos opcionales)
| Parámetro | Tipo | Descripción |
|---|
| sku | string | SKU del producto que desea buscar |
| status | string | Estado de las evaluaciones a buscar (consulte tabla abajo) |
| order | string | Ordenación de los resultados (consulte tabla abajo) |
| rating | integer | Filtrar por calificación específica (1 a 5) |
| skip | integer | Cantidad de registros a omitir (paginación) |
| tags | string | Filtrar por tags de moderación |
| topics | string | Filtrar por tópicos |
| from | string | Fecha inicial en formato YYYY-MM-DD |
| to | string | Fecha final en formato YYYY-MM-DD |
| hasText | boolean | Filtrar evaluaciones que poseen texto |
| hasPicture | boolean | Filtrar evaluaciones que poseen fotos |
| hasVideo | boolean | Filtrar evaluaciones que poseen videos |
| hasReply | boolean | Filtrar evaluaciones que poseen respuesta del comerciante |
| complete | boolean | Filtrar evaluaciones completas |
| autoModerated | boolean | Filtrar por evaluaciones moderadas automáticamente |
| includeOrderData | boolean | Incluir datos del pedido y seller (orderId, sellerInfo, orderName, orderEmail, orderPhone, variantSku, variantName) |
Estado de evaluaciones
| Estado | Descripción |
|---|
| Omitir este campo o enviar una cadena vacía traerá evaluaciones en cualquier estado |
published | Evaluaciones publicadas |
removed | Evaluaciones rechazadas/eliminadas |
filtered | Evaluaciones filtradas por el filtro de palabras prohibidas |
pending | Evaluaciones en la cola de moderación |
Ordenación de resultados
La ordenación sigue el patrón campo,orden. El orden puede ser 1 para ascendente o -1 para descendente.
| Campo | Descripción |
|---|
created | Fecha de envío de la evaluación |
moderatedAt | Fecha de moderación de la evaluación |
sku | SKU del producto |
rating | Calificación de la evaluación (1 a 5) |
helpful | Más marcadas como útiles |
unhelpful | Más marcadas como no útiles |
Parámetros adicionales del método POST (cuerpo de la solicitud)
| Parámetro | Tipo | Descripción |
|---|
| categories | array | Array de categorías de productos para filtrar |
| sentiment | string | Filtrar por sentimiento de la evaluación (positive, negative, neutral) |
Ejemplo de llamada GET con filtros
GET /konfidency/reviews/all?status=published&rating=5&hasPicture=true&from=2024-01-01&to=2024-12-31&skip=0
Ejemplo de llamada GET con datos de pedido y seller
GET /konfidency/reviews/all?status=published&includeOrderData=true
Ejemplo de cuerpo de la solicitud POST
{
"categories": ["Camisetas", "Masculino"],
"sentiment": "positive"
}
Los parámetros de query permanecen los mismos para el método POST y pueden combinarse con el cuerpo de la solicitud.
Respuesta
{
"results": [
{
"_id": "630adeb56a21590014e4e200",
"helpful": 0,
"unhelpful": 0,
"verified": true,
"moderationTags": [],
"status": "published",
"created": "2022-08-28T03:19:17.374Z",
"pictures": [
{
"_id": "629f79d569ede80012ca7172",
"url": "https://uploads.konfidency.com.br/a98cd120-abe9-436f-b4de-78e8a0b52071"
}
],
"customer": "konfidency",
"userId": "a6c42ec0-ed92-4464-8dfc-fd7593472767",
"name": "Dominic T",
"sku": "307645",
"text": "Producto diferenciado. Del horno directo a la mesa. Hermoso. No hay quien no lo elogie en la mesa.\nLa comida servida en esta bandeja queda aún más sabrosa.😍",
"recommended": true,
"rating": 5,
"source": "sdk",
"__v": 1,
"attributes": [
{
"_id": "61f7162480088014770d11af",
"title": "Costo/beneficio",
"type": "stars",
"scaleMin": 0,
"scaleMax": 5,
"value": 5
},
{
"_id": "627da5f10d1b0c410a99a1eb",
"title": "Calidad",
"type": "stars",
"scaleMin": 0,
"scaleMax": 5,
"value": 5
}
],
"product": {
"_id": "6284033fb0b7371985a42200",
"customer": "konfidency",
"sku": "307645",
"name": "HOJA BANDEJA OVAL 33 CM X 23 CM",
"categories": [
"Ambientes",
"Comedor",
"Cocina",
"Accesorios para Servir",
"Vajilla",
"Vajilla",
"Porcelana y cerámica",
"Accesorios",
"Mesa",
"Bandejas para Servir",
"Vajilla y Utensilios para Servir"
],
"url": "https://www.site.com.br/bandeja-oval-33-cm-x-23-cm-verde-hoja",
"image": "https://images.site.com.br/arquivos/ids/1857460-200-200/Bandeja-Oval-33-Cm-X-23-Cm-Verde-Hoja.jpg?v=637020162237200000",
"brand": "Marca Ejemplo",
"mpn": "BAND-33X23",
"gtin": "7891234567890",
"specifications": [
{ "name": "Material", "value": "Cerámica" },
{ "name": "Color", "value": "Verde" }
]
}
}
],
"total": 30958
}
Campos de respuesta
| campo | descripción |
|---|
| results._id | ID de la evaluación |
| results._id | ID único de la evaluación |
| results.sku | SKU del producto |
| results.name | nombre del cliente que evaluó |
| results.rating | calificación otorgada por el cliente |
| results.text | texto de evaluación del cliente |
| results.helpful | cantidad de personas que consideraron la evaluación útil |
| results.unhelpful | cantidad de personas que no consideraron la evaluación útil |
| results.verified | indica si el cliente es un comprador verificado |
| results.created | fecha de envío de la evaluación |
| results.recommended | indica si el cliente evaluó el producto positivamente |
| results.pictures | fotos enviadas con la evaluación |
| results.pictures._id | ID único de la foto |
| results.pictures.url | URL de la foto |
| results.product | datos del producto asociado a la evaluación |
| results.product.name | nombre del producto |
| results.product.sku | SKU del producto |
| results.product.url | URL de la página del producto |
| results.product.image | URL de la imagen del producto |
| results.product.brand | marca del producto |
| results.product.mpn | Manufacturer Part Number |
| results.product.gtin | Global Trade Item Number |
| results.product.categories | array de categorías del producto |
| results.product.specifications | array de especificaciones del producto |
| results.product.specifications[].name | nombre de la especificación |
| results.product.specifications[].value | valor de la especificación |
| results.orderId | número del pedido (solo cuando includeOrderData=true) |
| results.sellerInfo | información del seller/marketplace (solo cuando includeOrderData=true) |
| results.sellerInfo.id | ID del seller (solo cuando includeOrderData=true) |
| results.sellerInfo.name | nombre del seller (solo cuando includeOrderData=true) |
| results.orderName | nombre del cliente en el pedido (solo cuando includeOrderData=true) |
| results.orderEmail | correo electrónico del cliente en el pedido (solo cuando includeOrderData=true) |
| results.orderPhone | teléfono del cliente en el pedido (solo cuando includeOrderData=true) |
| results.variantSku | SKU de la variante comprada (solo cuando includeOrderData=true) |
| results.variantName | nombre de la variante comprada (solo cuando includeOrderData=true) |
| total | total de evaluaciones obtenidas con los criterios de búsqueda |
Obtener preguntas
Obtiene las preguntas según los criterios de búsqueda
GET {customer}/questions/all
Parámetros de URL
| Parámetro | Descripción |
|---|
| customer | Su Customer key — consulte Obteniendo claves de autenticación |
| sku | SKU del producto que desea buscar |
| status | Estado de las evaluaciones a buscar (consulte tabla abajo) |
| order | Ordenación de los resultados (consulte tabla abajo) |
| skip | Cantidad de registros a omitir (paginación) |
Estado de preguntas
| Estado | Descripción |
|---|
| Omitir este campo o enviar una cadena vacía traerá preguntas publicadas |
all | Preguntas en cualquier estado |
published | Preguntas publicadas |
removed | Preguntas rechazadas/eliminadas |
filtered | Preguntas filtradas por el filtro de palabras prohibidas |
sent | Preguntas en la cola de moderación |
Respuesta
{
"results": [
{
"_id": "669daa280a3d4e00135eb618",
"status": "published",
"created": "2024-07-22T00:39:04.246Z",
"customer": "demoshakers",
"sku": "9311078449466",
"name": "Tony S.",
"text": "¿este producto tiene en qué color?",
"email": "[email protected]",
"__v": 1,
"reply": {
"unhelpful": 0,
"helpful": 0,
"created": "2024-11-05T12:22:48.259Z",
"text": "Tiene azul, rojo y amarillo"
},
"product": {
"_id": "669cfc8d64e4456616dd9a6d",
"sku": "9311078449466",
"customer": "demoshakers",
"brand": "Bonne Soirée",
"categories": [
"Blazer y Chaqueta"
],
"image": "https://cdn.shopify.com/s/files/1/0875/0976/2362/files/BONNE_SOIREE-329.jpg?v=1716429969",
"isKit": false,
"modified": "2024-07-29T19:38:57-04:00",
"name": "Blazer Jeans Isabelle",
"url": "https://demo-shakers-pro.myshopify.com/products/blazer-jeans-isabelle-1",
"variants": [
"85259071",
"85259072",
"85259073",
"85259074"
],
"status": "active",
"sumRatings": 234,
"totalReviews": 51
}
}
],
"total": 1
}
Obtener respuestas encuesta NPS
Obtiene las respuestas de la encuesta NPS
GET {customer}/nps/responses
Parámetros de URL
| Parámetro | Descripción |
|---|
| customer | Su Customer key — consulte Obteniendo claves de autenticación |
| sku | SKU del producto que desea buscar |
| type | Clasificación de respuesta (consulte tabla abajo) |
| sort | Ordenación de los resultados (consulte tabla abajo) |
| skip | Cantidad de registros a omitir (paginación) |
| from | Fecha inicial en formato YYYY-MM-DD (opcional) |
| to | Fecha final en formato YYYY-MM-DD (opcional) |
Clasificación de respuestas NPS
| Estado | Descripción |
|---|
all | Todas las respuestas |
promoters | Promotores (9 y 10) |
neutral | Neutros (7 y 8) |
detractors | Detractores (0 a 6) |
Ordenación de resultados
La ordenación sigue el patrón campo,orden. El orden puede ser 1 para ascendente o -1 para descendente.
| Campo | Descripción |
|---|
created | Fecha de envío de la evaluación |
rating | Calificación de la evaluación (1 a 5) |
Respuesta
{
"result": [
{
"_id": "674dad491dceb80011018301",
"customer": "stanley",
"surveyId": "663d4588fe42f52137cfd3a2",
"requestId": "6709e7cef1a3f86303b6242",
"name": "Antony S.",
"phone": "11912345678",
"orderId": "12345678",
"rating": 10,
"comment": "",
"partial": true,
"created": "2024-12-02T12:51:21.037Z",
"__v": 0
},
{
"_id": "674d96411dceb80011005121",
"customer": "stanley",
"surveyId": "663d4588fe42f52137cfd3a2",
"requestId": "6709e7cef1a3f86303b6241",
"name": "Bruce B.",
"phone": "11987654321",
"orderId": "12345679",
"rating": 10,
"comment": "Entrega rápida. ",
"partial": false,
"created": "2024-12-02T11:13:05.762Z",
"__v": 0,
"sendDate": "2024-12-02T11:13:17.390Z"
}
],
"total": 12740
}
Campos de respuesta
| campo | descripción |
|---|
| results._id | ID de la respuesta |
| results.name | nombre del cliente que respondió |
| results.phone | teléfono del cliente que respondió |
| results.orderId | Número del pedido que generó la encuesta |
| results.partial | Indica si la respuesta fue enviada o si es parcial (guardada automáticamente) |
| results.rating | calificación otorgada por el cliente |
| results.comment | texto de comentario del cliente |
| results.created | fecha de primer envío de la respuesta |
| results.sendDate | fecha de envío de la respuesta final |
| total | total de respuestas obtenidas con los criterios de búsqueda |
Reporte de productos
Devuelve una lista paginada de productos con sus respectivos datos de evaluaciones, permitiendo el análisis de desempeño por producto.
GET /{customer}/products/report
Parámetros de URL
Parámetros de query (todos opcionales)
| Parámetro | Tipo | Descripción |
|---|
| order | string | Ordenación de los resultados (consulte tabla abajo) |
| limit | integer | Cantidad máxima de registros a retornar (predeterminado: 100) |
| skip | integer | Cantidad de registros a omitir para paginación (predeterminado: 0) |
| sku | string | Filtrar por el SKU específico de un producto |
| category | string | Filtrar por categoría de producto (puede repetirse para múltiples categorías) |
| dateFrom | string | Fecha de inicio del período en formato YYYY-MM-DD |
| dateTo | string | Fecha de fin del período en formato YYYY-MM-DD |
| onlyPublished | boolean | Cuando true, considera solo evaluaciones con estado published (predeterminado: false) |
Opciones de ordenación (order)
| Valor | Descripción |
|---|
MoreReviews | Productos con más evaluaciones primero |
LessReviews | Productos con menos evaluaciones primero |
MostPositive | Productos con mejor calificación promedio primero |
MostNegative | Productos con peor calificación promedio primero |
PositiveMoreReviews | Mejor evaluados con más evaluaciones primero |
PositiveLessReviews | Mejor evaluados con menos evaluaciones primero |
NegativeMoreReviews | Peor evaluados con más evaluaciones primero |
NegativeLessReviews | Peor evaluados con menos evaluaciones primero |
Comportamiento por período
Cuando dateFrom y dateTo son proporcionados, el reporte se calcula dinámicamente a partir de las evaluaciones en el intervalo de fechas indicado. Cuando se omiten, los datos se obtienen de los agregados pre-calculados, representando el historial completo del producto.
Ejemplo de llamada
GET /konfidency/products/report?order=PositiveMoreReviews&limit=50&skip=0&dateFrom=2024-01-01&dateTo=2024-12-31&onlyPublished=true
Ejemplo de respuesta
{
"result": [
{
"customer": "konfidency",
"sku": "CAM-M-AZUL",
"name": "Camiseta Masculina Azul",
"categories": ["Ropa", "Camisetas", "Masculino"],
"url": "https://example.com/camiseta-masculina-azul",
"image": "https://example.com/camiseta-masculina-azul.jpg",
"reviews": {
"reviewCount": 120,
"aggregateRating": 4.2,
"publishedCount": 95,
"publishedAggregateRating": 4.4,
"withPictures": 30,
"withVideo": 5,
"withText": 80
}
}
],
"total": 150
}
Campos de respuesta
| campo | descripción |
|---|
| result.customer | Identificador del cliente |
| result.sku | SKU del producto |
| result.name | Nombre del producto |
| result.categories | Categorías del producto |
| result.url | URL de la página del producto |
| result.image | URL de la imagen principal del producto |
| result.reviews.reviewCount | Cantidad total de evaluaciones en el período o en el historial completo |
| result.reviews.aggregateRating | Calificación promedio general de las evaluaciones |
| result.reviews.publishedCount | Cantidad de evaluaciones con estado published |
| result.reviews.publishedAggregateRating | Calificación promedio de las evaluaciones publicadas (null si no hay ninguna publicada) |
| result.reviews.withPictures | Cantidad de evaluaciones con fotos |
| result.reviews.withVideo | Cantidad de evaluaciones con video |
| result.reviews.withText | Cantidad de evaluaciones con texto |
| total | Total de productos encontrados con los criterios de búsqueda |
Moderación de Evaluaciones
Permite aprobar o rechazar una evaluación.
PUT /{customer}/reviews/{id}/moderate
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| approved | Valor booleano: true para aprobar, false para rechazar |
Ejemplo de cuerpo de la solicitud
Respuesta
Esta API no genera un JSON de respuesta. Un estado 200 significa que la moderación fue registrada con éxito.
Listar grupos de productos
Obtiene todos los grupos de productos registrados.
GET /{customer}/products/groups/all
Parámetros de URL
Parámetros de query (opcionales)
| Parámetro | Descripción |
|---|
| skip | Cantidad de registros a omitir (paginación) |
| limit | Cantidad máxima de registros a retornar |
Ejemplo de respuesta
{
"result": [
{
"_id": "6284033fb0b7371985a42200",
"customer": "konfidency",
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA"],
"__v": 0,
"products": [
{
"_id": "6284033fb0b7371985a42300",
"customer": "konfidency",
"sku": "CAM-M-AZUL",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-azul.jpg",
"name": "Camiseta Masculina Azul",
"url": "https://example.com/camiseta-masculina-azul",
"variants": ["CAM-M-AZUL-P", "CAM-M-AZUL-M", "CAM-M-AZUL-G", "CAM-M-AZUL-GG"]
},
{
"_id": "6284033fb0b7371985a42301",
"customer": "konfidency",
"sku": "CAM-M-PRETA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-preta.jpg",
"name": "Camiseta Masculina Negra",
"url": "https://example.com/camiseta-masculina-preta",
"variants": ["CAM-M-PRETA-P", "CAM-M-PRETA-M", "CAM-M-PRETA-G", "CAM-M-PRETA-GG"]
}
]
},
{
"_id": "6284033fb0b7371985a42201",
"customer": "konfidency",
"name": "Camiseta Femenina",
"skus": ["CAM-F-ROSA", "CAM-F-BRANCA"],
"__v": 0,
"products": [
{
"_id": "6284033fb0b7371985a42302",
"customer": "konfidency",
"sku": "CAM-F-ROSA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Femenino"],
"image": "https://example.com/camiseta-femenina-rosa.jpg",
"name": "Camiseta Femenina Rosa",
"url": "https://example.com/camiseta-femenina-rosa",
"variants": ["CAM-F-ROSA-P", "CAM-F-ROSA-M", "CAM-F-ROSA-G"]
},
{
"_id": "6284033fb0b7371985a42303",
"customer": "konfidency",
"sku": "CAM-F-BRANCA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Femenino"],
"image": "https://example.com/camiseta-femenina-branca.jpg",
"name": "Camiseta Femenina Blanca",
"url": "https://example.com/camiseta-femenina-branca",
"variants": ["CAM-F-BRANCA-P", "CAM-F-BRANCA-M", "CAM-F-BRANCA-G"]
}
]
}
],
"total": 2
}
Campos de respuesta
| campo | descripción |
|---|
| result._id | ID único del grupo |
| result.customer | Cliente al cual pertenece el grupo |
| result.name | Nombre del grupo de productos |
| result.skus | Array con los SKUs de los productos del grupo |
| result.__v | Versión del documento |
| result.products | Array con datos completos de los productos del grupo |
| result.products._id | ID único del producto |
| result.products.sku | SKU del producto |
| result.products.name | Nombre del producto |
| result.products.brand | Marca del producto |
| result.products.categories | Categorías del producto |
| result.products.image | URL de la imagen principal del producto |
| result.products.url | URL de la página del producto |
| result.products.variants | Variantes/SKUs hijos del producto |
| total | Total de grupos registrados |
Obtener grupo de productos
Obtiene los detalles de un grupo de productos específico.
GET /{customer}/products/groups/{id}
Parámetros de URL
Ejemplo de respuesta
{
"_id": "6284033fb0b7371985a42200",
"customer": "konfidency",
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA"],
"__v": 0,
"products": [
{
"_id": "6284033fb0b7371985a42300",
"customer": "konfidency",
"sku": "CAM-M-AZUL",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-azul.jpg",
"name": "Camiseta Masculina Azul",
"url": "https://example.com/camiseta-masculina-azul",
"variants": ["CAM-M-AZUL-P", "CAM-M-AZUL-M", "CAM-M-AZUL-G", "CAM-M-AZUL-GG"]
},
{
"_id": "6284033fb0b7371985a42301",
"customer": "konfidency",
"sku": "CAM-M-PRETA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-preta.jpg",
"name": "Camiseta Masculina Negra",
"url": "https://example.com/camiseta-masculina-preta",
"variants": ["CAM-M-PRETA-P", "CAM-M-PRETA-M", "CAM-M-PRETA-G", "CAM-M-PRETA-GG"]
}
]
}
Campos de respuesta
| campo | descripción |
|---|
| _id | ID único del grupo |
| customer | Cliente al cual pertenece el grupo |
| name | Nombre del grupo de productos |
| skus | Array con los SKUs de los productos del grupo |
| __v | Versión del documento |
| products | Array con datos completos de los productos del grupo |
| products._id | ID único del producto |
| products.sku | SKU del producto |
| products.name | Nombre del producto |
| products.brand | Marca del producto |
| products.categories | Categorías del producto |
| products.image | URL de la imagen principal del producto |
| products.url | URL de la página del producto |
| products.variants | Variantes/SKUs hijos del producto (ej: talles) |
Crear grupo de productos
Crea un nuevo grupo de productos.
POST /{customer}/products/groups
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| name | Nombre del grupo de productos |
| skus | Array con los SKUs de los productos a agrupar |
Ejemplo de cuerpo de la solicitud
{
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA"]
}
Ejemplo de respuesta
{
"_id": "6284033fb0b7371985a42200",
"customer": "konfidency",
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA"],
"__v": 0,
"products": [
{
"_id": "6284033fb0b7371985a42300",
"customer": "konfidency",
"sku": "CAM-M-AZUL",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-azul.jpg",
"name": "Camiseta Masculina Azul",
"url": "https://example.com/camiseta-masculina-azul",
"variants": ["CAM-M-AZUL-P", "CAM-M-AZUL-M", "CAM-M-AZUL-G", "CAM-M-AZUL-GG"]
},
{
"_id": "6284033fb0b7371985a42301",
"customer": "konfidency",
"sku": "CAM-M-PRETA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-preta.jpg",
"name": "Camiseta Masculina Negra",
"url": "https://example.com/camiseta-masculina-preta",
"variants": ["CAM-M-PRETA-P", "CAM-M-PRETA-M", "CAM-M-PRETA-G", "CAM-M-PRETA-GG"]
}
]
}
Respuesta de error (409 - Conflicto)
Caso algún SKU ya pertenezca a otro grupo, la API retornará estado 409 con los SKUs conflictivos:
{
"message": "Algunos SKUs ya pertenecen a otros grupos",
"conflictingSkus": ["CAM-M-AZUL"]
}
Campos de respuesta
| campo | descripción |
|---|
| _id | ID único del grupo creado |
| customer | Cliente al cual pertenece el grupo |
| name | Nombre del grupo de productos |
| skus | Array con los SKUs de los productos del grupo |
| __v | Versión del documento |
| products | Array con datos completos de los productos del grupo |
| products._id | ID único del producto |
| products.sku | SKU del producto |
| products.name | Nombre del producto |
| products.brand | Marca del producto |
| products.categories | Categorías del producto |
| products.image | URL de la imagen principal del producto |
| products.url | URL de la página del producto |
| products.variants | Variantes/SKUs hijos del producto (ej: talles) |
Actualizar grupo de productos
Actualiza un grupo de productos existente.
PUT /{customer}/products/groups/{id}
Parámetros de URL
Parámetros del cuerpo de la solicitud
| Parámetro | Descripción |
|---|
| name | Nombre del grupo de productos |
| skus | Array con los SKUs de los productos a agrupar |
Ejemplo de cuerpo de la solicitud
{
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA", "CAM-M-VERDE"]
}
Ejemplo de respuesta
{
"_id": "6284033fb0b7371985a42200",
"customer": "konfidency",
"name": "Camiseta Masculina",
"skus": ["CAM-M-AZUL", "CAM-M-PRETA", "CAM-M-VERDE"],
"__v": 0,
"products": [
{
"_id": "6284033fb0b7371985a42300",
"customer": "konfidency",
"sku": "CAM-M-AZUL",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-azul.jpg",
"name": "Camiseta Masculina Azul",
"url": "https://example.com/camiseta-masculina-azul",
"variants": ["CAM-M-AZUL-P", "CAM-M-AZUL-M", "CAM-M-AZUL-G", "CAM-M-AZUL-GG"]
},
{
"_id": "6284033fb0b7371985a42301",
"customer": "konfidency",
"sku": "CAM-M-PRETA",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-preta.jpg",
"name": "Camiseta Masculina Negra",
"url": "https://example.com/camiseta-masculina-preta",
"variants": ["CAM-M-PRETA-P", "CAM-M-PRETA-M", "CAM-M-PRETA-G", "CAM-M-PRETA-GG"]
},
{
"_id": "6284033fb0b7371985a42305",
"customer": "konfidency",
"sku": "CAM-M-VERDE",
"brand": "Konfidency Store",
"categories": ["Ropa", "Camisetas", "Masculino"],
"image": "https://example.com/camiseta-masculina-verde.jpg",
"name": "Camiseta Masculina Verde",
"url": "https://example.com/camiseta-masculina-verde",
"variants": ["CAM-M-VERDE-P", "CAM-M-VERDE-M", "CAM-M-VERDE-G", "CAM-M-VERDE-GG"]
}
]
}
Respuesta de error (409 - Conflicto)
Caso algún SKU ya pertenezca a otro grupo, la API retornará estado 409 con los SKUs conflictivos:
{
"message": "Algunos SKUs ya pertenecen a otros grupos",
"conflictingSkus": ["CAM-M-VERDE"]
}
Campos de respuesta
| campo | descripción |
|---|
| _id | ID único del grupo |
| customer | Cliente al cual pertenece el grupo |
| name | Nombre actualizado del grupo de productos |
| skus | Array actualizado con los SKUs del grupo |
| __v | Versión del documento |
| products | Array con datos completos de los productos del grupo |
| products._id | ID único del producto |
| products.sku | SKU del producto |
| products.name | Nombre del producto |
| products.brand | Marca del producto |
| products.categories | Categorías del producto |
| products.image | URL de la imagen principal del producto |
| products.url | URL de la página del producto |
| products.variants | Variantes/SKUs hijos del producto (ej: talles) |
Eliminar grupo de productos
Elimina un grupo de productos.
DELETE /{customer}/products/groups/{id}
Parámetros de URL
Respuesta
Esta API no genera un JSON de respuesta. Un estado 200 significa que el grupo fue eliminado con éxito.