Saltar al contenido principal

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​

ValorPor defectoDescripción
trueNoDevuelve la respuesta JSON completa con todos los campos
falseSí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​

ValorPor defectoDescripción
trueNoIncluye el VitaScore y los indicadores ambientales
falseSí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-award
  • water-footprint-rating, scarce-water-liters
  • rainforest-label, rainforest-rating
  • animal-treatment-label, animal-treatment-rating
  • season-label, season-rating
  • local-label, local-rating

nutrient-values​

ValorPor defectoDescripción
trueNoIncluye nutrient-values-estimated-per-specified-amount para cada ingrediente
falseSíExcluye las estimaciones de valores nutricionales

ingredients-declaration​

ValorPor defectoDescripción
trueNoIncluye los datos analizados de ingredients-declaration para cada ingrediente
falseSíExcluye los datos de la declaración de ingredientes

return-uids​

ValorPor defectoDescripción
trueNoIncluye los campos internos uid en la respuesta para recetas e ingredientes
falseSíExcluye los UIDs internos

transient (parámetro de consulta)​

ValorPor defectoDescripción
trueNoCada receta de la solicitud es transitoria: se calcula y se devuelve, pero no se guarda ni se cuenta en los informes
falseSí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:

  1. Solicitud POST: Eaternity genera el ID
  2. 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ónSe aplica aLímite blando
Ingredientes por receta (recuento directo)Rutas de una sola receta, y cada elemento de un lote de recetas100
Ingredientes por receta, incluidas las subrecetas (recuento recursivo)Solo lote de recetas150
Recetas por solicitud de loteLote de recetas100

Suministros​

DescripciónSe aplica aLímite blando
Ingredientes por suministro (recuento directo)Rutas de un solo suministro que esperan un resultado100
Suministros por solicitud de loteLote de suministros5000
Ingredientes de todos los suministros de una solicitud de lote (recuento directo)Lote de suministros10000