1. Funcionamiento de las unidades
Las unidades nos permite 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 es definir 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.
1.1. 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 retornara una token que después debemos asociar en cada llamada posterior.
Este shell script muestra como autenticar-nos 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
1.2. 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 documento
El identificador de cenetro de coste se corresponde al campo idOrderCenter de la classe 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
1.3. 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 la descripción (id, descr) de la unidad
1.4. 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.
Ademas de la información propia de la unidad nos retorna una lista de productos donde esta asignada dicha unidad. numElements nos indica cuantos queremos recuperar
Retorna
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 menus
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 indican que linias de recetas o platos continenen dicha unidad
En listComponents se indican que recetas o platos contienen dicha unidad
En EntityBaseComponent el color indica del color del producto en caso de ser un ingrrediente
El campo type indica que 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
1.5. Rest API : Crear una unidad
Para crear una unidad
POST https://www.tspoonlab.com/recipes/api/unit
Donde en el request body pasamos
public class NewUnit {
String descr;
boolean defecte;
Boolean defectePlat;
Boolean defecteMenu;
Boolean defecteDetall;
Boolean defecteFormat;
}
Donde
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 elaboracion (Normalmente kg o g)
defecteFormat es la unidad por defecto para los formatos de compra de los proveedores
1.6. Rest API : Borrar una unidad
Para borrar una unidad
DELETE https://www.tspoonlab.com/recipes/api/unit/{idUnit}
En caso que la unidad se este utilizando en recetas, ingredientes, platos, menus, comprasm proveedores no se podra borrar