API vía curl

La versatilidad de la API Bootic te permite acceder a ella usando una herramienta muy conocida por los desarrolladores: curl. A continuación los detalles.

Antes que nada es preciso crear una aplicación y generar un access token.

Paso 1: Crear una aplicación

El paso 1 es crea una aplicación para obtener el client id y el client secret, cuyos valores nos permiten generar un token de acceso y con ello llegar a los datos de la tienda.

Paso 2: Generar un access_token

Guardamos la información del Paso 0 en variables:

CLIENT_ID=4c318bf675dfb5cfd498b0c99ac8bb24
CLIENT_SECRET=b3ea8f988e8e62d92dd61c8757b93a14

Solicitamos el token:

curl -XPOST -u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials&scope=admin" https://auth.bootic.net/oauth/token

BONUS: Considera «aislar» el access_token con el siguiente añadido:

curl -XPOST -u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials&scope=admin" https://auth.bootic.net/oauth/token \
| python -c 'import json,sys;obj=json.load(sys.stdin);print obj["access_token"]'

Guardamos el token anterior en una variable (ACCESS_TOKEN), es decir:

ACCESS_TOKEN=IjowLCJhcHAiOjE3OCwiY...

Dado que ya tenemos un token de acceso te mostramos algunos ejemplos de uso.

Tarea 1: Listar los primeros 3 productos

Haremos una consulta a la API preguntando por los primeros 3 productos de la tienda. Guardaremos el resultado en el archivo products.json

curl -X GET -H"Authorization: Bearer $ACCESS_TOKEN" \
-d "per_page=3" -d "class=product" \
https://api.bootic.net/v1/products.json --output products.json

Mostramos los productos leyendo el json descargado antes, ayudados de un script python. Al final (anexo) encontrarás otros sabores.

python show_products.py

El script python mostrará como resultado las siguientes columnas:

Ejmplo de salida:

238, 383633, Cocotte, visible, cocotte, 723085, az9876, 10, 99999, 75000

Tarea 2: Cambiar el título al producto x

La siguiente sentencia cambiará el título al producto. Nótese que se requiere tener el Id de la tienda y el slug del producto:

curl -XPUT -H'Accept:application/json' -H'Content-Type:application/json' \ 
-H "Authorization: Bearer $ACCESS_TOKEN" -i \
https://api.bootic.net/v1/shops/ID_TIENDA/products/SLUG_PRODUCTO \
-d '{"title":"La súper chincheta"}'

Tarea 3: Cambiar el stock de la variante

La siguiente cambiará el stock de una variante. Se requiere tener el id de la tienda y el id de la variante (o bien el sku):

curl -XPUT -H'Accept:application/json' -H'Content-Type:application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" -i \
https://api.bootic.net/v1/shops/ID_TIENDA/variants/SKU_VARIANTE -d '{"stock":"99"}'

Tarea 4: Cambiando el precio normal y el precio oferta a una variante

Esta vez usaremos como input un archivo, update_variant.json:

{"regular_price":"10", "sale_price":"3"}

Y la sentencia sería:

curl -XPUT -H'Accept:application/json' -H'Content-Type:application/json' \
-H "Authorization: Bearer $ACCESS_TOKEN" -i \
https://api.bootic.net/v1/shops/ID_TIENDA/variants/ID_VARIANTE \ 
--data "@variant_update.json"

Anexo: Scripts

Python


# show_products.py

import json
products = open('products.json', 'r')
data = json.loads(products.read())
shop_id = data['_embedded']['items'][0]["_embedded"]["shop"]["id"]
for product in data["_embedded"]["items"]:
    for variant in product['_embedded']['variants']:
        print("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s") % (
                shop_id,
                product['id'],
                product['title'],
                product['status'],
                product['slug'],
                variant['id'],
                variant['sku'],
                variant['stock'],
                variant['regular_price'],
                variant['sale_price'],
        )

PHP


// show_products.php

$products = file_get_contents("products.json");
$data = json_decode($products);
$shop_id = $data->_embedded->items[0]->_embedded->shop->id;
foreach ( $data->_embedded->items as $product )  {
  foreach( $product->_embedded->variants as $variant ) {
    printf("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n",
      $shop_id,
      $product->id,
      $product->title,
      $product->status,
      $product->slug,
      $variant->id,
      $variant->sku,
      $variant->stock,
      $variant->regular_price,
      $variant->sale_price
    );
  }
}

Ruby

# show_products.rb

require 'json'
products = File.open("products.json")
data = JSON.load(products)
shop_id = data["_embedded"]["items"].first["_embedded"]["shop"]["id"]
data["_embedded"]["items"].each do |product|
  product["_embedded"]["variants"].each do |variant|
    puts "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s" % [
      shop_id,
      product['id'],
      product["title"],
      product["status"],
      product["slug"],
      variant['id'],
      variant['sku'],
      variant['stock'],
      variant['regular_price'],
      variant['sale_price']
    ]
  end
end