Promociones

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.

Bootic CLI: listar promociones


# 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:

Bootic CLI: Crear una promoción

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).

Bootic CLI: Preguntar por una promoción

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

curl: Configuración inicial

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.

Librería jq

Para visualizar de mejor forma la información de la API usaremos una herramienta de nombre jq.

Listando promociones

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"
}
...

curl: Crear promoción

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

curl: Preguntando por promociones

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