{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","vacation","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"}}},"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 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","description":"Commission paritaire (ex. CP 200, CP 218)."},"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","worker_category"],"properties":{"given_name":{"type":"string"},"surname":{"type":"string"},"national_register_number":{"type":"string","description":"NISS / Rijksregisternummer (format YY.MM.DD-NNN.CC)."},"worker_category":{"type":"string","enum":["employee","worker"],"description":"Employé (bediende) ou ouvrier (arbeider) — détermine le circuit de paiement du pécule."},"function_title":{"type":"string"}}},"vacation":{"type":"object","additionalProperties":false,"required":["reference_year","exercise_year","legal_days_entitled","legal_days_taken","legal_days_remaining","currency"],"properties":{"reference_year":{"type":"integer","description":"Année de référence (exercice d'acquisition des droits)."},"exercise_year":{"type":"integer","description":"Année d'exercice (de prise effective des congés)."},"legal_days_entitled":{"type":"number","minimum":0,"description":"Jours de congés légaux auxquels le travailleur a droit pour l'année d'exercice."},"legal_days_taken":{"type":"number","minimum":0,"description":"Jours de congés légaux déjà pris à la date de l'attestation."},"legal_days_remaining":{"type":"number","minimum":0,"description":"Jours de congés légaux restant à prendre."},"extra_legal_days_entitled":{"type":"number","minimum":0,"description":"Jours de congés extra-légaux (sectoriels ou conventionnels)."},"extra_legal_days_taken":{"type":"number","minimum":0,"description":"Jours de congés extra-légaux déjà pris."},"extra_legal_days_remaining":{"type":"number","minimum":0,"description":"Jours de congés extra-légaux restant à prendre."},"single_vacation_pay":{"type":"object","additionalProperties":false,"required":["gross_amount","paid"],"properties":{"gross_amount":{"type":"number","minimum":0,"description":"Montant brut du simple pécule de vacances (salaire normal pour les jours pris)."},"paid":{"type":"boolean","description":"Indique si le simple pécule a déjà été payé (vrai au départ)."}}},"double_vacation_pay":{"type":"object","additionalProperties":false,"required":["gross_amount","paid"],"properties":{"gross_amount":{"type":"number","minimum":0,"description":"Montant brut du double pécule de vacances (92\\% du salaire mensuel brut pour employés — AR 30.3.1967 art. 45 §1)."},"paid":{"type":"boolean","description":"Indique si le double pécule a déjà été payé."}}},"vacation_fund":{"type":"string","description":"Nom de la caisse de vacances (pour les ouvriers uniquement)."},"currency":{"type":"string","enum":["EUR"]}}},"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"}}}}}