{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","title":"Allergen sheet for non-prepacked foods","description":"The written declaration of the allergens of the non-prepacked foods an operator offers to the final consumer, as a product by allergen matrix, with the displayed mentions and, for oral information, the written internal procedure (royal decree of 17 July 2014).","additionalProperties":false,"required":["document","operator","responsible","communication","products","signatory"],"properties":{"document":{"type":"object","additionalProperties":false,"required":["date","version"],"properties":{"place":{"type":"string","description":"Place where the sheet is drawn up (optional)."},"date":{"type":"string","format":"date","description":"Date of the sheet."},"reference":{"type":"string","description":"Internal reference of the sheet (optional)."},"version":{"type":"string","minLength":1,"description":"Version of the sheet."}}},"operator":{"type":"object","additionalProperties":false,"required":["name","address"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the operator."},"address":{"type":"string","minLength":1,"description":"Address of the establishment."},"enterprise_number":{"type":"string","description":"Belgian enterprise number (BCE / KBO) of the operator (optional)."},"establishment_unit":{"type":"string","description":"Name or number of the establishment unit (optional)."}}},"responsible":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the person responsible for the sheet."},"title":{"type":"string","description":"Function of the person responsible (optional)."}}},"communication":{"type":"object","additionalProperties":false,"required":["mode"],"properties":{"mode":{"type":"string","enum":["written_at_point_of_sale","oral_with_procedure"],"description":"How the allergen information is given: in writing at the point of sale, or orally with a written internal procedure."},"written_support":{"type":"string","description":"The written support used: menu, board, screen, binder (optional)."},"display_locations":{"type":"array","minItems":1,"items":{"type":"string","minLength":1},"description":"Each place of sale where the information and the mentions are displayed (optional)."},"display_mention_where":{"type":"string","description":"The operator's own wording of the mention saying where the declaration is available (optional)."},"display_mention_change":{"type":"string","description":"The operator's own wording of the mention warning that the composition of the products may change (optional)."},"exception_art5_3":{"type":"string","enum":["none","declaration_visibly_displayed","needs_asked_in_advance"],"description":"The exception of art. 5, § 3 the operator relies on, if any (optional)."},"oral_procedure":{"type":"object","additionalProperties":false,"required":["procedure_reference","procedure_summary"],"properties":{"procedure_reference":{"type":"string","minLength":1,"description":"Reference of the written internal procedure (art. 4, 2) and 3))."},"procedure_summary":{"type":"string","minLength":1,"description":"Summary of the written internal procedure."},"staff_training_date":{"type":"string","format":"date","description":"Date on which the staff was trained (optional)."},"staff_training_description":{"type":"string","description":"Description of the staff training (optional)."},"no_extra_cost_stated":{"type":"boolean","description":"Whether the operator states that no extra cost is charged to the consumer asking for the information (optional)."}}}},"allOf":[{"if":{"properties":{"mode":{"const":"oral_with_procedure"}},"required":["mode"]},"then":{"required":["oral_procedure"]}}]},"products":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["name","allergens"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the non-prepacked product."},"category":{"type":"string","description":"Category of the product (optional)."},"ingredients":{"type":"string","description":"Ingredients of the product (optional)."},"recipe_reference":{"type":"string","description":"Reference of the recipe (optional)."},"allergens":{"type":"object","additionalProperties":false,"description":"The 14 substances of Annex II of Regulation (EU) No 1169/2011: a value per substance the operator states; a missing key is printed as not stated.","properties":{"gluten":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for gluten: present, absent or may contain (cross-contact)."},"crustaceans":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for crustaceans: present, absent or may contain (cross-contact)."},"eggs":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for eggs: present, absent or may contain (cross-contact)."},"fish":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for fish: present, absent or may contain (cross-contact)."},"peanuts":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for peanuts: present, absent or may contain (cross-contact)."},"soy":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for soy: present, absent or may contain (cross-contact)."},"milk":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for milk: present, absent or may contain (cross-contact)."},"nuts":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for nuts: present, absent or may contain (cross-contact)."},"celery":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for celery: present, absent or may contain (cross-contact)."},"mustard":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for mustard: present, absent or may contain (cross-contact)."},"sesame":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for sesame: present, absent or may contain (cross-contact)."},"sulphites":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for sulphites: present, absent or may contain (cross-contact)."},"lupin":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for lupin: present, absent or may contain (cross-contact)."},"molluscs":{"type":"string","enum":["present","absent","may_contain"],"description":"Operator's statement for molluscs: present, absent or may contain (cross-contact)."}}},"gluten_detail":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["wheat","spelt","khorasan","rye","barley","oats"]},"description":"Which cereals containing gluten the product contains (optional)."},"nuts_detail":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","enum":["almonds","hazelnuts","walnuts","cashews","pecans","brazil_nuts","pistachios","macadamia"]},"description":"Which nuts the product contains (optional)."},"allergen_detail_other":{"type":"string","description":"Another precision on an allergen of the product (optional)."},"notes":{"type":"string","description":"Free remarks on the product (optional)."}}},"description":"The non-prepacked products and their allergens."},"signatory":{"type":"object","additionalProperties":false,"required":["name","title"],"properties":{"name":{"type":"string","minLength":1,"description":"Name of the person who signs."},"title":{"type":"string","minLength":1,"description":"Function of the person who signs."}}}}}