1. Funcionamiento de las familias
Las familias nos permiten clasificar los diferentes productos de nuestro sistema
Existen clasificaciones separadas para
Para ingredientes / productos
Para recetas / elaboraciones intermedias
Para materiales / herramientas
Para platos / elaboraciones finales
Para almacenes. Nos permiten subclasificaciones en los almacenes que nos permiten realizar los inventarios con más facilidad. Por ejemplo indicar las estanterías dentro de un almacén. Se pueden asignar a cualquier tipo de producto.
Para producción. Nos permiten agrupar por familias las producciones en base al orden de ejecución o a la ejecución conjunta. Se pueden asignar a productos elaborados y finales
Ademas podemos marcar las familias con dos flags adicionales.
De propiedad nutricional. Por ejemplo healthy o vegano
De coste o ingreso. Nos permite relacionar un producto con un concepto de costes o ingresos. Por ejemplo: comida, bebida
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 familias
Para recuperar las familias
https://www.tspoonlab.com/recipes/api/listTypesPagedEx?filter=&rows=50&start=0&type=
filter nos permite filtrar por descripción, start y rows nos permiten la paginación y type nos permite filtrar por tipo de familia
type puede tomar los siguientes valores
0 para ingredientes / produtos
1 para recetas / elaboraciones intermedias
2 para materiales / herramientas
3 para platos / elaboraciones finales
5 para familias de almacen
8 para familias de producción
retorna una lista de las familias
retorna un List<TypeComponent>
class TypeComponent {
private String id;
private String descr;
short type;
Long color;
String codi;
Boolean costBinded;
Boolean propertyBinded;
}
nos retorna el id la descripción (id, descr) el tipo de esa familia (type). En caso de tipo 0 (ingredientes/productos) la familia puede tener un color asociado (color)
Si hemos codificado la familia se retorna en codi.
En caso que indiquemos que la familia es de costes o ingresos el campo costBinded estará a true. Si el valor es null o false nos indica que no es una familia de coste
propertyBinded funciona del mismo modo para indicar si se trata de una familia de propiedad nutircional
1.4. Rest API : Recuperar una familia
Para recuperar una familia
GET https://www.tspoonlab.com/recipes/api/type/{idFamily}/num/{numComponents}
idFamily es el identificador de la familia conseguido en la llamada anterior.
Ademas de la información propia de la familia nos retorna una lista de productos donde esta asignada dicha familia. numComponents nos indica cuantos queremos recuperar
Retorna
public class Type extends EntityBaseDescr {
String id;
String descr;
short type;
String color;
String codi;
Boolean costBinded;
Boolean propertyBinded;
List<ComponentType> listComponent;
}
class ComponentType {
String id;
String descr;
private int type;
private Long color;
private String idComponent;
}
Muy similar a la llamada anterior donde se listan las familias pero en este caso indicando que productos tiene asociados (solo los primeros numComponents)
En ComponentType id es el identificador de esa familia con un producto. idComponent y descr hacen referencia al producto. 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
En el caso de los ingredintes/productos color indica el color asignado al mismo
Para recuperar más components asociados a la familia
GET https://www.tspoonlab.com/recipes/api/type/{idFamily}/components/paged?filter=&rows=20&start=20
1.5. Rest API : Crear una familia
Para crear una familia
POST
https://www.tspoonlab.com/recipes/api/type
Pasando en el request body
class NewType {
String descr;
String comment;
String codi;
short type;
String color;
String idParent;
Boolean costBinded;
Boolean propertyBinded;
}
Especificando los valores indicados con anterioridad. retorna el id de la nueva familia encapsulado dentro de IdWrapper
class IdWrapper {
String id;
}
1.6. Rest API : Modificar una familia
Para modificar una familia
PUT
https://www.tspoonlab.com/recipes/api/type/{idFamilia}
Pasando en el request body la classe NewType tal como se ha indicado en crear familia.
No retorna ningun dato. La petición Http da un error si se ha producido algun problema
1.7. Rest API : Eliminar una familia
Para eliminar una familia
DELETE
https://www.tspoonlab.com/recipes/api/type/{idFamilia}
No retorna ningun dato. La petición Http da un error si se ha producido algun problema
1.8. Rest API : Asignar una familia a una lista de productos
Para asignar una familia a una lista de productos
POST
https://www.tspoonlab.com/recipes/api/type/{idFamily}/components/add
En el request body indicaremos los productos a añadir
class NewTypeComponentWrapper {
List<NewTypeComponent> components;
}
class NewTypeComponent {
String id; // Null al asignar
String idComponent;
}
El id tomara el valor null
retorna los mismos componentes con su correspondiente nuevo id
retorna List<ComponentType>
class ComponentType {
String id;
String descr;
int type;
Long color;
String idComponent;
}
1.9. Rest API : Desasignar una familia a una lista de productos
Para asignar una familia a una lista de productos
POST
https://www.tspoonlab.com/recipes/api/type/{idFamily}/components/remove
En el request body indicaremos los productos a añadir
class NewTypeComponentWrapper {
List<NewTypeComponent> components;
}
class NewTypeComponent {
String id;
}
id de la relación que queremos eliminar
No retorna nada