Ir al contenido principal

REST API: Productos y herramientas ​🧂

Cómo crear, modificar y borrar ingredientes/productos y materiales/herramientas.

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:

  1. start (int). Número de la primera fila a retornar. Es obligatorio.

  2. rows (int). Número de filas a retornar. Es obligatorio.

  3. filter (String). Cadena para filtrar los ingredientes. Es opcional.

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

  5. marked (Boolean). Retorna solo aquellos que están marcados. Es opcional.

  6. hidden (Boolean). Retorna solo los ocultos. Es opcional.

  7. used (Boolean). Retorna solo los productos que se utilizan en alguna elaboración. Es opcional.

  8. notUsed (Boolean). Retorna solo los productos que no se utilizan en ninguna elaboración. Es opcional.

  9. withPrice (Boolean). Retorna solo los productos que tienen precio. Es opcional.

  10. withNoPrice (Boolean). Retorna solo los productos que no tienen precio. Es opcional.

  11. withVendor (Boolean). Retorna solo los productos que tienen algún proveedor asociado. Es opcional.

  12. withNoVendor (Boolean). Retorna solo los productos que no tienen ningún proveedor asociado.

  13. withUnits. Retorna en la respuesta también las unidades.

  14. withTypes. Retorna en la respuesta las familias del producto.

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


¿Ha quedado contestada tu pregunta?