{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","salary","signature"],"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"},"purpose":{"type":"string","description":"Finalité de l'attestation (ex. demande de crédit hypothécaire, location, dossier social)."}}},"employer":{"type":"object","additionalProperties":false,"required":["name","address","bce_number","vat_number","onss_number","joint_committee"],"properties":{"name":{"type":"string"},"legal_form":{"type":"string"},"address":{"type":"string"},"bce_number":{"type":"string","description":"Numéro d'entreprise BCE / KBO (format 0xxx.xxx.xxx)."},"vat_number":{"type":"string","description":"Numéro TVA / BTW (format BE0xxxxxxxxx)."},"onss_number":{"type":"string","description":"Numéro d'immatriculation ONSS / RSZ."},"joint_committee":{"type":"string"},"social_secretariat":{"type":"object","additionalProperties":false,"required":["name","approval_number"],"properties":{"name":{"type":"string"},"approval_number":{"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","national_register_number","function_title","start_date","contract_type","regime"],"properties":{"given_name":{"type":"string"},"surname":{"type":"string"},"national_register_number":{"type":"string","description":"NISS / Rijksregisternummer (format YY.MM.DD-NNN.CC)."},"function_title":{"type":"string"},"start_date":{"type":"string","format":"date","description":"Date d'entrée en service."},"contract_type":{"type":"string","enum":["cdi","cdd","student","interim","other"]},"regime":{"type":"string","enum":["full_time","part_time"],"description":"Régime de travail (temps plein / temps partiel)."},"fte_percentage":{"type":"number","minimum":0,"maximum":100,"description":"Fraction d'occupation en pourcentage (obligatoire si regime = part_time)."}}},"salary":{"type":"object","additionalProperties":false,"required":["reference_month","gross_monthly","onss_worker_rate_pct","onss_worker_amount","professional_withholding_tax","net_monthly","currency"],"properties":{"reference_month":{"type":"string","description":"Mois de référence (format YYYY-MM)."},"gross_monthly":{"type":"number","description":"Salaire mensuel brut (base de base)."},"gross_annual":{"type":"number","description":"Salaire annuel brut (incluant 13ème mois et primes contractuelles)."},"onss_worker_rate_pct":{"type":"number","description":"Taux ONSS travailleur en pourcentage (13,07 \\% en 2026)."},"onss_worker_amount":{"type":"number","description":"Montant ONSS travailleur mensuel (gross_monthly × onss_worker_rate_pct / 100)."},"professional_withholding_tax":{"type":"number","description":"Précompte professionnel mensuel (AM 27.12.2025, Annexe III AR/CIR 92)."},"net_monthly":{"type":"number","description":"Salaire net mensuel (gross - ONSS - précompte +/- autres)."},"currency":{"type":"string","enum":["EUR"]},"thirteenth_month":{"type":"object","additionalProperties":false,"required":["applies"],"properties":{"applies":{"type":"boolean"},"annual_amount":{"type":"number"}}},"contractual_bonus":{"type":"object","additionalProperties":false,"required":["applies"],"properties":{"applies":{"type":"boolean"},"description":{"type":"string"},"annual_target_amount":{"type":"number"}}},"meal_vouchers":{"type":"object","additionalProperties":false,"required":["face_value","employer_share","employee_share"],"properties":{"face_value":{"type":"number"},"employer_share":{"type":"number"},"employee_share":{"type":"number"}}},"eco_cheques_annual":{"type":"number","description":"Montant annuel des éco-chèques (CCT 98, max 250 EUR)."},"company_car_atn_monthly":{"type":"number","description":"ATN voiture de société mensuel (WIB 92 art. 36 §2)."},"hospitalization_insurance":{"type":"boolean","description":"Assurance hospitalisation collective fournie par l'employeur."},"group_insurance":{"type":"object","additionalProperties":false,"required":["applies"],"properties":{"applies":{"type":"boolean"},"employer_contribution_pct":{"type":"number","description":"Taux de contribution employeur à l'assurance groupe (pension complémentaire)."}}},"other_benefits":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label"],"properties":{"label":{"type":"string"},"monthly_value":{"type":"number"}}}}}},"signature":{"type":"object","additionalProperties":false,"required":["signatory_name","signatory_title","date"],"properties":{"signatory_name":{"type":"string"},"signatory_title":{"type":"string"},"date":{"type":"string","format":"date"}}}}}