{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Absence Rate Report — Taux d'absentéisme (BE)","description":"Belgian absence rate report for a period, from the figures the employer gives. Formula: rate_pct = (absent_days / theoretical_days) * 100.","type":"object","additionalProperties":false,"required":["letter","entity","period","overall"],"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"}}},"entity":{"type":"object","additionalProperties":false,"required":["name","bce_number"],"properties":{"name":{"type":"string"},"bce_number":{"type":"string","pattern":"^[0-9]{4}\\.[0-9]{3}\\.[0-9]{3}$"},"vat_number":{"type":"string","pattern":"^BE0[0-9]{9}$"},"legal_form":{"type":"string"},"address":{"type":"string"},"joint_committee":{"type":"string","description":"Commission paritaire / Paritair comité code, e.g. CP 200."},"hr_contact":{"type":"string"}}},"period":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"},"label":{"type":"string","description":"Human-readable period label, e.g. 'Q1 2026' or 'January 2026'."}}},"overall":{"type":"object","additionalProperties":false,"required":["theoretical_days","absent_days","rate_pct"],"description":"Aggregate absence statistics for the reporting period.","properties":{"headcount":{"type":"integer","minimum":0,"description":"Number of workers (head count, not full-time equivalents) for the period."},"theoretical_days":{"type":"number","minimum":0,"description":"Total theoretical working days (jours théoriques)."},"absent_days":{"type":"number","minimum":0,"description":"Total days of absence (tous motifs)."},"rate_pct":{"type":"number","minimum":0,"maximum":100,"description":"Overall absence rate in %."},"benchmark_pct":{"type":"number","minimum":0,"maximum":100,"description":"Sectoral benchmark absence rate in %."},"benchmark_source":{"type":"string","description":"Source of the benchmark, as the employer names it."}}},"by_type":{"type":"array","description":"Breakdown by absence type.","items":{"type":"object","additionalProperties":false,"required":["type_code","label","days","rate_pct"],"properties":{"type_code":{"type":"string","description":"Short code of the absence type, chosen by the employer."},"label":{"type":"string"},"days":{"type":"number","minimum":0},"rate_pct":{"type":"number","minimum":0,"maximum":100},"legal_basis":{"type":"string","description":"Legal basis of the absence type, as the employer states it."}}}},"by_department":{"type":"array","description":"Breakdown by department.","items":{"type":"object","additionalProperties":false,"required":["department","headcount","theoretical_days","absent_days","rate_pct"],"properties":{"department":{"type":"string"},"headcount":{"type":"integer","minimum":5,"description":"Number of workers in the department (at least 5 per row)."},"theoretical_days":{"type":"number","minimum":0},"absent_days":{"type":"number","minimum":0},"rate_pct":{"type":"number","minimum":0,"maximum":100}}}},"prevention_notes":{"type":"string","description":"Observations for the prevention counsellor. Max 2000 chars.","maxLength":2000}}}