Rest API: Funcionamiento de las unidades
Las unidades nos permiten expresar de forma más natural los diferentes formatos que expresamos en las recetas o los formatos de compra.
En cada unidad podemos definir una equivalencia. Por ejemplo podemos decir que 1 Kg equivale a 1000 g.
Esas equivalencias deben ser universales y cumplirse siempre. Lo que no debemos definir, por ejemplo, es que 1 Botella son 750 ml, ya que eso si bien acostumbra a ser cierto para una botella de vino, no lo es para un refresco o un licor.
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á un token que después debemos asociar en cada llamada posterior.
Este shell script muestra como autenticarnos mediante curl:
[email protected]
password=XXXXXXX
url=https://www.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. Que 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 éste 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 : Recuperar las unidades
Para recuperar las unidades:
https://www.tspoonlab.com/recipes/api/listUnitsPaged?filter=&rows=50&start=0
Filter nos permite filtrar por descripción, start y rows nos permiten la paginación. Retorna una lista de las unidades:
retorna un List<Unit>
class Unit {
private String id;
private String descr;
}
Nos retorna el id y la descripción (id, descr) de la unidad.
Rest API : Recuperar una unidad
Para recuperar una unidad:
GET https://www.tspoonlab.com/recipes/api//unit/{idUnit}/num/{numElements}
idUnit es el identificador de la unidad conseguido en la llamada anterior.
Además de la información propia de la unidad nos retorna una lista de productos donde está asignada dicha unidad. numElements nos indica cuántos queremos recuperar:
public class Unit extends EntityBaseDescr {
private String id;
private String descr;
private boolean defecte;
private boolean defectePlat;
private boolean defecteMenu;
private boolean defecteDetall;
private boolean defecteFormat;
private List<EntityBaseBool> listVendors;
private List<EntityBaseBool> listCustomers;
private List<EntityBaseComponent> listDetails;
private List<EntityBaseComponent> listComponents;
private long listVendorsCount;
private long listCustomersCount;
private long listDetailsCount;
private long listComponentsCount;
private List<UnitConversion> listConversions;
}
public class EntityBaseBool extends EntityBaseDescr {
private String id;
private String descr;
private boolean defecte;
}
public class EntityBaseComponent extends EntityBaseDescr {
private String id;
private String descr;
private Short type;
private Long color;
}
defecte indica si dicha unidad es la unidad por defecto para peso.
defectePlat indica si dicha unidad es la unidad por defecto para platos.
defecteMenu indica si dicha unidad es la unidad por defecto para menús.
defecteDetall indica si dicha unidad es la unidad por defecto para el detalle de una receta.
defecteFormat indica si dicha unidad es la unidad por defecto para el formato de compra de un proveedor.
En listVendors y listCustomers nos indica aquellos proveedores o clientes donde se hace referencia a dicha unidad.
EntityBaseBool contiene el id y descr de esas entidades.
En listDetails se indica qué líneas de recetas o platos contienen dicha unidad.
En listComponents se indica qué recetas o platos contienen dicha unidad.
En EntityBaseComponent el color indica del color del producto en caso de ser un ingrediente.
El campo type indica qué tipo de producto es:
0 para ingredientes / produtos
1 para recetas / elaboraciones intermedias
2 para materiales / herramientas
3 para platos / elaboraciones finales
Para recuperar más datos asociados a la unidad:
GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/components/paged/paged?filter=&rows=20&start=20
GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/details/paged?filter=&rows=20&start=20
GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/vendors/paged?filter=&rows=20&start=20
GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/customres/paged?filter=&rows=20&start=20
Rest API : Crear una unidad
Para crear una unidad:
POST https://www.tspoonlab.com/recipes/api/unit
En el request body pasamos:
public class NewUnit {
String descr;
boolean defecte;
Boolean defectePlat;
Boolean defecteMenu;
Boolean defecteDetall;
Boolean defecteFormat;
}defecte es la unidad por defecto para peso (Normalmente kg).
defectePlat es la unidad por defecto para platos (Normalmente Rac).
defecteMenu es la unidad por defecto para menús (Normalmente Pax).
defecteDetail es la unidad por defecto para el detalle de una elaboración (Normalmente kg o g).
defecteFormat es la unidad por defecto para los formatos de compra de los proveedores.
Rest API : Borrar una unidad
Para borrar una unidad:
DELETE https://www.tspoonlab.com/recipes/api/unit/{idUnit}
En caso que la unidad se esté utilizando en recetas, ingredientes, platos, menús, compras o proveedores no se podrá borrar.
¿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.
