Por medio de la API también es posible gestionar las Promociones. A continuación te contamos cómo hacerlo usando Bootic CLI y el siempre útil curl.
# show_promotions.rb
shop = root.shops.first
promotions = shop.promotions
promotions.each do |promo|
code = promo.has?(:code) ? promo.code : ''
puts "#{promo.name}, #{promo.activation_mode}, #{code}"
end
Llamada:
$ bootic runner show_promotions.rb
Listará algo como lo siguiente:
Deco verano, code, decoverano
Dos por uno, auto,
Remate final, code, rematefinal
A continuación encontrarás los campos que puede traer cada registro:
id
name
cumulative
discount_type
discount
activation_mode
code
usage_limit
per_user_limit
usage_count
starts_at
expires_at
product_range_from
product_range_to
price_range_from
price_range_to
product_group_id
product_group_type
product_group_filter_mode
price_list_id
A continuación un script que se podrá correr vía Bootic CLI que creará una promoción:
# new_promo.rb
shop = root.shops.first
payload = {
name: 'Promo descuento Juan Perez',
discount_type: 'fixed',
discount: 5000,
code: 'jp123',
activation_mode: 'code',
usage_limit: 1,
per_user_limit: 1,
expires_at: '2021-11-01 02:59:59' # 31 de oct, 23:59:59
}
res = shop.create_promotion(payload)
if res.has?(:errors)
puts "problemas: #{res.to_hash['_embedded']['errors'].inspect}"
else
puts "Promo creada: #{res.name}"
end
Ten presente que la fecha de expiración se debe enviar en UTC, en consecuencia la promo durará hasta la media noche del último día de octubre (actual huso horario GMT-3).
También podemos preguntar por una promoción, en el siguiente ejemplo preguntaremos por todas las promociones que tienen la palabra «super».
shop = root.shops.first
promos = shop.promotions(q: "super")
promos.each do |promo|
puts "#{promo.id}, #{promo.name}"
end
Para usar curl configuraremos algunas variables de entorno. Recuerda que estos valores son propios para cada tienda — revisa la guía: Cómo instalar Bootic CLI / Crear «aplicación»
CLIENT_ID=2djj8a30a040cfeb73bd2ad85b40674d
CLIENT_SECRET=3837614fd1rt8ac43723ac2c6r8a588
URL_TOKEN=https://auth.bootic.net/oauth/token
SHOP_ID=338
Solicitamos el token y lo almacenaremos en la variable ACCESS_TOKEN
:
curl -XPOST -u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials&scope=admin" $URL_TOKEN
Si no sabes de donde salieron estas variables revisa nuestra guía.
jq
Para visualizar de mejor forma la información de la API usaremos una herramienta de nombre jq.
A continuación listaremos las promociones de nuestra tienda, la línea de comandos sería (ojo la llamada final a jq
)
curl -X GET -H"Authorization: Bearer $ACCESS_TOKEN" \
https://api.bootic.net/v1/shops/$SHOP_ID/promotions | jq
Lo anterior nos listará algo como lo siguiente:
{
"_class": [
"results",
"promotions"
],
"_links": {
"curies": [
{
"name": "btc",
"href": "https://api.bootic.net/rels/{rel}",
"templated": true
}
],
"btc:shop": {
"href": "https://api.bootic.net/v1/shops/238",
"title": "translation missing: es.rels.titles.promotions_shop"
},
"btc:create_promotion": {
"href": "https://api.bootic.net/v1/shops/238/promotions",
"method": "post",
"title": "Create a new promotion for this shop"
},
"self": {
"href": "https://api.bootic.net/v1/shops/238/promotions?
available=true&page=1&per_page=30&sort=created_on.desc"
}
},
...
Usando las herramientas de filtro que tiene jq
podemos listar solo el detalles de las promociones, así:
curl -X GET -H"Authorization: Bearer $ACCESS_TOKEN" \
https://api.bootic.net/v1/shops/$SHOP_ID/promotions \
| jq '._embedded.items[] | {id,name,discount_type,discount,activation_mode}'
Veremos algo así:
...
{
"id": 17234,
"name": "Super promo",
"discount_type": "percentage",
"discount": 10,
"activation_mode": "code"
}
{
"id": 17046,
"name": "super ollas",
"discount_type": "percentage",
"discount": 50,
"activation_mode": "auto"
}
...
Ahora vamos a crear una promoción, con la siguiente información:
{
"name": "Promo Juan Perez IV",
"cumulative": true,
"discount_type": "fixed",
"discount": 5000,
"activation_mode": "code",
"code": "jp123-iv",
"usage_limit": 1,
"per_user_limit": 1,
"expires_at": "2021-11-01T02:59:59"
}
El archivo se llamará new_promo.json
Nota: La fecha de expiración fue dada en UTC.
Vamos a crearla:
curl -XPOST -H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d "@new_promo.json" -i https://api.bootic.net/v1/shops/$SHOP_ID/promotions
A continuación vamos a hacer una búsqueda en nuestras promociones, buscaremos todas aquellas que tenga la palabra «super».
curl -X GET -H"Authorization: Bearer $ACCESS_TOKEN" \
-d "q=super" https://api.bootic.net/v1/shops/$SHOP_ID/promotions | jq