openapi: 3.2.0 info: title: Open Food Facts Products API version: '1.0' description: 'Operations tagged Products across 4 of this provider''s published API definitions: open-food-facts-api-v2-openapi.yml, open-food-facts-api-v3-openapi.yml, open-food-facts-folksonomy-openapi.json, open-food-facts-open-prices-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - description: dev url: https://world.openfoodfacts.net - description: prod url: https://world.openfoodfacts.org - description: proxy (for doc purpose) url: http://localhost:8080 - url: https://api.folksonomy.openfoodfacts.org description: Production server - url: http://localhost:8000 description: Local development server tags: - name: Products description: Endpoints for managing product data and information. paths: /api/v2/product/{code}: get: tags: - Products summary: Get Product Details description: 'Fetches product details by its unique barcode. Can return all product details or specific fields like knowledge panels. Use the `blame` parameter to include information about who last modified each field of the product.' operationId: get-product-by-code parameters: - name: code in: path description: The barcode of the product to be fetched required: true style: simple explode: false schema: type: string examples: - '3017620422003' - name: product_type in: query description: 'Used for READ queries for one product. Expected product type of the requested product. Defaults to the product type of the server the query is sent to (e.g. ''food'' for Open Food Facts, ''beauty'' for Open Beauty Facts, etc.). ''all'' matches all product types. If the product exists on a different server that matches the requested product type, the API will return a 302 redirect to the correct server. Otherwise, the API will return a 404 error. It is possible that new product types will be added in the future. ' required: false schema: type: string enum: - all - beauty - food - petfood - product description: Expected product type of the requested product examples: - all - food - name: cc in: query description: 2 letter code of the country of the user. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the country may be inferred by the IP address of the request. required: false schema: type: string example: us - name: lc in: query description: '2 letter code of the language of the user. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the language may be inferred by the domain name prefix. ' required: false schema: type: string example: fr - name: fields in: query description: Specific fields to return. Use 'knowledge_panels' for Knowledge Panels only. required: false schema: type: string pattern: ^[a-zA-Z0-9_.-]+(,[a-zA-Z0-9_.-]+)*$ description: Custom comma-separated list of product field names examples: - knowledge_panels - knowledge_panels,product_name,nutriments - categories_tags,packaging_tags - allergens_tags,nutriscores - images,brands_tags,categories_tags,countries_tags,languages_tags,ecoscore_tags - name: knowledge_panel_client in: query description: 'Client requesting knowledge panels. Used to customize which knowledge panels are returned. Example values: "web", "mobile". Defaults to "app" for all API requests, and "web" for all other requests.' required: false schema: type: string example: web - name: activate_knowledge_panels_simplified in: query description: If true, knowledge panels will include the simplified_root knowledge panel its simplified sub-panels (e.g. simplified health and environment cards) required: false schema: type: boolean example: true - name: activate_knowledge_panel_physical_activities in: query description: If true, knowledge panels will include the physical activities panel required: false schema: type: boolean example: true - name: knowledge_panels_included in: query description: 'When knowledge_panels are requested, you can specify which panels should be in the response. All the others will be excluded. ' required: false schema: type: string example: health_card, environment_card - name: knowledge_panels_excluded in: query description: 'When knowledge_panels are requested, you can specify which panels to exclude from the response. All the others will be included. If a panel is both excluded and included (with the knowledge_panels_excluded parameter), it will be excluded. ' required: false schema: type: string example: health_card, environment_card - name: blame in: query description: 'Include blame information in the response showing who last modified each field of the product. The blame information contains the user ID, timestamp, revision number, and value for each field. Set to a non-empty and non-0 value (e.g. 1 or true) to enable. ' required: false schema: type: string examples: - '1' - 'true' responses: '200': description: OK content: application/json: schema: title: get_product_by_barcode_all_response oneOf: - type: object title: get_product_by_barcode_response allOf: - type: object title: get_product_by_barcode_base_response properties: code: type: string description: "Barcode of the product\n(can be EAN-13 or internal codes for some food stores).\nFor products without a barcode, Open Food Facts assigns a \nnumber starting with the 200 reserved prefix.\n" status: type: integer enum: - 0 - 1 description: Return values based on ProductOpener/Display.pm analysis status_verbose: type: string - type: object properties: product: type: object title: product description: 'This is all the fields describing a product and how to display it on a page. Refer to the different sub schema for more readable entries: * [Product Base](#cmp--schemas-product-base): Base fields of a product * [Product Misc](#cmp--schemas-product-misc): Miscellaneous but important fields of a product * [Product Tags](#cmp--schemas-product-tags): Tags fields on a product * [Product Images](#cmp--schemas-product-images): Information about Images of a product * [Product Eco-Score](#cmp--schemas-product-ecoscore): Fields related to Eco-Score for a product * [Product Ingredients](#cmp--schemas-product-ingredients): Fields about ingredients of a product * [Product Nutrition](#cmp--schemas-product-nutrition): Nutrition fields of a product * [Product Data Quality](#cmp--schemas-product-quality): fields related to data quality for a product * [Product Extended](#cmp--schemas-product-extended): TODO * [Product Metadata](#cmp--schemas-product-meta): Metadata of a product (author, editors, etc.) * [Product Knowledge Panels](#cmp--schemas-product-knowledge-panels): Knowledge panels for a product * [Product Attribute Groups](#cmp--schemas-product-attribute-groups): Attribute groups for personal product matching ' allOf: - type: object description: 'Base product data ' required: - code - schema_version allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product properties: product_name: type: string description: "The name of the product in the main language of the product (lang field) \n" abbreviated_product_name: type: string description: Abbreviated product name (e.g. abbreviated product name printed on receipts) in the main language of the product (lang field) code: type: string description: 'barcode of the product (can be EAN-13 or internal codes for some food stores), for products without a barcode, Open Food Facts assigns a number starting with the 200 reserved prefix ' codes_tags: type: array items: type: string description: 'A value which is the type of barcode "code-13" or "code-8" and A series of mask for the barcode It helps retrieve barcodes starting by ' examples: - code-13 - 3017620422xxx - 301762042xxxx - 30176204xxxxx - 3017620xxxxxx - 301762xxxxxxx - 30176xxxxxxxx - 3017xxxxxxxxx - 301xxxxxxxxxx - 30xxxxxxxxxxx - 3xxxxxxxxxxxx generic_name: type: string description: 'Generic / legal name of the product in the main language of the product (lang field) ' id: description: 'internal identifier for the product, usually set to the value of `code`, except on the producers platform where it is prefixed by the owner ' type: string lc: type: string description: 'Main language of the product. This is a duplicate of `lang` property (for historical reasons). ' lang: type: string description: 'Main language of the product. This should be the main language of product packaging (if one is predominant). Main language is also used to decide which ingredients list to parse. ' nova_group: type: integer description: 'Nova group as an integer from 1 to 4. See https://world.openfoodfacts.org/nova ' nova_groups: type: string obsolete: type: string obsolete_since_date: description: 'A date at which the product was declared obsolete. This means it''s not produced any more. ' type: string product_quantity: type: string description: 'The size in g or ml for the whole product. It is a normalized version of the `quantity` field. A `quantity` of "2 x 60 g" leads to `product_quantity`: "120". ' example: '500' product_quantity_unit: type: string description: 'The unit (either g or ml) for the corresponding `product_quantity`. It is computed from the `quantity` field. A `quantity` of "6 x 250 ml" leads to `product_quantity_unit`: "ml". ' example: g quantity: type: string description: 'The quantity of the product, with the corresponding number of portions or unit (g, ml, kg, l, cl, oz, lbs...). It should be the value as displayed on the product. The ℮ sign is allowed. When it refers to the number of portions, it can be filled without any units (e.g. "6 eggs"). ' example: 3 x 150 g schema_version: type: integer description: 'Version of the product object schema used in the response. This indicates the structure of the ''product'' field itself. For more details, please read: https://openfoodfacts.github.io/openfoodfacts-server/api/ref-api-and-product-schema-change-log ' example: 999 patternProperties: product_name_(?\w\w): type: string description: 'Product name in language designated by `language_code`, e.g. product_name_fr ' abbreviated_product_name_(?\w\w): type: string description: Abbreviated product name in language `language_code`. generic_name_(?\w\w): type: string description: 'Generic/legal name in language designated by `language_code`, e.g. generic_name_en. ' - type: object title: product_misc description: 'Miscellaneous but important fields of a product ' properties: additives_n: type: integer description: 'Number of food additives. ' checked: type: string complete: type: integer completeness: type: number ecoscore_grade: type: string description: 'See also: `ecoscore_tags` ' ecoscore_score: type: integer description: 'See also: `ecoscore_tags` ' food_groups: type: string food_groups_tags: type: array items: type: string nutrient_levels: description: 'Traffic light indicators on main nutrients levels ' type: object properties: fat: type: string enum: - low - moderate - high salt: type: string enum: - low - moderate - high saturated-fat: type: string enum: - low - moderate - high sugars: type: string enum: - low - moderate - high packaging_text: type: string description: 'Recycling instructions as raw text, e.g. Plastic bottle to recycle, Plastic cap to recycle. This will get automatically parsed and will be used to compute the Eco-Score. You can either request it (if it exists) or send it in a specific language. ' example: packaging_text_en packagings: type: array title: Packagings (READ) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/ The shape, material and recycling properties of each packaging component are linked to entries in the packaging_shapes, packaging_materials and packaging_recycling taxonomies: https://world.openfoodfacts.org/data/taxonomies/packaging_shapes.json https://world.openfoodfacts.org/data/taxonomies/packaging_materials.json https://world.openfoodfacts.org/data/taxonomies/packaging_recycling.json If the tags_lc field is set, the properties will include a lc_name field with the translation in the requested language.' examples: - - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified items: description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties are mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies, and the value of the property is the canonical name of the taxonomy entry (e.g. en:bottle). They may contain values that could not yet get matched to their respective taxonomy, in which case they will contain a free text value prefixed with the language code of this text value (e.g. "fr:Bouteille sphérique" might have been entered by a French user to indicate it is a spherical bottle).' title: Packaging component (READ) type: object examples: - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified properties: number_of_units: type: integer description: umber of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape x-stoplight: id: xrj8agza3dwgf type: object description: The shape property is canonicalized using the packaging_shapes taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_shapes taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. material: title: Packaging component material type: object description: The material property is canonicalized using the packaging_materials taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_material taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. recycling: title: Packaging component recycling instruction x-stoplight: id: 376tk8e2cmyh2 type: object description: The recycling property is canonicalized using the packaging_recycling taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_recycling taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) quantity_per_unit_value: type: number description: Value parsed from the quantity field. quantity_per_unit_unit: type: string description: Unit parsed and normalized from the quantity field. weight_specified: type: number description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_measured: type: number description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_estimated: type: number description: Weight (as estimated from similar products) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight: type: number description: Weight of one unit of the empty packaging component. weight_source_id: type: string description: Indicates which field was used to populate the "weight" field. Either "specified", "measured", or "estimated" readOnly: true packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. pnns_groups_1: description: 'Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_1_tags: type: array items: type: string pnns_groups_2: description: 'Sub Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_2_tags: type: array items: type: string popularity_key: description: 'An imprecise measurement of popularity based on Scan statistics. A higher value means higher popularity. ' type: integer popularity_tags: description: "Indicators for the popularity of a product, like the amount of scans in a specific year.\n`popularity_tags` values from previous years are kept, if there is no popularity_tags at all, then it was never popular.\nThis field must be used with care. In countries where Open Food Facts is not widely used, \na product may obtain the value \"top-90-percent-scans-2021\" with a single scan.\n" type: array items: type: string example: - bottom-25-percent-scans-2020 - top-85-percent-scans-2021 - top-90-percent-scans-2022 - top-country-it-scans-2019 - top-100000-mg-scans-2024 scans_n: type: integer description: "Number of scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded). This value is computed once a year by scanbot.pl.\nIt is possible that a product has never been scanned at all: `scans_n` is not given in this case.\nSee also `unique_scans_n` field.\n" unique_scans_n: type: integer description: "Number of unique scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded).\nUnique scans means it is based on different IPs.\nThis value is computed once a year by scanbot.pl.\nSee also `scans_n` field.\n" serving_quantity: type: string description: 'Normalized version of serving_size. Note that this is NOT the number of servings by product. (in perl, see `normalize_serving_size`) ' serving_quantity_unit: type: string description: 'The unit (either g or ml) for the correponding serving_quantity. ' example: g serving_size: type: string description: 'Serving size text (generally in g or ml). We expect a quantity + unit but the user is free to input any string. ' patternProperties: food_groups_(?\w\w): type: string description: see `food_groups` packaging_text_(?\w\w): type: string description: 'Packaging text in language designated by `language_code` ' - type: object description: 'Data about a product which is represented as tags ' allOf: - type: object title: Product Base Tags properties: brands: type: string description: 'Comma separated list of brands (not taxonomized), in the last language used to edit it (recorded in brands_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' brands_tags: type: array description: "An array of indexed brands tag entries (for search).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' categories: type: string description: 'Comma separated list of categories (not taxonomized), in the last language used to edit it (recorded in categories_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' categories_tags: type: array description: "An array of indexed categories tag entries (for search).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' checkers_tags: type: array items: type: string description: List of checkers (users who checked the product) tags cities: type: string cities_tags: type: array items: type: object correctors_tags: type: array items: type: string countries: type: string description: 'List of countries where the product is sold. ' countries_tags: type: array items: type: string ecoscore_tags: description: 'All ecoscore of a product. Most of the time it''s only one value, but it might eventually be more for products composed of sub-products. See also: `ecoscore_score`, `ecoscore_grade`. ' type: array items: type: string emb_codes: type: string description: 'Packager code. EMB is the French system of traceability codes for packager. ' example: EMB 2013330 emb_codes_tags: type: array items: type: object labels: type: string labels_tags: type: array items: type: string entry_dates_tags: description: 'The data as a series of tag: `yyyy-mm-dd`, `yyyy-mm`, `yyyy` ' type: array items: type: string examples: - - '2016-03-11' - 2016-03 - '2016' manufacturing_places: type: string description: 'Places where the product was manufactured or transformed. ' manufacturing_places_tags: type: array items: type: string nova_groups_tags: type: array items: type: string nutrient_levels_tags: type: array items: type: string - type: object properties: brands_hierarchy: type: array description: "An array of brands tag entries (for display and editing).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (as-is, with no normalization).\n\nThis is the field that should be used for display purposes, as it is not lossy.\n" items: title: Canonicalized taxonomy tag entry type: string description: 'A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") -> for entries that could not be matched to a taxonomy entry' brands_lc: type: string description: Language code of the last edit for brands categories_hierarchy: type: array description: "An array of categories tag entries (for display and editing).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (as-is, with no normalization).\n\nThis is the field that should be used for display purposes, as it is not lossy.\n" items: title: Canonicalized taxonomy tag entry type: string description: 'A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") -> for entries that could not be matched to a taxonomy entry' categories_lc: type: string description: Language code of the last edit for categories countries_hierarchy: type: array items: type: string countries_lc: type: string description: Countries language code emb_codes_orig: type: string labels_hierarchy: type: array items: type: string labels_lc: type: string - type: object title: Product-Images description: 'Information about Images of a product. Images ensure the reliability of Open Food Facts data. It provides a primary source and proof of all the structured data. You may therefore want to display it along the structured information. See also tutorials about images: * [Getting images](https://openfoodfacts.github.io/openfoodfacts-server/api/how-to-download-images/) * [Uploading images](https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-uploading-photo-to-a-product/) ' properties: images: description: 'This contains properties for all images contained on the product. ' type: object title: product_images_properties properties: front: title: image_role type: object description: 'property of an image (or part thereof) selected for a particular role and a particular language. ' properties: angle: type: integer example: 0 description: The angle of the image rotation (if it was rotated). coordinates_image_size: type: string example: full geometry: type: string example: 0x0--1--1 imgid: type: string example: '121' description: The id of the original/source image that was selected to edit(rotate, normalize etc) to produce this new image. normalize: type: - string - boolean - 'null' examples: - null - 'false' - 'true' description: Normalize colors. rev: type: string example: '420' sizes: type: object description: "The available image sizes for the product (both reduced and full). \nThe reduced images are the ones with numbers as the key( 100, 200 etc)\nwhile the full images have `full` as the key.\n" properties: '100': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. '200': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. '400': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. full: type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. white_magic: type: - string - boolean - 'null' examples: - null - 'false' - 'true' description: 'Photo on white background : Try to remove the background. ' x1: type: string example: '-1' x2: type: string example: '-1' y1: type: string example: '-1' y2: type: string example: '-1' additionalProperties: type: object title: image description: 'This object represent an image that was uploaded to a product. "imgid" is an integer which is a sequential number unique to each picture. ' properties: imgid: type: integer example: 123456789 description: "If the image is selected as the front / ingredients / nutrition / packaging image,\nthis is the index to access the original image URL in the `images` field of the product.\nIf the image is not selected as one of these, this field is null.\n\nSo if the product has the following `images` field:\n\n```json\n\"images\": {\n 1: { ... },\n front_en: { imgid: 1, ... },\n ...\n}\n```\n\nthen the front image can be accessed by `images[1]`.\n" sizes: $ref: '#/components/schemas/Sizes' uploaded_t: type: string example: '1457680652' description: 'The time the image was uploaded (as unix timestamp). ' uploader: type: string example: openfoodfacts-contributors description: 'The contributor that uploaded the image. ' propertyNames: type: integer patternProperties: (?\d+): description: 'See property `1` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string (?front|nutrition|ingredients|packaging)_(?\w\w): description: 'See property `front` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string last_image_dates_tags: type: array items: type: string last_image_t: description: timestamp of last image upload (or update?) type: integer selected_images: type: object title: product_selected_images description: 'URL for selected (important) images of the product. This is very handy if you display the product to users. ' properties: front: type: object description: URLs of thumbnails image of image of type `image_type` properties: display: description: 'Thumbnail urls of product image (front) adapted to display on product page ' $ref: '#/components/schemas/ImageUrls' small: description: 'Thumbnail urls of product image (front) adapted to display on product list page ' $ref: '#/components/schemas/ImageUrls' thumb: description: 'Thumbnail urls of product image (front) in smallest format ' $ref: '#/components/schemas/ImageUrls' patternProperties: (?front|packaging|ingredients|nutrition): description: 'See property `front` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string image_small_url: type: string image_thumb_url: type: string image_url: type: string patternProperties: image(_(?front|packaging|ingredients|nutrition))?(_(?small|thumb))?_url: description: 'the URL of image of type `image_type` in size `image_size` (or full size if not given). The `image_type` tells which image the url correspond to. `image_type` is `front` if not provided. The image is the one for current language (affected by `lc` parameter) if an image exists for this language, the image in main product language otherwise. **IMPORTANT:** you should use `selected_images` field instead of this one. ' type: string - type: object description: 'Fields related to Eco-Score for a product. See also: `ecoscore_score`, `ecoscore_grade` and `ecoscore_tags`. ' properties: ecoscore_data: type: object title: product_ecoscore_data description: 'An object about a lot of details about data needed for Eco-Score computation and complementary data of interest. ' properties: adjustments: title: product_ecoscore_adjustments type: object properties: origins_of_ingredients: type: object properties: aggregated_origins: type: array description: List of aggregated origins of ingredients and their impact. items: title: adjustments_origin_of_ingredient_aggregated type: object properties: epi_score: type: string origin: type: string description: Country or region of origin for the ingredient. percent: type: integer description: Percentage of this ingredient from the specified origin. transportation_score: type: - 'null' - integer description: Transportation score associated with this ingredient's origin. epi_score: type: integer description: Environmental Performance Index (EPI) score for the ingredient's origin. epi_value: type: integer origins_from_categories: type: array description: List of origins derived from product categories, eg for PDO. items: type: string origins_from_origins_field: type: array description: List of origins explicitly stated in the product's origins field. items: type: string transportation_score: type: integer transportation_scores: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 transportation_value: type: integer transportation_values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 value: type: integer values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 warning: type: string packaging: type: object properties: non_recyclable_and_non_biodegradable_materials: type: integer packagings: type: array items: type: object title: adjustments_packaging_item properties: ecoscore_material_score: type: integer ecoscore_shape_ratio: type: integer material: type: string shape: type: string number_of_units: type: integer examples: - 1 quantity_per_unit: type: string description: The quantity per packaging unit, as a string. examples: - 33 cL quantity_per_unit_unit: type: string examples: - cl quantity_per_unit_value: type: number examples: - 33 recycling: type: string examples: - en:recycle-in-sorting-bin weight_measured: type: number examples: - 12.08 score: type: integer value: type: integer warning: type: string production_system: type: object properties: labels: type: array examples: - vegan - fat free - Kosher items: type: string value: type: integer warning: type: string threatened_species: type: object properties: ingredient: type: string value: type: integer agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string grade: type: string grades: type: object patternProperties: (?\w\w): type: string missing: type: object properties: labels: type: integer origins: type: integer packagings: type: integer missing_data_warning: type: integer previous_data: type: object properties: grade: type: - string - 'null' score: type: - integer - 'null' agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string score: type: integer scores: type: object patternProperties: (?\w\w): type: integer status: type: string ecoscore_extended_data_version: type: string environment_impact_level: type: string environment_impact_level_tags: type: array items: type: object - type: object title: product_ingredients description: Fields about ingredients of a product properties: additives_tags: type: array items: type: string allergens: type: string description: comma separated list of allergens allergens_lc: type: string description: language in which `allergens` where input allergens_hierarchy: type: array items: type: string allergens_tags: type: array items: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: type: object title: ingredient properties: id: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: description: 'circular reference omitted during bundling: ./ingredient.yaml' percent: type: integer description: The percentage of the ingredient. percent_estimate: type: number description: Estimated percentage of the ingredient. percent_max: type: - string - number description: Maximum percentage of the ingredient. percent_min: type: integer description: Minimum percentage of the ingredient. text: type: string description: Text description of the ingredient. vegan: type: string description: Indicates if the ingredient is vegan. vegetarian: type: string description: Indicates if the ingredient is vegetarian. ingredients_analysis: type: object properties: en:palm-oil: type: array items: type: string en:vegan-status-unknown: type: array items: type: string en:vegetarian-status-unknown: type: array items: type: string ingredients_analysis_tags: type: array items: type: string ingredients_from_or_that_may_be_from_palm_oil_n: type: integer ingredients_from_palm_oil_n: type: integer ingredients_from_palm_oil_tags: type: array items: type: object ingredients_hierarchy: type: array items: type: string ingredients_n: type: integer ingredients_n_tags: type: array items: type: string ingredients_original_tags: type: array items: type: string ingredients_percent_analysis: type: integer description: 'Indicates the result of ingredients analysis processing * not present -> we didn''t run ingredient percent analysis (e.g. we have no ingredients) * 1: we estimated the ingredients percent. * -1 : we tried to estimate the ingredients, but the values were impossible. (e.g. if the sum of % is above 100%) ' ingredients_sweeteners_n: type: integer description: 'Number of sweeteners additives in the ingredients. Undefined if ingredients are not specified. ' ingredients_non_nutritive_sweeteners_n: type: integer description: 'Number of non-nutritive sweeteners additives (as specified in the Nutri-Score formula) in the ingredients. Undefined if ingredients are not specified. ' ingredients_tags: type: array items: type: string ingredients_lc: type: string description: 'Language that was used to parse the ingredient list. If `ingredients_text` is available for the product main language (`lang`), `ingredients_lc=lang`, otherwise we look at `ingredients_text` fields for other languages and set `ingredients_lc` to the first non-empty `ingredient_text`. ' ingredients_text: type: string description: 'Raw list of ingredients. This will get automatically parsed and get used to compute the Eco-Score or find allergens, etc.. It''s a copy of ingredients_text in the main language of the product (see `lang` proprety). ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_text_with_allergens: type: string description: 'Same text as `ingredients_text` but where allergens have HTML elements around them to identify them ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_that_may_be_from_palm_oil_n: type: integer ingredients_that_may_be_from_palm_oil_tags: type: array items: type: object ingredients_with_specified_percent_n: type: integer ingredients_with_specified_percent_sum: type: integer ingredients_with_unspecified_percent_n: type: integer ingredients_with_unspecified_percent_sum: type: integer known_ingredients_n: type: integer origins: type: string description: 'Origins of ingredients ' origins_hierarchy: type: array items: type: object origins_lc: type: string origins_tags: type: array items: type: object traces: type: string description: 'List of substances that might cause allergies that are present in trace amounts in the product (this does not include the ingredients, as they are not only present in trace amounts). It is taxonomized with the allergens taxonomy. Refer to the [allergens taxonomy](https://static.openfoodfacts.org/data/taxonomies/allergens.json) ' traces_hierarchy: type: array items: oneOf: - type: object - type: string traces_lc: type: string traces_tags: type: array items: oneOf: - type: object - type: string unknown_ingredients_n: type: integer patternProperties: ingredients_text_(?\w\w): type: string description: 'Raw list of ingredients in language given by ''language_code''. See `ingredients_text` ' ingredients_text_with_allergens_(?\w\w): description: 'Like `ingredients_text_with_allergens` for a particular language ' type: string - type: object title: product_nutrition description: 'Nutrition fields of a product Most of these properties are read-only. See [how to add nutrition data](https://openfoodfacts.github.io/openfoodfacts-server/api/ref-cheatsheet/#add-nutrition-facts-values-units-and-base) ' properties: no_nutrition_data: type: string description: 'When a product does not have nutrition data displayed on the packaging, the user can check the field "Nutrition facts are not specified on the product". By doing so, the no_nutrition_data field takes the value "on". This case is frequent (thousands of products). ' example: 'on' nutrition_data_per: type: string enum: - serving - 100g description: 'The nutrition data on the package can be per serving or per 100g. This is essential to understand if `_value` and `` values in `nutriments` applies for a serving or for 100g. **IMPORTANT:** When writing products, this setting applies to all existing nutrients values for the product, not only the nutrient values sent in the write request. So it should not be changed unless all nutrients values are provided with values that match the nutrition_data_per field. ' nutrition_data_prepared_per: type: string enum: - serving - 100g description: 'The nutrition data for prepared product on the package (if any) can be per serving or per 100g. This is essential to understand if `_prepared_value` and `_prepared` values in `nutriments` applies for a serving or for 100g. See also important note on `nutrition_data_per`. ' nutriments: type: object description: 'All known nutrients for the product. Note that each nutrients are declined with a variety of suffixes like `_100g`, `_serving`, see patternProperties below. A specific `_unit` is the unit of the value that was entered by the contributor (a user or the manufacturer). It is not necessarily the unit that is printed on the product, as some apps may force specific units when writing nutrient values. Beware that some properties are to be interpreted based upon `nutrition_data_per` value. For most use cases, you should use the `_100g` or `_serving` fields, as they are always in the same standard unit, for a specific quantity (100g or 1 serving). For products that have a nutrition table for prepared product (eg. the nutrition facts for a bowl of milk with cocoa powder), a `_prepared` suffix is added (before other suffixes). You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) **FIXME** add more nutrients with description. ' properties: alcohol: description: 'Quantity of alcohol (per 100g or per serving) in a standard unit (g or ml) ' type: number carbohydrates: description: This is the available carbohydrates (excluding fiber), also known as net carbohydrates type: number carbohydrates-total: description: This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates type: number energy: type: number description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' energy_value: type: number description: 'energy_value will be equal to energy-kj_value if we have it or to energy-kcal_value otherwise ' energy_unit: type: string enum: - kcal - kJ description: 'Equal to energy-kj_unit if we have it or to energy-kcal_unit otherwise ' energy-kcal: type: number description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' energy-kj: type: number description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' fat: type: number fruits-vegetables-legumes-estimate-from-ingredients: type: number description: 'An estimate, from the ingredients list of the percentage of fruits, vegetable and legumes. This is an important information for Nutri-Score (2023 version) computation. ' fruits-vegetables-nuts-estimate-from-ingredients: type: number description: 'An estimate, from the ingredients list of the percentage of fruits, vegetable and nuts. This is an important information for Nutri-Score (2021 version) computation. ' nova-group: type: integer nutrition-score-fr: description: 'Experimental nutrition score derived from the UK FSA score and adapted for the French market (formula defined by the team of Professor Hercberg). ' proteins: type: number salt: type: number saturated-fat: type: number sodium: type: number sugars: type: number carbon-footprint-from-known-ingredients_product: type: integer carbon-footprint-from-known-ingredients_serving: type: number erythritol: type: number description: 'erythritol is a polyol which is not providing any energy. As such, it needs not be taken into account when computing the energy of a product. Eryhtritol is now displayed on nutrition facts sheet of some products, mainly in the USA. This value is entered either by contributors, either by imports. ' example: 12.5 patternProperties: (?[\w-]+)_unit: description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product as sold (not prepared).\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n\n**Note**: For most use cases, you should not use this unit, as it can change depending on how the value was entered.\nInstead use the `_100g` or `_serving` fields, and convert them to the unit you need.\n" type: string enum: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg (?[\w-]+)_100g: description: 'The normalized value of the nutrient for 100g (or 100ml for liquids), in a standard unit, for the product as sold (not prepared): * g for all nutrients that are measured by weight (e.g. fat, proteins, carbohydrates, sodium, vitamins, minerals etc.) * % vol for nutrients that are percentages by volume (e.g. alcohol) * kJ for energy and energy-kj * kcal for energy-kcal * no unit for pH This is computed from the `nutrient` property, the serving size (if `nutrient` is per serving), and the `nutrient`_unit field. **Note**: For most use cases, this is the only value you should use, as it is always in the same unit, and always per 100g or 100ml. ' type: number readOnly: true (?[\w-]+)_serving: description: 'The normalized value of the nutrient for one serving, in a standard unit: - g for most nutrients - % for nutrients that are percentages (e.g. alcohol) - kJ for energy and energy-kj - kcal for energy-kcal This is computed from the `nutrient` property, the serving size (if `nutrient` is per 100g), and the `nutrient`_unit field. ' type: number readOnly: true (?[\w-]+)_value: description: "The value entered by the contributor (a user or the manufacturer).\nIn most cases, the unit of the value is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\n* per 100g or serving, depending on `nutrition_data_per` field.\n* in the unit of the corresponding _unit field.\n\n**Note**: For most use cases, you should not use this value, as it can be in different units, and can be per 100g or per serving.\n" type: number readOnly: true (?[\w-]+)_prepared: description: 'Same as ''(?[\w-]+)'', for the prepared product (not as sold). ' type: number (?[\w-]+)_prepared_unit: description: 'Same as ''(?[\w-]+)_unit'', for the prepared product (not as sold). ' type: string (?[\w-]+)_prepared_100g: description: 'Same as ''(?[\w-]+)_100g'', for the prepared product (not as sold). ' type: number readOnly: true (?[\w-]+)_prepared_serving: description: 'Same as ''(?[\w-]+)_serving'', for the prepared product (not as sold). ' type: number readOnly: true (?[\w-]+)_prepared_value: description: 'Same as ''(?[\w-]+)_value'', for the prepared product (not as sold). ' type: number readOnly: true nutriscore_data: description: 'Detail of data the Nutri-Score was computed upon. **Note**: this might not be stable, don''t rely too much on this, or, at least, tell us ! **TODO** document each property ' type: object properties: saturated_fat_ratio: type: number saturated_fat_ratio_points: type: integer saturated_fat_ratio_value: type: number nutrition_grade_fr: type: string description: 'Nutrition grade (‘a’ to ‘e’), https://world.openfoodfacts.org/nutriscore. ' nutrition_grades: description: 'Nutrition grades as a comma separated list. Some products with multiple components might have multiple Nutri-Score ' type: string nutrition_grades_tags: type: array items: type: string nutrition_score_beverage: type: integer nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients: type: integer nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value: type: integer nutrition_score_warning_no_fiber: type: integer other_nutritional_substances_tags: type: array items: type: object unknown_nutrients_tags: type: array items: type: object vitamins_tags: type: array items: type: object - title: ProductNutriscore type: object properties: nutriscore: $ref: '#/components/schemas/Nutriscores' nutriscore_2021_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_2023_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_data: $ref: '#/components/schemas/Nutriscore2021Data' nutriscore_grade: $ref: '#/components/schemas/NutriscoreGrade' examples: - d nutriscore_score: description: 'Nutri-Score for the product as an integer (see also `nutriscore_grade`). ' type: integer examples: - 13 nutriscore_score_opposite: type: integer examples: - -13 nutriscore_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_version: type: string - type: object description: 'This is data that is linked to products data quality ' properties: data_quality_bugs_tags: type: array items: type: string description: 'Each data quality bug describes a data quality bug on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_errors_tags: type: array items: type: string description: 'Each Data Quality Error describes a data quality error on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_info_tags: type: array items: type: string description: 'Each Data Quality Info describes a data quality info on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_tags: type: array items: type: string description: 'Each Data Quality tag describes a data quality issue on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_warnings_tags: type: array items: type: string description: 'Each Data Quality warning tag describes a data quality warning on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_sources: type: string description: 'Source of data imported from producers. ' data_sources_tags: type: array items: type: string last_check_dates_tags: type: array items: type: string last_checked_t: type: integer last_checker: type: string states: description: 'comma separated list of values indicating some states of the product, like things to be done, or to be completed. See [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string states_hierarchy: type: array items: type: string states_tags: type: array items: description: 'Each state describe something that is completed or is to be done or improved on the product. Refer to [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string misc_tags: description: "Information about different aspect of the product\n Refer to [misc taxonomy](https://static.openfoodfacts.org/data/taxonomies/misc.json)\n" type: array items: type: string - title: product_extended type: object properties: additives_original_tags: type: array items: type: string additives_prev_original_tags: type: array items: type: string added_countries_tags: type: array items: type: object allergens_from_ingredients: type: string allergens_from_user: type: string amino_acids_prev_tags: type: array items: type: object amino_acids_tags: type: array items: type: object carbon_footprint_percent_of_known_ingredients: type: integer categories_properties: type: object properties: agribalyse_food_code:en: type: string agribalyse_proxy_food_code:en: type: string ciqual_food_code:en: type: string categories_properties_tags: type: array items: type: string category_properties: type: object additionalProperties: description: those are properties taken from the category taxonomy type: string ciqual_food_name_tags: type: array items: type: string compared_to_category: type: string description: 'the category to use for comparison. **TODO** explain how it is chosen. ' forest_footprint_2026: type: object title: ForestFootprint2026 description: 'Forest footprint (2026 algorithm) of a product — the risk of deforestation associated with its ingredients. This is a computed field. See also `forest_footprint_2026.grade`, `forest_footprint_2026.summary`, `forest_footprint_2026.total_footprint_per_kg`, and `forest_footprint_2026.primary_ingredients`. ' properties: grade: type: string enum: - a - b - c - d - unknown - not_computed description: "Overall forest footprint grade of the product.\n\n- `a`: No deforestation risk (absence of risky ingredients or zero impact)\n- `b`: Low risk of deforestation\n- `c`: Medium risk of deforestation\n- `d`: High risk of deforestation\n- `unknown`: The product has ingredients that are not yet assessed\n (e.g. corn, rice, cassava, soya, meat, dairy) without any computed\n primary ingredients\n- `not_computed`: The product contains risky ingredients but the overall\n grade could not be computed\n" summary: type: string enum: - missing_ingredients - with_other_risky_ingredients - without_primary_ingredients_or_other_risky_ingredients - with_primary_ingredients description: "Summary of the forest footprint computation status:\n\n- `missing_ingredients`: The product has no ingredients list, so the\n forest footprint could not be computed\n- `with_other_risky_ingredients`: The product contains risky ingredients\n (not yet assessed) but no computed primary ingredients\n- `without_primary_ingredients_or_other_risky_ingredients`: The product\n has ingredients but none are risky or assessed; grade is A\n- `with_primary_ingredients`: The product has computed primary ingredients\n (cocoa, coffee, palm oil, chicken/eggs)\n" total_footprint_per_kg: type: - number - 'null' description: 'Total forest footprint per kilogram of food, in square meters per kg. This field is present (as a number) when the summary is `with_primary_ingredients` or `without_primary_ingredients_or_other_risky_ingredients`. It is `null` when the summary is `missing_ingredients` or `with_other_risky_ingredients`. It may be absent if the field was not populated. ' primary_ingredients: type: object description: 'Map of primary ingredients and their computed forest footprint details. Keys are primary ingredient tags (`en:cocoa`, `en:coffee`, `en:palm-oil`, `en:chicken-and-eggs`, `en:other-risky-ingredients`). Only primary ingredients present in the product are included. ' additionalProperties: oneOf: - $ref: '#/components/schemas/ForestFootprintPrimaryIngredient' - $ref: '#/components/schemas/ForestFootprintChickenAndEggs' - $ref: '#/components/schemas/ForestFootprintOtherRiskyIngredients' components: schemas: ForestFootprintPrimaryIngredient: type: object description: 'Forest footprint details for cocoa, coffee, or palm oil primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kilogram for this primary ingredient. grade: type: string enum: - a - b - c - d description: Grade for this primary ingredient (A is best, D is worst). ingredients: type: array items: type: object properties: equivalence_ingredient: type: number description: Ingredient equivalence factor. equivalence_ingredient_category: type: number description: Ingredient category equivalence factor. footprint_per_kg: type: number description: Footprint per kg for this ingredient. ingredient_category_id: type: string description: The ingredient category tag (e.g. en:cocoa, en:coffee, en:palm-oil). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). label_id: type: string description: Label that reduces deforestation risk (if applicable). origin_footprint: type: number description: Footprint per kg for the origin of this ingredient. origin_id: type: string description: Origin tag (e.g. en:brazil, en:unknown). percent: type: number description: Percentage of this ingredient in the product. primary_ingredient_id: type: string description: The primary ingredient this ingredient maps to. risk_factor: type: number description: Risk reduction factor applied by labels (1 = no reduction). transformation_factor: type: number description: Combined equivalence/ingredient and category equivalence factors. required: - equivalence_ingredient - equivalence_ingredient_category - footprint_per_kg - ingredient_category_id - ingredient_id - origin_footprint - origin_id - percent - primary_ingredient_id - risk_factor - transformation_factor required: - footprint_per_kg - grade - ingredients ForestFootprintChickenAndEggs: type: object description: 'Forest footprint details for chicken and eggs, computed using the legacy ForestFootprint algorithm (soy-based feed import risk). This has a different data structure than the other primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kg for chicken and eggs. grade: type: string enum: - a - b - c - d - e description: Grade for chicken and eggs (A is best, E is worst). Uses legacy thresholds. ingredients: type: - array - 'null' items: type: object properties: conditions_tags: type: array items: type: string description: Conditions tags (e.g. processing conditions). footprint_per_kg: type: number description: Footprint per kg for this ingredient entry. percent: type: number description: Percentage of this ingredient in the product. processing_factor: type: number description: Processing factor applied. tag_id: type: string description: The tag id (ingredient or category tag). tag_type: type: string description: The type of tag (e.g. "ingredients", "categories"). type: type: object properties: deforestation_risk: type: number description: Deforestation risk factor for this chicken/egg type. name: type: string description: Human-readable name of the chicken/egg type. soy_feed_factor: type: number description: Soy feed factor. soy_yield: type: number description: Soy yield factor. required: - deforestation_risk - name - soy_feed_factor - soy_yield required: - conditions_tags - footprint_per_kg - percent - processing_factor - tag_id - tag_type - type required: - footprint_per_kg - grade - ingredients ForestFootprintOtherRiskyIngredients: type: object description: 'Risky ingredients (corn, rice, cassava, soya, meat, dairy) that are not yet assessed for deforestation risk. The footprint and grade are unknown; only the ingredient list is provided. ' properties: footprint_per_kg: type: 'null' description: Always null, as risky ingredients are not yet assessed. grade: type: string enum: - unknown description: Always "unknown". ingredients: type: - array - 'null' items: type: object properties: ingredient_category_id: type: string description: The risky ingredient category tag (e.g. en:rice, en:cassava). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). required: - ingredient_category_id - ingredient_id required: - footprint_per_kg - grade - ingredients conservation_conditions: type: string customer_service: type: string description: 'Contact info of customer service. ' expiration_date: type: string link: type: string description: 'link to the product on the website of the producer ' main_countries_tags: type: array items: type: object minerals_prev_tags: type: array items: type: object minerals_tags: type: array items: type: object owner_fields: type: object description: 'Those are fields provided by the producer (through producers platform), and the value he provided. ' properties: additionalProperties: description: 'you can retrieve all kind of properties, the same as on the parent object (the product). It''s not processed entries (like tags for example) but raw ones. ' oneOf: - type: integer - type: string - type: object nova_groups_markers: type: object description: 'Detail of ingredients or processing that makes the products having Nova 3 or 4 ' propertyNames: description: Markers of level 3, 4, ... type: integer enum: - 3 - 4 additionalProperties: type: array items: type: array items: description: This array has two elements for each marker. The first element is the tag type of the marker (e.g. "ingredients", "additives", "categories"), and the second is the tag id in the taxonomy (e.g. "en:e471") type: string nucleotides_tags: type: array items: type: object origin: type: string purchase_places: type: string description: 'Country, state, or city where the product can be purchased. ' example: Paris purchase_places_tags: type: array items: type: string stores: type: string description: 'Distributor name. ' example: Walmart stores_tags: type: array items: type: string traces_from_ingredients: type: string traces_from_user: type: string patternProperties: conservation_conditions_(?\w\w): type: string customer_service_(?\w\w): type: string origin_(?\w\w): type: string description: '`origin` in language indicated by `language_code` ' - type: object description: 'Metadata of a product (author, editors, creation date, etc.) ' required: - created_t - creator - last_modified_by - last_modified_t - last_updated_t - rev properties: created_t: type: integer description: 'Date when the product was added (UNIX timestamp format). See also `entry_dates_tags` ' example: 1457680652 creator: type: string description: 'The contributor who added the product first. ' editors_tags: description: 'List of editors who edited the product. ' type: array items: type: string informers_tags: type: array items: type: string interface_version_created: type: string interface_version_modified: type: string languages: type: object patternProperties: en:(?\w\w): type: integer description: '**TODO** explain ! ' languages_codes: type: object patternProperties: (?\w\w): type: integer description: 'Same as `languages` but by language code, instead of language tags ' languages_hierarchy: type: array items: type: string languages_tags: type: array items: type: string last_edit_dates_tags: type: array items: type: string last_editor: type: string last_modified_by: type: string description: 'The username of the user who last modified the product. ' example: sebleouf last_modified_t: type: integer description: 'Date when the product page was last modified. This date is updated only when primary data is modified (data entered by the user or updated by an interface) ' last_updated_t: type: integer description: 'Date when the product page was last modified. This date is updated when primary data or secondary data is modified (primary: data entered by a user or read from an interface, secondary: data computed by a utility such as update_all_products.pl) ' owner: description: 'Id of the producer in case he provides his own data about a product (producer platform). ' type: string owners_tags: description: 'Tagyfied version of owner ' type: string photographers_tags: type: array items: type: string rev: description: revision number of this product version (each edit adds a revision) type: integer sources: type: array items: type: object title: product_meta_source properties: fields: type: array items: type: string id: type: string images: type: array items: type: object import_t: type: integer manufacturer: type: - integer - string name: type: string source_licence: type: string source_licence_url: type: string url: type: - 'null' - string sources_fields: type: object title: product_meta_source_fields properties: org-gs1: type: object properties: gln: type: string gpcCategoryCode: type: string gpcCategoryName: type: string isAllergenRelevantDataProvided: type: string lastChangeDateTime: type: string partyName: type: string productionVariantDescription: type: string publicationDateTime: type: string teams: type: string teams_tags: type: array items: type: string update_key: type: string - type: object description: 'Knowledge panels for a product ' properties: knowledge_panels: type: object title: panels description: 'The panels object is a dictionary of individual panel objects. Each key of the dictionary is the id of the panel, and the value is the panel object. Apps typically display a number of root panels with known panel ids (e.g. health_card and environment_card). Panels can reference other panels and display them as sub-panels.' examples: - additionalProperties: string additionalProperties: title: panel type: object description: Each panel contains an optional title and an optional array of elements. properties: type: type: string description: Type of the panel. If set to "card", the panel and its sub-panels should be displayed in a card. If set to "inline", the panel should have its content always displayed. expanded: type: boolean description: If true, the panel is to be displayed already expanded. If false, only the title should be displayed, and the user should be able to click or tap it to open the panel and display the elements. expand_for: type: string description: If set to "large", the content of the panel should be expanded on large screens, but it should still be possible to unexpand it. evaluation: type: string description: An evaluation status specifically for this title element. This can be used to directly color the icon if 'icon_color_from_evaluation' is true and this field is present, or it might provide context for the title itself. e.g. bad is red. Please be careful in choosing colors, to avoid 50 shades of red. example: bad enum: - good - average - neutral - bad - unknown half_width_on_mobile: type: boolean description: If true, suggests that this panel could be rendered as half-width on mobile devices, allowing for side-by-side display with another half-width panel if applicable. example: true title_element: title: title_element x-stoplight: id: lox0wvl9bdgy2 type: object description: The title of a panel. properties: name: type: string description: A short name of this panel, not including any actual values. e.g. "Fat" title: type: string subtitle: type: string type: type: string enum: - grade - percentage - string description: Used to indicate how the value of this item is measured, such as "grade" for Nutri-Score and Green-Score or "percentage" for Salt grade: type: string description: The value for this panel where it corresponds to a A to E grade such as the Nutri-Score or the Green-Score. enum: - a+ - a - b - c - d - e - f - unknown value: type: number description: The numeric value of the panel, where the type is "percentage" value_string: type: string description: The string value of the panel, for cases where the value is not numeric icon_url: type: string icon_color_from_evaluation: type: string icon_size: type: string description: 'If set to "small", the icon should be displayed at a small size. ' elements: type: array description: An ordered list of elements to display in the content of the panel. items: title: element x-stoplight: id: e2ybdrtmx0tme type: object description: 'Each element object contains one specific element object such as a text element or an image element. ' properties: element_type: type: string enum: - text - image - action - panel - panel_group - table description: 'The type of the included element object. The element_type also indicates which field contains the included element object. e.g. if the element_type is "text", the included element object will be in the "text_element" field. Note that in the future, new type of element may be added, so your code should ignore unrecognized types, and unknown properties. TODO: add Map type ' text_element: title: text_element x-stoplight: id: vdwxlt73qnqfa type: object description: 'A text in simple HTML format to display. For some specific texts that correspond to a product field (e.g. a product name, the ingredients list of a product),the edit_field_* fields are used to indicate how to edit the field value.' properties: type: type: string description: 'the type of text, might influence the way you display it. ' enum: - summary - warning - notes html: type: string description: Text to display in HTML format. language: type: string description: Language of the text. The name of the language is returned in the language requested when making the API call. e.g. if the text is in Polish, and the requested language is French, the language field will contain "Polonais" (French for "Polish"). Only set for specific fields such as the list of ingredients of a product. lc: type: string description: 2 letter language code for the text. Only set for specific fields such as the list of ingredients of a product. edit_field_id: type: string description: id of the field used to edit this text in the product edit API. edit_field_type: type: string description: Type of the product field. edit_field_value: type: string description: Current value of the product field. This may differ from the html field which can contain extra formating. source_url: type: string description: Link to the source example: https://en.wikipedia.org/wiki/Sodium acetate source_text: type: string description: name of the source example: Wikipedia source_lc: type: string description: Source locale name example: en source_language: type: string description: Human readable source locale name example: English image_element: title: image_element x-stoplight: id: k4v4kwt489q3j type: object properties: url: type: string description: full URL of the image width: type: integer description: "Width of the image.\n\nThis is just a suggestion coming from the server, \nthe client may choose to use its own dimensions for the image.\n" height: type: integer description: 'Height of the image. This is just a suggestion coming from the server, the client may choose to use its own dimensions for the image. ' alt_text: type: string description: Alt Text of the image. action_element: title: action_element type: object properties: title: type: string actions: type: array description: The ids of the actions to show. items: type: string description: The id of the action to show. examples: - edit_product - add_categories description: The action element is used to display a title and a list of actions like editing a product or adding categories. panel_element: title: panel_element x-stoplight: id: ymx41elz4yrnj type: object description: Panels can include other panels as sub-panels using the panel_element. properties: panel_id: type: string description: The id of the panel to include. The id is the key of the panel in the panels object returned in the knowledge_panels field. panel_group_element: title: panel_group_element x-stoplight: id: b7emlfrgiuue2 type: object properties: title: type: string panel_ids: type: array description: The ids of the panels to include. The ids are the keys of the panels in the panels object returned in the knowledge_panels field. items: type: string image: type: object description: An image related to the panel group (e.g. the ingredients or nutrition facts image for the ingredients and nutrition panel groups). description: The panel group element is used to display an optional title followed by a number of sub-panels. table_element: title: table_element type: object description: Element to display a table. properties: id: type: string description: An id for the table. table_type: type: string description: Type of table (e.g. "percents" for tables with percentage columns) title: type: string description: 'Title of the table. ' columns: type: array items: type: object title: table_column properties: text: type: string description: Column header text type: type: string description: Column type (e.g. "text", "percent") text_for_small_screens: type: string description: Alternative text for small screens style: type: string description: CSS style for the column column_group_id: type: string shown_by_default: type: boolean rows: type: array description: Array of table rows items: type: object properties: id: type: string description: Row ID style: type: string description: CSS style for the row values: type: array description: Array of cell values items: type: object properties: text: type: string description: Cell text content icon_url: type: string description: URL of an icon to display in the cell percent: type: number description: Percentage value for progress bars (used with percent columns) evaluation: type: string description: Evaluation level (good, bad, neutral, etc.) for styling level: type: integer description: Indentation level style: type: string description: CSS style for the cell required: - element_type level: type: string description: 'a message level, as levels we use in log. It might help theming the panel visually. Some possible values: info, recommendation ' example: info size: type: string enum: - small description: "size is either empty (normal display) \nor small to indicate a panel that should have a smaller font size\n" example: small topics: type: array items: type: string example: health description: topics currently include health, environment, problem readOnly: true - type: object description: 'Specific data about a product to enable personal ranking ' properties: attribute_groups: type: array description: Each element is an attribute that can help compute a personal ranking for the product items: title: product_attribute_group type: object properties: id: type: string description: 'Unique id of the attribute. It will be use to match against preferences parameters. ' status: type: string enum: - known - unknown description: wether we have the information to really compute this criteria or not. title: type: string description: 'A descriptive sentence about the situation of the product concerning attribute ' example: 'Does not contain: Molluscs' match: type: number format: float minimum: 0 maximum: 100 description: 'a numeric value for the match, telling how much the products ranks well for this particular attribute. The higher the value, the better the match. ' grade: description: every attribute as a grade for a to e type: string enum: - unknown - a - b - c - d - e name: type: string description: The name of attribute, for eventual display icon_url: type: string description: an icon representing the attribute match (often using a color) description: type: string description: An eventual description of the value of the property upon which this attribute is based description_short: type: string description: An eventual short description of the value of the property upon which this attribute is based - title: get_product_by_barcode_knowledge_panels_response allOf: - type: object title: get_product_by_barcode_base_response properties: code: type: string description: "Barcode of the product\n(can be EAN-13 or internal codes for some food stores).\nFor products without a barcode, Open Food Facts assigns a \nnumber starting with the 200 reserved prefix.\n" status: type: integer enum: - 0 - 1 description: Return values based on ProductOpener/Display.pm analysis status_verbose: type: string - type: object properties: product: $ref: '#/components/schemas/Product-Knowledge-Panels' - type: object title: get_product_by_barcode_with_blame_response allOf: - type: object title: get_product_by_barcode_base_response properties: code: type: string description: "Barcode of the product\n(can be EAN-13 or internal codes for some food stores).\nFor products without a barcode, Open Food Facts assigns a \nnumber starting with the 200 reserved prefix.\n" status: type: integer enum: - 0 - 1 description: Return values based on ProductOpener/Display.pm analysis status_verbose: type: string - type: object properties: product: type: object title: product description: 'This is all the fields describing a product and how to display it on a page. Refer to the different sub schema for more readable entries: * [Product Base](#cmp--schemas-product-base): Base fields of a product * [Product Misc](#cmp--schemas-product-misc): Miscellaneous but important fields of a product * [Product Tags](#cmp--schemas-product-tags): Tags fields on a product * [Product Images](#cmp--schemas-product-images): Information about Images of a product * [Product Eco-Score](#cmp--schemas-product-ecoscore): Fields related to Eco-Score for a product * [Product Ingredients](#cmp--schemas-product-ingredients): Fields about ingredients of a product * [Product Nutrition](#cmp--schemas-product-nutrition): Nutrition fields of a product * [Product Data Quality](#cmp--schemas-product-quality): fields related to data quality for a product * [Product Extended](#cmp--schemas-product-extended): TODO * [Product Metadata](#cmp--schemas-product-meta): Metadata of a product (author, editors, etc.) * [Product Knowledge Panels](#cmp--schemas-product-knowledge-panels): Knowledge panels for a product * [Product Attribute Groups](#cmp--schemas-product-attribute-groups): Attribute groups for personal product matching ' allOf: - type: object description: 'Base product data ' required: - code - schema_version allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product properties: product_name: type: string description: "The name of the product in the main language of the product (lang field) \n" abbreviated_product_name: type: string description: Abbreviated product name (e.g. abbreviated product name printed on receipts) in the main language of the product (lang field) code: type: string description: 'barcode of the product (can be EAN-13 or internal codes for some food stores), for products without a barcode, Open Food Facts assigns a number starting with the 200 reserved prefix ' codes_tags: type: array items: type: string description: 'A value which is the type of barcode "code-13" or "code-8" and A series of mask for the barcode It helps retrieve barcodes starting by ' examples: - code-13 - 3017620422xxx - 301762042xxxx - 30176204xxxxx - 3017620xxxxxx - 301762xxxxxxx - 30176xxxxxxxx - 3017xxxxxxxxx - 301xxxxxxxxxx - 30xxxxxxxxxxx - 3xxxxxxxxxxxx generic_name: type: string description: 'Generic / legal name of the product in the main language of the product (lang field) ' id: description: 'internal identifier for the product, usually set to the value of `code`, except on the producers platform where it is prefixed by the owner ' type: string lc: type: string description: 'Main language of the product. This is a duplicate of `lang` property (for historical reasons). ' lang: type: string description: 'Main language of the product. This should be the main language of product packaging (if one is predominant). Main language is also used to decide which ingredients list to parse. ' nova_group: type: integer description: 'Nova group as an integer from 1 to 4. See https://world.openfoodfacts.org/nova ' nova_groups: type: string obsolete: type: string obsolete_since_date: description: 'A date at which the product was declared obsolete. This means it''s not produced any more. ' type: string product_quantity: type: string description: 'The size in g or ml for the whole product. It is a normalized version of the `quantity` field. A `quantity` of "2 x 60 g" leads to `product_quantity`: "120". ' example: '500' product_quantity_unit: type: string description: 'The unit (either g or ml) for the corresponding `product_quantity`. It is computed from the `quantity` field. A `quantity` of "6 x 250 ml" leads to `product_quantity_unit`: "ml". ' example: g quantity: type: string description: 'The quantity of the product, with the corresponding number of portions or unit (g, ml, kg, l, cl, oz, lbs...). It should be the value as displayed on the product. The ℮ sign is allowed. When it refers to the number of portions, it can be filled without any units (e.g. "6 eggs"). ' example: 3 x 150 g schema_version: type: integer description: 'Version of the product object schema used in the response. This indicates the structure of the ''product'' field itself. For more details, please read: https://openfoodfacts.github.io/openfoodfacts-server/api/ref-api-and-product-schema-change-log ' example: 999 patternProperties: product_name_(?\w\w): type: string description: 'Product name in language designated by `language_code`, e.g. product_name_fr ' abbreviated_product_name_(?\w\w): type: string description: Abbreviated product name in language `language_code`. generic_name_(?\w\w): type: string description: 'Generic/legal name in language designated by `language_code`, e.g. generic_name_en. ' - type: object title: product_misc description: 'Miscellaneous but important fields of a product ' properties: additives_n: type: integer description: 'Number of food additives. ' checked: type: string complete: type: integer completeness: type: number ecoscore_grade: type: string description: 'See also: `ecoscore_tags` ' ecoscore_score: type: integer description: 'See also: `ecoscore_tags` ' food_groups: type: string food_groups_tags: type: array items: type: string nutrient_levels: description: 'Traffic light indicators on main nutrients levels ' type: object properties: fat: type: string enum: - low - moderate - high salt: type: string enum: - low - moderate - high saturated-fat: type: string enum: - low - moderate - high sugars: type: string enum: - low - moderate - high packaging_text: type: string description: 'Recycling instructions as raw text, e.g. Plastic bottle to recycle, Plastic cap to recycle. This will get automatically parsed and will be used to compute the Eco-Score. You can either request it (if it exists) or send it in a specific language. ' example: packaging_text_en packagings: type: array title: Packagings (READ) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/ The shape, material and recycling properties of each packaging component are linked to entries in the packaging_shapes, packaging_materials and packaging_recycling taxonomies: https://world.openfoodfacts.org/data/taxonomies/packaging_shapes.json https://world.openfoodfacts.org/data/taxonomies/packaging_materials.json https://world.openfoodfacts.org/data/taxonomies/packaging_recycling.json If the tags_lc field is set, the properties will include a lc_name field with the translation in the requested language.' examples: - - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified items: description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties are mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies, and the value of the property is the canonical name of the taxonomy entry (e.g. en:bottle). They may contain values that could not yet get matched to their respective taxonomy, in which case they will contain a free text value prefixed with the language code of this text value (e.g. "fr:Bouteille sphérique" might have been entered by a French user to indicate it is a spherical bottle).' title: Packaging component (READ) type: object examples: - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified properties: number_of_units: type: integer description: umber of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape x-stoplight: id: xrj8agza3dwgf type: object description: The shape property is canonicalized using the packaging_shapes taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_shapes taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. material: title: Packaging component material type: object description: The material property is canonicalized using the packaging_materials taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_material taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. recycling: title: Packaging component recycling instruction x-stoplight: id: 376tk8e2cmyh2 type: object description: The recycling property is canonicalized using the packaging_recycling taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_recycling taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) quantity_per_unit_value: type: number description: Value parsed from the quantity field. quantity_per_unit_unit: type: string description: Unit parsed and normalized from the quantity field. weight_specified: type: number description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_measured: type: number description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_estimated: type: number description: Weight (as estimated from similar products) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight: type: number description: Weight of one unit of the empty packaging component. weight_source_id: type: string description: Indicates which field was used to populate the "weight" field. Either "specified", "measured", or "estimated" readOnly: true packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. pnns_groups_1: description: 'Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_1_tags: type: array items: type: string pnns_groups_2: description: 'Sub Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_2_tags: type: array items: type: string popularity_key: description: 'An imprecise measurement of popularity based on Scan statistics. A higher value means higher popularity. ' type: integer popularity_tags: description: "Indicators for the popularity of a product, like the amount of scans in a specific year.\n`popularity_tags` values from previous years are kept, if there is no popularity_tags at all, then it was never popular.\nThis field must be used with care. In countries where Open Food Facts is not widely used, \na product may obtain the value \"top-90-percent-scans-2021\" with a single scan.\n" type: array items: type: string example: - bottom-25-percent-scans-2020 - top-85-percent-scans-2021 - top-90-percent-scans-2022 - top-country-it-scans-2019 - top-100000-mg-scans-2024 scans_n: type: integer description: "Number of scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded). This value is computed once a year by scanbot.pl.\nIt is possible that a product has never been scanned at all: `scans_n` is not given in this case.\nSee also `unique_scans_n` field.\n" unique_scans_n: type: integer description: "Number of unique scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded).\nUnique scans means it is based on different IPs.\nThis value is computed once a year by scanbot.pl.\nSee also `scans_n` field.\n" serving_quantity: type: string description: 'Normalized version of serving_size. Note that this is NOT the number of servings by product. (in perl, see `normalize_serving_size`) ' serving_quantity_unit: type: string description: 'The unit (either g or ml) for the correponding serving_quantity. ' example: g serving_size: type: string description: 'Serving size text (generally in g or ml). We expect a quantity + unit but the user is free to input any string. ' patternProperties: food_groups_(?\w\w): type: string description: see `food_groups` packaging_text_(?\w\w): type: string description: 'Packaging text in language designated by `language_code` ' - type: object description: 'Data about a product which is represented as tags ' allOf: - type: object title: Product Base Tags properties: brands: type: string description: 'Comma separated list of brands (not taxonomized), in the last language used to edit it (recorded in brands_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' brands_tags: type: array description: "An array of indexed brands tag entries (for search).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' categories: type: string description: 'Comma separated list of categories (not taxonomized), in the last language used to edit it (recorded in categories_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' categories_tags: type: array description: "An array of indexed categories tag entries (for search).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' checkers_tags: type: array items: type: string description: List of checkers (users who checked the product) tags cities: type: string cities_tags: type: array items: type: object correctors_tags: type: array items: type: string countries: type: string description: 'List of countries where the product is sold. ' countries_tags: type: array items: type: string ecoscore_tags: description: 'All ecoscore of a product. Most of the time it''s only one value, but it might eventually be more for products composed of sub-products. See also: `ecoscore_score`, `ecoscore_grade`. ' type: array items: type: string emb_codes: type: string description: 'Packager code. EMB is the French system of traceability codes for packager. ' example: EMB 2013330 emb_codes_tags: type: array items: type: object labels: type: string labels_tags: type: array items: type: string entry_dates_tags: description: 'The data as a series of tag: `yyyy-mm-dd`, `yyyy-mm`, `yyyy` ' type: array items: type: string examples: - - '2016-03-11' - 2016-03 - '2016' manufacturing_places: type: string description: 'Places where the product was manufactured or transformed. ' manufacturing_places_tags: type: array items: type: string nova_groups_tags: type: array items: type: string nutrient_levels_tags: type: array items: type: string - type: object properties: brands_hierarchy: type: array description: "An array of brands tag entries (for display and editing).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (as-is, with no normalization).\n\nThis is the field that should be used for display purposes, as it is not lossy.\n" items: title: Canonicalized taxonomy tag entry type: string description: 'A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") -> for entries that could not be matched to a taxonomy entry' brands_lc: type: string description: Language code of the last edit for brands categories_hierarchy: type: array description: "An array of categories tag entries (for display and editing).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (as-is, with no normalization).\n\nThis is the field that should be used for display purposes, as it is not lossy.\n" items: title: Canonicalized taxonomy tag entry type: string description: 'A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") -> for entries that could not be matched to a taxonomy entry' categories_lc: type: string description: Language code of the last edit for categories countries_hierarchy: type: array items: type: string countries_lc: type: string description: Countries language code emb_codes_orig: type: string labels_hierarchy: type: array items: type: string labels_lc: type: string - type: object title: Product-Images description: 'Information about Images of a product. Images ensure the reliability of Open Food Facts data. It provides a primary source and proof of all the structured data. You may therefore want to display it along the structured information. See also tutorials about images: * [Getting images](https://openfoodfacts.github.io/openfoodfacts-server/api/how-to-download-images/) * [Uploading images](https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-uploading-photo-to-a-product/) ' properties: images: description: 'This contains properties for all images contained on the product. ' type: object title: product_images_properties properties: front: title: image_role type: object description: 'property of an image (or part thereof) selected for a particular role and a particular language. ' properties: angle: type: integer example: 0 description: The angle of the image rotation (if it was rotated). coordinates_image_size: type: string example: full geometry: type: string example: 0x0--1--1 imgid: type: string example: '121' description: The id of the original/source image that was selected to edit(rotate, normalize etc) to produce this new image. normalize: type: - string - boolean - 'null' examples: - null - 'false' - 'true' description: Normalize colors. rev: type: string example: '420' sizes: type: object description: "The available image sizes for the product (both reduced and full). \nThe reduced images are the ones with numbers as the key( 100, 200 etc)\nwhile the full images have `full` as the key.\n" properties: '100': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. '200': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. '400': type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. full: type: object title: image_size description: 'Width and height of an image ' properties: h: type: integer example: 400 description: 'The height of the reduced/full image in pixels. ' w: type: integer example: 255 description: The width of the reduced/full image in pixels. white_magic: type: - string - boolean - 'null' examples: - null - 'false' - 'true' description: 'Photo on white background : Try to remove the background. ' x1: type: string example: '-1' x2: type: string example: '-1' y1: type: string example: '-1' y2: type: string example: '-1' additionalProperties: type: object title: image description: 'This object represent an image that was uploaded to a product. "imgid" is an integer which is a sequential number unique to each picture. ' properties: imgid: type: integer example: 123456789 description: "If the image is selected as the front / ingredients / nutrition / packaging image,\nthis is the index to access the original image URL in the `images` field of the product.\nIf the image is not selected as one of these, this field is null.\n\nSo if the product has the following `images` field:\n\n```json\n\"images\": {\n 1: { ... },\n front_en: { imgid: 1, ... },\n ...\n}\n```\n\nthen the front image can be accessed by `images[1]`.\n" sizes: $ref: '#/components/schemas/Sizes' uploaded_t: type: string example: '1457680652' description: 'The time the image was uploaded (as unix timestamp). ' uploader: type: string example: openfoodfacts-contributors description: 'The contributor that uploaded the image. ' propertyNames: type: integer patternProperties: (?\d+): description: 'See property `1` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string (?front|nutrition|ingredients|packaging)_(?\w\w): description: 'See property `front` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string last_image_dates_tags: type: array items: type: string last_image_t: description: timestamp of last image upload (or update?) type: integer selected_images: type: object title: product_selected_images description: 'URL for selected (important) images of the product. This is very handy if you display the product to users. ' properties: front: type: object description: URLs of thumbnails image of image of type `image_type` properties: display: description: 'Thumbnail urls of product image (front) adapted to display on product page ' $ref: '#/components/schemas/ImageUrls' small: description: 'Thumbnail urls of product image (front) adapted to display on product list page ' $ref: '#/components/schemas/ImageUrls' thumb: description: 'Thumbnail urls of product image (front) in smallest format ' $ref: '#/components/schemas/ImageUrls' patternProperties: (?front|packaging|ingredients|nutrition): description: 'See property `front` to get the real type of those objects (Put this way because of a [bug in rapidoc](https://github.com/rapi-doc/RapiDoc/issues/880)) ' type: string image_small_url: type: string image_thumb_url: type: string image_url: type: string patternProperties: image(_(?front|packaging|ingredients|nutrition))?(_(?small|thumb))?_url: description: 'the URL of image of type `image_type` in size `image_size` (or full size if not given). The `image_type` tells which image the url correspond to. `image_type` is `front` if not provided. The image is the one for current language (affected by `lc` parameter) if an image exists for this language, the image in main product language otherwise. **IMPORTANT:** you should use `selected_images` field instead of this one. ' type: string - type: object description: 'Fields related to Eco-Score for a product. See also: `ecoscore_score`, `ecoscore_grade` and `ecoscore_tags`. ' properties: ecoscore_data: type: object title: product_ecoscore_data description: 'An object about a lot of details about data needed for Eco-Score computation and complementary data of interest. ' properties: adjustments: title: product_ecoscore_adjustments type: object properties: origins_of_ingredients: type: object properties: aggregated_origins: type: array description: List of aggregated origins of ingredients and their impact. items: title: adjustments_origin_of_ingredient_aggregated type: object properties: epi_score: type: string origin: type: string description: Country or region of origin for the ingredient. percent: type: integer description: Percentage of this ingredient from the specified origin. transportation_score: type: - 'null' - integer description: Transportation score associated with this ingredient's origin. epi_score: type: integer description: Environmental Performance Index (EPI) score for the ingredient's origin. epi_value: type: integer origins_from_categories: type: array description: List of origins derived from product categories, eg for PDO. items: type: string origins_from_origins_field: type: array description: List of origins explicitly stated in the product's origins field. items: type: string transportation_score: type: integer transportation_scores: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 transportation_value: type: integer transportation_values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 value: type: integer values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 warning: type: string packaging: type: object properties: non_recyclable_and_non_biodegradable_materials: type: integer packagings: type: array items: type: object title: adjustments_packaging_item properties: ecoscore_material_score: type: integer ecoscore_shape_ratio: type: integer material: type: string shape: type: string number_of_units: type: integer examples: - 1 quantity_per_unit: type: string description: The quantity per packaging unit, as a string. examples: - 33 cL quantity_per_unit_unit: type: string examples: - cl quantity_per_unit_value: type: number examples: - 33 recycling: type: string examples: - en:recycle-in-sorting-bin weight_measured: type: number examples: - 12.08 score: type: integer value: type: integer warning: type: string production_system: type: object properties: labels: type: array examples: - vegan - fat free - Kosher items: type: string value: type: integer warning: type: string threatened_species: type: object properties: ingredient: type: string value: type: integer agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string grade: type: string grades: type: object patternProperties: (?\w\w): type: string missing: type: object properties: labels: type: integer origins: type: integer packagings: type: integer missing_data_warning: type: integer previous_data: type: object properties: grade: type: - string - 'null' score: type: - integer - 'null' agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string score: type: integer scores: type: object patternProperties: (?\w\w): type: integer status: type: string ecoscore_extended_data_version: type: string environment_impact_level: type: string environment_impact_level_tags: type: array items: type: object - type: object title: product_ingredients description: Fields about ingredients of a product properties: additives_tags: type: array items: type: string allergens: type: string description: comma separated list of allergens allergens_lc: type: string description: language in which `allergens` where input allergens_hierarchy: type: array items: type: string allergens_tags: type: array items: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: type: object title: ingredient properties: id: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: description: 'circular reference omitted during bundling: ./ingredient.yaml' percent: type: integer description: The percentage of the ingredient. percent_estimate: type: number description: Estimated percentage of the ingredient. percent_max: type: - string - number description: Maximum percentage of the ingredient. percent_min: type: integer description: Minimum percentage of the ingredient. text: type: string description: Text description of the ingredient. vegan: type: string description: Indicates if the ingredient is vegan. vegetarian: type: string description: Indicates if the ingredient is vegetarian. ingredients_analysis: type: object properties: en:palm-oil: type: array items: type: string en:vegan-status-unknown: type: array items: type: string en:vegetarian-status-unknown: type: array items: type: string ingredients_analysis_tags: type: array items: type: string ingredients_from_or_that_may_be_from_palm_oil_n: type: integer ingredients_from_palm_oil_n: type: integer ingredients_from_palm_oil_tags: type: array items: type: object ingredients_hierarchy: type: array items: type: string ingredients_n: type: integer ingredients_n_tags: type: array items: type: string ingredients_original_tags: type: array items: type: string ingredients_percent_analysis: type: integer description: 'Indicates the result of ingredients analysis processing * not present -> we didn''t run ingredient percent analysis (e.g. we have no ingredients) * 1: we estimated the ingredients percent. * -1 : we tried to estimate the ingredients, but the values were impossible. (e.g. if the sum of % is above 100%) ' ingredients_sweeteners_n: type: integer description: 'Number of sweeteners additives in the ingredients. Undefined if ingredients are not specified. ' ingredients_non_nutritive_sweeteners_n: type: integer description: 'Number of non-nutritive sweeteners additives (as specified in the Nutri-Score formula) in the ingredients. Undefined if ingredients are not specified. ' ingredients_tags: type: array items: type: string ingredients_lc: type: string description: 'Language that was used to parse the ingredient list. If `ingredients_text` is available for the product main language (`lang`), `ingredients_lc=lang`, otherwise we look at `ingredients_text` fields for other languages and set `ingredients_lc` to the first non-empty `ingredient_text`. ' ingredients_text: type: string description: 'Raw list of ingredients. This will get automatically parsed and get used to compute the Eco-Score or find allergens, etc.. It''s a copy of ingredients_text in the main language of the product (see `lang` proprety). ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_text_with_allergens: type: string description: 'Same text as `ingredients_text` but where allergens have HTML elements around them to identify them ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_that_may_be_from_palm_oil_n: type: integer ingredients_that_may_be_from_palm_oil_tags: type: array items: type: object ingredients_with_specified_percent_n: type: integer ingredients_with_specified_percent_sum: type: integer ingredients_with_unspecified_percent_n: type: integer ingredients_with_unspecified_percent_sum: type: integer known_ingredients_n: type: integer origins: type: string description: 'Origins of ingredients ' origins_hierarchy: type: array items: type: object origins_lc: type: string origins_tags: type: array items: type: object traces: type: string description: 'List of substances that might cause allergies that are present in trace amounts in the product (this does not include the ingredients, as they are not only present in trace amounts). It is taxonomized with the allergens taxonomy. Refer to the [allergens taxonomy](https://static.openfoodfacts.org/data/taxonomies/allergens.json) ' traces_hierarchy: type: array items: oneOf: - type: object - type: string traces_lc: type: string traces_tags: type: array items: oneOf: - type: object - type: string unknown_ingredients_n: type: integer patternProperties: ingredients_text_(?\w\w): type: string description: 'Raw list of ingredients in language given by ''language_code''. See `ingredients_text` ' ingredients_text_with_allergens_(?\w\w): description: 'Like `ingredients_text_with_allergens` for a particular language ' type: string - type: object title: product_nutrition description: 'Nutrition fields of a product Most of these properties are read-only. See [how to add nutrition data](https://openfoodfacts.github.io/openfoodfacts-server/api/ref-cheatsheet/#add-nutrition-facts-values-units-and-base) ' properties: no_nutrition_data: type: string description: 'When a product does not have nutrition data displayed on the packaging, the user can check the field "Nutrition facts are not specified on the product". By doing so, the no_nutrition_data field takes the value "on". This case is frequent (thousands of products). ' example: 'on' nutrition_data_per: type: string enum: - serving - 100g description: 'The nutrition data on the package can be per serving or per 100g. This is essential to understand if `_value` and `` values in `nutriments` applies for a serving or for 100g. **IMPORTANT:** When writing products, this setting applies to all existing nutrients values for the product, not only the nutrient values sent in the write request. So it should not be changed unless all nutrients values are provided with values that match the nutrition_data_per field. ' nutrition_data_prepared_per: type: string enum: - serving - 100g description: 'The nutrition data for prepared product on the package (if any) can be per serving or per 100g. This is essential to understand if `_prepared_value` and `_prepared` values in `nutriments` applies for a serving or for 100g. See also important note on `nutrition_data_per`. ' nutriments: type: object description: 'All known nutrients for the product. Note that each nutrients are declined with a variety of suffixes like `_100g`, `_serving`, see patternProperties below. A specific `_unit` is the unit of the value that was entered by the contributor (a user or the manufacturer). It is not necessarily the unit that is printed on the product, as some apps may force specific units when writing nutrient values. Beware that some properties are to be interpreted based upon `nutrition_data_per` value. For most use cases, you should use the `_100g` or `_serving` fields, as they are always in the same standard unit, for a specific quantity (100g or 1 serving). For products that have a nutrition table for prepared product (eg. the nutrition facts for a bowl of milk with cocoa powder), a `_prepared` suffix is added (before other suffixes). You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) **FIXME** add more nutrients with description. ' properties: alcohol: description: 'Quantity of alcohol (per 100g or per serving) in a standard unit (g or ml) ' type: number carbohydrates: description: This is the available carbohydrates (excluding fiber), also known as net carbohydrates type: number carbohydrates-total: description: This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates type: number energy: type: number description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' energy_value: type: number description: 'energy_value will be equal to energy-kj_value if we have it or to energy-kcal_value otherwise ' energy_unit: type: string enum: - kcal - kJ description: 'Equal to energy-kj_unit if we have it or to energy-kcal_unit otherwise ' energy-kcal: type: number description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' energy-kj: type: number description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' fat: type: number fruits-vegetables-legumes-estimate-from-ingredients: type: number description: 'An estimate, from the ingredients list of the percentage of fruits, vegetable and legumes. This is an important information for Nutri-Score (2023 version) computation. ' fruits-vegetables-nuts-estimate-from-ingredients: type: number description: 'An estimate, from the ingredients list of the percentage of fruits, vegetable and nuts. This is an important information for Nutri-Score (2021 version) computation. ' nova-group: type: integer nutrition-score-fr: description: 'Experimental nutrition score derived from the UK FSA score and adapted for the French market (formula defined by the team of Professor Hercberg). ' proteins: type: number salt: type: number saturated-fat: type: number sodium: type: number sugars: type: number carbon-footprint-from-known-ingredients_product: type: integer carbon-footprint-from-known-ingredients_serving: type: number erythritol: type: number description: 'erythritol is a polyol which is not providing any energy. As such, it needs not be taken into account when computing the energy of a product. Eryhtritol is now displayed on nutrition facts sheet of some products, mainly in the USA. This value is entered either by contributors, either by imports. ' example: 12.5 patternProperties: (?[\w-]+)_unit: description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product as sold (not prepared).\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n\n**Note**: For most use cases, you should not use this unit, as it can change depending on how the value was entered.\nInstead use the `_100g` or `_serving` fields, and convert them to the unit you need.\n" type: string enum: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg (?[\w-]+)_100g: description: 'The normalized value of the nutrient for 100g (or 100ml for liquids), in a standard unit, for the product as sold (not prepared): * g for all nutrients that are measured by weight (e.g. fat, proteins, carbohydrates, sodium, vitamins, minerals etc.) * % vol for nutrients that are percentages by volume (e.g. alcohol) * kJ for energy and energy-kj * kcal for energy-kcal * no unit for pH This is computed from the `nutrient` property, the serving size (if `nutrient` is per serving), and the `nutrient`_unit field. **Note**: For most use cases, this is the only value you should use, as it is always in the same unit, and always per 100g or 100ml. ' type: number readOnly: true (?[\w-]+)_serving: description: 'The normalized value of the nutrient for one serving, in a standard unit: - g for most nutrients - % for nutrients that are percentages (e.g. alcohol) - kJ for energy and energy-kj - kcal for energy-kcal This is computed from the `nutrient` property, the serving size (if `nutrient` is per 100g), and the `nutrient`_unit field. ' type: number readOnly: true (?[\w-]+)_value: description: "The value entered by the contributor (a user or the manufacturer).\nIn most cases, the unit of the value is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\n* per 100g or serving, depending on `nutrition_data_per` field.\n* in the unit of the corresponding _unit field.\n\n**Note**: For most use cases, you should not use this value, as it can be in different units, and can be per 100g or per serving.\n" type: number readOnly: true (?[\w-]+)_prepared: description: 'Same as ''(?[\w-]+)'', for the prepared product (not as sold). ' type: number (?[\w-]+)_prepared_unit: description: 'Same as ''(?[\w-]+)_unit'', for the prepared product (not as sold). ' type: string (?[\w-]+)_prepared_100g: description: 'Same as ''(?[\w-]+)_100g'', for the prepared product (not as sold). ' type: number readOnly: true (?[\w-]+)_prepared_serving: description: 'Same as ''(?[\w-]+)_serving'', for the prepared product (not as sold). ' type: number readOnly: true (?[\w-]+)_prepared_value: description: 'Same as ''(?[\w-]+)_value'', for the prepared product (not as sold). ' type: number readOnly: true nutriscore_data: description: 'Detail of data the Nutri-Score was computed upon. **Note**: this might not be stable, don''t rely too much on this, or, at least, tell us ! **TODO** document each property ' type: object properties: saturated_fat_ratio: type: number saturated_fat_ratio_points: type: integer saturated_fat_ratio_value: type: number nutrition_grade_fr: type: string description: 'Nutrition grade (‘a’ to ‘e’), https://world.openfoodfacts.org/nutriscore. ' nutrition_grades: description: 'Nutrition grades as a comma separated list. Some products with multiple components might have multiple Nutri-Score ' type: string nutrition_grades_tags: type: array items: type: string nutrition_score_beverage: type: integer nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients: type: integer nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value: type: integer nutrition_score_warning_no_fiber: type: integer other_nutritional_substances_tags: type: array items: type: object unknown_nutrients_tags: type: array items: type: object vitamins_tags: type: array items: type: object - title: ProductNutriscore type: object properties: nutriscore: $ref: '#/components/schemas/Nutriscores' nutriscore_2021_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_2023_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_data: $ref: '#/components/schemas/Nutriscore2021Data' nutriscore_grade: $ref: '#/components/schemas/NutriscoreGrade' examples: - d nutriscore_score: description: 'Nutri-Score for the product as an integer (see also `nutriscore_grade`). ' type: integer examples: - 13 nutriscore_score_opposite: type: integer examples: - -13 nutriscore_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_version: type: string - type: object description: 'This is data that is linked to products data quality ' properties: data_quality_bugs_tags: type: array items: type: string description: 'Each data quality bug describes a data quality bug on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_errors_tags: type: array items: type: string description: 'Each Data Quality Error describes a data quality error on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_info_tags: type: array items: type: string description: 'Each Data Quality Info describes a data quality info on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_tags: type: array items: type: string description: 'Each Data Quality tag describes a data quality issue on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_warnings_tags: type: array items: type: string description: 'Each Data Quality warning tag describes a data quality warning on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_sources: type: string description: 'Source of data imported from producers. ' data_sources_tags: type: array items: type: string last_check_dates_tags: type: array items: type: string last_checked_t: type: integer last_checker: type: string states: description: 'comma separated list of values indicating some states of the product, like things to be done, or to be completed. See [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string states_hierarchy: type: array items: type: string states_tags: type: array items: description: 'Each state describe something that is completed or is to be done or improved on the product. Refer to [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string misc_tags: description: "Information about different aspect of the product\n Refer to [misc taxonomy](https://static.openfoodfacts.org/data/taxonomies/misc.json)\n" type: array items: type: string - title: product_extended type: object properties: additives_original_tags: type: array items: type: string additives_prev_original_tags: type: array items: type: string added_countries_tags: type: array items: type: object allergens_from_ingredients: type: string allergens_from_user: type: string amino_acids_prev_tags: type: array items: type: object amino_acids_tags: type: array items: type: object carbon_footprint_percent_of_known_ingredients: type: integer categories_properties: type: object properties: agribalyse_food_code:en: type: string agribalyse_proxy_food_code:en: type: string ciqual_food_code:en: type: string categories_properties_tags: type: array items: type: string category_properties: type: object additionalProperties: description: those are properties taken from the category taxonomy type: string ciqual_food_name_tags: type: array items: type: string compared_to_category: type: string description: 'the category to use for comparison. **TODO** explain how it is chosen. ' forest_footprint_2026: type: object title: ForestFootprint2026 description: 'Forest footprint (2026 algorithm) of a product — the risk of deforestation associated with its ingredients. This is a computed field. See also `forest_footprint_2026.grade`, `forest_footprint_2026.summary`, `forest_footprint_2026.total_footprint_per_kg`, and `forest_footprint_2026.primary_ingredients`. ' properties: grade: type: string enum: - a - b - c - d - unknown - not_computed description: "Overall forest footprint grade of the product.\n\n- `a`: No deforestation risk (absence of risky ingredients or zero impact)\n- `b`: Low risk of deforestation\n- `c`: Medium risk of deforestation\n- `d`: High risk of deforestation\n- `unknown`: The product has ingredients that are not yet assessed\n (e.g. corn, rice, cassava, soya, meat, dairy) without any computed\n primary ingredients\n- `not_computed`: The product contains risky ingredients but the overall\n grade could not be computed\n" summary: type: string enum: - missing_ingredients - with_other_risky_ingredients - without_primary_ingredients_or_other_risky_ingredients - with_primary_ingredients description: "Summary of the forest footprint computation status:\n\n- `missing_ingredients`: The product has no ingredients list, so the\n forest footprint could not be computed\n- `with_other_risky_ingredients`: The product contains risky ingredients\n (not yet assessed) but no computed primary ingredients\n- `without_primary_ingredients_or_other_risky_ingredients`: The product\n has ingredients but none are risky or assessed; grade is A\n- `with_primary_ingredients`: The product has computed primary ingredients\n (cocoa, coffee, palm oil, chicken/eggs)\n" total_footprint_per_kg: type: - number - 'null' description: 'Total forest footprint per kilogram of food, in square meters per kg. This field is present (as a number) when the summary is `with_primary_ingredients` or `without_primary_ingredients_or_other_risky_ingredients`. It is `null` when the summary is `missing_ingredients` or `with_other_risky_ingredients`. It may be absent if the field was not populated. ' primary_ingredients: type: object description: 'Map of primary ingredients and their computed forest footprint details. Keys are primary ingredient tags (`en:cocoa`, `en:coffee`, `en:palm-oil`, `en:chicken-and-eggs`, `en:other-risky-ingredients`). Only primary ingredients present in the product are included. ' additionalProperties: oneOf: - $ref: '#/components/schemas/ForestFootprintPrimaryIngredient' - $ref: '#/components/schemas/ForestFootprintChickenAndEggs' - $ref: '#/components/schemas/ForestFootprintOtherRiskyIngredients' components: schemas: ForestFootprintPrimaryIngredient: type: object description: 'Forest footprint details for cocoa, coffee, or palm oil primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kilogram for this primary ingredient. grade: type: string enum: - a - b - c - d description: Grade for this primary ingredient (A is best, D is worst). ingredients: type: array items: type: object properties: equivalence_ingredient: type: number description: Ingredient equivalence factor. equivalence_ingredient_category: type: number description: Ingredient category equivalence factor. footprint_per_kg: type: number description: Footprint per kg for this ingredient. ingredient_category_id: type: string description: The ingredient category tag (e.g. en:cocoa, en:coffee, en:palm-oil). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). label_id: type: string description: Label that reduces deforestation risk (if applicable). origin_footprint: type: number description: Footprint per kg for the origin of this ingredient. origin_id: type: string description: Origin tag (e.g. en:brazil, en:unknown). percent: type: number description: Percentage of this ingredient in the product. primary_ingredient_id: type: string description: The primary ingredient this ingredient maps to. risk_factor: type: number description: Risk reduction factor applied by labels (1 = no reduction). transformation_factor: type: number description: Combined equivalence/ingredient and category equivalence factors. required: - equivalence_ingredient - equivalence_ingredient_category - footprint_per_kg - ingredient_category_id - ingredient_id - origin_footprint - origin_id - percent - primary_ingredient_id - risk_factor - transformation_factor required: - footprint_per_kg - grade - ingredients ForestFootprintChickenAndEggs: type: object description: 'Forest footprint details for chicken and eggs, computed using the legacy ForestFootprint algorithm (soy-based feed import risk). This has a different data structure than the other primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kg for chicken and eggs. grade: type: string enum: - a - b - c - d - e description: Grade for chicken and eggs (A is best, E is worst). Uses legacy thresholds. ingredients: type: - array - 'null' items: type: object properties: conditions_tags: type: array items: type: string description: Conditions tags (e.g. processing conditions). footprint_per_kg: type: number description: Footprint per kg for this ingredient entry. percent: type: number description: Percentage of this ingredient in the product. processing_factor: type: number description: Processing factor applied. tag_id: type: string description: The tag id (ingredient or category tag). tag_type: type: string description: The type of tag (e.g. "ingredients", "categories"). type: type: object properties: deforestation_risk: type: number description: Deforestation risk factor for this chicken/egg type. name: type: string description: Human-readable name of the chicken/egg type. soy_feed_factor: type: number description: Soy feed factor. soy_yield: type: number description: Soy yield factor. required: - deforestation_risk - name - soy_feed_factor - soy_yield required: - conditions_tags - footprint_per_kg - percent - processing_factor - tag_id - tag_type - type required: - footprint_per_kg - grade - ingredients ForestFootprintOtherRiskyIngredients: type: object description: 'Risky ingredients (corn, rice, cassava, soya, meat, dairy) that are not yet assessed for deforestation risk. The footprint and grade are unknown; only the ingredient list is provided. ' properties: footprint_per_kg: type: 'null' description: Always null, as risky ingredients are not yet assessed. grade: type: string enum: - unknown description: Always "unknown". ingredients: type: - array - 'null' items: type: object properties: ingredient_category_id: type: string description: The risky ingredient category tag (e.g. en:rice, en:cassava). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). required: - ingredient_category_id - ingredient_id required: - footprint_per_kg - grade - ingredients conservation_conditions: type: string customer_service: type: string description: 'Contact info of customer service. ' expiration_date: type: string link: type: string description: 'link to the product on the website of the producer ' main_countries_tags: type: array items: type: object minerals_prev_tags: type: array items: type: object minerals_tags: type: array items: type: object owner_fields: type: object description: 'Those are fields provided by the producer (through producers platform), and the value he provided. ' properties: additionalProperties: description: 'you can retrieve all kind of properties, the same as on the parent object (the product). It''s not processed entries (like tags for example) but raw ones. ' oneOf: - type: integer - type: string - type: object nova_groups_markers: type: object description: 'Detail of ingredients or processing that makes the products having Nova 3 or 4 ' propertyNames: description: Markers of level 3, 4, ... type: integer enum: - 3 - 4 additionalProperties: type: array items: type: array items: description: This array has two elements for each marker. The first element is the tag type of the marker (e.g. "ingredients", "additives", "categories"), and the second is the tag id in the taxonomy (e.g. "en:e471") type: string nucleotides_tags: type: array items: type: object origin: type: string purchase_places: type: string description: 'Country, state, or city where the product can be purchased. ' example: Paris purchase_places_tags: type: array items: type: string stores: type: string description: 'Distributor name. ' example: Walmart stores_tags: type: array items: type: string traces_from_ingredients: type: string traces_from_user: type: string patternProperties: conservation_conditions_(?\w\w): type: string customer_service_(?\w\w): type: string origin_(?\w\w): type: string description: '`origin` in language indicated by `language_code` ' - type: object description: 'Metadata of a product (author, editors, creation date, etc.) ' required: - created_t - creator - last_modified_by - last_modified_t - last_updated_t - rev properties: created_t: type: integer description: 'Date when the product was added (UNIX timestamp format). See also `entry_dates_tags` ' example: 1457680652 creator: type: string description: 'The contributor who added the product first. ' editors_tags: description: 'List of editors who edited the product. ' type: array items: type: string informers_tags: type: array items: type: string interface_version_created: type: string interface_version_modified: type: string languages: type: object patternProperties: en:(?\w\w): type: integer description: '**TODO** explain ! ' languages_codes: type: object patternProperties: (?\w\w): type: integer description: 'Same as `languages` but by language code, instead of language tags ' languages_hierarchy: type: array items: type: string languages_tags: type: array items: type: string last_edit_dates_tags: type: array items: type: string last_editor: type: string last_modified_by: type: string description: 'The username of the user who last modified the product. ' example: sebleouf last_modified_t: type: integer description: 'Date when the product page was last modified. This date is updated only when primary data is modified (data entered by the user or updated by an interface) ' last_updated_t: type: integer description: 'Date when the product page was last modified. This date is updated when primary data or secondary data is modified (primary: data entered by a user or read from an interface, secondary: data computed by a utility such as update_all_products.pl) ' owner: description: 'Id of the producer in case he provides his own data about a product (producer platform). ' type: string owners_tags: description: 'Tagyfied version of owner ' type: string photographers_tags: type: array items: type: string rev: description: revision number of this product version (each edit adds a revision) type: integer sources: type: array items: type: object title: product_meta_source properties: fields: type: array items: type: string id: type: string images: type: array items: type: object import_t: type: integer manufacturer: type: - integer - string name: type: string source_licence: type: string source_licence_url: type: string url: type: - 'null' - string sources_fields: type: object title: product_meta_source_fields properties: org-gs1: type: object properties: gln: type: string gpcCategoryCode: type: string gpcCategoryName: type: string isAllergenRelevantDataProvided: type: string lastChangeDateTime: type: string partyName: type: string productionVariantDescription: type: string publicationDateTime: type: string teams: type: string teams_tags: type: array items: type: string update_key: type: string - type: object description: 'Knowledge panels for a product ' properties: knowledge_panels: type: object title: panels description: 'The panels object is a dictionary of individual panel objects. Each key of the dictionary is the id of the panel, and the value is the panel object. Apps typically display a number of root panels with known panel ids (e.g. health_card and environment_card). Panels can reference other panels and display them as sub-panels.' examples: - additionalProperties: string additionalProperties: title: panel type: object description: Each panel contains an optional title and an optional array of elements. properties: type: type: string description: Type of the panel. If set to "card", the panel and its sub-panels should be displayed in a card. If set to "inline", the panel should have its content always displayed. expanded: type: boolean description: If true, the panel is to be displayed already expanded. If false, only the title should be displayed, and the user should be able to click or tap it to open the panel and display the elements. expand_for: type: string description: If set to "large", the content of the panel should be expanded on large screens, but it should still be possible to unexpand it. evaluation: type: string description: An evaluation status specifically for this title element. This can be used to directly color the icon if 'icon_color_from_evaluation' is true and this field is present, or it might provide context for the title itself. e.g. bad is red. Please be careful in choosing colors, to avoid 50 shades of red. example: bad enum: - good - average - neutral - bad - unknown half_width_on_mobile: type: boolean description: If true, suggests that this panel could be rendered as half-width on mobile devices, allowing for side-by-side display with another half-width panel if applicable. example: true title_element: title: title_element x-stoplight: id: lox0wvl9bdgy2 type: object description: The title of a panel. properties: name: type: string description: A short name of this panel, not including any actual values. e.g. "Fat" title: type: string subtitle: type: string type: type: string enum: - grade - percentage - string description: Used to indicate how the value of this item is measured, such as "grade" for Nutri-Score and Green-Score or "percentage" for Salt grade: type: string description: The value for this panel where it corresponds to a A to E grade such as the Nutri-Score or the Green-Score. enum: - a+ - a - b - c - d - e - f - unknown value: type: number description: The numeric value of the panel, where the type is "percentage" value_string: type: string description: The string value of the panel, for cases where the value is not numeric icon_url: type: string icon_color_from_evaluation: type: string icon_size: type: string description: 'If set to "small", the icon should be displayed at a small size. ' elements: type: array description: An ordered list of elements to display in the content of the panel. items: title: element x-stoplight: id: e2ybdrtmx0tme type: object description: 'Each element object contains one specific element object such as a text element or an image element. ' properties: element_type: type: string enum: - text - image - action - panel - panel_group - table description: 'The type of the included element object. The element_type also indicates which field contains the included element object. e.g. if the element_type is "text", the included element object will be in the "text_element" field. Note that in the future, new type of element may be added, so your code should ignore unrecognized types, and unknown properties. TODO: add Map type ' text_element: title: text_element x-stoplight: id: vdwxlt73qnqfa type: object description: 'A text in simple HTML format to display. For some specific texts that correspond to a product field (e.g. a product name, the ingredients list of a product),the edit_field_* fields are used to indicate how to edit the field value.' properties: type: type: string description: 'the type of text, might influence the way you display it. ' enum: - summary - warning - notes html: type: string description: Text to display in HTML format. language: type: string description: Language of the text. The name of the language is returned in the language requested when making the API call. e.g. if the text is in Polish, and the requested language is French, the language field will contain "Polonais" (French for "Polish"). Only set for specific fields such as the list of ingredients of a product. lc: type: string description: 2 letter language code for the text. Only set for specific fields such as the list of ingredients of a product. edit_field_id: type: string description: id of the field used to edit this text in the product edit API. edit_field_type: type: string description: Type of the product field. edit_field_value: type: string description: Current value of the product field. This may differ from the html field which can contain extra formating. source_url: type: string description: Link to the source example: https://en.wikipedia.org/wiki/Sodium acetate source_text: type: string description: name of the source example: Wikipedia source_lc: type: string description: Source locale name example: en source_language: type: string description: Human readable source locale name example: English image_element: title: image_element x-stoplight: id: k4v4kwt489q3j type: object properties: url: type: string description: full URL of the image width: type: integer description: "Width of the image.\n\nThis is just a suggestion coming from the server, \nthe client may choose to use its own dimensions for the image.\n" height: type: integer description: 'Height of the image. This is just a suggestion coming from the server, the client may choose to use its own dimensions for the image. ' alt_text: type: string description: Alt Text of the image. action_element: title: action_element type: object properties: title: type: string actions: type: array description: The ids of the actions to show. items: type: string description: The id of the action to show. examples: - edit_product - add_categories description: The action element is used to display a title and a list of actions like editing a product or adding categories. panel_element: title: panel_element x-stoplight: id: ymx41elz4yrnj type: object description: Panels can include other panels as sub-panels using the panel_element. properties: panel_id: type: string description: The id of the panel to include. The id is the key of the panel in the panels object returned in the knowledge_panels field. panel_group_element: title: panel_group_element x-stoplight: id: b7emlfrgiuue2 type: object properties: title: type: string panel_ids: type: array description: The ids of the panels to include. The ids are the keys of the panels in the panels object returned in the knowledge_panels field. items: type: string image: type: object description: An image related to the panel group (e.g. the ingredients or nutrition facts image for the ingredients and nutrition panel groups). description: The panel group element is used to display an optional title followed by a number of sub-panels. table_element: title: table_element type: object description: Element to display a table. properties: id: type: string description: An id for the table. table_type: type: string description: Type of table (e.g. "percents" for tables with percentage columns) title: type: string description: 'Title of the table. ' columns: type: array items: type: object title: table_column properties: text: type: string description: Column header text type: type: string description: Column type (e.g. "text", "percent") text_for_small_screens: type: string description: Alternative text for small screens style: type: string description: CSS style for the column column_group_id: type: string shown_by_default: type: boolean rows: type: array description: Array of table rows items: type: object properties: id: type: string description: Row ID style: type: string description: CSS style for the row values: type: array description: Array of cell values items: type: object properties: text: type: string description: Cell text content icon_url: type: string description: URL of an icon to display in the cell percent: type: number description: Percentage value for progress bars (used with percent columns) evaluation: type: string description: Evaluation level (good, bad, neutral, etc.) for styling level: type: integer description: Indentation level style: type: string description: CSS style for the cell required: - element_type level: type: string description: 'a message level, as levels we use in log. It might help theming the panel visually. Some possible values: info, recommendation ' example: info size: type: string enum: - small description: "size is either empty (normal display) \nor small to indicate a panel that should have a smaller font size\n" example: small topics: type: array items: type: string example: health description: topics currently include health, environment, problem readOnly: true - type: object description: 'Specific data about a product to enable personal ranking ' properties: attribute_groups: type: array description: Each element is an attribute that can help compute a personal ranking for the product items: title: product_attribute_group type: object properties: id: type: string description: 'Unique id of the attribute. It will be use to match against preferences parameters. ' status: type: string enum: - known - unknown description: wether we have the information to really compute this criteria or not. title: type: string description: 'A descriptive sentence about the situation of the product concerning attribute ' example: 'Does not contain: Molluscs' match: type: number format: float minimum: 0 maximum: 100 description: 'a numeric value for the match, telling how much the products ranks well for this particular attribute. The higher the value, the better the match. ' grade: description: every attribute as a grade for a to e type: string enum: - unknown - a - b - c - d - e name: type: string description: The name of attribute, for eventual display icon_url: type: string description: an icon representing the attribute match (often using a color) description: type: string description: An eventual description of the value of the property upon which this attribute is based description_short: type: string description: An eventual short description of the value of the property upon which this attribute is based blame: title: Blame Information description: 'Information about who last modified each field of the product. This is returned when the ''blame'' parameter is included in the request. ' type: object properties: fields: type: object description: Blame information for product fields additionalProperties: type: object properties: userid: type: string description: User ID of the person who last modified this field example: editortester t: type: integer description: Unix timestamp when the field was last modified example: 1636466428 rev: type: integer description: Revision number when the field was last modified example: 5 value: type: string description: Current value of the field example: Some Cookie previous_userid: type: string description: User ID of the person who previously modified this field example: previoustester previous_t: type: integer description: Unix timestamp when the field was previously modified example: 1636366428 previous_rev: type: integer description: Previous revision number example: 4 previous_value: type: string description: Previous value of the field example: Old Cookie Name uploaded_images: type: object description: Blame information for uploaded images additionalProperties: type: object properties: userid: type: string description: User ID of the person who uploaded this image t: type: integer description: Unix timestamp when the image was uploaded rev: type: integer description: Revision number when the image was uploaded value: type: string description: Image filename or identifier selected_images: type: object description: Blame information for selected images additionalProperties: type: object properties: userid: type: string description: User ID of the person who selected this image t: type: integer description: Unix timestamp when the image was selected rev: type: integer description: Revision number when the image was selected value: type: string description: Selected image identifier nutriments: type: object description: Blame information for nutrition facts additionalProperties: type: object properties: userid: type: string description: User ID of the person who last modified this nutriment t: type: integer description: Unix timestamp when the nutriment was last modified rev: type: integer description: Revision number when the nutriment was last modified value: oneOf: - type: string - type: number description: Current value of the nutriment packagings: type: object description: Blame information for packaging data additionalProperties: type: object properties: userid: type: string description: User ID of the person who last modified packaging info t: type: integer description: Unix timestamp when packaging was last modified rev: type: integer description: Revision number when packaging was last modified value: type: string description: Current packaging data signature examples: full-product: summary: retrieved values for a well known chocolate and nut spread value: code: '3017620422003' product: _id: '3017620422003' _keywords: - et - pate - cacao - produit - ferrero - gluten - petit-dejeuner - san - au - aux - sucre - nutella abbreviated_product_name: Nutella t.400 abbreviated_product_name_fr: Nutella t.400 added_countries_tags: [] additives_n: 1 additives_original_tags: - en:e322 additives_prev_original_tags: - en:e322 additives_tags: - en:e322 allergens: en:milk,en:nuts,en:soybeans allergens_from_ingredients: en:nuts, hazelnuts allergens_from_user: (fr) en:milk,en:nuts,en:soybeans allergens_hierarchy: - en:milk - en:nuts - en:soybeans allergens_lc: fr allergens_tags: - en:milk - en:nuts - en:soybeans amino_acids_prev_tags: [] amino_acids_tags: [] brands: Ferrero brands_tags: - ferrero carbon_footprint_percent_of_known_ingredients: 13 categories: Produits à tartiner,Petit-déjeuners,Produits à tartiner sucrés,Pâtes à tartiner,Pâtes à tartiner aux noisettes,Pâtes à tartiner aux noisettes et au cacao categories_hierarchy: - en:breakfasts - en:spreads - en:sweet-spreads - en:hazelnut-spreads - en:chocolate-spreads - en:cocoa-and-hazelnuts-spreads categories_lc: fr categories_properties: agribalyse_food_code:en: '31032' agribalyse_proxy_food_code:en: '31032' ciqual_food_code:en: '31032' categories_properties_tags: - all-products - categories-known - agribalyse-food-code-31032 - agribalyse-food-code-known - agribalyse-proxy-food-code-31032 - agribalyse-proxy-food-code-known - ciqual-food-code-31032 - ciqual-food-code-known - agribalyse-known - agribalyse-31032 categories_tags: - en:breakfasts - en:spreads - en:sweet-spreads - fr:pates-a-tartiner - en:hazelnut-spreads - en:chocolate-spreads - en:cocoa-and-hazelnuts-spreads category_properties: ciqual_food_name:en: Chocolate spread with hazelnuts checked: 'on' checkers_tags: - moon-rabbit ciqual_food_name_tags: - chocolate-spread-with-hazelnuts cities_tags: [] code: '3017620422003' codes_tags: - code-13 - 3017620422xxx - 301762042xxxx - 30176204xxxxx - 3017620xxxxxx - 301762xxxxxxx - 30176xxxxxxxx - 3017xxxxxxxxx - 301xxxxxxxxxx - 30xxxxxxxxxxx - 3xxxxxxxxxxxx compared_to_category: en:cocoa-and-hazelnuts-spreads complete: 0 completeness: 0.875 conservation_conditions: A conserver au sec et à l'abri de la chaleur. Ne pas mettre au réfrigérateur. conservation_conditions_fr: A conserver au sec et à l'abri de la chaleur. Ne pas mettre au réfrigérateur. correctors_tags: - user1 - user2 - user3 - user4 countries: en:Algeria Austria Belgium Canada France Germany Italy Luxembourg Mexico Morocco Netherlands Portugal Senegal Spain Switzerland Tunisia United Kingdom United States countries_beforescanbot: Belgium,France countries_hierarchy: - en:Algeria Austria Belgium Canada France Germany Italy Luxembourg Mexico Morocco Netherlands Portugal Senegal Spain Switzerland Tunisia United Kingdom United States countries_lc: fr countries_tags: - en:algeria-austria-belgium-canada-france-germany-italy-luxembourg-mexico-morocco-netherlands-portugal-senegal-spain-switzerland-tunisia-united-kingdom-united-states created_t: 1457680652 creator: openfoodfacts-contributors customer_service: FERRERO FRANCE COMMERCIALE - Service Consommateurs, CS 90058 - 76136 MONT SAINT AIGNAN Cedex customer_service_fr: FERRERO FRANCE COMMERCIALE - Service Consommateurs, CS 90058 - 76136 MONT SAINT AIGNAN Cedex data_quality_bugs_tags: [] data_quality_completeness: - en:photo-and-data-to-be-checked-by-experienced-contributor - en:ingredients-es-photo-to-be-selected - en:ingredients-es-completed - en:ingredients-en-photo-to-be-selected - en:ingredients-en-completed - en:nutrition-photo-to-be-selected - en:categories-completed - en:nutriments-completed - en:packaging-photo-to-be-selected - en:packagings-completed - en:emb-codes-completed - en:front-photo-to-be-selected - en:product-name-to-be-completed - en:quantity-to-be-completed - en:brands-to-be-completed - en:expiration-date-to-be-completed data_quality_dimensions: accuracy: overall: '0.00' completeness: general_information: '0.00' ingredients: '0.50' nutrition: '0.67' overall: '0.40' packaging: '0.67' data_quality_errors_tags: [] data_quality_info_tags: - en:packaging-data-incomplete - en:ingredients-percent-analysis-ok - en:ecoscore-extended-data-computed - en:ecoscore-extended-data-less-precise-than-agribalyse - en:food-groups-1-known - en:food-groups-2-known - en:food-groups-3-unknown data_quality_tags: - en:packaging-data-incomplete - en:ingredients-percent-analysis-ok - en:ecoscore-extended-data-computed - en:ecoscore-extended-data-less-precise-than-agribalyse - en:food-groups-1-known - en:food-groups-2-known - en:food-groups-3-unknown - en:ecoscore-origins-of-ingredients-origins-are-100-percent-unknown - en:ecoscore-packaging-unspecified-shape - en:ecoscore-production-system-no-label data_quality_warnings_tags: - en:ecoscore-origins-of-ingredients-origins-are-100-percent-unknown - en:ecoscore-packaging-unspecified-shape - en:ecoscore-production-system-no-label data_sources: Database - FoodRepo / openfood.ch, Databases, Producer - Ferrero, Producers, App - yuka, Apps, Producer - ferrero-france-commerciale, Database - Equadis, Database - GDSN, App - InFood, App - Open Food Facts, App - halal-healthy, App - smoothie-openfoodfacts data_sources_tags: - database-foodrepo-openfood-ch - databases - producer-ferrero - producers - app-yuka - apps - producer-ferrero-france-commerciale - database-equadis - database-gdsn - app-infood - app-open-food-facts - app-halal-healthy - app-smoothie-openfoodfacts ecoscore_data: adjustments: origins_of_ingredients: aggregated_origins: - origin: en:unknown percent: 100 epi_score: 0 epi_value: -5 origins_from_origins_field: - en:unknown transportation_scores: fr: 0 'no': 0 uk: 0 us: 0 world: 0 transportation_values: fr: 0 'no': 0 uk: 0 us: 0 world: 0 values: fr: -5 'no': -5 uk: -5 us: -5 world: -5 warning: origins_are_100_percent_unknown packaging: non_recyclable_and_non_biodegradable_materials: 0 packagings: - ecoscore_material_score: 81 ecoscore_shape_ratio: 1 material: en:clear-glass shape: en:unknown score: 81 value: -2 warning: unspecified_shape production_system: labels: [] value: 0 warning: no_label threatened_species: ingredient: en:palm-oil value: -10 agribalyse: agribalyse_food_code: '31032' co2_agriculture: 8.7770996 co2_consumption: 0 co2_distribution: 0.014104999 co2_packaging: 0.18864842 co2_processing: 0.69167973 co2_total: 9.8742343 co2_transportation: 0.19708507 code: '31032' dqr: '2.54' ef_agriculture: 0.61477708 ef_consumption: 0 ef_distribution: 0.0045906531 ef_packaging: 0.020453714 ef_processing: 0.085674643 ef_total: 0.74366703 ef_transportation: 0.017824104 is_beverage: 0 name_en: Chocolate spread with hazelnuts name_fr: Pâte à tartiner chocolat et noisette score: 40 grade: d grades: fr: d 'no': d uk: d us: d world: d missing: labels: 1 origins: 1 packagings: 1 missing_data_warning: 1 score: 23 scores: fr: 23 'no': 23 uk: 23 us: 23 world: 23 status: known ecoscore_extended_data: impact: ef_single_score_log_stddev: 0.0539895633164057 likeliest_impacts: Climate_change: 0.172717449218484 EF_single_score: 0.023255035815491 likeliest_recipe: en:emulsifier: 0.388589430098073 en:hazelnut_oil: 12.806852015349 en:palm_oil: 16.6103749736231 en:sugar: 52.9709312507153 en:water: 4.90093151221936 fr:Cacao_Maigre_7: 3.94056985087663 fr:Lait__cr_m__En_Poudre_8: 6.8959972390341 mass_ratio_uncharacterized: 0.11 uncharacterized_ingredients: impact: - fr:Lait Écrémé En Poudre 8 - fr:Cacao Maigre 7 nutrition: - fr:Lait Écrémé En Poudre 8 - fr:Cacao Maigre 7 uncharacterized_ingredients_mass_proportion: impact: 0.11 nutrition: 0.11 uncharacterized_ingredients_ratio: impact: 0.333333333333333 nutrition: 0.333333333333333 warnings: - 'The product has a high number of nutrition uncharacterized ingredients: 33%' - 'The product has a high number of impact uncharacterized ingredients: 33%' - 'The estimated mass of nutrition uncharacterized ingredients in the product is high: 11%' - 'The estimated mass of impact uncharacterized ingredients in the product is high: 11%' ecoscore_extended_data_version: '4' ecoscore_grade: d ecoscore_score: 23 ecoscore_tags: - d editors_tags: - user1 - user2 - user3 - user4 emb_codes: '' emb_codes_20141016: '' emb_codes_orig: '' emb_codes_tags: [] entry_dates_tags: - '2016-03-11' - 2016-03 - '2016' environment_impact_level: '' environment_impact_level_tags: [] expiration_date: 09/2021 food_groups: en:sweets food_groups_tags: - en:sugary-snacks - en:sweets fruits-vegetables-nuts_100g_estimate: 0 generic_name: '' generic_name_ar: نوتلا generic_name_de: Nuss-Nougat-Creme generic_name_en: '' generic_name_es: Crema de Avellanas con cacao generic_name_fr: Pâte à tartiner aux noisettes generic_name_id: '' generic_name_it: Nutella generic_name_nl: '' grades: {} id: '3017620422003' image_front_small_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.200.jpg image_front_thumb_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.100.jpg image_front_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.400.jpg image_nutrition_small_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.200.jpg image_nutrition_thumb_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.100.jpg image_nutrition_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.400.jpg image_small_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.200.jpg image_thumb_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.100.jpg image_url: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.400.jpg images: '1': sizes: '100': h: 100 w: 56 '400': h: 400 w: 225 full: h: 2000 w: 1125 uploaded_t: '1457680652' uploader: openfoodfacts-contributors '2': sizes: '100': h: 100 w: 75 '400': h: 400 w: 300 full: h: 3264 w: 2448 uploaded_t: '1462829284' uploader: openfoodfacts-contributors '3': sizes: '100': h: 100 w: 56 '400': h: 400 w: 225 full: h: 2000 w: 1125 uploaded_t: '1468510986' uploader: user3 front_en: angle: '0' coordinates_image_size: full geometry: 0x0-0-0 imgid: '1' normalize: 'false' rev: '399' sizes: '100': h: 100 w: 77 '200': h: 200 w: 155 '400': h: 400 w: 310 full: h: 1808 w: 1400 white_magic: 'false' x1: '0' x2: '0' y1: '0' y2: '0' front_fr: angle: 0 coordinates_image_size: '400' geometry: 0x0--5--5 imgid: '2' normalize: 'false' rev: '415' sizes: '100': h: 100 w: 77 '200': h: 200 w: 155 '400': h: 400 w: 310 full: h: 1808 w: 1400 white_magic: 'false' x1: '-1' x2: '-1' y1: '-1' y2: '-1' ingredients_fr: angle: null coordinates_image_size: '400' geometry: 0x0-0-0 imgid: '3' normalize: null rev: '299' sizes: '100': h: 16 w: 100 '200': h: 33 w: 200 '400': h: 65 w: 400 full: h: 334 w: 2046 white_magic: null x1: null x2: null y1: null y2: null nutrition_en: angle: '0' coordinates_image_size: full geometry: 0x0-0-0 imgid: '3' normalize: 'false' rev: '400' sizes: '100': h: 100 w: 96 '200': h: 200 w: 192 '400': h: 400 w: 383 full: h: 572 w: 548 white_magic: 'false' x1: '0' x2: '0' y1: '0' y2: '0' packaging_fr: angle: 0 coordinates_image_size: full geometry: 0x0--1--1 imgid: '3' normalize: null rev: '420' sizes: '100': h: 31 w: 100 '200': h: 61 w: 200 '400': h: 122 w: 400 full: h: 638 w: 2084 white_magic: null x1: '-1' x2: '-1' y1: '-1' y2: '-1' informers_tags: - user1 - user2 - user3 - user4 ingredients: - id: en:sugar percent_estimate: 46.5 percent_max: 63 percent_min: 30 text: sugar vegan: 'yes' vegetarian: 'yes' - from_palm_oil: 'yes' id: en:palm-oil percent_estimate: 25.5 percent_max: 38 percent_min: 13 text: palm oil vegan: 'yes' vegetarian: 'yes' - id: en:hazelnut percent: 13 percent_estimate: 13 percent_max: 13 percent_min: 13 text: hazelnuts vegan: 'yes' vegetarian: 'yes' - id: en:skim-milk-powder-8 percent: 7 percent_estimate: 7 percent_max: 7 percent_min: 7 text: skim milk powder 8 - id: en:lean-cocoa-7 percent: 4 percent_estimate: 4 percent_max: 4 percent_min: 4 text: lean cocoa 7 - id: en:emulsifier ingredients: - id: en:soya-lecithin percent_estimate: 2 percent_max: 4 percent_min: 0 text: soy lecithins vegan: 'yes' vegetarian: 'yes' percent_estimate: 2 percent_max: 4 percent_min: 0 text: emulsifiers - id: en:vanillin percent_estimate: 2 percent_max: 4 percent_min: 0 text: vanillin ingredients_analysis: en:palm-oil: - en:palm-oil en:vegan-status-unknown: - en:skim-milk-powder-8 - en:lean-cocoa-7 - en:vanillin en:vegetarian-status-unknown: - en:skim-milk-powder-8 - en:lean-cocoa-7 - en:vanillin ingredients_analysis_tags: - en:palm-oil - en:vegan-status-unknown - en:vegetarian-status-unknown ingredients_from_or_that_may_be_from_palm_oil_n: 0 ingredients_from_palm_oil_n: 0 ingredients_from_palm_oil_tags: [] ingredients_hierarchy: - en:sugar - en:added-sugar - en:disaccharide - en:palm-oil - en:oil-and-fat - en:vegetable-oil-and-fat - en:palm-oil-and-fat - en:hazelnut - en:nut - en:tree-nut - en:skim-milk-powder-8 - en:lean-cocoa-7 - en:emulsifier - en:vanillin - en:soya-lecithin - en:e322 - en:e322i ingredients_n: 8 ingredients_n_tags: - '8' - 1-10 ingredients_original_tags: - en:sugar - en:palm-oil - en:hazelnut - en:skim-milk-powder-8 - en:lean-cocoa-7 - en:emulsifier - en:vanillin - en:soya-lecithin ingredients_percent_analysis: 1 ingredients_tags: - en:sugar - en:added-sugar - en:disaccharide - en:palm-oil - en:oil-and-fat - en:vegetable-oil-and-fat - en:palm-oil-and-fat - en:hazelnut - en:nut - en:tree-nut - en:skim-milk-powder-8 - en:lean-cocoa-7 - en:emulsifier - en:vanillin - en:soya-lecithin - en:e322 - en:e322i ingredients_text: 'sugar, palm oil, hazelnuts 13%, skim milk powder 8, 7%, lean cocoa 7, 4%, emulsifiers: soy lecithins, vanillin' ingredients_text_en: 'sugar, palm oil, hazelnuts 13%, skim milk powder 8, 7%, lean cocoa 7, 4%, emulsifiers: soy lecithins, vanillin' ingredients_text_fr: 'Sucre, huile de palme, _NOISETTES_ 13%, _LAIT_ écrémé en poudre 8,7%, cacao maigre 7,4%, émulsifiants: lécithine [SOJA]; vanilline. Sans gluten' ingredients_text_with_allergens: 'sugar, palm oil, hazelnuts 13%, skim milk powder 8, 7%, lean cocoa 7, 4%, emulsifiers: soy lecithins, vanillin' ingredients_text_with_allergens_en: 'sugar, palm oil, hazelnuts 13%, skim milk powder 8, 7%, lean cocoa 7, 4%, emulsifiers: soy lecithins, vanillin' ingredients_text_with_allergens_fr: 'Sucre, huile de palme, NOISETTES 13%, LAIT écrémé en poudre 8,7%, cacao maigre 7,4%, émulsifiants: lécithine [SOJA]; vanilline. Sans gluten' ingredients_that_may_be_from_palm_oil_n: 0 ingredients_that_may_be_from_palm_oil_tags: [] ingredients_with_specified_percent_n: 3 ingredients_with_specified_percent_sum: 24 ingredients_with_unspecified_percent_n: 4 ingredients_with_unspecified_percent_sum: 76 interface_version_created: '20120622' interface_version_modified: 20150316.jqm2 known_ingredients_n: 15 labels: Sans gluten,en:nonorganic labels_hierarchy: - en:no-gluten - en:nonorganic labels_lc: fr labels_tags: - en:no-gluten - en:nonorganic lang: en languages: en:arabic: 2 en:english: 4 en:french: 10 en:german: 3 en:italian: 3 en:spanish: 7 languages_codes: en: 4 fr: 10 languages_hierarchy: - en:english - en:french languages_tags: - en:english - en:french - en:multilingual last_check_dates_tags: - '2021-07-21' - 2021-07 - '2021' last_checked_t: 1626872806 last_checker: user3 last_edit_dates_tags: - '2022-07-29' - 2022-07 - '2022' last_editor: user4 last_image_dates_tags: - '2022-07-29' - 2022-07 - '2022' last_image_t: 1659084293 last_modified_by: user4 last_modified_t: 1659084329 lc: en link: '' main_countries_tags: [] manufacturing_places: '' manufacturing_places_tags: [] max_imgid: '121' minerals_prev_tags: [] minerals_tags: [] misc_tags: - en:nutrition-no-fiber - en:nutrition-fruits-vegetables-nuts-estimate-from-ingredients - en:nutrition-no-fiber-or-fruits-vegetables-nuts - en:nutriscore-computed - en:ecoscore-extended-data-computed - en:ecoscore-extended-data-version-4 - en:ecoscore-missing-data-warning - en:ecoscore-missing-data-labels - en:ecoscore-missing-data-origins - en:ecoscore-missing-data-packagings - en:ecoscore-computed no_nutrition_data: 'null' nova_group: 4 nova_groups: '4' nova_groups_markers: '3': - - ingredients - en:sugar '4': - - additives - en:e322 - - ingredients - en:emulsifier nova_groups_tags: - en:4-ultra-processed-food-and-drink-products nucleotides_prev_tags: [] nucleotides_tags: [] nutrient_levels: fat: high salt: low saturated-fat: high sugars: high nutrient_levels_tags: - en:fat-in-high-quantity - en:saturated-fat-in-high-quantity - en:sugars-in-high-quantity - en:salt-in-low-quantity nutriments: alcohol: 0 alcohol_100g: 0 alcohol_serving: 0 alcohol_unit: '% vol' alcohol_value: 0 carbohydrates: 57.5 carbohydrates_100g: 57.5 carbohydrates_serving: 8.62 carbohydrates_unit: g carbohydrates_value: 57.5 carbon-footprint-from-known-ingredients_product: 135 carbon-footprint-from-known-ingredients_serving: 5.07 energy: 2252 energy-kcal: 539 energy-kcal_100g: 539 energy-kcal_serving: 80.8 energy-kcal_unit: kcal energy-kcal_value: 539 energy-kj: 2252 energy-kj_100g: 2252 energy-kj_serving: 338 energy-kj_unit: kJ energy-kj_value: 2252 energy_100g: 2252 energy_serving: 338 energy_unit: kJ energy_value: 2252 fat: 30.9 fat_100g: 30.9 fat_serving: 4.63 fat_unit: g fat_value: 30.9 fruits-vegetables-nuts-estimate-from-ingredients_100g: 13 fruits-vegetables-nuts-estimate-from-ingredients_serving: 13 nova-group: 4 nova-group_100g: 4 nova-group_serving: 4 nutrition-score-fr: 26 nutrition-score-fr_100g: 26 proteins: 6.3 proteins_100g: 6.3 proteins_serving: 0.945 proteins_unit: g proteins_value: 6.3 salt: 0.107 salt_100g: 0.107 salt_serving: 0.016 salt_unit: g salt_value: 0.107 saturated-fat: 10.6 saturated-fat_100g: 10.6 saturated-fat_serving: 1.59 saturated-fat_unit: g saturated-fat_value: 10.6 sodium: 0.0428 sodium_100g: 0.0428 sodium_serving: 0.00642 sodium_unit: g sodium_value: 0.0428 sugars: 56.3 sugars_100g: 56.3 sugars_serving: 8.44 sugars_unit: g sugars_value: 56.3 nutriscore_data: energy: 2252 energy_points: 6 energy_value: 2252 fiber: 0 fiber_points: 0 fiber_value: 0 fruits_vegetables_nuts_colza_walnut_olive_oils: 13 fruits_vegetables_nuts_colza_walnut_olive_oils_points: 0 fruits_vegetables_nuts_colza_walnut_olive_oils_value: 13 grade: e is_beverage: 0 is_cheese: 0 is_fat: 0 is_water: 0 negative_points: 26 positive_points: 0 proteins: 6.3 proteins_points: 3 proteins_value: 6.3 saturated_fat: 10.6 saturated_fat_points: 10 saturated_fat_ratio: 34.3042071197411 saturated_fat_ratio_points: 5 saturated_fat_ratio_value: 34.3 saturated_fat_value: 10.6 score: 26 sodium: 42.8 sodium_points: 0 sodium_value: 42.8 sugars: 56.3 sugars_points: 10 sugars_value: 56.3 nutriscore_grade: e nutriscore_score: 26 nutriscore_score_opposite: -26 nutrition_data: 'on' nutrition_data_per: 100g nutrition_data_prepared: '' nutrition_data_prepared_per: 100g nutrition_grade_fr: e nutrition_grades: e nutrition_grades_tags: - e nutrition_score_beverage: 0 nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients: 1 nutrition_score_warning_fruits_vegetables_nuts_estimate_from_ingredients_value: 13 nutrition_score_warning_no_fiber: 1 obsolete: '' obsolete_since_date: '' origin: '' origins: '' origins_hierarchy: [] origins_lc: fr origins_tags: [] other_nutritional_substances_tags: [] owner: org-ferrero-france-commerciale owners_tags: org-ferrero-france-commerciale packaging: PP 5 Ummi PLASTIQUE / PLASTIEK PAP 27 WWW PAPIER / PAPIER CIPAP 82 PANNEAU DE FIBRE COMPOSITES/ COMPOSIET VEZELPLAAT GL 70 VERRE / GLAS packaging_hierarchy: - fr:PP 5 Ummi PLASTIQUE / PLASTIEK PAP 27 WWW PAPIER / PAPIER CIPAP 82 PANNEAU DE FIBRE COMPOSITES/ COMPOSIET VEZELPLAAT GL 70 VERRE / GLAS packaging_lc: fr packaging_tags: - fr:pp-5-ummi-plastique-plastiek-pap-27-www-papier-papier-cipap-82-panneau-de-fibre-composites-composiet-vezelplaat-gl-70-verre-glas packaging_text: '' packaging_text_ar: '' packaging_text_de: '' packaging_text_en: '' packaging_text_es: Pot en verre, couvercle en plastique. packaging_text_fr: '1 couvercle plastique blanc opaque PP à jeter, 1 plaque en carton PAP 21 à recycler, 1 opercule en carton C/PAP 82 à recycler, 1 pot en verre à recycler' packaging_text_id: '' packaging_text_it: '' packaging_text_nl: '' packagings: - material: en:clear-glass photographers_tags: - user1 - user2 - user3 - user4 pnns_groups_1: Sugary snacks pnns_groups_1_tags: - sugary-snacks - known pnns_groups_2: Sweets pnns_groups_2_tags: - sweets - known popularity_key: 20999992556 popularity_tags: - top-10-scans-2021 - top-50-scans-2021 - top-100-scans-2021 - top-500-scans-2021 - top-1000-scans-2021 - top-5000-scans-2021 - top-10000-scans-2021 - top-50000-scans-2021 - top-100000-scans-2021 - top-10-fr-scans-2021 - top-50-fr-scans-2021 - top-100-fr-scans-2021 - top-500-fr-scans-2021 - top-1000-fr-scans-2021 - top-5000-fr-scans-2021 - top-10000-fr-scans-2021 - top-50000-fr-scans-2021 - top-100000-fr-scans-2021 - top-country-fr-scans-2021 - at-least-5-fr-scans-2021 - at-least-10-fr-scans-2021 product_name: Nutella product_name_ar: نوتيلا product_name_de: Nutella product_name_en: Nutella product_name_es: Nutella product_name_fr: Pâte à tartiner Nutella noisettes et cacao - 400g product_name_id: '' product_name_it: Nutella product_name_nl: '' product_quantity: '400' purchase_places: F - 77480 Mousseaux les Bray France purchase_places_tags: - f-77480-mousseaux-les-bray-france quantity: 400g removed_countries_tags: [] rev: 421 scans_n: 3713 scores: {} selected_images: front: display: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.400.jpg fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_fr.415.400.jpg small: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.200.jpg fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_fr.415.200.jpg thumb: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.399.100.jpg fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/front_fr.415.100.jpg ingredients: display: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_fr.299.400.jpg small: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_fr.299.200.jpg thumb: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_fr.299.100.jpg nutrition: display: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.400.jpg small: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.200.jpg thumb: en: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.400.100.jpg packaging: display: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_fr.420.400.jpg small: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_fr.420.200.jpg thumb: fr: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_fr.420.100.jpg serving_quantity: '15' serving_size: 15g sortkey: 1610877517 sources: - fields: - product_name_de - product_name_it - brands - countries id: openfood-ch images: [] import_t: 1548767279 manufacturer: '0' name: FoodRepo source_licence: Creative Commons Attribution 4.0 International License source_licence_url: https://creativecommons.org/licenses/by/4.0/ url: https://www.foodrepo.org/ch/products/19413 - fields: - packaging - ingredients_text_fr id: ferrero images: [] import_t: 1552318840 manufacturer: '1' name: Ferrero url: https://www.ferrero.fr sources_fields: org-gs1: gln: '3010176200101' gpcCategoryCode: '10000187' gpcCategoryName: Pâtes à Tartiner Sucrées (Longue Conservation) isAllergenRelevantDataProvided: 'true' lastChangeDateTime: '2022-07-13T16:01:41+02:00' partyName: FERRERO FRANCE COMMERCIALE productionVariantDescription: '2014' publicationDateTime: '2022-07-13T16:01:41+02:00' states: en:to-be-completed, en:nutrition-facts-completed, en:ingredients-completed, en:expiration-date-completed, en:packaging-code-to-be-completed, en:characteristics-to-be-completed, en:origins-to-be-completed, en:categories-completed, en:brands-completed, en:packaging-completed, en:quantity-completed, en:product-name-completed, en:photos-to-be-validated, en:packaging-photo-to-be-selected, en:nutrition-photo-selected, en:ingredients-photo-to-be-selected, en:front-photo-selected, en:photos-uploaded states_hierarchy: - en:to-be-completed - en:nutrition-facts-completed - en:ingredients-completed - en:expiration-date-completed - en:packaging-code-to-be-completed - en:characteristics-to-be-completed - en:origins-to-be-completed - en:categories-completed - en:brands-completed - en:packaging-completed - en:quantity-completed - en:product-name-completed - en:photos-to-be-validated - en:packaging-photo-to-be-selected - en:nutrition-photo-selected - en:ingredients-photo-to-be-selected - en:front-photo-selected - en:photos-uploaded states_tags: - en:to-be-completed - en:nutrition-facts-completed - en:ingredients-completed - en:expiration-date-completed - en:packaging-code-to-be-completed - en:characteristics-to-be-completed - en:origins-to-be-completed - en:categories-completed - en:brands-completed - en:packaging-completed - en:quantity-completed - en:product-name-completed - en:photos-to-be-validated - en:packaging-photo-to-be-selected - en:nutrition-photo-selected - en:ingredients-photo-to-be-selected - en:front-photo-selected - en:photos-uploaded stores: Bi1 Magasins U Carrefour Franprix Auchan Casino Intermarché,carrefour.fr stores_tags: - bi1-magasins-u-carrefour-franprix-auchan-casino-intermarche - carrefour-fr teams: pain-au-chocolat,shark-attack,stakano,chocolatine,la-robe-est-bleue,vegan,m,b,c,vegancheck teams_tags: - pain-au-chocolat - shark-attack - stakano - chocolatine - la-robe-est-bleue - vegan - m - b - c - vegancheck traces: '' traces_from_ingredients: '' traces_from_user: '(fr) ' traces_hierarchy: [] traces_lc: fr traces_tags: [] unique_scans_n: 2544 unknown_ingredients_n: 2 unknown_nutrients_tags: [] update_key: ing20220322 vitamins_prev_tags: [] vitamins_tags: [] status: 1 status_verbose: product found knowledge-panels: summary: retrieved knowledge_panels values for a well known chocolate and nut spread value: code: '3017620422003' product: knowledge_panels: additive_en:e322: elements: - element_type: text text_element: html: '

Lecithins are natural compounds commonly used in the food industry as emulsifiers and stabilizers.

Extracted from sources like soybeans and eggs, lecithins consist of phospholipids that enhance the mixing of oil and water, ensuring smooth textures in various products like chocolates, dressings, and baked goods.

They do not present any known health risks.

' level: info size: small title_element: title: E322 - Lecithins topics: - health additive_en:e322i: elements: - element_type: text text_element: html: '

Lecithins are natural compounds commonly used in the food industry as emulsifiers and stabilizers.

Extracted from sources like soybeans and eggs, lecithins consist of phospholipids that enhance the mixing of oil and water, ensuring smooth textures in various products like chocolates, dressings, and baked goods.

They do not present any known health risks.

' level: info size: small title_element: title: E322i - Lecithin topics: - health additives: elements: - element_type: panel panel_element: panel_id: additive_en:e322 - element_type: panel panel_element: panel_id: additive_en:e322i expanded: true level: info topics: - health type: inline carbon_footprint: elements: - element_type: text text_element: html: "\n

The carbon emission figure comes from ADEME's Agribalyse database, for the category: \n Chocolate spread with hazelnuts\n (Source: ADEME Agribalyse Database)\n

\n " type: summary - element_type: table table_element: columns: - text: Stage type: text - text: Impact type: percent id: ecoscore_carbon_impact_by_stages_table rows: - id: agriculture values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/agriculture.svg text: Agriculture - percent: 90.5494290591038 text: 90.5 % - id: processing values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/processing.svg text: Processing - percent: 4.03519782830842 text: 4.0 % - id: packaging values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/packaging.svg text: Packaging - percent: 2.25666518142997 text: 2.3 % - id: transportation values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/transportation.svg text: Transportation - percent: 2.93050779084989 text: 2.9 % - id: distribution values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/distribution.svg text: Distribution - percent: 0.228200140307944 text: 0.2 % - id: consumption values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/consumption.svg text: Consumption - percent: 0 text: 0.0 % table_type: percents title: Details of the impacts by stages of the life cycle evaluation: bad expanded: false level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/car.svg subtitle: 756 g CO₂e per 100g of product title: Equal to driving 3.9 km in a petrol car topics: - environment ecoscore: elements: - element_type: text text_element: html: Select a country in order to include the full impact of transportation. type: warning - element_type: text text_element: html: The Eco-Score is an experimental score that summarizes the environmental impacts of food products. - element_type: text text_element: html: "\n \n The Eco-Score was initially developed for France and it is being extended to other European countries. The Eco-Score formula is subject to change as it is regularly improved to make it more precise and better suited to each country.\n \n " type: note - element_type: panel_group panel_group_element: panel_ids: - ecoscore_agribalyse title: Life cycle analysis - element_type: panel_group panel_group_element: panel_ids: - ecoscore_origins_of_ingredients - ecoscore_threatened_species - ecoscore_packaging title: Bonuses and maluses - element_type: panel_group panel_group_element: panel_ids: - ecoscore_total title: Eco-Score for this product - element_type: text text_element: html: '

→ Learn more about the Eco-Score

' level: info title_element: grade: c icon_url: https://static.openfoodfacts.org/images/attributes/dist/ecoscore-c.svg name: Eco-Score title: Eco-Score C - Moderate environmental impact type: grade topics: - environment ecoscore_agribalyse: elements: - element_type: text text_element: html: "\n

Category: \n Chocolate spread with hazelnuts\n

\n
    \n
  • \n PEF environmental score: 0.53\n (the lower the score, the lower the impact)\n
  • \n
  • \n including impact on climate change: 7.56\n kg CO2 eq/kg of product\n
  • \n
\n " type: summary - element_type: table table_element: columns: - text: Stage type: text - text: Impact type: percent id: ecoscore_lca_impacts_by_stages_table rows: - id: agriculture values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/agriculture.svg text: Agriculture - percent: 82.9320249125877 text: 82.9 % - id: processing values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/processing.svg text: Processing - percent: 8.90284006527072 text: 8.9 % - id: packaging values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/packaging.svg text: Packaging - percent: 3.47194186866257 text: 3.5 % - id: transportation values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/transportation.svg text: Transportation - percent: 3.83105471997208 text: 3.8 % - id: distribution values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/distribution.svg text: Distribution - percent: 0.862138433506908 text: 0.9 % - id: consumption values: - icon_url: https://static.openfoodfacts.org/images/icons/dist/consumption.svg text: Consumption - percent: 0 text: 0.0 % table_type: percents title: Details of the impacts by stages of the life cycle level: info title_element: grade: c icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/lca.svg subtitle: 'Category: Chocolate spread with hazelnuts' title: 'Average impact of products of the same category: C (Score: 51/100)' type: grade topics: - environment ecoscore_origins_of_ingredients: elements: - element_type: text text_element: html: "\n Environmental policy: +4
\n Transportation: 0
\n " type: default - element_type: table table_element: columns: - text: Origin of the product and/or its ingredients type: text - text: '% of ingredients' type: percent - text: Impact type: text id: ecoscore_origins_of_ingredients_table rows: - values: - text: France - evaluation: neutral percent: 100 text: 100 % - evaluation: neutral text: Medium title: Origins of ingredients evaluation: average level: info title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/public.svg subtitle: 'Bonus: +4' title: Origins of ingredients with a medium impact topics: - environment ecoscore_packaging: elements: - element_type: table table_element: columns: - text: Shape type: text - text: Material type: text - text: Recycling type: text - text: Impact type: text id: ecoscore_packaging_components rows: - values: - text: 1 Pot - text: Clear Glass - text: Recycle in glass bin - evaluation: good text: Low - values: - text: 1 Lid - text: PP 5 - Polypropylene - text: Recycle with plastics - metal and bricks - evaluation: bad text: High - values: - text: 1 Backing - text: Non-corrugated cardboard - text: Recycle in paper bin - evaluation: good text: Low - values: - text: 1 Seal - text: 82 C/PAP - text: Recycle with plastics - metal and bricks - evaluation: bad text: High title: Packaging parts evaluation: average level: info title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/packaging.svg subtitle: 'Malus: -5' title: Packaging with a medium impact topics: - environment ecoscore_production_system: evaluation: neutral level: info title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/agriculture.svg title: No labels with environmental benefits topics: - environment ecoscore_threatened_species: elements: - element_type: text text_element: html: "\n

Contains palm oil

\n

Tropical forests in Asia, Africa and Latin America are destroyed to create and expand oil palm tree plantations. The deforestation contributes to climate change, and it endangers species such as the orangutan, the pigmy elephant and the Sumatran rhino.

\n " type: summary evaluation: bad level: info title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/monkey_unhappy.svg subtitle: 'Malus: -10' title: Ingredients that threatens species topics: - environment ecoscore_total: elements: - element_type: text text_element: html: "\n Life cycle analysis score: 51
\n Sum of bonuses and maluses:\n \n -11\n

\n Final score: 40/100\n \n " type: summary level: info title_element: grade: c icon_url: https://static.openfoodfacts.org/images/attributes/dist/ecoscore-c.svg subtitle: 'Product: Nutella - 400 g' title: 'Impact for this product: C (Score: 40/100)' type: grade topics: - environment environment_card: elements: - element_type: panel panel_element: panel_id: ecoscore - element_type: panel_group panel_group_element: panel_ids: - carbon_footprint title: Carbon footprint - element_type: panel_group panel_group_element: image: alt: Nutella - Recycling instructions and/or packaging information id: packaging_en lc: en sizes: '100': height: 38 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_en.526.100.jpg width: 100 '200': height: 76 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_en.526.200.jpg width: 200 '400': height: 152 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_en.526.400.jpg width: 400 full: height: 474 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/packaging_en.526.full.jpg width: 1249 type: packaging panel_group_id: packaging_recycling panel_ids: - packaging_recycling title: Packaging - element_type: panel_group panel_group_element: panel_ids: - origins_of_ingredients title: Transportation - element_type: panel_group panel_group_element: panel_ids: - palm_oil title: Threatened species expanded: true title_element: title: Environment topics: - environment type: card health_card: elements: - element_type: panel_group panel_group_element: image: alt: Nutella - Nutrition facts - fr id: nutrition_fr lc: fr sizes: '100': height: 94 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_fr.651.100.jpg width: 100 '200': height: 189 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_fr.651.200.jpg width: 200 '400': height: 377 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_fr.651.400.jpg width: 400 full: height: 1675 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_fr.651.full.jpg width: 1776 type: nutrition panel_group_id: nutrition panel_ids: - nutriscore_2023 - nutrient_levels title: Nutrition type: subcard - element_type: panel_group panel_group_element: panel_ids: - nutrition_facts_table - serving_size title: '' - element_type: panel_group panel_group_element: image: alt: Nutella - Ingredients id: ingredients_en lc: en sizes: '100': height: 100 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_en.521.100.jpg width: 78 '200': height: 200 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_en.521.200.jpg width: 156 '400': height: 400 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_en.521.400.jpg width: 313 full: height: 1468 url: https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_en.521.full.jpg width: 1147 type: ingredients panel_group_id: ingredients panel_ids: - ingredients title: Ingredients type: subcard - element_type: panel_group panel_group_element: panel_ids: - nova title: Food processing - element_type: panel_group panel_group_element: panel_ids: - additives title: Additives - element_type: panel_group panel_group_element: panel_ids: - ingredients_analysis - ingredients_analysis_details title: Ingredients analysis expanded: true title_element: title: Health topics: - health type: card incomplete_or_incorrect_data: elements: - element_type: text text_element: html: "\n If the information does not match the information on the packaging, you can complete or correct it. Thank you!\n Open Food Facts is a collaborative database, and every contribution is useful for all.\n " - action_element: actions: - edit_product html: '' element_type: action evaluation: neutral expand_for: large level: info title_element: icon_url: https://static.openfoodfacts.org/images/logos/off-logo-icon-light.svg subtitle: Category, labels, ingredients, allergens, nutritional information, photos etc. title: Incomplete or incorrect information? topics: - problem ingredients: elements: - element_type: text text_element: edit_field_id: ingredients_text_en edit_field_type: ingredients_text edit_field_value: Sugar, Modified Palm Oil, Hazelnuts, Skim Milk Powder, Cocoa, Sunflower Lecithin, Vanillin html: Sugar, Modified Palm Oil, Hazelnuts, Skim Milk Powder, Cocoa, Sunflower Lecithin, Vanillin language: English lc: en - element_type: text text_element: html: "Allergens: \n Milk, Nuts, Soybeans\n " evaluation: unknown expand_for: large expanded: false level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/ingredients.svg title: 9 ingredients topics: - health ingredients_analysis: elements: - element_type: panel panel_element: panel_id: ingredients_analysis_en:palm-oil - element_type: panel panel_element: panel_id: ingredients_analysis_en:non-vegan - element_type: panel panel_element: panel_id: ingredients_analysis_en:vegetarian-status-unknown - element_type: text text_element: html: The analysis is based solely on the ingredients listed and does not take into account processing methods. expanded: true level: info topics: - health type: inline ingredients_analysis_details: elements: - element_type: text text_element: html: 'fr: Sucre, huile de palme, NOISETTES 13%, cacao maigre 7.4%, LAIT écrémé en poudre 6.6%, LACTOSERUM en poudre, émulsifiants (lécithines de SOJA), vanilline' - element_type: text text_element: html: '
  1. Sucre -> en:sugar - vegan: yes - vegetarian: yes - ciqual_proxy_food_code: 31016 - percent_min: 16.7 - percent_max: 60
  2. huile de palme -> en:palm-oil - vegan: yes - vegetarian: yes - from_palm_oil: yes - ciqual_food_code: 16129 - percent_min: 13 - percent_max: 36.5
  3. NOISETTES -> en:hazelnut - vegan: yes - vegetarian: yes - ciqual_food_code: 15004 - percent_min: 13 - percent: 13 - percent_max: 13
  4. cacao maigre -> en:fat-reduced-cocoa - vegan: yes - vegetarian: yes - ciqual_proxy_food_code: 18100 - percent_min: 7.4 - percent: 7.4 - percent_max: 7.4
  5. LAIT écrémé en poudre -> en:skimmed-milk-powder - vegan: no - vegetarian: yes - ciqual_food_code: 19054 - percent_min: 6.6 - percent: 6.6 - percent_max: 6.6
  6. LACTOSERUM en poudre -> en:whey-powder - vegan: no - vegetarian: maybe - percent_min: 0 - percent_max: 6.6
  7. émulsifiants -> en:emulsifier - percent_min: 0 - percent_max: 6.6
    1. lécithines de SOJA -> en:soya-lecithin - vegan: yes - vegetarian: yes - ciqual_food_code: 42200 - percent_min: 0 - percent_max: 6.6
  8. vanilline -> en:vanillin - percent_min: 0 - percent_max: 6.6
' - element_type: text text_element: html: '' evaluation: unknown level: info size: small title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/off-magnifying-glass.svg title: Details of the analysis of the ingredients topics: - health ingredients_analysis_en:non-vegan: elements: - element_type: text text_element: html: "\n \n Non-vegan ingredients:\n Skimmed milk powder, Whey powder\n \n " type: summary - element_type: panel panel_element: panel_id: ingredients_analysis_help evaluation: bad level: info size: small title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/leaf.svg title: Non-vegan topics: - health ingredients_analysis_en:palm-oil: elements: - element_type: text text_element: html: "\n \n Ingredients that contain palm oil:\n Palm oil\n \n " type: summary evaluation: bad level: info size: small title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/palm-oil.svg title: Palm oil topics: - health ingredients_analysis_en:vegetarian-status-unknown: elements: - element_type: text text_element: html: "\n \n Unrecognized ingredients:\n Vanillin\n \n " type: summary - element_type: panel panel_element: panel_id: ingredients_analysis_help evaluation: unknown level: info size: small title_element: icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/vegetarian.svg title: Vegetarian status unknown topics: - health nova: elements: - element_type: text text_element: html: "\n\n \n \n

Elements that indicate the product is in the 4 - Ultra processed food and drink products group:

\n
    \n \n
  • Additive: E322 - Lecithins
  • \n \n
  • Ingredient: Emulsifier
  • \n \n
  • Ingredient: Whey
  • \n \n
\n \n \n\n" - element_type: text text_element: html: '

Food products are classified into 4 groups according to their degree of processing:

  1. Unprocessed or minimally processed foods
  2. Processed culinary ingredients
  3. Processed foods
  4. Ultra-processed foods

The determination of the group is based on the category of the product and on the ingredients it contains.

→ Learn more about the NOVA classification

' level: info title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/nova-group-4.svg title: Ultra-processed foods topics: - health nutrient_level_fat: elements: - element_type: text text_element: html: 'What you need to know
  • A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.

Recommendation: Limit the consumption of fat and saturated fat
  • Choose products with lower fat and saturated fat content.
' type: summary - element_type: text text_element: html: ' ' source_language: en source_text: 'National Health Service UK (NHS) - Fat: the facts' source_url: https://www.nhs.uk/live-well/eat-well/food-types/different-fats-nutrition/ type: summary evaluation: bad half_width_on_mobile: true level: info size: small title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/misc/high.svg name: Fat title: Fat in high quantity (30.9%) type: percentage value: 30.9 topics: - health nutrient_level_salt: elements: - element_type: text text_element: html: 'What you need to know
  • A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.
  • Many people who have high blood pressure do not know it, as there are often no symptoms.
  • Most people consume too much salt (on average 9 to 12 grams per day), around twice the recommended maximum level of intake.

Recommendation: Limit the consumption of salt and salted food
  • Reduce the quantity of salt used when cooking, and don''t salt again at the table.
  • Limit the consumption of salty snacks and choose products with lower salt content.
' type: summary - element_type: text text_element: html: ' ' source_language: en source_text: World Health Organization (WHO) - Fact sheet - Salt reduction source_url: https://www.who.int/news-room/fact-sheets/detail/salt-reduction type: summary - element_type: text text_element: html: ' ' source_language: en source_text: 'National Health Service UK (NHS) - Salt: the facts' source_url: https://www.nhs.uk/live-well/eat-well/food-types/salt-nutrition/ type: summary evaluation: good half_width_on_mobile: true level: info size: small title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/misc/low.svg name: Salt title: Salt in low quantity (0.107%) type: percentage value: 0.107 topics: - health nutrient_level_saturated-fat: elements: - element_type: text text_element: html: 'What you need to know
  • A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.

Recommendation: Limit the consumption of fat and saturated fat
  • Choose products with lower fat and saturated fat content.
' type: summary - element_type: text text_element: html: ' ' source_language: en source_text: 'National Health Service UK (NHS) - Fat: the facts' source_url: https://www.nhs.uk/live-well/eat-well/food-types/different-fats-nutrition/ type: summary evaluation: bad half_width_on_mobile: true level: info size: small title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/misc/high.svg name: Saturated fat title: Saturated fat in high quantity (10.6%) type: percentage value: 10.6 topics: - health nutrient_level_sugars: elements: - element_type: text text_element: html: 'What you need to know
  • A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.

Recommendation: Limit the consumption of sugar and sugary drinks
  • Sugary drinks (such as sodas, fruit beverages, and fruit juices and nectars) should be limited as much as possible (no more than 1 glass a day).
  • Choose products with lower sugar content and reduce the consumption of products with added sugars.
' type: summary - element_type: text text_element: html: ' ' source_language: en source_text: 'National Health Service UK (NHS) - Sugar: the facts' source_url: https://www.nhs.uk/live-well/eat-well/food-types/how-does-sugar-in-our-diet-affect-our-health/ type: summary evaluation: bad half_width_on_mobile: true level: info size: small title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/misc/high.svg name: Sugars title: Sugars in high quantity (56.3%) type: percentage value: 56.3 topics: - health nutrient_levels: elements: - element_type: panel_group panel_group_element: panel_group_id: nutrient_levels_group panel_ids: - nutrient_level_fat - nutrient_level_saturated-fat - nutrient_level_sugars - nutrient_level_salt evaluation: unknown expand_for: large expanded: false level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/nutrition.svg title: Nutrient levels topics: - health nutriscore_2023: elements: - element_type: text text_element: html: "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 13\n " type: warning - element_type: panel panel_element: panel_id: nutriscore_description - element_type: panel_group panel_group_element: evaluation: bad icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/circle-minus.svg panel_ids: - nutriscore_component_energy - nutriscore_component_sugars - nutriscore_component_saturated_fat - nutriscore_component_salt title: 'Negative points: 31/55' - element_type: panel_group panel_group_element: evaluation: good icon_color_from_evaluation: true icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/circle-plus.svg panel_ids: - nutriscore_component_fiber - nutriscore_component_fruits_vegetables_legumes title: 'Positive points: 0/10' - element_type: panel panel_element: panel_id: nutriscore_details level: info title_element: grade: e icon_url: https://static.openfoodfacts.org/images/attributes/dist/nutriscore-e-new-en.svg subtitle: Bad nutritional quality title: Nutri-Score E type: grade topics: - health nutriscore_component_energy: elements: - element_type: text text_element: html: "\n

\n \n Energy intakes above energy requirements are associated with increased risks of weight gain, overweight, obesity, and consequently risk of diet-related chronic diseases.\n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-negative-6-10.svg subtitle: 6/10 points (2252kJ) title: Calories topics: - health nutriscore_component_fiber: elements: - element_type: text text_element: html: "\n

\n Consuming foods rich in fiber (especially whole grain foods) reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-positive-0-5.svg subtitle: 0/5 points (unknown) title: Fiber topics: - health nutriscore_component_fruits_vegetables_legumes: elements: - element_type: text text_element: html: "\n

\n Consuming foods rich in fruits, vegetables and legumes reduces the risks of aerodigestive cancers, cardiovascular diseases, obesity and diabetes.\n \n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-positive-0-5.svg subtitle: 0/5 points (0%) title: Fruits, vegetables and legumes topics: - health nutriscore_component_salt: elements: - element_type: text text_element: html: "\n

\n \n A high consumption of salt (or sodium) can cause raised blood pressure, which can increase the risk of heart disease and stroke.\n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-negative-0-20.svg subtitle: 0/20 points (0.11g) title: Salt topics: - health nutriscore_component_saturated_fat: elements: - element_type: text text_element: html: "\n

\n \n A high consumption of fat, especially saturated fats, can raise cholesterol, which increases the risk of heart diseases.\n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-negative-10-10.svg subtitle: 10/10 points (10.6g) title: Saturated fat topics: - health nutriscore_component_sugars: elements: - element_type: text text_element: html: "\n

\n \n A high consumption of sugar can cause weight gain and tooth decay. It also augments the risk of type 2 diabetes and cardio-vascular diseases.\n

\n " level: info size: small title_element: icon_url: https://static.openfoodfacts.org/images/attributes/dist/points-negative-15-15.svg subtitle: 15/15 points (56.3g) title: Sugar topics: - health nutriscore_description: elements: - element_type: text text_element: html: "

The Nutri-Score is a logo on the overall nutritional quality of products.

\n

\nThe score from A to E is calculated based on nutrients and foods to favor (proteins, fiber, fruits, vegetables and legumes ...) and nutrients to limit (calories, saturated fat, sugars, salt).\nThe score is calculated from the data of the nutrition facts table and the composition data (fruits, vegetables and legumes).\n

\n\n " type: info - element_type: text text_element: html: '

→ Learn more about the Nutri-Score

' level: info title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/info.svg title: What is the Nutri-Score? type: info topics: - health nutriscore_details: elements: - element_type: text text_element: html: "Warning: the amount of fruits, vegetables and nuts is not specified on the label, it was estimated from the list of ingredients: 13\n " type: warning - element_type: text text_element: html: "\n\n

This product is not considered a beverage for the calculation of the Nutri-Score.

\n\n\n\n\n\n

Points for proteins are not counted because the negative points greater than or equal to 11.

\n\n

\n Nutritional score: 31\n (31 - 0)\n

\n

Nutri-Score: E

\n " level: info title_element: icon_size: small icon_url: https://static.openfoodfacts.org/images/icons/dist/info.svg title: Details of the calculation of the Nutri-Score type: info topics: - health nutrition_facts_table: elements: - element_type: table table_element: columns: - style: max-width:15rem text: Nutrition facts type: text - column_group_id: product shown_by_default: true text: As sold
for 100 g / 100 ml text_for_small_screens: 100g type: text - column_group_id: product shown_by_default: false text: As sold
per serving (15g) text_for_small_screens: per serving type: text - column_group_id: comparisons shown_by_default: true text: 'Compared to: Cocoa and hazelnuts spreads' type: text id: nutrition_facts_table rows: - values: - level: 0 style: max-width:15rem text: Energy - text: 2,252 kj
(539 kcal) - text: 338 kj
(80 kcal) - text: -1% - values: - level: 0 style: max-width:15rem text: Fat - text: 30.9 g - text: 4.63 g - text: -9% - values: - level: 1 style: max-width:15rem text: Saturated fat - text: 10.6 g - text: 1.59 g - evaluation: bad text: +45% - values: - level: 0 style: max-width:15rem text: Carbohydrates - text: 57.5 g - text: 8.62 g - text: +12% - values: - level: 1 style: max-width:15rem text: Sugars - text: 56.3 g - text: 8.44 g - evaluation: bad text: +21% - values: - level: 0 style: max-width:15rem text: Fiber - text: '-' - text: '-' - text: '' - values: - level: 0 style: max-width:15rem text: Proteins - text: 6.3 g - text: 0.945 g - text: -3% - values: - level: 0 style: max-width:15rem text: Salt - text: 0.107 g - text: 0.016 g - text: +1% - values: - level: 0 style: max-width:15rem text: Fruits‚ vegetables‚ nuts and rapeseed‚ walnut and olive oils (estimate from ingredients list analysis) - text: 13 % - text: 13 % - text: '' title: Nutrition facts evaluation: unknown expand_for: large expanded: false level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/scale-balance.svg title: Nutrition facts topics: - health origins_of_ingredients: elements: - element_type: table table_element: columns: - text: Origin of the product and/or its ingredients type: text - text: '% of ingredients' type: percent - text: Impact type: text id: ecoscore_origins_of_ingredients_table rows: - values: - text: France - evaluation: neutral percent: 100 text: 100 % - evaluation: neutral text: Medium table_type: percents title: Origins of ingredients evaluation: average expanded: false level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/public.svg subtitle: Origins of ingredients with a medium impact title: Origins of ingredients topics: - environment packaging_components: elements: - element_type: text text_element: evaluation: neutral html: "\n \n \n 1 x \n \n Pot\n 400g \n \n \n (Clear Glass: 199.94 g)\n \n
\n \n \n \n 1 x \n \n Lid\n 400g \n \n \n (PP 5 - Polypropylene: 6.8 g)\n \n
\n \n \n \n 1 x \n \n Backing\n 400g \n \n \n (Non-corrugated cardboard: 1.8 g)\n \n
\n \n \n \n 1 x \n \n Seal\n 400g \n \n \n (82 C/PAP: 0.4 g)\n \n
\n \n \n " icon_alt: Unknown icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/help.svg type: summary expanded: true level: info title_element: title: Packaging parts topics: - environment packaging_materials: elements: - element_type: table table_element: columns: - text: Material type: text - text: '%' type: text - text: Packaging weight type: text - text: Packaging weight per 100 g of product type: text id: packaging_materials rows: - values: - text: Paper or cardboard - text: 0.9% - text: 1.8 g - text: 0.5 g - values: - text: Plastic - text: 3.3% - text: 6.8 g - text: 1.7 g - values: - text: Glass - text: 95.7% - text: 199.94 g - text: 50 g - style: 'font-weight: bold' values: - text: Total - text: 100% - text: 208.94 g - text: 52.2 g title: Packaging materials expanded: true level: info title_element: title: Packaging materials topics: - environment packaging_recycling: elements: - element_type: panel panel_element: panel_id: packaging_components - element_type: panel panel_element: panel_id: packaging_materials evaluation: average expanded: true level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/packaging.svg title: Packaging with a medium impact topics: - environment palm_oil: elements: - element_type: text text_element: html: "\n

Tropical forests in Asia, Africa and Latin America are destroyed to create and expand oil palm tree plantations. The deforestation contributes to climate change, and it endangers species such as the orangutan, the pigmy elephant and the Sumatran rhino.

\n " type: summary evaluation: bad level: info title_element: icon_color_from_evaluation: true icon_url: https://static.openfoodfacts.org/images/icons/dist/palm-oil.svg subtitle: Drives deforestation and threatens species such as the orangutan title: Contains palm oil topics: - environment report_problem_card: elements: - element_type: panel panel_element: panel_id: incomplete_or_incorrect_data expanded: true title_element: title: Report a problem topics: - problems type: card root: elements: - element_type: panel panel_element: panel_id: health_card - element_type: panel panel_element: panel_id: environment_card - element_type: panel panel_element: panel_id: report_problem_card expanded: true type: root serving_size: elements: - element_type: text text_element: html: "\n Serving size:\n 15g\n " expanded: true level: info topics: - health type: inline status: 1 status_verbose: product found with-blame: summary: Product response including blame information value: code: '3017620422003' product: _id: '3017620422003' product_name: Nutella brands: Ferrero categories: Spreads ingredients_text: Sugar, palm oil, hazelnuts, cocoa, milk powder, lecithin, vanillin nutriments: energy-kcal_100g: 539 fat_100g: 30.9 carbohydrates_100g: 57.5 blame: fields: product_name: userid: editortester t: 1636466428 rev: 3 value: Nutella brands: userid: another-editor t: 1636366400 rev: 2 value: Ferrero previous_userid: original-contributor previous_t: 1636266400 previous_rev: 1 previous_value: Ferrero Group categories: userid: category-expert t: 1636566428 rev: 4 value: Spreads nutriments: energy-kcal_100g: userid: nutrition-editor t: 1636666428 rev: 5 value: 539 fat_100g: userid: nutrition-editor t: 1636666428 rev: 5 value: 30.9 uploaded_images: front_fr: userid: photo-contributor t: 1636766428 rev: 6 value: front_fr.jpg selected_images: front_fr: userid: image-selector t: 1636866428 rev: 7 value: selected_front_fr.jpg '302': description: Redirect to the correct server for the product type of the requested product headers: Location: schema: type: string description: URL to the correct server examples: redirect: value: https://world.openbeautyfacts.org/api/v2/product/8710447445990 '404': description: Product not found security: - userAgentAuth: [] servers: - description: dev url: https://world.openfoodfacts.net - description: prod url: https://world.openfoodfacts.org - description: proxy (for doc purpose) url: http://localhost:8080 /cgi/product_jqm2.pl: post: summary: Edit Product operationId: post-cgi-product_jqm2.pl responses: '200': description: OK content: application/json: schema: type: object title: add_or_edit_a_product_response properties: status_verbose: type: string example: fields saved status: type: integer example: 1 parameters: [] requestBody: content: multipart/form-data: schema: allOf: - type: object description: 'You can provide most of the properties defined in the product READ schema. This includes language-specific fields like product_name_[language_code], ingredients_text_[language_code], etc. ' allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product properties: code: type: string description: The barcode of the product to be added or edited example: '0074570036004' user_id: type: string description: 'Username to authenticate with Note: you must always use the username (and not the email) as it is far less brittle. ' password: type: string description: Password to authenticate with format: password lc: type: string description: 2 letter code of the language of the interface. Used to determine the language of certain fields (e.g. product_name and taxonomy fields like categories and labels). If not passed, the language may be inferred by the country of the user (passed through the cc field or inferred by the IP address). Full list at https://static.openfoodfacts.org/data/taxonomies/languages.json lang: type: string description: 2 letter language code of the main language of the product (the most prominent on the packaging) product_name: type: string description: Product name in the language sent in the lc field. For backward compatibility only, use the field product_name_[language_code] instead. abbreviated_product_name: type: string description: Abbreviated product name. For backward compatibility only, use the field abbreviated_product_name_[language_code] instead. generic_name: type: string description: Legal name of the product. For backward compatibility only, use the field generic_name_[language_code] instead. ingredients_text: type: string description: Raw list of ingredients text. For backward compatibility only, use the field ingredients_text_[language_code] instead. packaging_text: type: string description: Packaging information text. For backward compatibility only, use the field packaging_text_[language_code] instead. quantity: type: string description: Product quantity with unit labels: type: string description: Product labels (comma-separated list) categories: type: string description: Product categories (comma-separated list) brands: type: string description: Product brands (comma-separated list) stores: type: string description: Stores where product is sold countries: type: string description: Countries where product is sold origins: type: string description: Origins of ingredients traces: type: string description: Traces of allergens packaging: type: string description: 'Packaging type, format, material. The [v3 API documentation](https://openfoodfacts.github.io/openfoodfacts-server/api/ref-v3/#operation/post-api-v3-product-barcode) has a more structured data for `packaging`. ' example: Frozen serving_size: type: string description: Serving size nutrition_data_per: type: string description: Whether nutrition data is per 100g or per serving. Note that this field applies to all nutriment fields (existing or new). So if its value is changed, all nutrients should be supplied, so that we don't have existing values per 100g when the new values are per serving, or vice versa. enum: - 100g - serving patternProperties: product_name_(?\w\w): type: string description: Product name in language designated by `language_code` abbreviated_product_name_(?\w\w): type: string description: Abbreviated product name in language designated by `language_code` generic_name_(?\w\w): type: string description: Generic/legal name in language designated by `language_code` ingredients_text_(?\w\w): type: string description: Ingredients list in language designated by `language_code`, as it appears on the packaging packaging_text_(?\w\w): type: string description: Packaging information text in language designated by `language_code` nutriment_(?[\w-]+): type: string description: Value for the nutrient designated by `nutrient_id` (from nutrients.txt taxonomy, e.g. energy-kj, energy-kcal, fat, saturated-fat, etc.) nutriment_(?[\w-]+)_unit: type: string description: Unit for the nutrient designated by `nutrient_id` (from nutrients.txt taxonomy, e.g. energy-kj, fat etc.) required: - code - type: object description: 'Properties that goes in change ref ' properties: comment: type: string description: 'A comment on the contribution. It will be shown in product changes history. Adding meaningful comments help moderators and users understand a single product history. ' app_name: type: string description: 'Name of the app providing the information ' app_version: type: string description: 'Version of the app providing the information ' app_uuid: type: string description: 'When an app uses a single user to log its contributions, it might be interesting to know which user of the app is providing the information. You can use this field to provide an identifier (eg: an sha1 of the username) that''s privacy preserving. Make sure that your salt is strong, perfectly random and secret In case we have trouble with one of your user, it helps our moderators revert edits. ' User-Agent: type: string description: 'It is required that you pass a specific User-Agent header when you do an API request. But some times it''s not possible to modify such a header (eg. request using JavaScript in a browser). In such cases, you can override it with this parameter. ' tags: - Products description: 'This updates a product. Note: If the barcode exists then you will be editing the existing product, However if it doesn''''t you will be creating a new product with that unique barcode, and adding properties to the product.' security: - cookieAuth: [] userAgentAuth: [] servers: - description: dev url: https://world.openfoodfacts.net - description: prod url: https://world.openfoodfacts.org - description: proxy (for doc purpose) url: http://localhost:8080 /api/v3/product/{code}: get: tags: - Products summary: Get Product Data parameters: - name: code in: path description: 'The barcode of the product to be fetched ' required: true style: simple explode: false schema: type: string example: '3017620422003' - name: product_type in: query description: 'Used for READ queries for one product. Expected product type of the requested product. Defaults to the product type of the server the query is sent to (e.g. ''food'' for Open Food Facts, ''beauty'' for Open Beauty Facts, etc.). ''all'' matches all product types. If the product exists on a different server that matches the requested product type, the API will return a 302 redirect to the correct server. Otherwise, the API will return a 404 error. It is possible that new product types will be added in the future. ' required: false schema: type: string enum: - all - beauty - food - petfood - product description: Expected product type of the requested product examples: - all - food - name: cc in: query description: 2 letter code of the country of the user. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the country may be inferred by the IP address of the request. required: false schema: type: string example: us - name: lc in: query description: '2 letter code of the language of the user. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the language may be inferred by the domain name prefix. ' required: false schema: type: string example: fr - name: tags_lc in: query description: '2 letter language code to request names of tags in a specific language. For READ requests: if passed, all taxonomized tags of the response will include a lc_name property with the translation in the requested language, if available. Otherwise, the property value will contain the name in the original language, prefixed by the 2 language code and a colon. For WRITE requests: if passed, taxonomized tags fields with a lc_name property will be considered to be in this language. ' required: false schema: type: string example: fr - schema: type: string in: query name: fields description: 'Comma separated list of fields requested in the response. Special values: * "none": returns no fields * "raw": returns all fields as stored internally in the database * "all": returns all fields except generated fields that need to be explicitly requested such as "knowledge_panels". Defaults to "all" for READ requests. The "all" value can also be combined with fields like "attribute_groups" and "knowledge_panels".' - name: knowledge_panel_client in: query description: 'Client requesting knowledge panels. Used to customize which knowledge panels are returned. Example values: "web", "mobile". Defaults to "app" for all API requests, and "web" for all other requests.' required: false schema: type: string example: web - name: activate_knowledge_panels_simplified in: query description: If true, knowledge panels will include the simplified_root knowledge panel its simplified sub-panels (e.g. simplified health and environment cards) required: false schema: type: boolean example: true - name: activate_knowledge_panel_physical_activities in: query description: If true, knowledge panels will include the physical activities panel required: false schema: type: boolean example: true - name: knowledge_panels_included in: query description: 'When knowledge_panels are requested, you can specify which panels should be in the response. All the others will be excluded. ' required: false schema: type: string example: health_card, environment_card - name: knowledge_panels_excluded in: query description: 'When knowledge_panels are requested, you can specify which panels to exclude from the response. All the others will be included. If a panel is both excluded and included (with the knowledge_panels_excluded parameter), it will be excluded. ' required: false schema: type: string example: health_card, environment_card responses: '200': description: OK content: application/json: schema: allOf: - title: Response status type: object description: A response object to describe if a READ or WRITE request was successful or not, and if there were errors or warnings, and what the impact of those errors or warnings was. examples: - status: success_with_errors result: id: product_updated name: Product updated lc_name: Produit mis à jour errors: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: status: type: string enum: - success - success_with_warnings - success_with_errors - failure description: 'Overall status of the request: whether it failed or succeeded, with or without warnings or errors.' result: type: object description: 'Overall result of the request (e.g. a product has been created)' properties: id: type: string description: Identifier of a response result entry name: type: string description: Name of the response result entry in English. lc_name: type: string description: Name of the response result entry in the language specified in tags_lc, if supplied. warnings: type: array description: List of warnings. Warnings are used to alert about something that may be wrong, but is not necessarily wrong (e.g. a nutrient value that is unexpectedly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string errors: type: array description: List of errors. Errors are used to alert about something that is definitely wrong (e.g. a nutrient value that is impossibly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string - type: object properties: product: type: object title: product description: 'This is all the fields describing a product and how to display it on a page. Refer to the different sub schema for more readable entries: * [Product Base](#cmp--schemas-product-base): Base fields of a product * [Product Misc](#cmp--schemas-product-misc): Miscellaneous but important fields of a product * [Product Tags](#cmp--schemas-product-tags): Tags fields on a product * [Product Images](#cmp--schemas-product-images): Information about Images of a product * [Product Images 2](#cmp--schemas-product-images2): Information about Images of a product * [Product Eco-Score](#cmp--schemas-product-ecoscore): Fields related to Eco-Score for a product * [Product Ingredients](#cmp--schemas-product-ingredients): Fields about ingredients of a product * [Product Nutrition v3.5](#cmp--schemas-product-nutrition-v3-5): Nutrition fields of a product (v3.5) * [Product Data Quality](#cmp--schemas-product-quality): fields related to data quality for a product * [Product Extended](#cmp--schemas-product-extended): TODO * [Product Metadata](#cmp--schemas-product-meta): Metadata of a product (author, editors, etc.) * [Product Knowledge Panels](#cmp--schemas-product-knowledge-panels): Knowledge panels for a product * [Product Attribute Groups](#cmp--schemas-product-attribute-groups): Attribute groups for personal product matching ' allOf: - type: object description: 'Base product data ' required: - code - schema_version allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product properties: product_name: type: string description: "The name of the product in the main language of the product (lang field) \n" abbreviated_product_name: type: string description: Abbreviated product name (e.g. abbreviated product name printed on receipts) in the main language of the product (lang field) code: type: string description: 'barcode of the product (can be EAN-13 or internal codes for some food stores), for products without a barcode, Open Food Facts assigns a number starting with the 200 reserved prefix ' codes_tags: type: array items: type: string description: 'A value which is the type of barcode "code-13" or "code-8" and A series of mask for the barcode It helps retrieve barcodes starting by ' examples: - code-13 - 3017620422xxx - 301762042xxxx - 30176204xxxxx - 3017620xxxxxx - 301762xxxxxxx - 30176xxxxxxxx - 3017xxxxxxxxx - 301xxxxxxxxxx - 30xxxxxxxxxxx - 3xxxxxxxxxxxx generic_name: type: string description: 'Generic / legal name of the product in the main language of the product (lang field) ' id: description: 'internal identifier for the product, usually set to the value of `code`, except on the producers platform where it is prefixed by the owner ' type: string lc: type: string description: 'Main language of the product. This is a duplicate of `lang` property (for historical reasons). ' lang: type: string description: 'Main language of the product. This should be the main language of product packaging (if one is predominant). Main language is also used to decide which ingredients list to parse. ' nova_group: type: integer description: 'Nova group as an integer from 1 to 4. See https://world.openfoodfacts.org/nova ' nova_groups: type: string obsolete: type: string obsolete_since_date: description: 'A date at which the product was declared obsolete. This means it''s not produced any more. ' type: string product_quantity: type: string description: 'The size in g or ml for the whole product. It is a normalized version of the `quantity` field. A `quantity` of "2 x 60 g" leads to `product_quantity`: "120". ' example: '500' product_quantity_unit: type: string description: 'The unit (either g or ml) for the corresponding `product_quantity`. It is computed from the `quantity` field. A `quantity` of "6 x 250 ml" leads to `product_quantity_unit`: "ml". ' example: g quantity: type: string description: 'The quantity of the product, with the corresponding number of portions or unit (g, ml, kg, l, cl, oz, lbs...). It should be the value as displayed on the product. The ℮ sign is allowed. When it refers to the number of portions, it can be filled without any units (e.g. "6 eggs"). ' example: 3 x 150 g schema_version: type: integer description: 'Version of the product object schema used in the response. This indicates the structure of the ''product'' field itself. For more details, please read: https://openfoodfacts.github.io/openfoodfacts-server/api/ref-api-and-product-schema-change-log ' example: 999 patternProperties: product_name_(?\w\w): type: string description: 'Product name in language designated by `language_code`, e.g. product_name_fr ' abbreviated_product_name_(?\w\w): type: string description: Abbreviated product name in language `language_code`. generic_name_(?\w\w): type: string description: 'Generic/legal name in language designated by `language_code`, e.g. generic_name_en. ' - type: object title: product_misc description: 'Miscellaneous but important fields of a product ' properties: additives_n: type: integer description: 'Number of food additives. ' checked: type: string complete: type: integer completeness: type: number ecoscore_grade: type: string description: 'See also: `ecoscore_tags` ' ecoscore_score: type: integer description: 'See also: `ecoscore_tags` ' food_groups: type: string food_groups_tags: type: array items: type: string nutrient_levels: description: 'Traffic light indicators on main nutrients levels ' type: object properties: fat: type: string enum: - low - moderate - high salt: type: string enum: - low - moderate - high saturated-fat: type: string enum: - low - moderate - high sugars: type: string enum: - low - moderate - high packaging_text: type: string description: 'Recycling instructions as raw text, e.g. Plastic bottle to recycle, Plastic cap to recycle. This will get automatically parsed and will be used to compute the Eco-Score. You can either request it (if it exists) or send it in a specific language. ' example: packaging_text_en packagings: type: array title: Packagings (READ) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/ The shape, material and recycling properties of each packaging component are linked to entries in the packaging_shapes, packaging_materials and packaging_recycling taxonomies: https://world.openfoodfacts.org/data/taxonomies/packaging_shapes.json https://world.openfoodfacts.org/data/taxonomies/packaging_materials.json https://world.openfoodfacts.org/data/taxonomies/packaging_recycling.json If the tags_lc field is set, the properties will include a lc_name field with the translation in the requested language.' examples: - - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified items: description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties are mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies, and the value of the property is the canonical name of the taxonomy entry (e.g. en:bottle). They may contain values that could not yet get matched to their respective taxonomy, in which case they will contain a free text value prefixed with the language code of this text value (e.g. "fr:Bouteille sphérique" might have been entered by a French user to indicate it is a spherical bottle).' title: Packaging component (READ) type: object examples: - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified properties: number_of_units: type: integer description: umber of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape x-stoplight: id: xrj8agza3dwgf type: object description: The shape property is canonicalized using the packaging_shapes taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_shapes taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. material: title: Packaging component material type: object description: The material property is canonicalized using the packaging_materials taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_material taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. recycling: title: Packaging component recycling instruction x-stoplight: id: 376tk8e2cmyh2 type: object description: The recycling property is canonicalized using the packaging_recycling taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_recycling taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) quantity_per_unit_value: type: number description: Value parsed from the quantity field. quantity_per_unit_unit: type: string description: Unit parsed and normalized from the quantity field. weight_specified: type: number description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_measured: type: number description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_estimated: type: number description: Weight (as estimated from similar products) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight: type: number description: Weight of one unit of the empty packaging component. weight_source_id: type: string description: Indicates which field was used to populate the "weight" field. Either "specified", "measured", or "estimated" readOnly: true packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. pnns_groups_1: description: 'Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_1_tags: type: array items: type: string pnns_groups_2: description: 'Sub Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_2_tags: type: array items: type: string popularity_key: description: 'An imprecise measurement of popularity based on Scan statistics. A higher value means higher popularity. ' type: integer popularity_tags: description: "Indicators for the popularity of a product, like the amount of scans in a specific year.\n`popularity_tags` values from previous years are kept, if there is no popularity_tags at all, then it was never popular.\nThis field must be used with care. In countries where Open Food Facts is not widely used, \na product may obtain the value \"top-90-percent-scans-2021\" with a single scan.\n" type: array items: type: string example: - bottom-25-percent-scans-2020 - top-85-percent-scans-2021 - top-90-percent-scans-2022 - top-country-it-scans-2019 - top-100000-mg-scans-2024 scans_n: type: integer description: "Number of scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded). This value is computed once a year by scanbot.pl.\nIt is possible that a product has never been scanned at all: `scans_n` is not given in this case.\nSee also `unique_scans_n` field.\n" unique_scans_n: type: integer description: "Number of unique scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded).\nUnique scans means it is based on different IPs.\nThis value is computed once a year by scanbot.pl.\nSee also `scans_n` field.\n" serving_quantity: type: string description: 'Normalized version of serving_size. Note that this is NOT the number of servings by product. (in perl, see `normalize_serving_size`) ' serving_quantity_unit: type: string description: 'The unit (either g or ml) for the correponding serving_quantity. ' example: g serving_size: type: string description: 'Serving size text (generally in g or ml). We expect a quantity + unit but the user is free to input any string. ' patternProperties: food_groups_(?\w\w): type: string description: see `food_groups` packaging_text_(?\w\w): type: string description: 'Packaging text in language designated by `language_code` ' - type: object title: Product Tags allOf: - type: object title: Product Base Tags properties: brands: type: string description: 'Comma separated list of brands (not taxonomized), in the last language used to edit it (recorded in brands_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' brands_tags: type: array description: "An array of indexed brands tag entries (for search).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' categories: type: string description: 'Comma separated list of categories (not taxonomized), in the last language used to edit it (recorded in categories_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' categories_tags: type: array description: "An array of indexed categories tag entries (for search).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' checkers_tags: type: array items: type: string description: List of checkers (users who checked the product) tags cities: type: string cities_tags: type: array items: type: object correctors_tags: type: array items: type: string countries: type: string description: 'List of countries where the product is sold. ' countries_tags: type: array items: type: string ecoscore_tags: description: 'All ecoscore of a product. Most of the time it''s only one value, but it might eventually be more for products composed of sub-products. See also: `ecoscore_score`, `ecoscore_grade`. ' type: array items: type: string emb_codes: type: string description: 'Packager code. EMB is the French system of traceability codes for packager. ' example: EMB 2013330 emb_codes_tags: type: array items: type: object labels: type: string labels_tags: type: array items: type: string entry_dates_tags: description: 'The data as a series of tag: `yyyy-mm-dd`, `yyyy-mm`, `yyyy` ' type: array items: type: string examples: - - '2016-03-11' - 2016-03 - '2016' manufacturing_places: type: string description: 'Places where the product was manufactured or transformed. ' manufacturing_places_tags: type: array items: type: string nova_groups_tags: type: array items: type: string nutrient_levels_tags: type: array items: type: string - type: object properties: tags_sources: type: object description: "All the relevant data on the sources of the different tags of the product.\nThe data is sorted by the sources from which the tags are obtained, e.g. packaging, producer, predicted.\nThe current sources are:\n - packaging: what is written on the packaging of the product\n - manufacturer: information that was sent directly from the manufacturer to Open Food Facts, through our producers platform\n - ingredients: information that is derived from the ingredients list (e.g. allergens and traces)\n - database-* (e.g. database-usda): information from another open database\n - label-* (e.g. label-non-gmo-project): information from a label organization (e.g. some labels send us lists of products that have the label)\nNew sources may be added at anytime, so we are using patternProperties to make sure parsing does not break if a new source is encountered.\n" patternProperties: ^[a-z]+(_-[a-z]+)*$: type: object description: 'A tag type such as "categories", "labels", "stores" ' patternProperties: ^[a-z]+(_-[a-z]+)*$: type: object description: 'A source such as "packaging", "manufacturer" or "ingredients" ' properties: last_updated_t: type: string description: 'Timestamp indicating when tags related to this source were last updated. ' tags: type: array description: 'The specific tags related to this source. ' items: type: string example: - en:organic example: packaging: categories: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:organic - en:vegetarian labels: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:fair-trade manufacturer: categories: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:organic - type: object title: Product Images description: "Information about images (photos) of a product.\n\nImages ensure the reliability of Open Food Facts data.\nThey provides a primary source and proof of all the structured data.\nYou may therefore want to display them along the structured information.\n\nFor each product, we store:\n- the original images uploaded by users or manufacturers in images.uploaded\n- images that have been selected / cropped / rotated etc. containing specific\n information (e.g. the front image, the ingredients image, etc.)\n for specific languages in images.selected\n\nSee also tutorials about images:\n* [Getting images](https://openfoodfacts.github.io/openfoodfacts-server/api/how-to-download-images/)\n* [Uploading images](https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-uploading-photo-to-a-product/)\n" properties: images: description: 'Uploaded and selected images of the product. ' type: object title: images properties: uploaded: description: 'List of all images uploaded by users or manufacturers. Those images are typically not displayed to users, but are used in edit mode to crop images with specific information for specific languages. (See images.selected) Older uploaded images that may correspond to older revisions of the product are also kept in this list. ' type: object title: images_uploaded patternProperties: (?\d+): type: object title: Uploaded image description: 'Image uploaded by a user or provided by a manufacturer identified by an integer ''imgid''. ' properties: uploader: type: string description: 'userid of the user who uploaded the image. ' example: stephane sizes: title: Images Sizes type: object description: 'Contains the information about the images of a product in different sizes. The reduced images are the ones with numbers as the key(100, 200 and 400) while the full images have `full` as the key. ' properties: '100': $ref: '#/components/schemas/ImageSize' '200': $ref: '#/components/schemas/ImageSize' '400': $ref: '#/components/schemas/ImageSize' full: $ref: '#/components/schemas/ImageSize' selected: type: object title: Selected images description: 'List of all images selected by users or manufacturers. Those images are typically displayed to users, and are used in edit mode to crop images with specific information for specific languages. (See images.uploaded) ' properties: front: description: 'Front images of the full product in languages shown on the packaging. In most cases we have a front image selected for only one language, unless the product has different packagings for different countries with the same barcode, or if the product has two front sides (e.g. in bilingual countries). ' patternProperties: (?\w\w): oneOf: - type: object description: 'Front image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' ingredients: description: 'Cropped images of the ingredients list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Ingredient list image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: "Write only value to unselect a selected image \n" nutrition: description: 'Cropped images of the nutrition facts table / list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Nutrition facts image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' packaging: description: 'Cropped images of the packaging / recycling information in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' selected_images: type: object title: Selected images URLs description: 'URLs of selected images, generated at runtime. ' patternProperties: (?front|ingredients|nutrition|packaging): description: 'Type of the selected image: front (front of product), ingredients (ingredients list), nutrition (nutrition facts), packaging (packaging/recycling information). ' type: object patternProperties: (?\w\w|best): type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ''best'' returns the best image available, by priority in the language requested by the user, the main language of the product or another language. ' properties: '100': type: string description: 'The URL of the image in max 100px width and height. ' '200': type: string description: 'The URL of the image in max 200px width and height. ' '400': type: string description: 'The URL of the image in max 400px width and height. ' last_image_dates_tags: type: array description: 'An array of tags entries to indicated the year, month and day of the last image upload (in formats YYYY, YYYY-MM, YYYY-MM-DD). ' items: type: string last_image_t: description: timestamp of last image upload type: integer - type: object description: 'Fields related to Eco-Score for a product. See also: `ecoscore_score`, `ecoscore_grade` and `ecoscore_tags`. ' properties: ecoscore_data: type: object title: product_ecoscore_data description: 'An object about a lot of details about data needed for Eco-Score computation and complementary data of interest. ' properties: adjustments: title: product_ecoscore_adjustments type: object properties: origins_of_ingredients: type: object properties: aggregated_origins: type: array description: List of aggregated origins of ingredients and their impact. items: title: adjustments_origin_of_ingredient_aggregated type: object properties: epi_score: type: string origin: type: string description: Country or region of origin for the ingredient. percent: type: integer description: Percentage of this ingredient from the specified origin. transportation_score: type: - 'null' - integer description: Transportation score associated with this ingredient's origin. epi_score: type: integer description: Environmental Performance Index (EPI) score for the ingredient's origin. epi_value: type: integer origins_from_categories: type: array description: List of origins derived from product categories, eg for PDO. items: type: string origins_from_origins_field: type: array description: List of origins explicitly stated in the product's origins field. items: type: string transportation_score: type: integer transportation_scores: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 transportation_value: type: integer transportation_values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 value: type: integer values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 warning: type: string packaging: type: object properties: non_recyclable_and_non_biodegradable_materials: type: integer packagings: type: array items: type: object title: adjustments_packaging_item properties: ecoscore_material_score: type: integer ecoscore_shape_ratio: type: integer material: type: string shape: type: string number_of_units: type: integer examples: - 1 quantity_per_unit: type: string description: The quantity per packaging unit, as a string. examples: - 33 cL quantity_per_unit_unit: type: string examples: - cl quantity_per_unit_value: type: number examples: - 33 recycling: type: string examples: - en:recycle-in-sorting-bin weight_measured: type: number examples: - 12.08 score: type: integer value: type: integer warning: type: string production_system: type: object properties: labels: type: array examples: - vegan - fat free - Kosher items: type: string value: type: integer warning: type: string threatened_species: type: object properties: ingredient: type: string value: type: integer agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string grade: type: string grades: type: object patternProperties: (?\w\w): type: string missing: type: object properties: labels: type: integer origins: type: integer packagings: type: integer missing_data_warning: type: integer previous_data: type: object properties: grade: type: - string - 'null' score: type: - integer - 'null' agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string score: type: integer scores: type: object patternProperties: (?\w\w): type: integer status: type: string ecoscore_extended_data_version: type: string environment_impact_level: type: string environment_impact_level_tags: type: array items: type: object - type: object title: product_ingredients description: Fields about ingredients of a product properties: additives_tags: type: array items: type: string allergens: type: string description: comma separated list of allergens allergens_lc: type: string description: language in which `allergens` where input allergens_hierarchy: type: array items: type: string allergens_tags: type: array items: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: type: object title: ingredient properties: id: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: description: 'circular reference omitted during bundling: ./ingredient.yaml' percent: type: integer description: The percentage of the ingredient. percent_estimate: type: number description: Estimated percentage of the ingredient. percent_max: type: - string - number description: Maximum percentage of the ingredient. percent_min: type: integer description: Minimum percentage of the ingredient. text: type: string description: Text description of the ingredient. vegan: type: string description: Indicates if the ingredient is vegan. vegetarian: type: string description: Indicates if the ingredient is vegetarian. ingredients_analysis: type: object properties: en:palm-oil: type: array items: type: string en:vegan-status-unknown: type: array items: type: string en:vegetarian-status-unknown: type: array items: type: string ingredients_analysis_tags: type: array items: type: string ingredients_from_or_that_may_be_from_palm_oil_n: type: integer ingredients_from_palm_oil_n: type: integer ingredients_from_palm_oil_tags: type: array items: type: object ingredients_hierarchy: type: array items: type: string ingredients_n: type: integer ingredients_n_tags: type: array items: type: string ingredients_original_tags: type: array items: type: string ingredients_percent_analysis: type: integer description: 'Indicates the result of ingredients analysis processing * not present -> we didn''t run ingredient percent analysis (e.g. we have no ingredients) * 1: we estimated the ingredients percent. * -1 : we tried to estimate the ingredients, but the values were impossible. (e.g. if the sum of % is above 100%) ' ingredients_sweeteners_n: type: integer description: 'Number of sweeteners additives in the ingredients. Undefined if ingredients are not specified. ' ingredients_non_nutritive_sweeteners_n: type: integer description: 'Number of non-nutritive sweeteners additives (as specified in the Nutri-Score formula) in the ingredients. Undefined if ingredients are not specified. ' ingredients_tags: type: array items: type: string ingredients_lc: type: string description: 'Language that was used to parse the ingredient list. If `ingredients_text` is available for the product main language (`lang`), `ingredients_lc=lang`, otherwise we look at `ingredients_text` fields for other languages and set `ingredients_lc` to the first non-empty `ingredient_text`. ' ingredients_text: type: string description: 'Raw list of ingredients. This will get automatically parsed and get used to compute the Eco-Score or find allergens, etc.. It''s a copy of ingredients_text in the main language of the product (see `lang` proprety). ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_text_with_allergens: type: string description: 'Same text as `ingredients_text` but where allergens have HTML elements around them to identify them ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_that_may_be_from_palm_oil_n: type: integer ingredients_that_may_be_from_palm_oil_tags: type: array items: type: object ingredients_with_specified_percent_n: type: integer ingredients_with_specified_percent_sum: type: integer ingredients_with_unspecified_percent_n: type: integer ingredients_with_unspecified_percent_sum: type: integer known_ingredients_n: type: integer origins: type: string description: 'Origins of ingredients ' origins_hierarchy: type: array items: type: object origins_lc: type: string origins_tags: type: array items: type: object traces: type: string description: 'List of substances that might cause allergies that are present in trace amounts in the product (this does not include the ingredients, as they are not only present in trace amounts). It is taxonomized with the allergens taxonomy. Refer to the [allergens taxonomy](https://static.openfoodfacts.org/data/taxonomies/allergens.json) ' traces_hierarchy: type: array items: oneOf: - type: object - type: string traces_lc: type: string traces_tags: type: array items: oneOf: - type: object - type: string unknown_ingredients_n: type: integer patternProperties: ingredients_text_(?\w\w): type: string description: 'Raw list of ingredients in language given by ''language_code''. See `ingredients_text` ' ingredients_text_with_allergens_(?\w\w): description: 'Like `ingredients_text_with_allergens` for a particular language ' type: string - type: object title: Product Nutrition Data properties: nutrition: type: object description: 'Fields related to the nutrition facts of a product Input nutrient sets can be updated directly with API v3. API v2 can still be used to update input sets for the default source (*packaging* on the public platform and *manufacturer* on the pro platform). ' properties: aggregated_set: type: object description: "A set that combines nutrient data from preferred sources, with normalized units, \nand for a normalized 100g or 100ml quantity.\n\nIt takes values from multiple sources (by priority: manufacturer, packaging, usda, estimate)\nand normalizes all values to the same unit: g for weights, kJ for energy and energy-kj, kcal for energy-kcal.\n\nThe aggregated_set is read-only, and cannot be modified directly. It is computed from the other nutrient sets available for the product.\n" allOf: - type: object properties: preparation: type: string enum: - as_sold - prepared description: 'Indicates whether the nutrition values refer to the product *as_sold* or *prepared*. The preparation state affects nutrient values. ' per: type: string enum: - 100g - 100ml - serving description: 'The nutrition data on the package can be per serving, per 100g or per 100ml. This is essential to understand if values in the `nutrients` object apply for a serving, for 100g or for 100ml.' - type: object properties: nutrients: type: object description: 'All known nutrients for the product. You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json). New nutrients are regularly added. Clients should not break if they encounter an unexpected nutrient to preserve compatibility. ' properties: energy: description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 energy-kcal: description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 energy-kj: description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 saturated-fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 trans-fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 cholesterol: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 salt: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 sodium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 carbohydrates: description: 'This is the available carbohydrates (excluding fiber), also known as net carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 carbohydrates-total: description: 'This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 fiber: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 sugars: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 added-sugars: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 proteins: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 vitamin-d: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 calcium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 iron: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 potassium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 additionalProperties: description: 'Quantity of other nutrients from the nutrients taxonomy. See [nutrients taxonomy file](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) for all nutrients in Open Food Facts. (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' source_per: type: string description: Indicates if the original source is per serving or per 100g, 100ml input_sets: type: array description: "An array of nutrient sets of the product.\n\nEach nutrient set represents a version of the nutrition facts, defined by a combination of:\n- the source of the data (e.g. *packaging*, *manufacturer*, *estimate*).\n- the preparation state (e.g. *as_sold* or *prepared*),\n- the reference quantity (*per 100g*, *per 100ml* or *per serving*), and \n\nThis structure allows capturing multiple nutritional profiles for a single product.\n" items: type: object allOf: - type: object properties: nutrients: type: object description: 'All known nutrients for the product. You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json). New nutrients are regularly added. Clients should not break if they encounter an unexpected nutrient to preserve compatibility. ' properties: energy: type: object description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. energy-kcal: type: object description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. energy-kj: type: object description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. saturated-fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. trans-fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. cholesterol: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. salt: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. sodium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. carbohydrates-total: type: object description: 'This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. carbohydrates: type: object description: 'This is the available carbohydrates (excluding fiber), also known as net carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. fiber: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. sugars: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. added-sugars: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. proteins: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. vitamin-d: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. calcium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. iron: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. potassium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. additionalProperties: type: object description: 'Quantity of other nutrients from the nutrients taxonomy. See [nutrients taxonomy file](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) for all nutrients in Open Food Facts. (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: preparation: type: string enum: - as_sold - prepared description: 'Indicates whether the nutrition values refer to the product *as_sold* or *prepared*. The preparation state affects nutrient values. ' per: type: string enum: - 100g - 100ml - serving description: 'The nutrition data on the package can be per serving, per 100g or per 100ml. This is essential to understand if values in the `nutrients` object apply for a serving, for 100g or for 100ml.' - type: object properties: per_quantity: type: number minimum: 0 description: "The nutrition data on the package can be per serving, per 100g or per 100ml.\nWhen the data is given per serving, \nthe actual quantity that defines one serving may vary between products \nand is stored in this field.\n\nThis is essential to understand to which quantity values in `nutrients` apply for.\n\nFor example, if the label states \"per 250g\", then this field should be *250*.\n" example: 250 per_unit: type: string description: "The nutrition data on the package can be per serving, per 100g or per 100ml.\nWhen the data is given per serving, \nthe actual unit that defines one serving may vary between products \nand is stored in this field.\n\nThis is essential to understand to which quantity values in `nutrients` apply for.\n\nFor example, if the label states \"per 250g\", then this field should be *g*.\n" example: g source: type: string examples: - packaging - manufacturer - usda - estimate description: 'The nutrition data of products can be obtained through several sources. ' source_description: type: string description: 'A description of the source used for this nutrition set. This provides more information on how and when the source was used. This property is optional. ' examples: - USDA non-branded foods 2025/04 - Import from org-nestle-france through Equadis - 'Estimate from ingredients”, “Estimate from category: Olive oils' last_updated_t: type: integer description: 'A timestamp indicating when this nutrition set was last updated. ' examples: - 1631270265 - 1512153487 unspecified_nutrients: type: array description: 'A list of nutrients that are typically present, but that are not specified for this particular product, especially for packaging source. This property is optional. ' items: type: string example: - fibers - title: ProductNutriscore type: object properties: nutriscore: $ref: '#/components/schemas/Nutriscores' nutriscore_2021_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_2023_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_data: $ref: '#/components/schemas/Nutriscore2021Data' nutriscore_grade: $ref: '#/components/schemas/NutriscoreGrade' examples: - d nutriscore_score: description: 'Nutri-Score for the product as an integer (see also `nutriscore_grade`). ' type: integer examples: - 13 nutriscore_score_opposite: type: integer examples: - -13 nutriscore_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_version: type: string - type: object description: 'This is data that is linked to products data quality ' properties: data_quality_bugs_tags: type: array items: type: string description: 'Each data quality bug describes a data quality bug on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_errors_tags: type: array items: type: string description: 'Each Data Quality Error describes a data quality error on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_info_tags: type: array items: type: string description: 'Each Data Quality Info describes a data quality info on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_tags: type: array items: type: string description: 'Each Data Quality tag describes a data quality issue on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_warnings_tags: type: array items: type: string description: 'Each Data Quality warning tag describes a data quality warning on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_sources: type: string description: 'Source of data imported from producers. ' data_sources_tags: type: array items: type: string last_check_dates_tags: type: array items: type: string last_checked_t: type: integer last_checker: type: string states: description: 'comma separated list of values indicating some states of the product, like things to be done, or to be completed. See [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string states_hierarchy: type: array items: type: string states_tags: type: array items: description: 'Each state describe something that is completed or is to be done or improved on the product. Refer to [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string misc_tags: description: "Information about different aspect of the product\n Refer to [misc taxonomy](https://static.openfoodfacts.org/data/taxonomies/misc.json)\n" type: array items: type: string - title: product_extended type: object properties: additives_original_tags: type: array items: type: string additives_prev_original_tags: type: array items: type: string added_countries_tags: type: array items: type: object allergens_from_ingredients: type: string allergens_from_user: type: string amino_acids_prev_tags: type: array items: type: object amino_acids_tags: type: array items: type: object carbon_footprint_percent_of_known_ingredients: type: integer categories_properties: type: object properties: agribalyse_food_code:en: type: string agribalyse_proxy_food_code:en: type: string ciqual_food_code:en: type: string categories_properties_tags: type: array items: type: string category_properties: type: object additionalProperties: description: those are properties taken from the category taxonomy type: string ciqual_food_name_tags: type: array items: type: string compared_to_category: type: string description: 'the category to use for comparison. **TODO** explain how it is chosen. ' forest_footprint_2026: type: object title: ForestFootprint2026 description: 'Forest footprint (2026 algorithm) of a product — the risk of deforestation associated with its ingredients. This is a computed field. See also `forest_footprint_2026.grade`, `forest_footprint_2026.summary`, `forest_footprint_2026.total_footprint_per_kg`, and `forest_footprint_2026.primary_ingredients`. ' properties: grade: type: string enum: - a - b - c - d - unknown - not_computed description: "Overall forest footprint grade of the product.\n\n- `a`: No deforestation risk (absence of risky ingredients or zero impact)\n- `b`: Low risk of deforestation\n- `c`: Medium risk of deforestation\n- `d`: High risk of deforestation\n- `unknown`: The product has ingredients that are not yet assessed\n (e.g. corn, rice, cassava, soya, meat, dairy) without any computed\n primary ingredients\n- `not_computed`: The product contains risky ingredients but the overall\n grade could not be computed\n" summary: type: string enum: - missing_ingredients - with_other_risky_ingredients - without_primary_ingredients_or_other_risky_ingredients - with_primary_ingredients description: "Summary of the forest footprint computation status:\n\n- `missing_ingredients`: The product has no ingredients list, so the\n forest footprint could not be computed\n- `with_other_risky_ingredients`: The product contains risky ingredients\n (not yet assessed) but no computed primary ingredients\n- `without_primary_ingredients_or_other_risky_ingredients`: The product\n has ingredients but none are risky or assessed; grade is A\n- `with_primary_ingredients`: The product has computed primary ingredients\n (cocoa, coffee, palm oil, chicken/eggs)\n" total_footprint_per_kg: type: - number - 'null' description: 'Total forest footprint per kilogram of food, in square meters per kg. This field is present (as a number) when the summary is `with_primary_ingredients` or `without_primary_ingredients_or_other_risky_ingredients`. It is `null` when the summary is `missing_ingredients` or `with_other_risky_ingredients`. It may be absent if the field was not populated. ' primary_ingredients: type: object description: 'Map of primary ingredients and their computed forest footprint details. Keys are primary ingredient tags (`en:cocoa`, `en:coffee`, `en:palm-oil`, `en:chicken-and-eggs`, `en:other-risky-ingredients`). Only primary ingredients present in the product are included. ' additionalProperties: oneOf: - $ref: '#/components/schemas/ForestFootprintPrimaryIngredient' - $ref: '#/components/schemas/ForestFootprintChickenAndEggs' - $ref: '#/components/schemas/ForestFootprintOtherRiskyIngredients' components: schemas: ForestFootprintPrimaryIngredient: type: object description: 'Forest footprint details for cocoa, coffee, or palm oil primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kilogram for this primary ingredient. grade: type: string enum: - a - b - c - d description: Grade for this primary ingredient (A is best, D is worst). ingredients: type: array items: type: object properties: equivalence_ingredient: type: number description: Ingredient equivalence factor. equivalence_ingredient_category: type: number description: Ingredient category equivalence factor. footprint_per_kg: type: number description: Footprint per kg for this ingredient. ingredient_category_id: type: string description: The ingredient category tag (e.g. en:cocoa, en:coffee, en:palm-oil). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). label_id: type: string description: Label that reduces deforestation risk (if applicable). origin_footprint: type: number description: Footprint per kg for the origin of this ingredient. origin_id: type: string description: Origin tag (e.g. en:brazil, en:unknown). percent: type: number description: Percentage of this ingredient in the product. primary_ingredient_id: type: string description: The primary ingredient this ingredient maps to. risk_factor: type: number description: Risk reduction factor applied by labels (1 = no reduction). transformation_factor: type: number description: Combined equivalence/ingredient and category equivalence factors. required: - equivalence_ingredient - equivalence_ingredient_category - footprint_per_kg - ingredient_category_id - ingredient_id - origin_footprint - origin_id - percent - primary_ingredient_id - risk_factor - transformation_factor required: - footprint_per_kg - grade - ingredients ForestFootprintChickenAndEggs: type: object description: 'Forest footprint details for chicken and eggs, computed using the legacy ForestFootprint algorithm (soy-based feed import risk). This has a different data structure than the other primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kg for chicken and eggs. grade: type: string enum: - a - b - c - d - e description: Grade for chicken and eggs (A is best, E is worst). Uses legacy thresholds. ingredients: type: - array - 'null' items: type: object properties: conditions_tags: type: array items: type: string description: Conditions tags (e.g. processing conditions). footprint_per_kg: type: number description: Footprint per kg for this ingredient entry. percent: type: number description: Percentage of this ingredient in the product. processing_factor: type: number description: Processing factor applied. tag_id: type: string description: The tag id (ingredient or category tag). tag_type: type: string description: The type of tag (e.g. "ingredients", "categories"). type: type: object properties: deforestation_risk: type: number description: Deforestation risk factor for this chicken/egg type. name: type: string description: Human-readable name of the chicken/egg type. soy_feed_factor: type: number description: Soy feed factor. soy_yield: type: number description: Soy yield factor. required: - deforestation_risk - name - soy_feed_factor - soy_yield required: - conditions_tags - footprint_per_kg - percent - processing_factor - tag_id - tag_type - type required: - footprint_per_kg - grade - ingredients ForestFootprintOtherRiskyIngredients: type: object description: 'Risky ingredients (corn, rice, cassava, soya, meat, dairy) that are not yet assessed for deforestation risk. The footprint and grade are unknown; only the ingredient list is provided. ' properties: footprint_per_kg: type: 'null' description: Always null, as risky ingredients are not yet assessed. grade: type: string enum: - unknown description: Always "unknown". ingredients: type: - array - 'null' items: type: object properties: ingredient_category_id: type: string description: The risky ingredient category tag (e.g. en:rice, en:cassava). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). required: - ingredient_category_id - ingredient_id required: - footprint_per_kg - grade - ingredients conservation_conditions: type: string customer_service: type: string description: 'Contact info of customer service. ' expiration_date: type: string link: type: string description: 'link to the product on the website of the producer ' main_countries_tags: type: array items: type: object minerals_prev_tags: type: array items: type: object minerals_tags: type: array items: type: object owner_fields: type: object description: 'Those are fields provided by the producer (through producers platform), and the value he provided. ' properties: additionalProperties: description: 'you can retrieve all kind of properties, the same as on the parent object (the product). It''s not processed entries (like tags for example) but raw ones. ' oneOf: - type: integer - type: string - type: object nova_groups_markers: type: object description: 'Detail of ingredients or processing that makes the products having Nova 3 or 4 ' propertyNames: description: Markers of level 3, 4, ... type: integer enum: - 3 - 4 additionalProperties: type: array items: type: array items: description: This array has two elements for each marker. The first element is the tag type of the marker (e.g. "ingredients", "additives", "categories"), and the second is the tag id in the taxonomy (e.g. "en:e471") type: string nucleotides_tags: type: array items: type: object origin: type: string purchase_places: type: string description: 'Country, state, or city where the product can be purchased. ' example: Paris purchase_places_tags: type: array items: type: string stores: type: string description: 'Distributor name. ' example: Walmart stores_tags: type: array items: type: string traces_from_ingredients: type: string traces_from_user: type: string patternProperties: conservation_conditions_(?\w\w): type: string customer_service_(?\w\w): type: string origin_(?\w\w): type: string description: '`origin` in language indicated by `language_code` ' - type: object description: 'Metadata of a product (author, editors, creation date, etc.) ' required: - created_t - creator - last_modified_by - last_modified_t - last_updated_t - rev properties: created_t: type: integer description: 'Date when the product was added (UNIX timestamp format). See also `entry_dates_tags` ' example: 1457680652 creator: type: string description: 'The contributor who added the product first. ' editors_tags: description: 'List of editors who edited the product. ' type: array items: type: string informers_tags: type: array items: type: string interface_version_created: type: string interface_version_modified: type: string languages: type: object patternProperties: en:(?\w\w): type: integer description: '**TODO** explain ! ' languages_codes: type: object patternProperties: (?\w\w): type: integer description: 'Same as `languages` but by language code, instead of language tags ' languages_hierarchy: type: array items: type: string languages_tags: type: array items: type: string last_edit_dates_tags: type: array items: type: string last_editor: type: string last_modified_by: type: string description: 'The username of the user who last modified the product. ' example: sebleouf last_modified_t: type: integer description: 'Date when the product page was last modified. This date is updated only when primary data is modified (data entered by the user or updated by an interface) ' last_updated_t: type: integer description: 'Date when the product page was last modified. This date is updated when primary data or secondary data is modified (primary: data entered by a user or read from an interface, secondary: data computed by a utility such as update_all_products.pl) ' owner: description: 'Id of the producer in case he provides his own data about a product (producer platform). ' type: string owners_tags: description: 'Tagyfied version of owner ' type: string photographers_tags: type: array items: type: string rev: description: revision number of this product version (each edit adds a revision) type: integer sources: type: array items: type: object title: product_meta_source properties: fields: type: array items: type: string id: type: string images: type: array items: type: object import_t: type: integer manufacturer: type: - integer - string name: type: string source_licence: type: string source_licence_url: type: string url: type: - 'null' - string sources_fields: type: object title: product_meta_source_fields properties: org-gs1: type: object properties: gln: type: string gpcCategoryCode: type: string gpcCategoryName: type: string isAllergenRelevantDataProvided: type: string lastChangeDateTime: type: string partyName: type: string productionVariantDescription: type: string publicationDateTime: type: string teams: type: string teams_tags: type: array items: type: string update_key: type: string - type: object description: 'Knowledge panels for a product ' properties: knowledge_panels: type: object title: panels description: 'The panels object is a dictionary of individual panel objects. Each key of the dictionary is the id of the panel, and the value is the panel object. Apps typically display a number of root panels with known panel ids (e.g. health_card and environment_card). Panels can reference other panels and display them as sub-panels.' examples: - additionalProperties: string additionalProperties: title: panel type: object description: Each panel contains an optional title and an optional array of elements. properties: type: type: string description: Type of the panel. If set to "card", the panel and its sub-panels should be displayed in a card. If set to "inline", the panel should have its content always displayed. expanded: type: boolean description: If true, the panel is to be displayed already expanded. If false, only the title should be displayed, and the user should be able to click or tap it to open the panel and display the elements. expand_for: type: string description: If set to "large", the content of the panel should be expanded on large screens, but it should still be possible to unexpand it. evaluation: type: string description: An evaluation status specifically for this title element. This can be used to directly color the icon if 'icon_color_from_evaluation' is true and this field is present, or it might provide context for the title itself. e.g. bad is red. Please be careful in choosing colors, to avoid 50 shades of red. example: bad enum: - good - average - neutral - bad - unknown half_width_on_mobile: type: boolean description: If true, suggests that this panel could be rendered as half-width on mobile devices, allowing for side-by-side display with another half-width panel if applicable. example: true title_element: title: title_element x-stoplight: id: lox0wvl9bdgy2 type: object description: The title of a panel. properties: name: type: string description: A short name of this panel, not including any actual values. e.g. "Fat" title: type: string subtitle: type: string type: type: string enum: - grade - percentage - string description: Used to indicate how the value of this item is measured, such as "grade" for Nutri-Score and Green-Score or "percentage" for Salt grade: type: string description: The value for this panel where it corresponds to a A to E grade such as the Nutri-Score or the Green-Score. enum: - a+ - a - b - c - d - e - f - unknown value: type: number description: The numeric value of the panel, where the type is "percentage" value_string: type: string description: The string value of the panel, for cases where the value is not numeric icon_url: type: string icon_color_from_evaluation: type: string icon_size: type: string description: 'If set to "small", the icon should be displayed at a small size. ' elements: type: array description: An ordered list of elements to display in the content of the panel. items: title: element x-stoplight: id: e2ybdrtmx0tme type: object description: 'Each element object contains one specific element object such as a text element or an image element. ' properties: element_type: type: string enum: - text - image - action - panel - panel_group - table description: 'The type of the included element object. The element_type also indicates which field contains the included element object. e.g. if the element_type is "text", the included element object will be in the "text_element" field. Note that in the future, new type of element may be added, so your code should ignore unrecognized types, and unknown properties. TODO: add Map type ' text_element: title: text_element x-stoplight: id: vdwxlt73qnqfa type: object description: 'A text in simple HTML format to display. For some specific texts that correspond to a product field (e.g. a product name, the ingredients list of a product),the edit_field_* fields are used to indicate how to edit the field value.' properties: type: type: string description: 'the type of text, might influence the way you display it. ' enum: - summary - warning - notes html: type: string description: Text to display in HTML format. language: type: string description: Language of the text. The name of the language is returned in the language requested when making the API call. e.g. if the text is in Polish, and the requested language is French, the language field will contain "Polonais" (French for "Polish"). Only set for specific fields such as the list of ingredients of a product. lc: type: string description: 2 letter language code for the text. Only set for specific fields such as the list of ingredients of a product. edit_field_id: type: string description: id of the field used to edit this text in the product edit API. edit_field_type: type: string description: Type of the product field. edit_field_value: type: string description: Current value of the product field. This may differ from the html field which can contain extra formating. source_url: type: string description: Link to the source example: https://en.wikipedia.org/wiki/Sodium acetate source_text: type: string description: name of the source example: Wikipedia source_lc: type: string description: Source locale name example: en source_language: type: string description: Human readable source locale name example: English image_element: title: image_element x-stoplight: id: k4v4kwt489q3j type: object properties: url: type: string description: full URL of the image width: type: integer description: "Width of the image.\n\nThis is just a suggestion coming from the server, \nthe client may choose to use its own dimensions for the image.\n" height: type: integer description: 'Height of the image. This is just a suggestion coming from the server, the client may choose to use its own dimensions for the image. ' alt_text: type: string description: Alt Text of the image. action_element: title: action_element type: object properties: title: type: string actions: type: array description: The ids of the actions to show. items: type: string description: The id of the action to show. examples: - edit_product - add_categories description: The action element is used to display a title and a list of actions like editing a product or adding categories. panel_element: title: panel_element x-stoplight: id: ymx41elz4yrnj type: object description: Panels can include other panels as sub-panels using the panel_element. properties: panel_id: type: string description: The id of the panel to include. The id is the key of the panel in the panels object returned in the knowledge_panels field. panel_group_element: title: panel_group_element x-stoplight: id: b7emlfrgiuue2 type: object properties: title: type: string panel_ids: type: array description: The ids of the panels to include. The ids are the keys of the panels in the panels object returned in the knowledge_panels field. items: type: string image: type: object description: An image related to the panel group (e.g. the ingredients or nutrition facts image for the ingredients and nutrition panel groups). description: The panel group element is used to display an optional title followed by a number of sub-panels. table_element: title: table_element type: object description: Element to display a table. properties: id: type: string description: An id for the table. table_type: type: string description: Type of table (e.g. "percents" for tables with percentage columns) title: type: string description: 'Title of the table. ' columns: type: array items: type: object title: table_column properties: text: type: string description: Column header text type: type: string description: Column type (e.g. "text", "percent") text_for_small_screens: type: string description: Alternative text for small screens style: type: string description: CSS style for the column column_group_id: type: string shown_by_default: type: boolean rows: type: array description: Array of table rows items: type: object properties: id: type: string description: Row ID style: type: string description: CSS style for the row values: type: array description: Array of cell values items: type: object properties: text: type: string description: Cell text content icon_url: type: string description: URL of an icon to display in the cell percent: type: number description: Percentage value for progress bars (used with percent columns) evaluation: type: string description: Evaluation level (good, bad, neutral, etc.) for styling level: type: integer description: Indentation level style: type: string description: CSS style for the cell required: - element_type level: type: string description: 'a message level, as levels we use in log. It might help theming the panel visually. Some possible values: info, recommendation ' example: info size: type: string enum: - small description: "size is either empty (normal display) \nor small to indicate a panel that should have a smaller font size\n" example: small topics: type: array items: type: string example: health description: topics currently include health, environment, problem readOnly: true - type: object description: 'Specific data about a product to enable personal ranking ' properties: attribute_groups: type: array description: Each element is an attribute that can help compute a personal ranking for the product items: title: product_attribute_group type: object properties: id: type: string description: 'Unique id of the attribute. It will be use to match against preferences parameters. ' status: type: string enum: - known - unknown description: wether we have the information to really compute this criteria or not. title: type: string description: 'A descriptive sentence about the situation of the product concerning attribute ' example: 'Does not contain: Molluscs' match: type: number format: float minimum: 0 maximum: 100 description: 'a numeric value for the match, telling how much the products ranks well for this particular attribute. The higher the value, the better the match. ' grade: description: every attribute as a grade for a to e type: string enum: - unknown - a - b - c - d - e name: type: string description: The name of attribute, for eventual display icon_url: type: string description: an icon representing the attribute match (often using a color) description: type: string description: An eventual description of the value of the property upon which this attribute is based description_short: type: string description: An eventual short description of the value of the property upon which this attribute is based '302': description: Redirect to the correct server for the product type of the requested product headers: Location: schema: type: string description: URL to the correct server examples: redirect: value: https://world.openbeautyfacts.org/api/v3/product/8710447445990 '404': description: Product not found description: 'Retrieve information for a product with a specific barcode. The fields parameter allows to specify what fields to retrieve.' operationId: get-api-v3-product-code security: - userAgentAuth: [] patch: tags: - Products summary: Create or Update Product operationId: patch-api-v3-product-code description: 'This API allows to create or update a product (if the product already exists, its data is updated, otherwise it is created), or to analyze a test product (in which case no product is created or updated). To analyze a product, the "code" path component needs to contain the value "test" instead of a barcode. New API to send structured product data in a JSON format instead of in a flattened list of key / value pairs field as-in the current product add / edit API that relies on a multipart/form-data format. Important: this new Product WRITE API has been deployed in production, but it is still under development, and it may change. This new API is used in particular to send structured packaging data: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/ The new API is gradually being extended to support other product fields. Currently supported fields are: - language specific fields (e.g. product name, ingredients text) - tags fields (e.g. categories, labels) - packaging fields (e.g. packagings, packagings_add, packagings_complete) - image selection of uploaded images (e.g. front, ingredients, nutrition, packaging) for specific languages' parameters: - name: code in: path description: 'The barcode of the product to create or update, or "test" to analyze the product data sent without creating or updating a product. ' required: true style: simple explode: false schema: type: string example: '3017620422003' requestBody: content: application/json: schema: allOf: - title: Language and country of the user type: object properties: lc: type: string description: 2 letter code of the language of the interface. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the language may be inferred by the country of the user (passed through the cc field or inferred by the IP address). Full list at https://static.openfoodfacts.org/data/taxonomies/languages.json cc: type: string description: 2 letter code of the country of the user. Used for localizing some fields in returned values (e.g. knowledge panels). If not passed, the country may be inferred by the IP address of the request. Full list at https://static.openfoodfacts.org/data/taxonomies/countries.json description: '' examples: - lc: fr cc: fr - title: Fields requested and language for taxonomized tags fields type: object description: '' properties: fields: type: string description: 'Comma separated list of fields requested in the response. Special values: "updated": returns field that were updated by the query (e.g. sending "packagings" or "packagings_add" would return "packagings"), "none": returns no fields, "all": returns all fields except generated fields that need to be explicitly requested such as "knowledge_panels". Defaults to "updated" for WRITE requests, and "all" for READ requests.' tags_lc: type: string description: '2 letter language code to request names of tags in a specific language. For READ requets: if passed, all taxonomized tags of the response will include a lc_name property with the translation in the requested language, if available. Otherwise, the property value will contain the name in the original language, prefixed by the 2 language code and a colon. For WRITE requests: if passed, taxonomized tags fields with a lc_name property will be considered to be in this language.' examples: - fields: product_name,packagings tags_lc: fr - fields: updated tags_lc: fr - type: object properties: user_id: type: string password: type: string description: Password for login format: password product: title: Product update API V3 (WRITE) type: object description: Model for creating or updating products using the v3 version of the product update API. examples: [] allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product - type: object title: Tags (WRITE) description: 'Products have list of tags of different types (e.g. categories, labels) that can be replaced or added to with the following properties in API v3. ' properties: categories_tags: type: array description: An array of categories tag entries that will replace existing categories items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' categories_tags_add: type: array description: An array of categories tag entries that will be added to existing categories items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' patternProperties: categories_tags_(?\w\w): type: array description: An array of categories tag entries that will replace existing categories, with a default language code items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' categories_tags_(?\w\w)_add: type: array description: An array of categories tag entries that will be added to existing categories, with a default language code items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' - type: object properties: packagings: type: array x-stoplight: id: 69xpogby1amz6 title: Packagings (WRITE) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/' examples: [] items: title: Packaging component (WRITE) x-stoplight: id: iacgfu9zaek8v type: object description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties will be mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies. For input, clients can either pass the id of a corresponding taxonomy entry (e.g. "en:pizza-box"), or a free text value prefixed with the language code of the text (e.g. "en:Pizza box", "fr:boite à pizza"). If the language code prefix is missing, the value of the "lc" field of the query will be used. The resulting structure will contain the id of the canonical entry in the taxonomy if it good be matched, or the free text value prefixed with the language code otherwise. For weights, the API is expecting a number with the number of grams. If a string is passed instead of a number, we will attempt to convert it to grams. The string may contain units (e.g. "6.9 g"), and use . or , as the decimal separator. Conversion may not work for all inputs. If a string was converted to a number, the API response will include a warning and specify the converted value.' examples: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 properties: number_of_units: type: integer description: Number of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape (WRITE) x-stoplight: id: yi44igltu79cl description: The shape property is canonicalized using the packaging_shapes taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object material: title: Packaging component material (WRITE) x-stoplight: id: vgm9p553p4vd9 description: The material property is canonicalized using the packaging_materials taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object recycling: title: Packaging component recycling instruction (WRITE) x-stoplight: id: 72oyv89xtgc2n description: The recycling property is canonicalized using the packaging_recycling taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) weight_specified: type: - number - string description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. weight_measured: type: - number - string description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. brands: type: string description: A comma separated list of brands / product names for the packaging component (e.g. "Tetra Pak", Tetra Brik" labels: type: string description: A comma separated list of labels, canonicalized with the packaging_labels taxonomy (e.g. "en:FSC, fr:Encre végétale") packagings_add: type: array x-stoplight: id: 69xpogby1amz6 title: Packagings (WRITE) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/' examples: [] items: title: Packaging component (WRITE) x-stoplight: id: iacgfu9zaek8v type: object description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties will be mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies. For input, clients can either pass the id of a corresponding taxonomy entry (e.g. "en:pizza-box"), or a free text value prefixed with the language code of the text (e.g. "en:Pizza box", "fr:boite à pizza"). If the language code prefix is missing, the value of the "lc" field of the query will be used. The resulting structure will contain the id of the canonical entry in the taxonomy if it good be matched, or the free text value prefixed with the language code otherwise. For weights, the API is expecting a number with the number of grams. If a string is passed instead of a number, we will attempt to convert it to grams. The string may contain units (e.g. "6.9 g"), and use . or , as the decimal separator. Conversion may not work for all inputs. If a string was converted to a number, the API response will include a warning and specify the converted value.' examples: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 properties: number_of_units: type: integer description: Number of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape (WRITE) x-stoplight: id: yi44igltu79cl description: The shape property is canonicalized using the packaging_shapes taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object material: title: Packaging component material (WRITE) x-stoplight: id: vgm9p553p4vd9 description: The material property is canonicalized using the packaging_materials taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object recycling: title: Packaging component recycling instruction (WRITE) x-stoplight: id: 72oyv89xtgc2n description: The recycling property is canonicalized using the packaging_recycling taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) weight_specified: type: - number - string description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. weight_measured: type: - number - string description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. brands: type: string description: A comma separated list of brands / product names for the packaging component (e.g. "Tetra Pak", Tetra Brik" labels: type: string description: A comma separated list of labels, canonicalized with the packaging_labels taxonomy (e.g. "en:FSC, fr:Encre végétale") packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. lang: type: string minLength: 2 maxLength: 2 example: fr description: 2 letter language code of the main language of the product (the most prominent on the packaging) quantity: type: string serving_size: type: string images: type: object properties: selected: type: object title: Selected images description: 'Images with specific information (e.g. front, ingredients, nutrition, packaging) for specific languages. Each selected image is a cropped version of an uploaded image. ' properties: front: description: 'Front images of the full product in languages shown on the packaging. In most cases we have a front image selected for only one language, unless the product has different packagings for different countries with the same barcode, or if the product has two front sides (e.g. in bilingual countries). ' patternProperties: (?\w\w): oneOf: - type: object description: 'Front image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' ingredients: description: 'Cropped images of the ingredients list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Ingredient list image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: "Write only value to unselect a selected image \n" nutrition: description: 'Cropped images of the nutrition facts table / list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Nutrition facts image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' packaging: description: 'Cropped images of the packaging / recycling information in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' examples: example-1: value: lc: fr cc: fr fields: product_name,packagings tags_lc: fr userid: string password: string code: string product: packagings: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 packagings_add: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 product: title: Product update API V3 (WRITE) type: object description: Model for creating or updating products using the v3 version of the product update API. examples: [] allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product - type: object title: Tags (WRITE) description: 'Products have list of tags of different types (e.g. categories, labels) that can be replaced or added to with the following properties in API v3. ' properties: categories_tags: type: array description: An array of categories tag entries that will replace existing categories items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' categories_tags_add: type: array description: An array of categories tag entries that will be added to existing categories items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' patternProperties: categories_tags_(?\w\w): type: array description: An array of categories tag entries that will replace existing categories, with a default language code items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' categories_tags_(?\w\w)_add: type: array description: An array of categories tag entries that will be added to existing categories, with a default language code items: title: Input taxonomy tag type: string description: 'A tag entry, that will be matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") - a string in a specific language, prefixed by the 2 letter language code (e.g. "fr:Thés verts") - API v0 to v2: a string in the language of the request (specified with the lc field, or inferred from the subdomain the request is sent to (e.g. "nl" for requests sent to be.openfoodfacts.org) - API v3: a string in the default language of the field (e.g. French for categories_tags_fr) or in the language indicated by the tags_lc request field (e.g. Thés verts) All entries will be matched to the corresponding taxonomy. It is possible to specify values that do not exist yet in the taxonomy. They may later be added as new taxonomy entries, or as new translations or synonyms of an existing entry.' - type: object properties: packagings: type: array x-stoplight: id: 69xpogby1amz6 title: Packagings (WRITE) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/' examples: [] items: title: Packaging component (WRITE) x-stoplight: id: iacgfu9zaek8v type: object description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties will be mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies. For input, clients can either pass the id of a corresponding taxonomy entry (e.g. "en:pizza-box"), or a free text value prefixed with the language code of the text (e.g. "en:Pizza box", "fr:boite à pizza"). If the language code prefix is missing, the value of the "lc" field of the query will be used. The resulting structure will contain the id of the canonical entry in the taxonomy if it good be matched, or the free text value prefixed with the language code otherwise. For weights, the API is expecting a number with the number of grams. If a string is passed instead of a number, we will attempt to convert it to grams. The string may contain units (e.g. "6.9 g"), and use . or , as the decimal separator. Conversion may not work for all inputs. If a string was converted to a number, the API response will include a warning and specify the converted value.' examples: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 properties: number_of_units: type: integer description: Number of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape (WRITE) x-stoplight: id: yi44igltu79cl description: The shape property is canonicalized using the packaging_shapes taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object material: title: Packaging component material (WRITE) x-stoplight: id: vgm9p553p4vd9 description: The material property is canonicalized using the packaging_materials taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object recycling: title: Packaging component recycling instruction (WRITE) x-stoplight: id: 72oyv89xtgc2n description: The recycling property is canonicalized using the packaging_recycling taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) weight_specified: type: - number - string description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. weight_measured: type: - number - string description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. brands: type: string description: A comma separated list of brands / product names for the packaging component (e.g. "Tetra Pak", Tetra Brik" labels: type: string description: A comma separated list of labels, canonicalized with the packaging_labels taxonomy (e.g. "en:FSC, fr:Encre végétale") packagings_add: type: array x-stoplight: id: 69xpogby1amz6 title: Packagings (WRITE) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/' examples: [] items: title: Packaging component (WRITE) x-stoplight: id: iacgfu9zaek8v type: object description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties will be mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies. For input, clients can either pass the id of a corresponding taxonomy entry (e.g. "en:pizza-box"), or a free text value prefixed with the language code of the text (e.g. "en:Pizza box", "fr:boite à pizza"). If the language code prefix is missing, the value of the "lc" field of the query will be used. The resulting structure will contain the id of the canonical entry in the taxonomy if it good be matched, or the free text value prefixed with the language code otherwise. For weights, the API is expecting a number with the number of grams. If a string is passed instead of a number, we will attempt to convert it to grams. The string may contain units (e.g. "6.9 g"), and use . or , as the decimal separator. Conversion may not work for all inputs. If a string was converted to a number, the API response will include a warning and specify the converted value.' examples: - number_of_units: 6 shape: id: en:bottle material: id: en:plastic recycling: id: en:recycle quantity_per_unit: 25 cl weight_measured: 10 properties: number_of_units: type: integer description: Number of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape (WRITE) x-stoplight: id: yi44igltu79cl description: The shape property is canonicalized using the packaging_shapes taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object material: title: Packaging component material (WRITE) x-stoplight: id: vgm9p553p4vd9 description: The material property is canonicalized using the packaging_materials taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object recycling: title: Packaging component recycling instruction (WRITE) x-stoplight: id: 72oyv89xtgc2n description: The recycling property is canonicalized using the packaging_recycling taxonomy. examples: - id: string - lc_name: bouteille anyOf: - properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. - properties: lc_name: type: string description: Name of the entry in the language specified in the tags_lc field of the request. If the translation is not available, the value must be the name of the entry in its original language prefixed by the language 2 letter code and a colon. type: object quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) weight_specified: type: - number - string description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. weight_measured: type: - number - string description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). If passed a string - possibly with an unit - it will be converted to a number. brands: type: string description: A comma separated list of brands / product names for the packaging component (e.g. "Tetra Pak", Tetra Brik" labels: type: string description: A comma separated list of labels, canonicalized with the packaging_labels taxonomy (e.g. "en:FSC, fr:Encre végétale") packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. lang: type: string minLength: 2 maxLength: 2 example: fr description: 2 letter language code of the main language of the product (the most prominent on the packaging) quantity: type: string serving_size: type: string images: type: object properties: selected: type: object title: Selected images description: 'Images with specific information (e.g. front, ingredients, nutrition, packaging) for specific languages. Each selected image is a cropped version of an uploaded image. ' properties: front: description: 'Front images of the full product in languages shown on the packaging. In most cases we have a front image selected for only one language, unless the product has different packagings for different countries with the same barcode, or if the product has two front sides (e.g. in bilingual countries). ' patternProperties: (?\w\w): oneOf: - type: object description: 'Front image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' ingredients: description: 'Cropped images of the ingredients list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Ingredient list image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: "Write only value to unselect a selected image \n" nutrition: description: 'Cropped images of the nutrition facts table / list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Nutrition facts image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' packaging: description: 'Cropped images of the packaging / recycling information in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' application/xml: schema: type: object properties: {} description: 'Structured data for the product is passed in the product field. For complex structures such as the packagings object, it is possible to replace pre-existing data, or completing it: - an object sent in the packagings field will replace any pre-existing data. - an object sent in the field suffixed with _add (e.g. packagings_add) will be merged with any pre-existing data. ' responses: '200': description: 'The response will include a "product" structure. The fields returned in this structure will depend on the value of the "fields" input field: - "updated" (default): all fields updated by the query will be returned, including fields that are directly generated from the updated fields. For instance, sending "packagings" or "packagings_add" will return the "packagings" field. - "none": no fields are returned. - "all": returns all fields except generated fields that need to be explicitly requested such as "knowledge_panels". The "fields" values can also be concatenated: "all,knowledge_panels"' content: application/json: schema: allOf: - title: Response status type: object description: A response object to describe if a READ or WRITE request was successful or not, and if there were errors or warnings, and what the impact of those errors or warnings was. examples: - status: success_with_errors result: id: product_updated name: Product updated lc_name: Produit mis à jour errors: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: status: type: string enum: - success - success_with_warnings - success_with_errors - failure description: 'Overall status of the request: whether it failed or succeeded, with or without warnings or errors.' result: type: object description: 'Overall result of the request (e.g. a product has been created)' properties: id: type: string description: Identifier of a response result entry name: type: string description: Name of the response result entry in English. lc_name: type: string description: Name of the response result entry in the language specified in tags_lc, if supplied. warnings: type: array description: List of warnings. Warnings are used to alert about something that may be wrong, but is not necessarily wrong (e.g. a nutrient value that is unexpectedly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string errors: type: array description: List of errors. Errors are used to alert about something that is definitely wrong (e.g. a nutrient value that is impossibly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string - type: object properties: product: type: object title: product description: 'This is all the fields describing a product and how to display it on a page. Refer to the different sub schema for more readable entries: * [Product Base](#cmp--schemas-product-base): Base fields of a product * [Product Misc](#cmp--schemas-product-misc): Miscellaneous but important fields of a product * [Product Tags](#cmp--schemas-product-tags): Tags fields on a product * [Product Images](#cmp--schemas-product-images): Information about Images of a product * [Product Images 2](#cmp--schemas-product-images2): Information about Images of a product * [Product Eco-Score](#cmp--schemas-product-ecoscore): Fields related to Eco-Score for a product * [Product Ingredients](#cmp--schemas-product-ingredients): Fields about ingredients of a product * [Product Nutrition v3.5](#cmp--schemas-product-nutrition-v3-5): Nutrition fields of a product (v3.5) * [Product Data Quality](#cmp--schemas-product-quality): fields related to data quality for a product * [Product Extended](#cmp--schemas-product-extended): TODO * [Product Metadata](#cmp--schemas-product-meta): Metadata of a product (author, editors, etc.) * [Product Knowledge Panels](#cmp--schemas-product-knowledge-panels): Knowledge panels for a product * [Product Attribute Groups](#cmp--schemas-product-attribute-groups): Attribute groups for personal product matching ' allOf: - type: object description: 'Base product data ' required: - code - schema_version allOf: - type: object description: Product type information properties: product_type: type: string description: 'The product type is a fundamental separation that tells on which platform the product is made available: Open Food Facts, Open Beauty Facts, Open Pet Food Facts or Open Products Facts. Each platform has variations on the way it analyses the product. Changing the product type moves the product to the new platform. It must be done thoughtfully. ' enum: - beauty - food - petfood - product properties: product_name: type: string description: "The name of the product in the main language of the product (lang field) \n" abbreviated_product_name: type: string description: Abbreviated product name (e.g. abbreviated product name printed on receipts) in the main language of the product (lang field) code: type: string description: 'barcode of the product (can be EAN-13 or internal codes for some food stores), for products without a barcode, Open Food Facts assigns a number starting with the 200 reserved prefix ' codes_tags: type: array items: type: string description: 'A value which is the type of barcode "code-13" or "code-8" and A series of mask for the barcode It helps retrieve barcodes starting by ' examples: - code-13 - 3017620422xxx - 301762042xxxx - 30176204xxxxx - 3017620xxxxxx - 301762xxxxxxx - 30176xxxxxxxx - 3017xxxxxxxxx - 301xxxxxxxxxx - 30xxxxxxxxxxx - 3xxxxxxxxxxxx generic_name: type: string description: 'Generic / legal name of the product in the main language of the product (lang field) ' id: description: 'internal identifier for the product, usually set to the value of `code`, except on the producers platform where it is prefixed by the owner ' type: string lc: type: string description: 'Main language of the product. This is a duplicate of `lang` property (for historical reasons). ' lang: type: string description: 'Main language of the product. This should be the main language of product packaging (if one is predominant). Main language is also used to decide which ingredients list to parse. ' nova_group: type: integer description: 'Nova group as an integer from 1 to 4. See https://world.openfoodfacts.org/nova ' nova_groups: type: string obsolete: type: string obsolete_since_date: description: 'A date at which the product was declared obsolete. This means it''s not produced any more. ' type: string product_quantity: type: string description: 'The size in g or ml for the whole product. It is a normalized version of the `quantity` field. A `quantity` of "2 x 60 g" leads to `product_quantity`: "120". ' example: '500' product_quantity_unit: type: string description: 'The unit (either g or ml) for the corresponding `product_quantity`. It is computed from the `quantity` field. A `quantity` of "6 x 250 ml" leads to `product_quantity_unit`: "ml". ' example: g quantity: type: string description: 'The quantity of the product, with the corresponding number of portions or unit (g, ml, kg, l, cl, oz, lbs...). It should be the value as displayed on the product. The ℮ sign is allowed. When it refers to the number of portions, it can be filled without any units (e.g. "6 eggs"). ' example: 3 x 150 g schema_version: type: integer description: 'Version of the product object schema used in the response. This indicates the structure of the ''product'' field itself. For more details, please read: https://openfoodfacts.github.io/openfoodfacts-server/api/ref-api-and-product-schema-change-log ' example: 999 patternProperties: product_name_(?\w\w): type: string description: 'Product name in language designated by `language_code`, e.g. product_name_fr ' abbreviated_product_name_(?\w\w): type: string description: Abbreviated product name in language `language_code`. generic_name_(?\w\w): type: string description: 'Generic/legal name in language designated by `language_code`, e.g. generic_name_en. ' - type: object title: product_misc description: 'Miscellaneous but important fields of a product ' properties: additives_n: type: integer description: 'Number of food additives. ' checked: type: string complete: type: integer completeness: type: number ecoscore_grade: type: string description: 'See also: `ecoscore_tags` ' ecoscore_score: type: integer description: 'See also: `ecoscore_tags` ' food_groups: type: string food_groups_tags: type: array items: type: string nutrient_levels: description: 'Traffic light indicators on main nutrients levels ' type: object properties: fat: type: string enum: - low - moderate - high salt: type: string enum: - low - moderate - high saturated-fat: type: string enum: - low - moderate - high sugars: type: string enum: - low - moderate - high packaging_text: type: string description: 'Recycling instructions as raw text, e.g. Plastic bottle to recycle, Plastic cap to recycle. This will get automatically parsed and will be used to compute the Eco-Score. You can either request it (if it exists) or send it in a specific language. ' example: packaging_text_en packagings: type: array title: Packagings (READ) description: 'The packagings object is an array of individual packaging component objects. The Packaging data document explains how packaging data is structured in Open Food Facts: https://openfoodfacts.github.io/openfoodfacts-server/dev/explain-packaging-data/ The shape, material and recycling properties of each packaging component are linked to entries in the packaging_shapes, packaging_materials and packaging_recycling taxonomies: https://world.openfoodfacts.org/data/taxonomies/packaging_shapes.json https://world.openfoodfacts.org/data/taxonomies/packaging_materials.json https://world.openfoodfacts.org/data/taxonomies/packaging_recycling.json If the tags_lc field is set, the properties will include a lc_name field with the translation in the requested language.' examples: - - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified items: description: 'Each packaging component has different properties to specify how many there are, its shape, material etc. The shape, material and recycling properties are mapped to one entry in the packaging_shapes, packaging_materials and packaging_recycling taxonomies, and the value of the property is the canonical name of the taxonomy entry (e.g. en:bottle). They may contain values that could not yet get matched to their respective taxonomy, in which case they will contain a free text value prefixed with the language code of this text value (e.g. "fr:Bouteille sphérique" might have been entered by a French user to indicate it is a spherical bottle).' title: Packaging component (READ) type: object examples: - number_of_units: 6 shape: id: en:bottle lc_name: bouteille material: id: en:bottle lc_name: bouteille recycling: id: en:bottle lc_name: bouteille quantity_per_unit: 25 cl quantity_per_unit_value: 25 quantity_per_unit_unit: cl weight_specified: 30 weight_measured: 32 weight_estimated: 26 weight: 30 weight_source_id: specified properties: number_of_units: type: integer description: umber of units of this packaging component contained in the product (e.g. 6 for a pack of 6 bottles) shape: title: Packaging component shape x-stoplight: id: xrj8agza3dwgf type: object description: The shape property is canonicalized using the packaging_shapes taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_shapes taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. material: title: Packaging component material type: object description: The material property is canonicalized using the packaging_materials taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_material taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. recycling: title: Packaging component recycling instruction x-stoplight: id: 376tk8e2cmyh2 type: object description: The recycling property is canonicalized using the packaging_recycling taxonomy. Taxonomized values are available using the partial taxonomy API, the autosuggest API or the full packaging_recycling taxonomy JSON export. examples: - id: en:bottle lc_name: bouteille properties: id: type: string description: Canonical id of the entry in the taxonomy. If the value cannot be mapped to a taxonomy entry, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. lc_name: type: string description: Name of the entry in the language requested in the tags_lc field of the request. This field is returned only of tags_lc is specified. If the translation is not available, or if the entry does not exist in the taxonomy, the value will be the name of the entry in its original language prefixed by the language 2 letter code and a colon. quantity_per_unit: type: string description: Quantity (weight or volume) of food product contained in the packaging component. (e.g. 75cl for a wine bottle) quantity_per_unit_value: type: number description: Value parsed from the quantity field. quantity_per_unit_unit: type: string description: Unit parsed and normalized from the quantity field. weight_specified: type: number description: Weight (as specified by the manufacturer) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_measured: type: number description: Weight (as measured by one or more users) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight_estimated: type: number description: Weight (as estimated from similar products) of one unit of the empty packaging component (in grams). (e.g. for a 6 pack of 1.5l water bottles, it might be 30, the weight in grams of 1 empty water bottle without its cap which is a different packaging component). weight: type: number description: Weight of one unit of the empty packaging component. weight_source_id: type: string description: Indicates which field was used to populate the "weight" field. Either "specified", "measured", or "estimated" readOnly: true packagings_complete: title: packagings_complete type: integer minimum: 0 maximum: 1 description: Indicate if the packagings array contains all the packaging parts of the product. This field can be set by users when they enter or verify packaging data. Possible values are 0 or 1. pnns_groups_1: description: 'Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_1_tags: type: array items: type: string pnns_groups_2: description: 'Sub Category of food according to [French Nutrition and Health Program](https://fr.wikipedia.org/wiki/Programme_national_nutrition_sant%C3%A9) ' type: string pnns_groups_2_tags: type: array items: type: string popularity_key: description: 'An imprecise measurement of popularity based on Scan statistics. A higher value means higher popularity. ' type: integer popularity_tags: description: "Indicators for the popularity of a product, like the amount of scans in a specific year.\n`popularity_tags` values from previous years are kept, if there is no popularity_tags at all, then it was never popular.\nThis field must be used with care. In countries where Open Food Facts is not widely used, \na product may obtain the value \"top-90-percent-scans-2021\" with a single scan.\n" type: array items: type: string example: - bottom-25-percent-scans-2020 - top-85-percent-scans-2021 - top-90-percent-scans-2022 - top-country-it-scans-2019 - top-100000-mg-scans-2024 scans_n: type: integer description: "Number of scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded). This value is computed once a year by scanbot.pl.\nIt is possible that a product has never been scanned at all: `scans_n` is not given in this case.\nSee also `unique_scans_n` field.\n" unique_scans_n: type: integer description: "Number of unique scans performed with the official Open Food Facts mobile application, the last year \nfor which the product was scanned (current year excluded).\nUnique scans means it is based on different IPs.\nThis value is computed once a year by scanbot.pl.\nSee also `scans_n` field.\n" serving_quantity: type: string description: 'Normalized version of serving_size. Note that this is NOT the number of servings by product. (in perl, see `normalize_serving_size`) ' serving_quantity_unit: type: string description: 'The unit (either g or ml) for the correponding serving_quantity. ' example: g serving_size: type: string description: 'Serving size text (generally in g or ml). We expect a quantity + unit but the user is free to input any string. ' patternProperties: food_groups_(?\w\w): type: string description: see `food_groups` packaging_text_(?\w\w): type: string description: 'Packaging text in language designated by `language_code` ' - type: object title: Product Tags allOf: - type: object title: Product Base Tags properties: brands: type: string description: 'Comma separated list of brands (not taxonomized), in the last language used to edit it (recorded in brands_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' brands_tags: type: array description: "An array of indexed brands tag entries (for search).\n\nThat is the id of brands found in taxonomy + \nbrands not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' categories: type: string description: 'Comma separated list of categories (not taxonomized), in the last language used to edit it (recorded in categories_lc) This field is mostly used for debugging and testing purposes. Do not use it for display purposes. ' categories_tags: type: array description: "An array of indexed categories tag entries (for search).\n\nThat is the id of categories found in taxonomy + \ncategories not found in taxonomy (with case / accents / spaces normalized).\n\nThis is mostly used for search as the normalization of entries not in the taxonomy is lossy.\n" items: title: Indexed taxonomy tag entry (lossy, for search only) type: string description: 'This field is used for search only. It is a lossy representation of the taxonomy tag entry, that can be used to index the entry in a search engine. A tag entry, that has been matched against a taxonomy (e.g. a category, a label) The entry is a string that can contain either: - a taxonomy entry id, in the form [2 letter language code]:[normalized canonical name] (e.g. "en:green-teas") -> for entries that could be matched to a taxonomy entry - a string in a specific language, prefixed by the 2 letter language code, and normalized (deaccented and lowercased, depending on language) (e.g. "fr:thes-verts") -> for entries that could not be matched to a taxonomy entry' checkers_tags: type: array items: type: string description: List of checkers (users who checked the product) tags cities: type: string cities_tags: type: array items: type: object correctors_tags: type: array items: type: string countries: type: string description: 'List of countries where the product is sold. ' countries_tags: type: array items: type: string ecoscore_tags: description: 'All ecoscore of a product. Most of the time it''s only one value, but it might eventually be more for products composed of sub-products. See also: `ecoscore_score`, `ecoscore_grade`. ' type: array items: type: string emb_codes: type: string description: 'Packager code. EMB is the French system of traceability codes for packager. ' example: EMB 2013330 emb_codes_tags: type: array items: type: object labels: type: string labels_tags: type: array items: type: string entry_dates_tags: description: 'The data as a series of tag: `yyyy-mm-dd`, `yyyy-mm`, `yyyy` ' type: array items: type: string examples: - - '2016-03-11' - 2016-03 - '2016' manufacturing_places: type: string description: 'Places where the product was manufactured or transformed. ' manufacturing_places_tags: type: array items: type: string nova_groups_tags: type: array items: type: string nutrient_levels_tags: type: array items: type: string - type: object properties: tags_sources: type: object description: "All the relevant data on the sources of the different tags of the product.\nThe data is sorted by the sources from which the tags are obtained, e.g. packaging, producer, predicted.\nThe current sources are:\n - packaging: what is written on the packaging of the product\n - manufacturer: information that was sent directly from the manufacturer to Open Food Facts, through our producers platform\n - ingredients: information that is derived from the ingredients list (e.g. allergens and traces)\n - database-* (e.g. database-usda): information from another open database\n - label-* (e.g. label-non-gmo-project): information from a label organization (e.g. some labels send us lists of products that have the label)\nNew sources may be added at anytime, so we are using patternProperties to make sure parsing does not break if a new source is encountered.\n" patternProperties: ^[a-z]+(_-[a-z]+)*$: type: object description: 'A tag type such as "categories", "labels", "stores" ' patternProperties: ^[a-z]+(_-[a-z]+)*$: type: object description: 'A source such as "packaging", "manufacturer" or "ingredients" ' properties: last_updated_t: type: string description: 'Timestamp indicating when tags related to this source were last updated. ' tags: type: array description: 'The specific tags related to this source. ' items: type: string example: - en:organic example: packaging: categories: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:organic - en:vegetarian labels: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:fair-trade manufacturer: categories: last_updated_t: '2026-02-22T10:00:00Z' tags: - en:organic - type: object title: Product Images description: "Information about images (photos) of a product.\n\nImages ensure the reliability of Open Food Facts data.\nThey provides a primary source and proof of all the structured data.\nYou may therefore want to display them along the structured information.\n\nFor each product, we store:\n- the original images uploaded by users or manufacturers in images.uploaded\n- images that have been selected / cropped / rotated etc. containing specific\n information (e.g. the front image, the ingredients image, etc.)\n for specific languages in images.selected\n\nSee also tutorials about images:\n* [Getting images](https://openfoodfacts.github.io/openfoodfacts-server/api/how-to-download-images/)\n* [Uploading images](https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-uploading-photo-to-a-product/)\n" properties: images: description: 'Uploaded and selected images of the product. ' type: object title: images properties: uploaded: description: 'List of all images uploaded by users or manufacturers. Those images are typically not displayed to users, but are used in edit mode to crop images with specific information for specific languages. (See images.selected) Older uploaded images that may correspond to older revisions of the product are also kept in this list. ' type: object title: images_uploaded patternProperties: (?\d+): type: object title: Uploaded image description: 'Image uploaded by a user or provided by a manufacturer identified by an integer ''imgid''. ' properties: uploader: type: string description: 'userid of the user who uploaded the image. ' example: stephane sizes: title: Images Sizes type: object description: 'Contains the information about the images of a product in different sizes. The reduced images are the ones with numbers as the key(100, 200 and 400) while the full images have `full` as the key. ' properties: '100': $ref: '#/components/schemas/ImageSize' '200': $ref: '#/components/schemas/ImageSize' '400': $ref: '#/components/schemas/ImageSize' full: $ref: '#/components/schemas/ImageSize' selected: type: object title: Selected images description: 'List of all images selected by users or manufacturers. Those images are typically displayed to users, and are used in edit mode to crop images with specific information for specific languages. (See images.uploaded) ' properties: front: description: 'Front images of the full product in languages shown on the packaging. In most cases we have a front image selected for only one language, unless the product has different packagings for different countries with the same barcode, or if the product has two front sides (e.g. in bilingual countries). ' patternProperties: (?\w\w): oneOf: - type: object description: 'Front image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' ingredients: description: 'Cropped images of the ingredients list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Ingredient list image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: "Write only value to unselect a selected image \n" nutrition: description: 'Cropped images of the nutrition facts table / list in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Nutrition facts image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' packaging: description: 'Cropped images of the packaging / recycling information in languages shown on the packaging. ' patternProperties: (?\w\w): oneOf: - type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ' $ref: '#/components/schemas/ImageSelected' - type: 'null' writeOnly: true description: 'Write only value to unselect a selected image ' selected_images: type: object title: Selected images URLs description: 'URLs of selected images, generated at runtime. ' patternProperties: (?front|ingredients|nutrition|packaging): description: 'Type of the selected image: front (front of product), ingredients (ingredients list), nutrition (nutrition facts), packaging (packaging/recycling information). ' type: object patternProperties: (?\w\w|best): type: object description: 'Packaging / recycling information image in the language given by the 2 letter ''language_code''. ''best'' returns the best image available, by priority in the language requested by the user, the main language of the product or another language. ' properties: '100': type: string description: 'The URL of the image in max 100px width and height. ' '200': type: string description: 'The URL of the image in max 200px width and height. ' '400': type: string description: 'The URL of the image in max 400px width and height. ' last_image_dates_tags: type: array description: 'An array of tags entries to indicated the year, month and day of the last image upload (in formats YYYY, YYYY-MM, YYYY-MM-DD). ' items: type: string last_image_t: description: timestamp of last image upload type: integer - type: object description: 'Fields related to Eco-Score for a product. See also: `ecoscore_score`, `ecoscore_grade` and `ecoscore_tags`. ' properties: ecoscore_data: type: object title: product_ecoscore_data description: 'An object about a lot of details about data needed for Eco-Score computation and complementary data of interest. ' properties: adjustments: title: product_ecoscore_adjustments type: object properties: origins_of_ingredients: type: object properties: aggregated_origins: type: array description: List of aggregated origins of ingredients and their impact. items: title: adjustments_origin_of_ingredient_aggregated type: object properties: epi_score: type: string origin: type: string description: Country or region of origin for the ingredient. percent: type: integer description: Percentage of this ingredient from the specified origin. transportation_score: type: - 'null' - integer description: Transportation score associated with this ingredient's origin. epi_score: type: integer description: Environmental Performance Index (EPI) score for the ingredient's origin. epi_value: type: integer origins_from_categories: type: array description: List of origins derived from product categories, eg for PDO. items: type: string origins_from_origins_field: type: array description: List of origins explicitly stated in the product's origins field. items: type: string transportation_score: type: integer transportation_scores: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 transportation_value: type: integer transportation_values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 value: type: integer values: type: object propertyNames: $ref: '#/components/schemas/EcoscoreCountryCode' additionalProperties: type: number default: 0 warning: type: string packaging: type: object properties: non_recyclable_and_non_biodegradable_materials: type: integer packagings: type: array items: type: object title: adjustments_packaging_item properties: ecoscore_material_score: type: integer ecoscore_shape_ratio: type: integer material: type: string shape: type: string number_of_units: type: integer examples: - 1 quantity_per_unit: type: string description: The quantity per packaging unit, as a string. examples: - 33 cL quantity_per_unit_unit: type: string examples: - cl quantity_per_unit_value: type: number examples: - 33 recycling: type: string examples: - en:recycle-in-sorting-bin weight_measured: type: number examples: - 12.08 score: type: integer value: type: integer warning: type: string production_system: type: object properties: labels: type: array examples: - vegan - fat free - Kosher items: type: string value: type: integer warning: type: string threatened_species: type: object properties: ingredient: type: string value: type: integer agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string grade: type: string grades: type: object patternProperties: (?\w\w): type: string missing: type: object properties: labels: type: integer origins: type: integer packagings: type: integer missing_data_warning: type: integer previous_data: type: object properties: grade: type: - string - 'null' score: type: - integer - 'null' agribalyse: type: object properties: agribalyse_proxy_food_code: type: string agribalyse_food_code: type: string co2_agriculture: type: number co2_consumption: type: integer co2_distribution: type: number co2_packaging: type: number co2_processing: type: number co2_total: type: number co2_transportation: type: number code: type: string dqr: type: string ef_agriculture: type: number ef_consumption: type: integer ef_distribution: type: number ef_packaging: type: number ef_processing: type: number ef_total: type: number ef_transportation: type: number is_beverage: type: integer name_en: type: string description: 'This can be returned in many other languages like name_fr (for french). ' score: type: integer version: type: string score: type: integer scores: type: object patternProperties: (?\w\w): type: integer status: type: string ecoscore_extended_data_version: type: string environment_impact_level: type: string environment_impact_level_tags: type: array items: type: object - type: object title: product_ingredients description: Fields about ingredients of a product properties: additives_tags: type: array items: type: string allergens: type: string description: comma separated list of allergens allergens_lc: type: string description: language in which `allergens` where input allergens_hierarchy: type: array items: type: string allergens_tags: type: array items: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: type: object title: ingredient properties: id: type: string ingredients: type: array description: 'This structure gives the different ingredients and some information about them, like estimate on their quantity. ' items: description: 'circular reference omitted during bundling: ./ingredient.yaml' percent: type: integer description: The percentage of the ingredient. percent_estimate: type: number description: Estimated percentage of the ingredient. percent_max: type: - string - number description: Maximum percentage of the ingredient. percent_min: type: integer description: Minimum percentage of the ingredient. text: type: string description: Text description of the ingredient. vegan: type: string description: Indicates if the ingredient is vegan. vegetarian: type: string description: Indicates if the ingredient is vegetarian. ingredients_analysis: type: object properties: en:palm-oil: type: array items: type: string en:vegan-status-unknown: type: array items: type: string en:vegetarian-status-unknown: type: array items: type: string ingredients_analysis_tags: type: array items: type: string ingredients_from_or_that_may_be_from_palm_oil_n: type: integer ingredients_from_palm_oil_n: type: integer ingredients_from_palm_oil_tags: type: array items: type: object ingredients_hierarchy: type: array items: type: string ingredients_n: type: integer ingredients_n_tags: type: array items: type: string ingredients_original_tags: type: array items: type: string ingredients_percent_analysis: type: integer description: 'Indicates the result of ingredients analysis processing * not present -> we didn''t run ingredient percent analysis (e.g. we have no ingredients) * 1: we estimated the ingredients percent. * -1 : we tried to estimate the ingredients, but the values were impossible. (e.g. if the sum of % is above 100%) ' ingredients_sweeteners_n: type: integer description: 'Number of sweeteners additives in the ingredients. Undefined if ingredients are not specified. ' ingredients_non_nutritive_sweeteners_n: type: integer description: 'Number of non-nutritive sweeteners additives (as specified in the Nutri-Score formula) in the ingredients. Undefined if ingredients are not specified. ' ingredients_tags: type: array items: type: string ingredients_lc: type: string description: 'Language that was used to parse the ingredient list. If `ingredients_text` is available for the product main language (`lang`), `ingredients_lc=lang`, otherwise we look at `ingredients_text` fields for other languages and set `ingredients_lc` to the first non-empty `ingredient_text`. ' ingredients_text: type: string description: 'Raw list of ingredients. This will get automatically parsed and get used to compute the Eco-Score or find allergens, etc.. It''s a copy of ingredients_text in the main language of the product (see `lang` proprety). ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_text_with_allergens: type: string description: 'Same text as `ingredients_text` but where allergens have HTML elements around them to identify them ' example: 'Farine de blé* 67,4%, sucre de canne*, huile de tournesol oléique*, graines de chia* 5,2%, son de blé*, oranges déshydratées * 0,9%, farine de riz*, poudres à lever (acide citrique, carbonates de sodium), arôme naturel d''orange. ' ingredients_that_may_be_from_palm_oil_n: type: integer ingredients_that_may_be_from_palm_oil_tags: type: array items: type: object ingredients_with_specified_percent_n: type: integer ingredients_with_specified_percent_sum: type: integer ingredients_with_unspecified_percent_n: type: integer ingredients_with_unspecified_percent_sum: type: integer known_ingredients_n: type: integer origins: type: string description: 'Origins of ingredients ' origins_hierarchy: type: array items: type: object origins_lc: type: string origins_tags: type: array items: type: object traces: type: string description: 'List of substances that might cause allergies that are present in trace amounts in the product (this does not include the ingredients, as they are not only present in trace amounts). It is taxonomized with the allergens taxonomy. Refer to the [allergens taxonomy](https://static.openfoodfacts.org/data/taxonomies/allergens.json) ' traces_hierarchy: type: array items: oneOf: - type: object - type: string traces_lc: type: string traces_tags: type: array items: oneOf: - type: object - type: string unknown_ingredients_n: type: integer patternProperties: ingredients_text_(?\w\w): type: string description: 'Raw list of ingredients in language given by ''language_code''. See `ingredients_text` ' ingredients_text_with_allergens_(?\w\w): description: 'Like `ingredients_text_with_allergens` for a particular language ' type: string - type: object title: Product Nutrition Data properties: nutrition: type: object description: 'Fields related to the nutrition facts of a product Input nutrient sets can be updated directly with API v3. API v2 can still be used to update input sets for the default source (*packaging* on the public platform and *manufacturer* on the pro platform). ' properties: aggregated_set: type: object description: "A set that combines nutrient data from preferred sources, with normalized units, \nand for a normalized 100g or 100ml quantity.\n\nIt takes values from multiple sources (by priority: manufacturer, packaging, usda, estimate)\nand normalizes all values to the same unit: g for weights, kJ for energy and energy-kj, kcal for energy-kcal.\n\nThe aggregated_set is read-only, and cannot be modified directly. It is computed from the other nutrient sets available for the product.\n" allOf: - type: object properties: preparation: type: string enum: - as_sold - prepared description: 'Indicates whether the nutrition values refer to the product *as_sold* or *prepared*. The preparation state affects nutrient values. ' per: type: string enum: - 100g - 100ml - serving description: 'The nutrition data on the package can be per serving, per 100g or per 100ml. This is essential to understand if values in the `nutrients` object apply for a serving, for 100g or for 100ml.' - type: object properties: nutrients: type: object description: 'All known nutrients for the product. You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json). New nutrients are regularly added. Clients should not break if they encounter an unexpected nutrient to preserve compatibility. ' properties: energy: description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 energy-kcal: description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 energy-kj: description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 saturated-fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 trans-fat: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 cholesterol: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 salt: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 sodium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 carbohydrates: description: 'This is the available carbohydrates (excluding fiber), also known as net carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 carbohydrates-total: description: 'This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 fiber: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 sugars: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 added-sugars: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 proteins: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 vitamin-d: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 calcium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 iron: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 potassium: allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' example: packaging source_per: type: string description: 'Indicates if the original source is per serving or per 100g, 100ml ' enum: - 100g - 100ml - serving source_index: type: integer description: 'Index of the source nutrient set in the input_sets array of the nutrition field ' minimum: 0 additionalProperties: description: 'Quantity of other nutrients from the nutrients taxonomy. See [nutrients taxonomy file](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) for all nutrients in Open Food Facts. (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: source: type: string description: 'Indicates the original source like “packaging”, “manufacturer”, “estimate”, “usda” ' source_per: type: string description: Indicates if the original source is per serving or per 100g, 100ml input_sets: type: array description: "An array of nutrient sets of the product.\n\nEach nutrient set represents a version of the nutrition facts, defined by a combination of:\n- the source of the data (e.g. *packaging*, *manufacturer*, *estimate*).\n- the preparation state (e.g. *as_sold* or *prepared*),\n- the reference quantity (*per 100g*, *per 100ml* or *per serving*), and \n\nThis structure allows capturing multiple nutritional profiles for a single product.\n" items: type: object allOf: - type: object properties: nutrients: type: object description: 'All known nutrients for the product. You can get all possible nutrients from the [nutrients taxonomy](https://static.openfoodfacts.org/data/taxonomies/nutrients.json). New nutrients are regularly added. Clients should not break if they encounter an unexpected nutrient to preserve compatibility. ' properties: energy: type: object description: 'It is the same as `energy-kj` if we have it, or computed from `energy-kcal` otherwise (per 100g or per serving) in kj ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. energy-kcal: type: object description: 'energy in kcal, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. energy-kj: type: object description: 'energy in kj, if it is specified (per 100g or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. saturated-fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. trans-fat: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. cholesterol: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. salt: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. sodium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. carbohydrates-total: type: object description: 'This follows the US / Canada definition of carbohydrates which includes fiber, also known as gross carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. carbohydrates: type: object description: 'This is the available carbohydrates (excluding fiber), also known as net carbohydrates (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. fiber: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. sugars: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. added-sugars: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. proteins: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. vitamin-d: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. calcium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. iron: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. potassium: type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. additionalProperties: type: object description: 'Quantity of other nutrients from the nutrients taxonomy. See [nutrients taxonomy file](https://static.openfoodfacts.org/data/taxonomies/nutrients.json) for all nutrients in Open Food Facts. (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' allOf: - type: object properties: value_string: type: string description: 'A string representing the value of the quantity. ' examples: - '2.0' - '4.1' - type: object description: 'Quantity of a nutrient (per 100g, per 100ml or per serving) in a standard unit (g or ml) ' properties: value: type: number description: 'A normalized float value for the quantity, computed from `value_string` if it exists. ' examples: - 2 - 4.1 value_computed: type: number description: 'A normalized float value for the quantity, computed by the system (not entered by a user or manufacturer). This is used only for values that are computed from other nutrient values, like energy computed from fat, carbohydrates and proteins. And salt or sodium computed from each other. ' examples: - 150 - 250.5 unit: type: string description: "The unit of the value entered by the contributor (a user or the manufacturer), for the product.\nIn most cases, this unit is the unit displayed on the product for the nutrient, but it is not guaranteed, as some apps may force specific units when writing nutrient values. \n\nThe possible values depends on the nutrient.\n\n* `g` for grams\n* `mg` for milligrams\n* `μg` for micrograms\n* `cl` for centiliters\n* `ml` for mililiters\n* `dv` for recommended daily intakes (aka [Dietary Reference Intake](https://en.wikipedia.org/wiki/Dietary_Reference_Intake))\n* `% vol` for alcohol vol per 100 ml\n\n\U0001F913 code: see the [Units module][units-module],\nand [Food:default_unit_for_nid function][default-unit]\n\n[units-module]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Units.html\n[default-unit]: https://openfoodfacts.github.io/openfoodfacts-server/dev/ref-perl-pod/ProductOpener/Food.html#default_unit_for_nid_(_%24nid)\n" examples: - 公斤 - 公升 - kg - кг - l - л - 毫克 - mg - мг - mcg - µg - oz - fl oz - dl - дл - cl - кл - 斤 - g - '' - ' ' - kJ - 克 - 公克 - г - мл - ml - mmol/l - 毫升 - '% vol' - ph - '%' - '% dv' - '% vol (alcohol)' - iu - mol/l - mval/l - ppm - �rh - �fh - �e - �dh - gpg modifier: type: string enum: - < - <= - '~' - '>=' - '>' description: This property is optional. - type: object properties: preparation: type: string enum: - as_sold - prepared description: 'Indicates whether the nutrition values refer to the product *as_sold* or *prepared*. The preparation state affects nutrient values. ' per: type: string enum: - 100g - 100ml - serving description: 'The nutrition data on the package can be per serving, per 100g or per 100ml. This is essential to understand if values in the `nutrients` object apply for a serving, for 100g or for 100ml.' - type: object properties: per_quantity: type: number minimum: 0 description: "The nutrition data on the package can be per serving, per 100g or per 100ml.\nWhen the data is given per serving, \nthe actual quantity that defines one serving may vary between products \nand is stored in this field.\n\nThis is essential to understand to which quantity values in `nutrients` apply for.\n\nFor example, if the label states \"per 250g\", then this field should be *250*.\n" example: 250 per_unit: type: string description: "The nutrition data on the package can be per serving, per 100g or per 100ml.\nWhen the data is given per serving, \nthe actual unit that defines one serving may vary between products \nand is stored in this field.\n\nThis is essential to understand to which quantity values in `nutrients` apply for.\n\nFor example, if the label states \"per 250g\", then this field should be *g*.\n" example: g source: type: string examples: - packaging - manufacturer - usda - estimate description: 'The nutrition data of products can be obtained through several sources. ' source_description: type: string description: 'A description of the source used for this nutrition set. This provides more information on how and when the source was used. This property is optional. ' examples: - USDA non-branded foods 2025/04 - Import from org-nestle-france through Equadis - 'Estimate from ingredients”, “Estimate from category: Olive oils' last_updated_t: type: integer description: 'A timestamp indicating when this nutrition set was last updated. ' examples: - 1631270265 - 1512153487 unspecified_nutrients: type: array description: 'A list of nutrients that are typically present, but that are not specified for this particular product, especially for packaging source. This property is optional. ' items: type: string example: - fibers - title: ProductNutriscore type: object properties: nutriscore: $ref: '#/components/schemas/Nutriscores' nutriscore_2021_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_2023_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_data: $ref: '#/components/schemas/Nutriscore2021Data' nutriscore_grade: $ref: '#/components/schemas/NutriscoreGrade' examples: - d nutriscore_score: description: 'Nutri-Score for the product as an integer (see also `nutriscore_grade`). ' type: integer examples: - 13 nutriscore_score_opposite: type: integer examples: - -13 nutriscore_tags: $ref: '#/components/schemas/NutriscoreGradeTags' nutriscore_version: type: string - type: object description: 'This is data that is linked to products data quality ' properties: data_quality_bugs_tags: type: array items: type: string description: 'Each data quality bug describes a data quality bug on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_errors_tags: type: array items: type: string description: 'Each Data Quality Error describes a data quality error on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_info_tags: type: array items: type: string description: 'Each Data Quality Info describes a data quality info on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_tags: type: array items: type: string description: 'Each Data Quality tag describes a data quality issue on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_quality_warnings_tags: type: array items: type: string description: 'Each Data Quality warning tag describes a data quality warning on the product. Refer to the [data quality taxonomy](https://static.openfoodfacts.org/data/taxonomies/data_quality.json) ' data_sources: type: string description: 'Source of data imported from producers. ' data_sources_tags: type: array items: type: string last_check_dates_tags: type: array items: type: string last_checked_t: type: integer last_checker: type: string states: description: 'comma separated list of values indicating some states of the product, like things to be done, or to be completed. See [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string states_hierarchy: type: array items: type: string states_tags: type: array items: description: 'Each state describe something that is completed or is to be done or improved on the product. Refer to [states taxonomy](https://static.openfoodfacts.net/data/taxonomies/states.json) ' type: string misc_tags: description: "Information about different aspect of the product\n Refer to [misc taxonomy](https://static.openfoodfacts.org/data/taxonomies/misc.json)\n" type: array items: type: string - title: product_extended type: object properties: additives_original_tags: type: array items: type: string additives_prev_original_tags: type: array items: type: string added_countries_tags: type: array items: type: object allergens_from_ingredients: type: string allergens_from_user: type: string amino_acids_prev_tags: type: array items: type: object amino_acids_tags: type: array items: type: object carbon_footprint_percent_of_known_ingredients: type: integer categories_properties: type: object properties: agribalyse_food_code:en: type: string agribalyse_proxy_food_code:en: type: string ciqual_food_code:en: type: string categories_properties_tags: type: array items: type: string category_properties: type: object additionalProperties: description: those are properties taken from the category taxonomy type: string ciqual_food_name_tags: type: array items: type: string compared_to_category: type: string description: 'the category to use for comparison. **TODO** explain how it is chosen. ' forest_footprint_2026: type: object title: ForestFootprint2026 description: 'Forest footprint (2026 algorithm) of a product — the risk of deforestation associated with its ingredients. This is a computed field. See also `forest_footprint_2026.grade`, `forest_footprint_2026.summary`, `forest_footprint_2026.total_footprint_per_kg`, and `forest_footprint_2026.primary_ingredients`. ' properties: grade: type: string enum: - a - b - c - d - unknown - not_computed description: "Overall forest footprint grade of the product.\n\n- `a`: No deforestation risk (absence of risky ingredients or zero impact)\n- `b`: Low risk of deforestation\n- `c`: Medium risk of deforestation\n- `d`: High risk of deforestation\n- `unknown`: The product has ingredients that are not yet assessed\n (e.g. corn, rice, cassava, soya, meat, dairy) without any computed\n primary ingredients\n- `not_computed`: The product contains risky ingredients but the overall\n grade could not be computed\n" summary: type: string enum: - missing_ingredients - with_other_risky_ingredients - without_primary_ingredients_or_other_risky_ingredients - with_primary_ingredients description: "Summary of the forest footprint computation status:\n\n- `missing_ingredients`: The product has no ingredients list, so the\n forest footprint could not be computed\n- `with_other_risky_ingredients`: The product contains risky ingredients\n (not yet assessed) but no computed primary ingredients\n- `without_primary_ingredients_or_other_risky_ingredients`: The product\n has ingredients but none are risky or assessed; grade is A\n- `with_primary_ingredients`: The product has computed primary ingredients\n (cocoa, coffee, palm oil, chicken/eggs)\n" total_footprint_per_kg: type: - number - 'null' description: 'Total forest footprint per kilogram of food, in square meters per kg. This field is present (as a number) when the summary is `with_primary_ingredients` or `without_primary_ingredients_or_other_risky_ingredients`. It is `null` when the summary is `missing_ingredients` or `with_other_risky_ingredients`. It may be absent if the field was not populated. ' primary_ingredients: type: object description: 'Map of primary ingredients and their computed forest footprint details. Keys are primary ingredient tags (`en:cocoa`, `en:coffee`, `en:palm-oil`, `en:chicken-and-eggs`, `en:other-risky-ingredients`). Only primary ingredients present in the product are included. ' additionalProperties: oneOf: - $ref: '#/components/schemas/ForestFootprintPrimaryIngredient' - $ref: '#/components/schemas/ForestFootprintChickenAndEggs' - $ref: '#/components/schemas/ForestFootprintOtherRiskyIngredients' components: schemas: ForestFootprintPrimaryIngredient: type: object description: 'Forest footprint details for cocoa, coffee, or palm oil primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kilogram for this primary ingredient. grade: type: string enum: - a - b - c - d description: Grade for this primary ingredient (A is best, D is worst). ingredients: type: array items: type: object properties: equivalence_ingredient: type: number description: Ingredient equivalence factor. equivalence_ingredient_category: type: number description: Ingredient category equivalence factor. footprint_per_kg: type: number description: Footprint per kg for this ingredient. ingredient_category_id: type: string description: The ingredient category tag (e.g. en:cocoa, en:coffee, en:palm-oil). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). label_id: type: string description: Label that reduces deforestation risk (if applicable). origin_footprint: type: number description: Footprint per kg for the origin of this ingredient. origin_id: type: string description: Origin tag (e.g. en:brazil, en:unknown). percent: type: number description: Percentage of this ingredient in the product. primary_ingredient_id: type: string description: The primary ingredient this ingredient maps to. risk_factor: type: number description: Risk reduction factor applied by labels (1 = no reduction). transformation_factor: type: number description: Combined equivalence/ingredient and category equivalence factors. required: - equivalence_ingredient - equivalence_ingredient_category - footprint_per_kg - ingredient_category_id - ingredient_id - origin_footprint - origin_id - percent - primary_ingredient_id - risk_factor - transformation_factor required: - footprint_per_kg - grade - ingredients ForestFootprintChickenAndEggs: type: object description: 'Forest footprint details for chicken and eggs, computed using the legacy ForestFootprint algorithm (soy-based feed import risk). This has a different data structure than the other primary ingredients. ' properties: footprint_per_kg: type: number description: Total footprint per kg for chicken and eggs. grade: type: string enum: - a - b - c - d - e description: Grade for chicken and eggs (A is best, E is worst). Uses legacy thresholds. ingredients: type: - array - 'null' items: type: object properties: conditions_tags: type: array items: type: string description: Conditions tags (e.g. processing conditions). footprint_per_kg: type: number description: Footprint per kg for this ingredient entry. percent: type: number description: Percentage of this ingredient in the product. processing_factor: type: number description: Processing factor applied. tag_id: type: string description: The tag id (ingredient or category tag). tag_type: type: string description: The type of tag (e.g. "ingredients", "categories"). type: type: object properties: deforestation_risk: type: number description: Deforestation risk factor for this chicken/egg type. name: type: string description: Human-readable name of the chicken/egg type. soy_feed_factor: type: number description: Soy feed factor. soy_yield: type: number description: Soy yield factor. required: - deforestation_risk - name - soy_feed_factor - soy_yield required: - conditions_tags - footprint_per_kg - percent - processing_factor - tag_id - tag_type - type required: - footprint_per_kg - grade - ingredients ForestFootprintOtherRiskyIngredients: type: object description: 'Risky ingredients (corn, rice, cassava, soya, meat, dairy) that are not yet assessed for deforestation risk. The footprint and grade are unknown; only the ingredient list is provided. ' properties: footprint_per_kg: type: 'null' description: Always null, as risky ingredients are not yet assessed. grade: type: string enum: - unknown description: Always "unknown". ingredients: type: - array - 'null' items: type: object properties: ingredient_category_id: type: string description: The risky ingredient category tag (e.g. en:rice, en:cassava). ingredient_id: type: string description: The ingredient tag (canonical ID from the ingredients taxonomy). required: - ingredient_category_id - ingredient_id required: - footprint_per_kg - grade - ingredients conservation_conditions: type: string customer_service: type: string description: 'Contact info of customer service. ' expiration_date: type: string link: type: string description: 'link to the product on the website of the producer ' main_countries_tags: type: array items: type: object minerals_prev_tags: type: array items: type: object minerals_tags: type: array items: type: object owner_fields: type: object description: 'Those are fields provided by the producer (through producers platform), and the value he provided. ' properties: additionalProperties: description: 'you can retrieve all kind of properties, the same as on the parent object (the product). It''s not processed entries (like tags for example) but raw ones. ' oneOf: - type: integer - type: string - type: object nova_groups_markers: type: object description: 'Detail of ingredients or processing that makes the products having Nova 3 or 4 ' propertyNames: description: Markers of level 3, 4, ... type: integer enum: - 3 - 4 additionalProperties: type: array items: type: array items: description: This array has two elements for each marker. The first element is the tag type of the marker (e.g. "ingredients", "additives", "categories"), and the second is the tag id in the taxonomy (e.g. "en:e471") type: string nucleotides_tags: type: array items: type: object origin: type: string purchase_places: type: string description: 'Country, state, or city where the product can be purchased. ' example: Paris purchase_places_tags: type: array items: type: string stores: type: string description: 'Distributor name. ' example: Walmart stores_tags: type: array items: type: string traces_from_ingredients: type: string traces_from_user: type: string patternProperties: conservation_conditions_(?\w\w): type: string customer_service_(?\w\w): type: string origin_(?\w\w): type: string description: '`origin` in language indicated by `language_code` ' - type: object description: 'Metadata of a product (author, editors, creation date, etc.) ' required: - created_t - creator - last_modified_by - last_modified_t - last_updated_t - rev properties: created_t: type: integer description: 'Date when the product was added (UNIX timestamp format). See also `entry_dates_tags` ' example: 1457680652 creator: type: string description: 'The contributor who added the product first. ' editors_tags: description: 'List of editors who edited the product. ' type: array items: type: string informers_tags: type: array items: type: string interface_version_created: type: string interface_version_modified: type: string languages: type: object patternProperties: en:(?\w\w): type: integer description: '**TODO** explain ! ' languages_codes: type: object patternProperties: (?\w\w): type: integer description: 'Same as `languages` but by language code, instead of language tags ' languages_hierarchy: type: array items: type: string languages_tags: type: array items: type: string last_edit_dates_tags: type: array items: type: string last_editor: type: string last_modified_by: type: string description: 'The username of the user who last modified the product. ' example: sebleouf last_modified_t: type: integer description: 'Date when the product page was last modified. This date is updated only when primary data is modified (data entered by the user or updated by an interface) ' last_updated_t: type: integer description: 'Date when the product page was last modified. This date is updated when primary data or secondary data is modified (primary: data entered by a user or read from an interface, secondary: data computed by a utility such as update_all_products.pl) ' owner: description: 'Id of the producer in case he provides his own data about a product (producer platform). ' type: string owners_tags: description: 'Tagyfied version of owner ' type: string photographers_tags: type: array items: type: string rev: description: revision number of this product version (each edit adds a revision) type: integer sources: type: array items: type: object title: product_meta_source properties: fields: type: array items: type: string id: type: string images: type: array items: type: object import_t: type: integer manufacturer: type: - integer - string name: type: string source_licence: type: string source_licence_url: type: string url: type: - 'null' - string sources_fields: type: object title: product_meta_source_fields properties: org-gs1: type: object properties: gln: type: string gpcCategoryCode: type: string gpcCategoryName: type: string isAllergenRelevantDataProvided: type: string lastChangeDateTime: type: string partyName: type: string productionVariantDescription: type: string publicationDateTime: type: string teams: type: string teams_tags: type: array items: type: string update_key: type: string - type: object description: 'Knowledge panels for a product ' properties: knowledge_panels: type: object title: panels description: 'The panels object is a dictionary of individual panel objects. Each key of the dictionary is the id of the panel, and the value is the panel object. Apps typically display a number of root panels with known panel ids (e.g. health_card and environment_card). Panels can reference other panels and display them as sub-panels.' examples: - additionalProperties: string additionalProperties: title: panel type: object description: Each panel contains an optional title and an optional array of elements. properties: type: type: string description: Type of the panel. If set to "card", the panel and its sub-panels should be displayed in a card. If set to "inline", the panel should have its content always displayed. expanded: type: boolean description: If true, the panel is to be displayed already expanded. If false, only the title should be displayed, and the user should be able to click or tap it to open the panel and display the elements. expand_for: type: string description: If set to "large", the content of the panel should be expanded on large screens, but it should still be possible to unexpand it. evaluation: type: string description: An evaluation status specifically for this title element. This can be used to directly color the icon if 'icon_color_from_evaluation' is true and this field is present, or it might provide context for the title itself. e.g. bad is red. Please be careful in choosing colors, to avoid 50 shades of red. example: bad enum: - good - average - neutral - bad - unknown half_width_on_mobile: type: boolean description: If true, suggests that this panel could be rendered as half-width on mobile devices, allowing for side-by-side display with another half-width panel if applicable. example: true title_element: title: title_element x-stoplight: id: lox0wvl9bdgy2 type: object description: The title of a panel. properties: name: type: string description: A short name of this panel, not including any actual values. e.g. "Fat" title: type: string subtitle: type: string type: type: string enum: - grade - percentage - string description: Used to indicate how the value of this item is measured, such as "grade" for Nutri-Score and Green-Score or "percentage" for Salt grade: type: string description: The value for this panel where it corresponds to a A to E grade such as the Nutri-Score or the Green-Score. enum: - a+ - a - b - c - d - e - f - unknown value: type: number description: The numeric value of the panel, where the type is "percentage" value_string: type: string description: The string value of the panel, for cases where the value is not numeric icon_url: type: string icon_color_from_evaluation: type: string icon_size: type: string description: 'If set to "small", the icon should be displayed at a small size. ' elements: type: array description: An ordered list of elements to display in the content of the panel. items: title: element x-stoplight: id: e2ybdrtmx0tme type: object description: 'Each element object contains one specific element object such as a text element or an image element. ' properties: element_type: type: string enum: - text - image - action - panel - panel_group - table description: 'The type of the included element object. The element_type also indicates which field contains the included element object. e.g. if the element_type is "text", the included element object will be in the "text_element" field. Note that in the future, new type of element may be added, so your code should ignore unrecognized types, and unknown properties. TODO: add Map type ' text_element: title: text_element x-stoplight: id: vdwxlt73qnqfa type: object description: 'A text in simple HTML format to display. For some specific texts that correspond to a product field (e.g. a product name, the ingredients list of a product),the edit_field_* fields are used to indicate how to edit the field value.' properties: type: type: string description: 'the type of text, might influence the way you display it. ' enum: - summary - warning - notes html: type: string description: Text to display in HTML format. language: type: string description: Language of the text. The name of the language is returned in the language requested when making the API call. e.g. if the text is in Polish, and the requested language is French, the language field will contain "Polonais" (French for "Polish"). Only set for specific fields such as the list of ingredients of a product. lc: type: string description: 2 letter language code for the text. Only set for specific fields such as the list of ingredients of a product. edit_field_id: type: string description: id of the field used to edit this text in the product edit API. edit_field_type: type: string description: Type of the product field. edit_field_value: type: string description: Current value of the product field. This may differ from the html field which can contain extra formating. source_url: type: string description: Link to the source example: https://en.wikipedia.org/wiki/Sodium acetate source_text: type: string description: name of the source example: Wikipedia source_lc: type: string description: Source locale name example: en source_language: type: string description: Human readable source locale name example: English image_element: title: image_element x-stoplight: id: k4v4kwt489q3j type: object properties: url: type: string description: full URL of the image width: type: integer description: "Width of the image.\n\nThis is just a suggestion coming from the server, \nthe client may choose to use its own dimensions for the image.\n" height: type: integer description: 'Height of the image. This is just a suggestion coming from the server, the client may choose to use its own dimensions for the image. ' alt_text: type: string description: Alt Text of the image. action_element: title: action_element type: object properties: title: type: string actions: type: array description: The ids of the actions to show. items: type: string description: The id of the action to show. examples: - edit_product - add_categories description: The action element is used to display a title and a list of actions like editing a product or adding categories. panel_element: title: panel_element x-stoplight: id: ymx41elz4yrnj type: object description: Panels can include other panels as sub-panels using the panel_element. properties: panel_id: type: string description: The id of the panel to include. The id is the key of the panel in the panels object returned in the knowledge_panels field. panel_group_element: title: panel_group_element x-stoplight: id: b7emlfrgiuue2 type: object properties: title: type: string panel_ids: type: array description: The ids of the panels to include. The ids are the keys of the panels in the panels object returned in the knowledge_panels field. items: type: string image: type: object description: An image related to the panel group (e.g. the ingredients or nutrition facts image for the ingredients and nutrition panel groups). description: The panel group element is used to display an optional title followed by a number of sub-panels. table_element: title: table_element type: object description: Element to display a table. properties: id: type: string description: An id for the table. table_type: type: string description: Type of table (e.g. "percents" for tables with percentage columns) title: type: string description: 'Title of the table. ' columns: type: array items: type: object title: table_column properties: text: type: string description: Column header text type: type: string description: Column type (e.g. "text", "percent") text_for_small_screens: type: string description: Alternative text for small screens style: type: string description: CSS style for the column column_group_id: type: string shown_by_default: type: boolean rows: type: array description: Array of table rows items: type: object properties: id: type: string description: Row ID style: type: string description: CSS style for the row values: type: array description: Array of cell values items: type: object properties: text: type: string description: Cell text content icon_url: type: string description: URL of an icon to display in the cell percent: type: number description: Percentage value for progress bars (used with percent columns) evaluation: type: string description: Evaluation level (good, bad, neutral, etc.) for styling level: type: integer description: Indentation level style: type: string description: CSS style for the cell required: - element_type level: type: string description: 'a message level, as levels we use in log. It might help theming the panel visually. Some possible values: info, recommendation ' example: info size: type: string enum: - small description: "size is either empty (normal display) \nor small to indicate a panel that should have a smaller font size\n" example: small topics: type: array items: type: string example: health description: topics currently include health, environment, problem readOnly: true - type: object description: 'Specific data about a product to enable personal ranking ' properties: attribute_groups: type: array description: Each element is an attribute that can help compute a personal ranking for the product items: title: product_attribute_group type: object properties: id: type: string description: 'Unique id of the attribute. It will be use to match against preferences parameters. ' status: type: string enum: - known - unknown description: wether we have the information to really compute this criteria or not. title: type: string description: 'A descriptive sentence about the situation of the product concerning attribute ' example: 'Does not contain: Molluscs' match: type: number format: float minimum: 0 maximum: 100 description: 'a numeric value for the match, telling how much the products ranks well for this particular attribute. The higher the value, the better the match. ' grade: description: every attribute as a grade for a to e type: string enum: - unknown - a - b - c - d - e name: type: string description: The name of attribute, for eventual display icon_url: type: string description: an icon representing the attribute match (often using a color) description: type: string description: An eventual description of the value of the property upon which this attribute is based description_short: type: string description: An eventual short description of the value of the property upon which this attribute is based examples: Update of packagings: value: status: success_with_errors result: id: en:product-updated en_name: Product updated lc_name: Produit mis à jour errors: - message: id: en:sugars-higher-than-carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: en:nutrients-not-updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. product: packagings: - material: en:pp-polypropylene number: '2' recycling: en:discard shape: en:lid - material: en:non-corrugated-cardboard number: '1' recycling: en:recycle shape: en:box weight: 120 - material: en:paper-and-fibreboard-aluminium number: '2' recycling: en:recycle shape: en:seal - material: en:clear-glass number: '2' recycling: en:recycle shape: en:jar quantity: 200 ML quantity_value: 200 quantity_unit: ml weight: 80 security: - cookieAuth: [] userAgentAuth: [] servers: - url: https://world.openfoodfacts.org description: prod - description: dev url: https://world.openfoodfacts.net /api/v3/product_revert: parameters: [] post: summary: Revert Product to Previous Revision tags: - Products responses: '200': description: OK content: application/json: schema: allOf: - title: Response status type: object description: A response object to describe if a READ or WRITE request was successful or not, and if there were errors or warnings, and what the impact of those errors or warnings was. examples: - status: success_with_errors result: id: product_updated name: Product updated lc_name: Produit mis à jour errors: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: status: type: string enum: - success - success_with_warnings - success_with_errors - failure description: 'Overall status of the request: whether it failed or succeeded, with or without warnings or errors.' result: type: object description: 'Overall result of the request (e.g. a product has been created)' properties: id: type: string description: Identifier of a response result entry name: type: string description: Name of the response result entry in English. lc_name: type: string description: Name of the response result entry in the language specified in tags_lc, if supplied. warnings: type: array description: List of warnings. Warnings are used to alert about something that may be wrong, but is not necessarily wrong (e.g. a nutrient value that is unexpectedly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string errors: type: array description: List of errors. Errors are used to alert about something that is definitely wrong (e.g. a nutrient value that is impossibly high). items: title: Warning or error message x-stoplight: id: eakkz8p7qfoj0 type: object description: Describes a warning or error for a READ or WRITE request, which field triggered it, and what the impact was (e.g. the field was ignored). examples: - message: id: sugars_higher_than_carbohydrates name: Sugars higher than carbohydrates lc_name: Sucres plus élevés que les glucides description: Sugars (40g) are higher than carbohydrates (35g). lc_description: Les sucres (40g) sont plus élévés que les glucdes. field: id: nutriment.sugars value: '40' impact: id: nutrients_not_updated name: Nutrients not updated lc_name: Nutriments non mis à jour description: The nutrients were not updated. lc_description: Les nutriments n'ont pas été mis à jour. properties: message: type: object properties: id: type: string description: 'Identifier of a response message. ' name: type: string description: Name of the response message entry in English. lc_name: type: string description: Name of the response message entry in the language specified in tags_lc, if supplied. description: type: string description: Description of the problem specific to the request, in English. lc_description: type: string description: Description of the problem specific to the request, in the language specified in tags_lc, if supplied. field: type: object description: Field that triggered the warning or error. properties: id: type: string description: Name of the field that triggered the warning or error. value: type: string description: Value of the field that triggered the warning or error. impact: type: object properties: id: type: string name: type: string lc_name: type: string description: type: string lc_description: type: string operationId: post-api-v3-product_revert description: For moderators only, revert a product to a previous revision. requestBody: content: application/json: schema: allOf: - title: Fields requested and language for taxonomized tags fields type: object description: '' properties: fields: type: string description: 'Comma separated list of fields requested in the response. Special values: "updated": returns field that were updated by the query (e.g. sending "packagings" or "packagings_add" would return "packagings"), "none": returns no fields, "all": returns all fields except generated fields that need to be explicitly requested such as "knowledge_panels". Defaults to "updated" for WRITE requests, and "all" for READ requests.' tags_lc: type: string description: '2 letter language code to request names of tags in a specific language. For READ requets: if passed, all taxonomized tags of the response will include a lc_name property with the translation in the requested language, if available. Otherwise, the property value will contain the name in the original language, prefixed by the 2 language code and a colon. For WRITE requests: if passed, taxonomized tags fields with a lc_name property will be considered to be in this language.' examples: - fields: product_name,packagings tags_lc: fr - fields: updated tags_lc: fr - type: object properties: code: type: string description: Barcode of the product rev: type: integer description: Revision number to revert to description: 'The code and rev fields are mandatory. ' parameters: [] security: - cookieAuth: [] userAgentAuth: [] servers: - url: https://world.openfoodfacts.org description: prod - description: dev url: https://world.openfoodfacts.net /products/stats: get: tags: - Products summary: Product Stats description: 'Get the list of products with tags statistics The products list can be limited to some tags (k or k=v)' operationId: product_stats_products_stats_get security: - OAuth2PasswordBearer: [] parameters: - name: owner in: query required: false schema: default: '' title: Owner - name: k in: query required: false schema: default: '' title: K - name: v in: query required: false schema: default: '' title: V responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductStats' title: Response Product Stats Products Stats Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' servers: - url: https://api.folksonomy.openfoodfacts.org description: Production server - url: http://localhost:8000 description: Local development server /products: get: tags: - Products summary: Product List description: Get the list of products matching k or k=v operationId: product_list_products_get security: - OAuth2PasswordBearer: [] parameters: - name: owner in: query required: false schema: default: '' title: Owner - name: k in: query required: false schema: default: '' title: K - name: v in: query required: false schema: default: '' title: V responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductList' title: Response Product List Products Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' servers: - url: https://api.folksonomy.openfoodfacts.org description: Production server - url: http://localhost:8000 description: Local development server /api/v1/products: get: operationId: products_list parameters: - in: query name: brands__like schema: type: string - in: query name: brands_tags__contains schema: type: string - in: query name: categories_tags__contains schema: type: string - in: query name: code schema: type: string - in: query name: creator schema: type: string - in: query name: ecoscore_grade schema: type: string - in: query name: labels_tags__contains schema: type: string - in: query name: nova_group schema: type: integer - in: query name: nutriscore_grade schema: type: string - name: order_by required: false in: query description: Which field to use when ordering the results. schema: type: string - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - in: query name: price_count schema: type: integer - in: query name: price_count__gte schema: type: integer - in: query name: price_count__lte schema: type: integer - in: query name: product_name__like schema: type: string - name: size required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: source schema: type: - string - 'null' enum: - obf - 'off' - opf - opff description: '* `off` - off * `obf` - obf * `opff` - opff * `opf` - opf' - in: query name: source__isnull schema: type: boolean - in: query name: unique_scans_n__gte schema: type: integer tags: - Products security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedProductFullList' description: '' summary: Products list x-summary-source: derived /api/v1/products/{id}: get: operationId: products_retrieve parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this Product. required: true tags: - Products security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProductFull' description: '' summary: Products retrieve x-summary-source: derived /api/v1/products/code/{code}: get: operationId: products_code_retrieve parameters: - in: path name: code schema: type: string pattern: ^\d+$ required: true tags: - Products security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProductFull' description: '' summary: Products code retrieve x-summary-source: derived /api/v1/products/code/{code}/off-update: patch: operationId: products_code_off_update_partial_update parameters: - in: path name: code schema: type: string pattern: ^\d+$ required: true tags: - Products requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProductFull' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProductFull' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProductFull' security: - CustomAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProductFull' description: '' summary: Products code off update partial update x-summary-source: derived /api/v1/products/code/{code}/off-upload-image: patch: operationId: products_code_off_upload_image_partial_update parameters: - in: path name: code schema: type: string pattern: ^\d+$ required: true tags: - Products requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedProductFull' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProductFull' multipart/form-data: schema: $ref: '#/components/schemas/PatchedProductFull' security: - CustomAuthentication: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProductFull' description: '' summary: Products code off upload image partial update x-summary-source: derived components: schemas: Product-Knowledge-Panels: type: object description: 'Knowledge panels for a product ' properties: knowledge_panels: type: object title: panels description: 'The panels object is a dictionary of individual panel objects. Each key of the dictionary is the id of the panel, and the value is the panel object. Apps typically display a number of root panels with known panel ids (e.g. health_card and environment_card). Panels can reference other panels and display them as sub-panels.' examples: - additionalProperties: string additionalProperties: title: panel type: object description: Each panel contains an optional title and an optional array of elements. properties: type: type: string description: Type of the panel. If set to "card", the panel and its sub-panels should be displayed in a card. If set to "inline", the panel should have its content always displayed. expanded: type: boolean description: If true, the panel is to be displayed already expanded. If false, only the title should be displayed, and the user should be able to click or tap it to open the panel and display the elements. expand_for: type: string description: If set to "large", the content of the panel should be expanded on large screens, but it should still be possible to unexpand it. evaluation: type: string description: An evaluation status specifically for this title element. This can be used to directly color the icon if 'icon_color_from_evaluation' is true and this field is present, or it might provide context for the title itself. e.g. bad is red. Please be careful in choosing colors, to avoid 50 shades of red. example: bad enum: - good - average - neutral - bad - unknown half_width_on_mobile: type: boolean description: If true, suggests that this panel could be rendered as half-width on mobile devices, allowing for side-by-side display with another half-width panel if applicable. example: true title_element: title: title_element x-stoplight: id: lox0wvl9bdgy2 type: object description: The title of a panel. properties: name: type: string description: A short name of this panel, not including any actual values. e.g. "Fat" title: type: string subtitle: type: string type: type: string enum: - grade - percentage - string description: Used to indicate how the value of this item is measured, such as "grade" for Nutri-Score and Green-Score or "percentage" for Salt grade: type: string description: The value for this panel where it corresponds to a A to E grade such as the Nutri-Score or the Green-Score. enum: - a+ - a - b - c - d - e - f - unknown value: type: number description: The numeric value of the panel, where the type is "percentage" value_string: type: string description: The string value of the panel, for cases where the value is not numeric icon_url: type: string icon_color_from_evaluation: type: string icon_size: type: string description: 'If set to "small", the icon should be displayed at a small size. ' elements: type: array description: An ordered list of elements to display in the content of the panel. items: title: element x-stoplight: id: e2ybdrtmx0tme type: object description: 'Each element object contains one specific element object such as a text element or an image element. ' properties: element_type: type: string enum: - text - image - action - panel - panel_group - table description: 'The type of the included element object. The element_type also indicates which field contains the included element object. e.g. if the element_type is "text", the included element object will be in the "text_element" field. Note that in the future, new type of element may be added, so your code should ignore unrecognized types, and unknown properties. TODO: add Map type ' text_element: title: text_element x-stoplight: id: vdwxlt73qnqfa type: object description: 'A text in simple HTML format to display. For some specific texts that correspond to a product field (e.g. a product name, the ingredients list of a product),the edit_field_* fields are used to indicate how to edit the field value.' properties: type: type: string description: 'the type of text, might influence the way you display it. ' enum: - summary - warning - notes html: type: string description: Text to display in HTML format. language: type: string description: Language of the text. The name of the language is returned in the language requested when making the API call. e.g. if the text is in Polish, and the requested language is French, the language field will contain "Polonais" (French for "Polish"). Only set for specific fields such as the list of ingredients of a product. lc: type: string description: 2 letter language code for the text. Only set for specific fields such as the list of ingredients of a product. edit_field_id: type: string description: id of the field used to edit this text in the product edit API. edit_field_type: type: string description: Type of the product field. edit_field_value: type: string description: Current value of the product field. This may differ from the html field which can contain extra formating. source_url: type: string description: Link to the source example: https://en.wikipedia.org/wiki/Sodium acetate source_text: type: string description: name of the source example: Wikipedia source_lc: type: string description: Source locale name example: en source_language: type: string description: Human readable source locale name example: English image_element: title: image_element x-stoplight: id: k4v4kwt489q3j type: object properties: url: type: string description: full URL of the image width: type: integer description: "Width of the image.\n\nThis is just a suggestion coming from the server, \nthe client may choose to use its own dimensions for the image.\n" height: type: integer description: 'Height of the image. This is just a suggestion coming from the server, the client may choose to use its own dimensions for the image. ' alt_text: type: string description: Alt Text of the image. action_element: title: action_element type: object properties: title: type: string actions: type: array description: The ids of the actions to show. items: type: string description: The id of the action to show. examples: - edit_product - add_categories description: The action element is used to display a title and a list of actions like editing a product or adding categories. panel_element: title: panel_element x-stoplight: id: ymx41elz4yrnj type: object description: Panels can include other panels as sub-panels using the panel_element. properties: panel_id: type: string description: The id of the panel to include. The id is the key of the panel in the panels object returned in the knowledge_panels field. panel_group_element: title: panel_group_element x-stoplight: id: b7emlfrgiuue2 type: object properties: title: type: string panel_ids: type: array description: The ids of the panels to include. The ids are the keys of the panels in the panels object returned in the knowledge_panels field. items: type: string image: type: object description: An image related to the panel group (e.g. the ingredients or nutrition facts image for the ingredients and nutrition panel groups). description: The panel group element is used to display an optional title followed by a number of sub-panels. table_element: title: table_element type: object description: Element to display a table. properties: id: type: string description: An id for the table. table_type: type: string description: Type of table (e.g. "percents" for tables with percentage columns) title: type: string description: 'Title of the table. ' columns: type: array items: type: object title: table_column properties: text: type: string description: Column header text type: type: string description: Column type (e.g. "text", "percent") text_for_small_screens: type: string description: Alternative text for small screens style: type: string description: CSS style for the column column_group_id: type: string shown_by_default: type: boolean rows: type: array description: Array of table rows items: type: object properties: id: type: string description: Row ID style: type: string description: CSS style for the row values: type: array description: Array of cell values items: type: object properties: text: type: string description: Cell text content icon_url: type: string description: URL of an icon to display in the cell percent: type: number description: Percentage value for progress bars (used with percent columns) evaluation: type: string description: Evaluation level (good, bad, neutral, etc.) for styling level: type: integer description: Indentation level style: type: string description: CSS style for the cell required: - element_type level: type: string description: 'a message level, as levels we use in log. It might help theming the panel visually. Some possible values: info, recommendation ' example: info size: type: string enum: - small description: "size is either empty (normal display) \nor small to indicate a panel that should have a smaller font size\n" example: small topics: type: array items: type: string example: health description: topics currently include health, environment, problem readOnly: true ProductList: properties: product: type: string title: Product k: type: string title: K v: type: string title: V type: object required: - product - k - v title: ProductList ProductStats: properties: product: type: string title: Product keys: type: integer title: Keys editors: type: integer title: Editors last_edit: type: string format: date-time title: Last Edit type: object required: - product - keys - editors - last_edit title: ProductStats ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError PaginatedProductFullList: type: object required: - items - page - pages - size - total properties: items: type: array items: $ref: '#/components/schemas/ProductFull' page: type: integer description: Current page number example: 1 pages: type: integer description: Total number of pages example: 16 size: type: integer description: Number of items per page example: 100 total: type: integer description: Total number of items example: 1531 NullEnum: enum: - null PatchedProductFull: type: object properties: id: type: integer readOnly: true code: type: string source: oneOf: - $ref: '#/components/schemas/SourceEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' source_last_synced: type: - string - 'null' format: date-time product_name: type: - string - 'null' image_url: type: - string - 'null' product_quantity: type: - integer - 'null' maximum: 2147483647 minimum: -2147483648 product_quantity_unit: type: - string - 'null' quantity: type: - string - 'null' categories_tags: type: array items: type: string brands: type: - string - 'null' brands_tags: type: array items: type: string labels_tags: type: array items: type: string nutriscore_grade: type: - string - 'null' ecoscore_grade: type: - string - 'null' nova_group: type: - integer - 'null' maximum: 2147483647 minimum: 0 creator: type: - string - 'null' unique_scans_n: type: - integer - 'null' maximum: 2147483647 minimum: 0 price_count: type: integer maximum: 2147483647 minimum: 0 price_currency_count: type: integer maximum: 2147483647 minimum: 0 location_count: type: integer maximum: 2147483647 minimum: 0 location_type_osm_country_count: type: integer maximum: 2147483647 minimum: 0 user_count: type: integer maximum: 2147483647 minimum: 0 proof_count: type: integer maximum: 2147483647 minimum: 0 created: type: string format: date-time updated: type: string format: date-time readOnly: true SourceEnum: enum: - 'off' - obf - opff - opf type: string description: '* `off` - off * `obf` - obf * `opff` - opff * `opf` - opf' BlankEnum: enum: - '' ProductFull: type: object properties: id: type: integer readOnly: true code: type: string source: oneOf: - $ref: '#/components/schemas/SourceEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' source_last_synced: type: - string - 'null' format: date-time product_name: type: - string - 'null' image_url: type: - string - 'null' product_quantity: type: - integer - 'null' maximum: 2147483647 minimum: -2147483648 product_quantity_unit: type: - string - 'null' quantity: type: - string - 'null' categories_tags: type: array items: type: string brands: type: - string - 'null' brands_tags: type: array items: type: string labels_tags: type: array items: type: string nutriscore_grade: type: - string - 'null' ecoscore_grade: type: - string - 'null' nova_group: type: - integer - 'null' maximum: 2147483647 minimum: 0 creator: type: - string - 'null' unique_scans_n: type: - integer - 'null' maximum: 2147483647 minimum: 0 price_count: type: integer maximum: 2147483647 minimum: 0 price_currency_count: type: integer maximum: 2147483647 minimum: 0 location_count: type: integer maximum: 2147483647 minimum: 0 location_type_osm_country_count: type: integer maximum: 2147483647 minimum: 0 user_count: type: integer maximum: 2147483647 minimum: 0 proof_count: type: integer maximum: 2147483647 minimum: 0 created: type: string format: date-time updated: type: string format: date-time readOnly: true required: - code - id - updated securitySchemes: cookieAuth: type: apiKey in: cookie name: session description: 'Session cookie containing user ID, username, and session token. The value is structured as: user_id&username&user_session&session_token e.g. "user_id&exampleuser&user_session&abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLM". The session token is obtained after successful login via the `/cgi/session.pl` endpoint. ' userAgentAuth: description: Identification using the User-Agent header. This is recommended in all requests so that we can contact you if there are issues. If we cannot identify the source of problematic API queries, we may have to block them. User-Agent header in the format 'app_name/app_version (URL or contact info)' type: apiKey in: header name: User-Agent OAuth2PasswordBearer: type: oauth2 flows: password: scopes: {} tokenUrl: auth CustomAuthentication: type: http scheme: bearer externalDocs: description: '**IMPORTANT**: Please read the API introduction before using this API. ' url: https://openfoodfacts.github.io/openfoodfacts-server/api/ x-refined-from: - open-food-facts-api-v2-openapi.yml - open-food-facts-api-v3-openapi.yml - open-food-facts-folksonomy-openapi.json - open-food-facts-open-prices-openapi.yml