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.
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.
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.
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:
shop_id
product_id
title
status
slug
variant_id
variant_sku
variant_stock
variant_regular_price
variant_sale_price
Ejmplo de salida:
238, 383633, Cocotte, visible, cocotte, 723085, az9876, 10, 99999, 75000
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"}'
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"}'
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"
# 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'],
)
// 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
);
}
}
# 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