Introducción
EL sistema de kiwilimon permite al chef manejar una lista del súper. a lista es única para cada chef, es decir que no la accederemos por clave.
Para recuperar una lista del súper es suficiente solicitarlo a la API con el token del chef conectado. De la misma manera, podemos modificar o borrar la lista con los métodos POST y DELETE.
Hay ingredients de recetas ( que tienen un pasillo), ingredientes extras e ingredientes descartados.
Los ingredientes extras son capturados a mano, y si se descartam se borran físicamente.
Los ingrediente se pueden "palomear", en este momento se iluminan para decir "ya los compre". Se puede cambiar el estatus en cualquier momento (switch on/off)
Los ingredientes de recetas se pueden descartar y entran en la lista de descartados, es decir que se pueden recuperar en la receta correspondiente "quitando el estatus descartado" (switch on/off).
La vista por pasillo se basa en agrupar los ingrediente por pasillo en vez de por recetas. La lista de pasillos completos se obtiene con el servicio 'ingredientepasillos'.
Recurso 'data'
Los datos de la lista del súper se obtienen consumiendo el recurso siguiente:
[GET] /v2/listasuper/:Token/data.json
:Token es el token del chef conectado.
El sistema regresará los datos de la lista solicitada:
{"recetas":
{"0": { "clave":23600,
"nombre":"Pan \u00e1rabe con Pollo Pita y Yoghurt ",
"ingredientes":
[ { INGREDIENTE1,
INGREDIENTE2,
...
]
},
"1": { "clave":23553,
"nombre":"Wok de Pollo con Verduras",
"ingredientes":
[ { INGREDIENTE1,
INGREDIENTE2,
...
]
}
},
"-1":
{ "nombre":"Ingredientes extras",
"ingredientes":
[ { INGREDIENTE1,
INGREDIENTE2,
...
}
]
}
"-2":
{ "nombre":"Ingredientes descartados",
"ingredientes":
[ { INGREDIENTE1,
INGREDIENTE2,
...
}
]
}
}
Los campos a considerar son:
clave: la clave de la receta en la lista de recetas
nombre: el nombre de la receta en la lista de recetas, o el nombre "Ingredientes extras" (fijo).
ingredientes: la lista de ingredientes de la receta o extras.
Los ingredientes tienen el formato siguiente:
{
"clave":295536,
"nombrecompuesto":"1 rama de menta ",
"pasillo":94,
"checado":true
}
clave: es la clave de este ingrediente dentro de la lista del súper.
nombrecompuesto: es el nombre del ingrediente.
pasillo: es el pasillo del ingrediente, dado por el recurso ingredientepasillos, que puede ser cacheado. Si un pasillo llegará a faltar dentro de este caché entonces se puede solicitar el servicio para actualizarlo, si llegará a ser el caso. Este campo es OPCIONAL, es decir que los ingredientes extras no tienen pasillo.
checado: contiene true o 1 si el ingrediente tiene una palomita, false, 0, o ausente si no tiene palomita.
Recurso PUT
Este recurso permite agregar una receta o un ingrediente extra.
Se puede enviar una clave de receta o un nombre de ingrediente extra. Si se envian los dos, solamente la receta es tratada.
Si no envia ninguno de los dos, entonces regresa un error.
Los parámetros a enviar al PUT son los siguientes:
token = el token del chef conectado.
nombre = el nombre del ingrediente extra. Opcional contra la receta.
receta = la clave de la receta a insertar. Opcional contra el ingrediente extra.
formato: Es el formato en el cual queremos los resultados. Es uno de 'json', 'xml' o 'txt. Es un parámetro opcional, y si no esta especificado regresa un JSON por defecto.
En caso de un ingrediente extra, si todo funciona bien, el servicio regresa:
{"estatus":"OK", "claveextra":244832 }
donde
claveextra es la clave del ingrediente extra para poder tratarlo ulteriormente (cambiar palomita, borrarlo) ya que este evento ocurre dentro de la lista del super.
En caso de una receta, si todo funciona bien, el servicio regresa:
{"estatus":"OK", "clave":244832 }
donde
clave es la clave de la receta insertada en la lista del super para poder tratarla ulteriormente (borrarla)
En caso de error, el servicio regresa el siguiente formato:
{"estatus":"Error","message":"Mensaje del error"}
estatus = Error, invariable.
message = el mensaje del error.
Recurso POST
Este recurso permite modificar el estatus activo/no activo de un ingredient. El estatus activo es normalmente usado para denotar "ya lo compre" en la lista del súper.
Se envia la clave del ingrediente y el estatus de activación.
Los parámetros a enviar al POST son los siguientes:
token = el token del chef conectado.
clave = la clave del ingrediente en la lista del súper.
estatus = el estatus deseado: 0 = desactivado, 1 = activado.
formato: Es el formato en el cual queremos los resultados. Es uno de 'json', 'xml' o 'txt. Es un parámetro opcional, y si no esta especificado regresa un JSON por defecto.
Si todo funciona bien, el servicio regresa:
{"estatus":"OK", "activo":1 }
donde
activo es el estatus puesto, 0 o 1.
En caso de error, el servicio regresa el siguiente formato:
{"estatus":"Error","message":"Mensaje del error"}
estatus = Error, invariable.
message = el mensaje del error.
Recurso DELETE
Este recurso permite borrar ingredientes, recetas o toda la lista del súper según el formato como se usa.
Los formatos posibles son:
DELETE /v2/listasuper/:token/receta/:clave/:formato para quitar una receta
DELETE /v2/listasuper/:token/ingrediente/:clave/:formato para quitar un ingrediente
DELETE /v2/listasuper/:token/extra/:clave/:formato para quitar un ingrediente extra
DELETE /v2/listasuper/:token/todo/0/:formato para vaciar la lista
En todos los casos,
:token es el token del chef conectado;
y
:formato es el formato en el cual queremos los resultados. Es uno de 'json', 'xml' o 'txt. Es un parámetro obligatorio.
Caso 1: quitar una receta:
:clave es la clave de la receta a borrar.
La receta y todos sus ingredientes son borrados de la lista del super.
Ojo: la clave de la receta no es la clave primaria de la receta en sí, pero el campo "listasuperdetalle" del recurso GET; es decir la clave de la receta dentro de la lista de súper.
Caso 2: quitar un ingrediente:
:clave es la clave del ingrediente de la lista.
En este caso el ingrediente no es fisicamente borrado, pero enviado a la lista de ingredientes descartados. Si este ingrediente ya estaba en la lista de descartados, regresa a los ingredientes activos (es como un switch ON/OFF)
Caso 3: quitar un ingrediente extra:
:clave es la clave del ingrediente extra de la lista.
En este caso el ingrediente es fisicamente borrado.
Caso 4: vaciar la lista:
No se usa clave (se deja en 0 el campo para ocupar la misma sintaxis)
En este caso la lista es completamente vaciada
Si todo funciona bien, el servicio regresa:
{"estatus":"OK"}
En caso de error, el servicio regresa el siguiente formato:
{"estatus":"Error","message":"Mensaje del error"}
estatus = Error, invariable.
message = el mensaje del error.