Saltar al contenido principal

Promociones

Una promoción permite aplicar descuentos o beneficios en la tienda según reglas de productos, categorías, montos o combinaciones.

Propiedades

PropiedadExplicación
idIdentificador único de la promoción
titleNombre de la promoción
statusEstado de la promoción
commerce_idID del comercio
expirate_date_startFecha de inicio de la promoción
expirate_date_endFecha de fin de la promoción
expirate_date_limitLímite de días de vigencia
created_atFecha de creación
type_filter_idTipo de filtro de aplicación
type_promotion_idTipo de promoción
categories_idIDs de categorías asociadas
products_idIDs de productos asociados
progressive_quantityDescuentos progresivos por cantidad
progressive_valueDescuento en el carrito de compra
quantityConfiguración de promoción por cantidad
xyConfiguración de promoción XY

type_filter_idExplicación
1Sin límites
2Solo para categorías
3Solo para productos
type_promotion_idExplicaciónEjemplo / Uso (payload)
1Lleva X paga Y"xy": { "value_x": 2, "value_y": 1 }
2Descuento por cantidad"quantity": { "discount_value": 10, "quantity_min_buy": 2 }único.
3Descuento progresivo por cantidad"progressive_quantity": [{ "quantity_min_buy": 2, "discount_value": 5 }, { "quantity_min_buy": 5, "discount_value": 10 }] — array que puede tener múltiples reglas.
4Descuento en el carrito de compra (siempre se aplica con type_filter_id: 1)"progressive_value": [{ "value_min_buy": 100, "discount_value": 10 }, { "value_min_buy": 200, "discount_value": 25 }] — array que puede tener múltiples reglas.

Endpoints

GET /promotion

Obtiene la lista de promociones.

Parámetros de query

ParámetroExplicación
idsIDs de promociones separados por comas
type_promotion_idFiltrar por tipo de promoción
type_filter_idFiltrar por tipo de filtro
statusFiltrar por su estado
qBuscar por título
pagePágina
per_pageResultados por página

Ejemplo

GET promotion?ids=72

HTTP/1.1 200 OK

{
"pagination": {
"total": 1,
"page": 1,
"per_page": 20,
"next_page": null
},
"results": [
{
"id": 72,
"title": "Promo Feriado",
"status": true,
"expirate_date_limit": false,
"expirate_date_start": null,
"expirate_date_end": null,
"type_filter_id": 1,
"type_promotion_id": 2,
"quantity": {
"discount_value": 5,
"quantity_min_buy": 2
},
"created_at": "2026-05-20T15:18:31.000Z"
}
]
}

GET /promotion/{id}

Obtiene una promoción por su ID.

Ejemplo

GET /promotion/72

HTTP/1.1 200 OK

{
"id": 72,
"title": "Promo Feriado",
"status": true,
"expirate_date_limit": false,
"expirate_date_start": null,
"expirate_date_end": null,
"type_filter_id": 1,
"type_promotion_id": 2,
"quantity": {
"discount_value": 5,
"quantity_min_buy": 2
},
"created_at": "2026-05-20T15:18:31.000Z"
}

POST /promotion

Crea una nueva promoción.

Body de request

CampoExplicación
titleNombre de la promoción
statusEstado
expirate_date_startFecha de inicio
expirate_date_endFecha de fin
expirate_date_limitLímite de días de vigencia
type_filter_idTipo de filtro
type_promotion_idTipo de promoción
categories_idIDs de categorías asociadas
products_idIDs de productos asociados
progressive_quantityDescuentos progresivos por cantidad
progressive_valueDescuento en el carrito de compra
quantityConfiguración de promoción por cantidad
xyConfiguración de promoción XY

Ejemplo de request

{
"title": "xy",
"status": false,
"expirate_date_start": "2026-05-20T19:04:45.344Z",
"expirate_date_end": "2026-05-20T19:04:45.344Z",
"expirate_date_limit": true,
"type_filter_id": 3,
"type_promotion_id": 1,
"categories_id": [8],
"products_id": [1],
"xy": { "value_x": 2, "value_y": 1 }
}

Respuesta

HTTP/1.1 201 Created

{
"id": 77,
"title": "xy",
"status": false,
"expirate_date_limit": true,
"expirate_date_start": "2026-05-20T19:04:45.000Z",
"expirate_date_end": "2026-05-20T19:04:45.000Z",
"type_filter_id": 3,
"type_promotion_id": 1,
"products_id": [1],
"xy": {
"value_x": 2,
"value_y": 1
},
"created_at": "2026-05-20T19:11:35.000Z"
}

PUT /promotion/{id}

Actualiza los datos de una promoción existente.

Ejemplo de request

{
"title": "Promo 2x1 actualizada",
"status": 1,
"expirate_date_end": "2026-07-15T23:59:59.000Z",
"type_promotion_id": 1,
"xy": {
"value_x": 2,
"value_y": 1
}
}

Respuesta

HTTP/1.1 200

{
"id": 78,
"title": "Promo 2x1 actualizada",
"status": true,
"expirate_date_limit": true,
"expirate_date_start": "2026-05-20T00:00:00.000Z",
"expirate_date_end": "2026-12-15T23:59:59.000Z",
"type_filter_id": 2,
"type_promotion_id": 1,
"categories_id": [7, 8],
"xy": {
"value_x": 2,
"value_y": 1
},
"created_at": "2026-05-20T16:50:56.000Z"
}

PUT /promotion/{id}/status

Actualiza el estado de la promoción.

Ejemplo

PUT /promotion/78/status

HTTP/1.1 200 OK

{
"id": 78,
"message": "Promotion disabled successfully"
}

DELETE /promotion/{id}

Actualiza el estado de la promoción.

Ejemplo

DELETE /promotion/78

HTTP/1.1 200 OK

{
"id": 78,
"message": "Promotion deleted successfully"
}