{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","plan_year","budget_source","benefit_selections","legal_notices","signatures"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["place","date","language"],"properties":{"place":{"type":"string"},"date":{"type":"string","format":"date"},"language":{"type":"string","enum":["fr","nl","de","en"]},"reference":{"type":"string"}}},"employer":{"type":"object","additionalProperties":false,"required":["name","address","bce_number","onss_number","joint_committee"],"properties":{"name":{"type":"string"},"address":{"type":"string"},"bce_number":{"type":"string"},"vat_number":{"type":"string"},"onss_number":{"type":"string"},"joint_committee":{"type":"string"},"social_secretariat":{"type":"string"},"represented_by":{"type":"object","additionalProperties":false,"required":["name","title"],"properties":{"name":{"type":"string"},"title":{"type":"string"}}}}},"employee":{"type":"object","additionalProperties":false,"required":["given_name","surname","employee_id","function_title"],"properties":{"given_name":{"type":"string"},"surname":{"type":"string"},"employee_id":{"type":"string"},"function_title":{"type":"string"},"department":{"type":"string"},"statut":{"type":"string","enum":["bediende","arbeider","kaderlid"]}}},"plan_year":{"type":"integer","minimum":2020,"maximum":2100,"description":"Année civile pour laquelle les choix sont confirmés."},"optin_deadline":{"type":"string","format":"date","description":"Date limite d'inscription / opt-in."},"irrevocable_until":{"type":"string","format":"date","description":"Date jusqu'à laquelle les choix sont irrévocables (généralement 31.12 de l'année du plan)."},"budget_source":{"type":"object","additionalProperties":false,"required":["source_type","total_budget_eur"],"properties":{"source_type":{"type":"string","enum":["gross_salary","thirteenth_month","cct90_bonus","extra_budget"],"description":"Type de source du budget cafétéria."},"source_label":{"type":"string","description":"Libellé libre de la source (ex. '13e mois 2026')."},"total_budget_eur":{"type":"number","minimum":0,"description":"Budget total disponible en EUR."},"neutrality_note":{"type":"string","description":"Note sur la garantie de neutralité budgétaire."}}},"benefit_selections":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["benefit_code","name","allocated_eur"],"properties":{"benefit_code":{"type":"string","enum":["meal_vouchers","eco_vouchers","group_insurance","hospitalisation_insurance","sports_culture_vouchers","connectivity_allowance","bicycle_allowance","extra_leave","other"]},"name":{"type":"string"},"allocated_eur":{"type":"number","minimum":0},"frequency":{"type":"string","description":"Fréquence: 'monthly', 'annual', 'per_day'."},"unit_value_eur":{"type":"number","minimum":0},"nsso_treatment":{"type":"string"},"tax_treatment":{"type":"string"},"legal_ref":{"type":"string"},"is_mutable":{"type":"boolean","description":"Vrai si l'avantage peut être modifié en cours d'année."},"notes":{"type":"string"}}}},"remaining_budget_eur":{"type":"number","minimum":0,"description":"Budget restant non alloué (doit être 0 si neutralité totale requise)."},"legal_notices":{"type":"object","additionalProperties":false,"required":["irrevocability_text"],"properties":{"irrevocability_text":{"type":"string","description":"Clause d'irrévocabilité pour l'année civile."},"neutrality_guarantee":{"type":"string","description":"Déclaration de neutralité budgétaire."},"consent_text":{"type":"string","description":"Texte de consentement éclairé (Cass. 14.10.1991)."}}},"signatures":{"type":"object","additionalProperties":false,"required":["hr_signatory_name","hr_signatory_title","signature_date"],"properties":{"hr_signatory_name":{"type":"string"},"hr_signatory_title":{"type":"string"},"signature_date":{"type":"string","format":"date"},"employee_signed_date":{"type":"string","format":"date"}}}}}