Ir al contenido principal

REST API: Familias​ 👨‍👩‍👦‍👦​

Cómo recuperar, crear, modificar, borrar y asignar familias.

Rest API: Funcionamiento de las familias

Las familias nos permiten clasificar los diferentes productos de nuestro sistema.

Existen clasificaciones separadas para:

  • Ingredientes / productos.

  • Recetas / elaboraciones intermedias.

  • Materiales / herramientas.

  • Platos / elaboraciones finales.

  • Almacenes: Nos permiten clasificaciones en los almacenes que nos permiten realizar los inventarios con más facilidad. Se pueden asignar a cualquier tipo de producto.

  • Producciones: Nos permiten agrupar por familias las producciones en base al orden de ejecución o a la ejecución conjunta.

Además 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.

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://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, 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 : 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 / productos.

  • 1 para recetas / elaboraciones intermedias.

  • 2 para materiales / herramientas.

  • 3 para platos / elaboraciones finales.

  • 5 para familias de almacén.

  • 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;
}

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

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.

Además de la información propia de la familia nos retorna una lista de productos donde está asignada dicha familia. numComponents nos indica cuántos 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 éste caso indicando qué 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 qué tipo de producto es:

  • 0 para ingredientes / productos.

  • 1 para recetas / elaboraciones intermedias.

  • 2 para materiales / herramientas.

  • 3 para platos / elaboraciones finales.

En el caso de los ingredientes/productos color indica el color asignado al mismo.

Para recuperar más componentes asociados a la familia:

GET https://www.tspoonlab.com/recipes/api/type/{idFamily}/components/paged?filter=&rows=20&start=20

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;
}

Rest API : Modificar una familia

Para modificar una familia:

PUT
https://www.tspoonlab.com/recipes/api/type/{idFamilia}

Pasando en el request body la clase NewType tal como se ha indicado en crear familia.

No retorna ningún dato. La petición Http da un error si se ha producido algún problema.

Rest API : Eliminar una familia

Para eliminar una familia:

DELETE
https://www.tspoonlab.com/recipes/api/type/{idFamilia}

No retorna ningún dato. La petición Http da un error si se ha producido algún problema-

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 tomará el valor null.

Retorná los mismos componentes con su correspondiente nuevo id.

retorna List<ComponentType>

class ComponentType {

String id;
String descr;
int type;
Long color;
String idComponent;
}

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.

¿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?