Rest API: Productos básicos
Se consideran productos básicos aquellos que después utilizamos en elaboraciones o platos finales. Son las piezas a partir de las cuales se construye toda la oferta gastronómica.
Tenemos dos tipos:
Productos/Ingredientes. Son aquellos productos genéricos que consumimos. Pueden ser productos primarios o elaboraciones que ya compramos elaboradas.
Herramientas/Materiales. Son productos accesorios que no se consumen y se utilizan para realizar o para servir las elaboraciones.
Rest API : Login
Para poder hacer llamadas a nuestras API'S lo primero que necesitamos es identificarnos mediante una llamada de login.
Esa llamada nos retornará una token que después debemos asociar en cada llamada posterior.
Este shell script muestra como autenticarnos mediante curl:
[email protected]
password=XXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
En las llamadas posteriores debemos añadir a nuestros headers el token recibido de la llamada de login:
curl -X PUT -v -H "$(cat rememberme.txt)" $url/integration/llamada
Rest API : Seleccionar un centro de coste/restaurante
Las peticiones que se describen en los apartados siguientes hacen referencia a un centro de coste, en la mayoría de los casos se correspondería con un restaurante.
Para recuperar la lista de centros de costes y sus identificadores consulta el artículo Rest API: Centros de coste.
El identificador de centro de coste se corresponde al campo idOrderCenter de la clase UserOrderCenter.
Una vez tenemos el identificador este deberá añadirse a los headers para que sea utilizado en llamadas posteriores:
echo -n 'order:351583444167656299610202XXXXXXXXXXXX' >> rememberme.txt
Por tanto en nuestros request headers debemos especificar tanto el token devuelto por el login como el identificador del centro de coste:
rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX
order:351583444167656299610202XXXXXXXXXXXX
Rest API : Listar todos los productos básicos
Tenemos dos llamadas:
GET:
https://app.tspoonlab.com/recipes/api/listIngredientsPaged
o
https://app.tspoonlab.com/recipes/api/listMaterialsPaged
Podemos pasar los siguientes request parámetros:
start (int). Número de la primera fila a retornar. Es obligatorio.
rows (int). Número de filas a retornar. Es obligatorio.
filter (String). Cadena para filtrar los ingredientes. Es opcional.
types (Array de String). Array con los ids de las familias que queremos filtrar. En caso de especificar más de una familia el producto deberá tener ambas familias. Es opcional.
marked (Boolean). Retorna solo aquellos que están marcados. Es opcional.
hidden (Boolean). Retorna solo los ocultos. Es opcional.
used (Boolean). Retorna solo los productos que se utilizan en alguna elaboración. Es opcional.
notUsed (Boolean). Retorna solo los productos que no se utilizan en ninguna elaboración. Es opcional.
withPrice (Boolean). Retorna solo los productos que tienen precio. Es opcional.
withNoPrice (Boolean). Retorna solo los productos que no tienen precio. Es opcional.
withVendor (Boolean). Retorna solo los productos que tienen algún proveedor asociado. Es opcional.
withNoVendor (Boolean). Retorna solo los productos que no tienen ningún proveedor asociado.
withUnits. Retorna en la respuesta también las unidades.
withTypes. Retorna en la respuesta las familias del producto.
withCost. Retorna en la respuesta el coste del producto.
Retorna:
retorna una List<EntityBaseImagesColor>
EntityBaseImagesColor {
String id;
String descr;
Long color;
short type;
String codi;
boolean hasData;
Short tag;
String tagComment;
}
Donde:
id es el identificador del producto.
descr es el nombre del producto.
color es el color asociado al producto. Solo en caso de que sea producto/ingrediente.
type toma valor 0 para producto/ingrediente y 1 para herramienta/material.
codi es el código del producto.
hasData indica que dicho producto se está utilizando en alguna elaboración.
tag es nulo si el producto no tiene ninguna marca, sino toma los siguientes valores: Ok:1, MoreInfo: 2, Error:3.
tagComment es el comentario asociado a la marca.
Con la opción withUnits retorna también:
String idUnit; // Identificador de la unidad
String unit; // Descripción de la unidad
Con la opción withCost retorna también:
Double cost; // Coste del producto
Con la opción withTypes retorna también:
List<EntityBaseDescr> listComponentTypes; // Familias básicas
List<EntityBaseDescr> listComponentTypesOthers; // Familias de tipo propiedad o coste
Entre las dos colecciones se envían todas las familias del producto donde EntityBaseDescr es:
EntityBaseDescr {
String id;
String descr;
}
Rest API : Crear un producto
Tenemos dos llamadas:
POST
https://app.tspoonlab.com/recipes/api/ingredient
https://app.tspoonlab.com/recipes/api/material
En el request body especificaremos:
class NewComponentBase {
String descr;
String altDescr;
String idUnit;
List<NewComponentType> listComponentTypes;
boolean includeInOrder;
boolean averageCost;
boolean fixedCost;
List<NewComponentStore> listStores;
Double cost;
Double minStock;
Double maxStock;
String codi;
Double caducity;
String barcode;
}
class NewComponentType {
String id;
}
class NewComponentStore {
String id;
}
descr es el nombre del producto.
altDescr es un nombre del producto alternativo, usualmente uno comercial.
idUnit es el id de la unidad del producto
listComponentType es la lista de familias a asociar con el nuevo producto.
includeInOrder toma valor true.
averageCost toma valor false.
fixedCost toma valor false.
listStores almacén o almacenes donde se almacenará el producto.
cost coste del producto expresado para una unidad.
minStock stock mínimo del producto.
maxStock stock máximo del producto.
codi código del producto.
caducity días de caducidad del producto.
barcode código de barras del producto.
Rest API : Eliminar un producto
Tenemos dos llamadas:
DELETE
https://app.tspoonlab.com/recipes/api/ingredient/{idComponent}
https://app.tspoonlab.com/recipes/api/material/{idComponent}
No retorna nada.
Rest API : Actualizar el coste de un producto
Tenemos dos llamadas:
PUT
https://app.tspoonlab.com/recipes/api/ingredient/{idComponent}/cost
https://app.tspoonlab.com/recipes/api/material/{idComponent}/cost
En el body deberemos especificar el nuevo coste.
{
Double value;
}
Una vez actualizado el coste lanza el recalculo del coste de las elaboraciones intermedias y finales que dependen de él.
¿Te ha resultado útil este artículo?
Si necesitas más ayuda, contacta con soporte haciendo clic en el Chat de Soporte Integrado en la esquina inferior derecha de tu pantalla.
