Ir al contenido principal
REST Api: Familias

Como recuperar, crear, modificar, borrar y asignar familias

Rafel Tugues avatar
Escrito por Rafel Tugues
Actualizado hace más de 4 años

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

¿Ha quedado contestada tu pregunta?