1. Funcionameinto de los alérgenos
tspoonlab dispone al crear la cuenta una lista de los 14 alérgenos oficiales según la normativa en vigor en la unión europea. El usuario puede además crear nuevos alérgenos para poder realizar una gestión más detallada.
Los alérgenos se asignan a los ingredientes/productos. Dicha asignación la debemos realizar en base a las fichas técnicas que nos proporciona el proveedor y que es necesario archivar para cumplir con los requerimientos de sanidad. En dicha asignación podemos indicar si se trata de un alérgeno o de una traza.
Las recetas/elaboraciones intermedias y los platos/elaboraciones finales muestran en todo momento los alérgenos fruto del recálculo basado en sus ingredientes. En caso que un mismo alérgeno aparezca como traza y alérgeno en dos ingredientes distintos se asignará directamente el alérgeno.
En determinados casos también nos puede interesar asignar trazas a nuestros productos finales o intermedios en base a otras producciones que realizamos en la misma partida / instalaciones. Es habitual en aquellos entornos donde se trabaja con harina o frutos secos el asignar estas trazas al resto de productos.
1.1. Rest API : Login
Para poder hacer llamadas a nuestas api's lo primero que ncesitamos 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 authenticar-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 la lista de alérgenos
Para recuperar la lista debemos realizar esta llamada
GET:
https://www.tspoonlab.com/recipes/api/listAllergiesPaged?filter=&rows=50&start=0
El parámetro filter nos permite filtrar por descripción, rows es el número de filas que queremos obtener y start la primera fila a devolver
La petición nos devuelve un array con el id y descripón de cada alérgeno
[
{
id:"194443382822263016755563050734447984070",
descr:"Altramuces"
},
{
id:"181691964862034253332266321442051901807",
descr:"Apio"
}
....
]
1.4. Rest API : Recuperar un alérgeno
Para obtener los datos debemos utilizar el id conseguido en la petición anterior y realizar esta llamada
GET:
https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}/components/num/{numChild}
El parámetro idAllergy nos indica la alergia a recuperar.
La información retornada incluye también que productos base (ingredientes) y que productos elaborados tienen esa alergia. El parámetro numChild indica cuantos productos que tienen ese alérgeno queremos retornar en la petición.
class Allergy {
String id;
String descr;
String comment;
List<AllergyComponent> listComponentBase;
List<AllergyComponent> listComponentComplex;
}
class AllergyComponent {
String id;
String descr;
String idComponent;
boolean traces;
private int type;
private Long color;
}
En AllergyComponent el id identifica la relación entre un alérgeno y un componente.
El idComponent nos indica el componente al que está vinculado este alergeno, descr es el nombre del componente y el campo traces nos indica si se trata de un alérgeno o de una traza.
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
Si para esta alergia queremos recuperar más productos base o productos elaborados debemos llamar a
GET https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}/base/{isBase}/components/paged?filter=&rows=20&start=20
Donde los parámetros filter, rows y start siguen los criterios que ya hemos explicado. idAllergy es el identificador del alérgeno y isBase nos indica si queremos recuperar producto base o producto elaborado (toma los valores true, false).
Retorna una lista de AllergyComponent
1.5. Rest API : Crear un alérgeno
Para crear un alérgeno debemos llamar a
POST https://www.tspoonlab.com/recipes/api/allergy
pasando en el request body
class NewAllergy {
String descr;
String comment;
}
descr y comment son la descripción y comentario del alérgeno
1.6. Rest API : Modificar un alérgeno
Para modificar un alérgeno debemos llamar a
PUT https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}
pasando en el request body
class NewAllergy {
String descr;
String comment;
}
1.7. Rest API : Eliminar un alérgeno
Para elminar un alérgeno debemos llamar a
DELETE https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}
La alergia se borrara de todos los productos base que la tengan asignada (como alérgeno o com traza) y de todos aquellos productos elaborados que utilizen ese ingrediente.
1.8. Rest API : Asignar un alérgeno a un producto
LLamaremos a
POST
https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}/components/add
Pasando en el request body
class NewAllergyComponentsWrapper {
List<NewAllergyComponent> components;
}
public class NewAllergyComponent {
String id; // con valor null
String idComponent;
boolean traces;
}
En id no estableceremos ningun valor y se dejara a null. idComponent es el producto al que queremos asignar la alergia y traces nos indica si es una traza.
La petición devolverá la lista de todos los productos base y productos elaborados donde se ha añadido directa o indirectamente la alergia
class AllergyGroup {
List<AllergyComponent> listComponentBase;
List<AllergyComponent> listComponentComplex;
}
Allergy component ya se ha explicado con anterioridad
1.9. Rest API : Desasignar un alérgeno a un producto
Para desasignar llamaremos a
POST
https://www.tspoonlab.com/recipes/api/allergy/{idAllergy}/components/remove
En el request body pasaremos
class NewAllergyComponentsWrapper {
List<DeleteAllergyComponent> components;
}
public class DeleteAllergyComponent {
String id;
}
El id se corresponde al identificador de la alergia con el componente
Retornará una lista de totos los productos donde se ha desasignado la alergia
retorna un List<ComponentWithType>
class ComponentWithType {
String id;
String descr;
int type;
Long color;
}
id es el identificador del componente/producto , descr la descripción
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