{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","yearend_premium","signature"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["place","date","reference_year","language"],"properties":{"place":{"type":"string"},"date":{"type":"string","format":"date"},"reference_year":{"type":"integer","minimum":2000,"maximum":2100},"language":{"type":"string","enum":["fr","nl","de","en"]},"reference":{"type":"string"}}},"employer":{"type":"object","additionalProperties":false,"required":["name","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":"string"},"seat_region":{"type":"string","enum":["nl_region","fr_region","brussels","de_region"],"description":"Linguistic region of the operating seat of the employer (Flemish decree of 19 July 1973, decree of the French Community of 30 June 1982, coordinated laws of 18 July 1966, art. 52). Optional; when given, the language of the document is compared with it and a warning (information only) is raised when they do not fit."}}},"employee":{"type":"object","additionalProperties":false,"required":["given_name","surname","function_title","start_date"],"properties":{"given_name":{"type":"string"},"surname":{"type":"string"},"address":{"type":"string"},"function_title":{"type":"string"},"department":{"type":"string"},"start_date":{"type":"string","format":"date","description":"Date of entry into service (for prorata calculation)."},"employee_number":{"type":"string"},"statut":{"type":"string","enum":["bediende","arbeider","kaderlid"]}}},"yearend_premium":{"type":"object","additionalProperties":false,"required":["premium_type","gross_amount_eur","onss_employee_eur","net_amount_eur","payment_date"],"description":"Year-end premium or 13th month details.","properties":{"premium_type":{"type":"string","enum":["thirteenth_month","yearend_premium","cct90_bonus","discretionary_bonus"],"description":"Legal type of the year-end payment."},"gross_amount_eur":{"type":"number","minimum":0},"onss_employee_eur":{"type":"number","minimum":0,"description":"Employee ONSS/RSZ deduction, in EUR."},"withholding_tax_eur":{"type":"number","minimum":0,"description":"Withholding tax (précompte professionnel) deducted at source."},"net_amount_eur":{"type":"number","minimum":0},"payment_date":{"type":"string","format":"date"},"reference_salary_eur":{"type":"number","minimum":0,"description":"Monthly gross reference salary used for the calculation."},"prorata_months":{"type":"number","minimum":0,"maximum":12,"description":"Number of qualifying months (12 for full year)."},"seniority_coefficient":{"type":"number","minimum":0,"description":"Seniority multiplier used in the calculation, if any."},"legal_basis":{"type":"string","description":"Applicable CCT or sectoral basis, as the employer states it."},"notes":{"type":"string"}}},"annual_highlights":{"type":"object","additionalProperties":false,"description":"Optional personalised annual HR summary for the employee.","properties":{"gross_annual_eur":{"type":"number","minimum":0},"net_annual_eur":{"type":"number","minimum":0},"benefits_total_eur":{"type":"number","minimum":0},"training_hours":{"type":"integer","minimum":0},"leave_days_taken":{"type":"integer","minimum":0}}},"company_highlights":{"type":"array","items":{"type":"string"},"description":"Key company achievements or news from the reference year."},"next_year_dates":{"type":"array","description":"Important dates for the coming year.","items":{"type":"object","additionalProperties":false,"required":["date","description"],"properties":{"date":{"type":"string","format":"date"},"description":{"type":"string"}}}},"closing_message":{"type":"string","description":"Personalised closing message or wishes for the new year."},"signature":{"type":"object","additionalProperties":false,"required":["signatory_name","signatory_title","date"],"properties":{"signatory_name":{"type":"string"},"signatory_title":{"type":"string"},"second_signatory_name":{"type":"string"},"second_signatory_title":{"type":"string"},"date":{"type":"string","format":"date"}}}}}