{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","policy_metadata","employer","eligibility","modalities","equipment","allowances","disconnect_right","health_safety","data_protection","equality","reversibility","signatures"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["date","place"],"properties":{"date":{"type":"string","format":"date"},"place":{"type":"string"}}},"policy_metadata":{"type":"object","additionalProperties":false,"required":["version","effective_date","telework_type"],"properties":{"version":{"type":"string"},"effective_date":{"type":"string","format":"date"},"telework_type":{"type":"string","enum":["structural","occasional","both"]},"review_frequency":{"type":"string"}}},"employer":{"type":"object","additionalProperties":false,"required":["name","legal_form","bce","vat","onss","address","joint_committee"],"properties":{"name":{"type":"string"},"legal_form":{"type":"string"},"bce":{"type":"string"},"vat":{"type":"string"},"onss":{"type":"string"},"address":{"type":"string"},"joint_committee":{"type":"string"},"social_secretariat":{"type":"string"},"headcount":{"type":"integer"}}},"eligibility":{"type":"object","additionalProperties":false,"required":["conditions"],"properties":{"conditions":{"type":"array","items":{"type":"string"},"minItems":1},"excluded_roles":{"type":"array","items":{"type":"string"}},"min_seniority_months":{"type":"integer"}}},"modalities":{"type":"object","additionalProperties":false,"required":["max_days_per_week","approval_process"],"properties":{"max_days_per_week":{"type":"integer","minimum":1,"maximum":5},"fixed_days":{"type":"array","items":{"type":"string"}},"flexible_days":{"type":"boolean"},"approval_process":{"type":"string"},"notice_days":{"type":"integer"}}},"equipment":{"type":"object","additionalProperties":false,"required":["provided_by_employer"],"properties":{"provided_by_employer":{"type":"array","items":{"type":"string"},"minItems":1},"worker_provided":{"type":"array","items":{"type":"string"}}}},"allowances":{"type":"object","additionalProperties":false,"required":["home_office_eur_month","internet_eur_month"],"properties":{"home_office_eur_month":{"type":"number"},"internet_eur_month":{"type":"number"},"total_eur_month":{"type":"number"},"onss_basis":{"type":"string"}}},"disconnect_right":{"type":"object","additionalProperties":false,"required":["reachability_hours","prohibition_after_hours"],"properties":{"reachability_hours":{"type":"string"},"prohibition_after_hours":{"type":"string"},"framework_reference":{"type":"string"},"applies_to_headcount_min":{"type":"integer"}}},"health_safety":{"type":"object","additionalProperties":false,"required":["obligations"],"properties":{"obligations":{"type":"array","items":{"type":"string"},"minItems":1},"risk_analysis_required":{"type":"boolean"},"cppt_notified":{"type":"boolean"}}},"data_protection":{"type":"object","additionalProperties":false,"required":["rules"],"properties":{"rules":{"type":"array","items":{"type":"string"},"minItems":1},"gdpr_basis":{"type":"string"}}},"equality":{"type":"object","additionalProperties":false,"required":["statement"],"properties":{"statement":{"type":"string"}}},"reversibility":{"type":"object","additionalProperties":false,"required":["notice_period","procedure"],"properties":{"notice_period":{"type":"string"},"procedure":{"type":"string"}}},"signatures":{"type":"object","additionalProperties":false,"required":["hr_director","date"],"properties":{"hr_director":{"type":"string"},"ceo":{"type":"string"},"date":{"type":"string","format":"date"}}},"_appendices":{"description":"Optional payload-supplied appendices. Each item is appended after the template's default appendices (from appendices/<lang>.json) and rendered through the shared appendix macro. Same contract as the loader: title + body, optional signature.","type":"array","items":{"type":"object","additionalProperties":false,"required":["title","body"],"properties":{"title":{"type":"string","minLength":1},"body":{"type":"string","minLength":1},"signature":{"type":"string"}}}}}}