Solicitudes
Reglas que se aplican a cada solicitud: parámetros de consulta, idiomas, IDs, formato, conexión y límites de tamaño.
Parámetros de consulta
Estos parámetros se pueden añadir a la mayoría de los endpoints para controlar la respuesta.
full-resource
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Devuelve la respuesta JSON completa con todos los campos |
false | Sí | Devuelve una respuesta mínima (ahorra ancho de banda) |
Cuándo usarlo: poned full-resource=true cuando necesitéis todos los valores calculados. Usad false (por defecto) para respuestas más rápidas cuando solo necesitéis las métricas principales (rating, co2-value).
Campos incluidos solo con full-resource=true:
- Desglose detallado por ingrediente
- Todos los valores nutricionales
- Porcentajes de mejora
- Valores de reducción
indicators
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Incluye el VitaScore y los indicadores ambientales |
false | Sí | Excluye los indicadores adicionales |
Cuándo usarlo: poned indicators=true cuando necesitéis la puntuación nutricional (VitaScore) o métricas ambientales (huella hídrica, selva tropical, bienestar animal, estacionalidad, origen local).
Campos adicionales con indicators=true:
vita-score-points,vita-score-rating,vita-score-awardwater-footprint-rating,scarce-water-litersrainforest-label,rainforest-ratinganimal-treatment-label,animal-treatment-ratingseason-label,season-ratinglocal-label,local-rating
nutrient-values
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Incluye nutrient-values-estimated-per-specified-amount para cada ingrediente |
false | Sí | Excluye las estimaciones de valores nutricionales |
ingredients-declaration
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Incluye los datos analizados de ingredients-declaration para cada ingrediente |
false | Sí | Excluye los datos de la declaración de ingredientes |
return-uids
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Incluye los campos internos uid en la respuesta para recetas e ingredientes |
false | Sí | Excluye los UIDs internos |
transient (parámetro de consulta)
| Valor | Por defecto | Descripción |
|---|---|---|
true | No | Cada receta de la solicitud es transitoria: se calcula y se devuelve, pero no se guarda ni se cuenta en los informes |
false | Sí | Las recetas se guardan y se cuentan, salvo que un elemento del lote ponga "transient": true |
El campo del body en un elemento del lote tiene el mismo significado para esa receta concreta. Ver Recetas transitorias.
Localización
La API está diseñada para que una solicitud pueda contener información sobre un objeto (p. ej. una receta o un suministro) en varios idiomas. Cada campo JSON sujeto a localización tiene como valor un array de idiomas:
{
"language": "de",
"value": "Kürbisrisotto"
}
El campo language debe contener uno de los códigos alfa-2 de ISO 639-1.
Generación de IDs
Los IDs de recetas, cocinas y suministros se pueden generar de dos formas:
- Solicitud POST: Eaternity genera el ID
- Solicitud PUT: proporcionáis vuestro propio ID en la URL (recomendado)
El ID puede ser cualquier valor alfanumérico que siga este patrón regex: [-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]
Formato
- La API acepta JSON en las solicitudes y devuelve JSON en todas las respuestas
- Solo se admite la codificación de caracteres UTF-8
- Todas las solicitudes deben estar cifradas mediante SSL
SSL y Server Name Indication (SNI)
Como Eaternity usa servidores distribuidos, la dirección IP del servicio cambia y se comparte entre distintas aplicaciones.
Para que SSL funcione, el hostname deseado (co2.eaternity.ch) debe indicarse en cada solicitud según la especificación SNI:
openssl s_client -connect co2.eaternity.ch:443 -servername co2.eaternity.ch
Recomendamos añadir a la lista blanca el certificado raíz de Cloudflare cloudflare_origin_rsa.pem.
Límites de tamaño de las solicitudes
Los endpoints de recetas y suministros están sujetos a dos tipos de límites de tamaño:
- Límites blandos: las solicitudes no deberían superar estos límites; las solicitudes más grandes pueden fallar o ser rechazadas. La solicitud se sigue procesando, pero sin garantías.
- Límites estrictos: la solicitud (o, en las rutas de lote, el elemento individual) se rechaza con 413 Payload Too Large.
Recetas
| Descripción | Se aplica a | Límite blando |
|---|---|---|
| Ingredientes por receta (recuento directo) | Rutas de una sola receta, y cada elemento de un lote de recetas | 100 |
| Ingredientes por receta, incluidas las subrecetas (recuento recursivo) | Solo lote de recetas | 150 |
| Recetas por solicitud de lote | Lote de recetas | 100 |
Suministros
| Descripción | Se aplica a | Límite blando |
|---|---|---|
| Ingredientes por suministro (recuento directo) | Rutas de un solo suministro que esperan un resultado | 100 |
| Suministros por solicitud de lote | Lote de suministros | 5000 |
| Ingredientes de todos los suministros de una solicitud de lote (recuento directo) | Lote de suministros | 10000 |