{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","joint_committee","indexation","salary_change","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","onss_number"],"properties":{"name":{"type":"string"},"address":{"type":"string"},"bce_number":{"type":"string"},"onss_number":{"type":"string"},"social_secretariat":{"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","employee_id","function_title"],"properties":{"given_name":{"type":"string"},"surname":{"type":"string"},"employee_id":{"type":"string"},"function_title":{"type":"string"},"department":{"type":"string"},"statut":{"type":"string","enum":["bediende","arbeider","kaderlid"]}}},"joint_committee":{"type":"object","additionalProperties":false,"required":["number","name"],"properties":{"number":{"type":"string","description":"Numéro de la commission paritaire (ex. '200', '226')."},"name":{"type":"string"},"indexation_mechanism":{"type":"string","description":"Description du mécanisme d'indexation applicable à ce CP."}}},"indexation":{"type":"object","additionalProperties":false,"required":["effective_date","percentage"],"properties":{"effective_date":{"type":"string","format":"date","description":"Date d'entrée en vigueur du salaire indexé."},"percentage":{"type":"number","minimum":0,"description":"Pourcentage d'indexation appliqué (ex. 2.5 pour 2,5\\%)."},"coefficient":{"type":"number","minimum":1,"description":"Coefficient multiplicateur (ex. 1.025 pour 2,5\\%)."},"reference_index_name":{"type":"string","description":"Nom de l'index de référence (ex. 'Indice santé — moyenne 4 mois (nov-fév)')."},"previous_index_value":{"type":"number","minimum":0,"description":"Valeur de l'indice de référence précédent."},"new_index_value":{"type":"number","minimum":0,"description":"Valeur de l'indice de référence nouveau."},"statbel_publication_date":{"type":"string","format":"date","description":"Date de publication Statbel de l'indice utilisé."},"statbel_source":{"type":"string","description":"URL ou référence Statbel."}}},"salary_change":{"type":"object","additionalProperties":false,"required":["previous_gross_monthly_eur","new_gross_monthly_eur","currency"],"properties":{"previous_gross_monthly_eur":{"type":"number","minimum":0,"description":"Salaire mensuel brut avant indexation."},"new_gross_monthly_eur":{"type":"number","minimum":0,"description":"Salaire mensuel brut après indexation."},"increase_eur":{"type":"number","minimum":0,"description":"Montant de l'augmentation mensuelle brute en EUR."},"currency":{"type":"string","enum":["EUR"]},"sectoral_minimum_after_eur":{"type":"number","minimum":0,"description":"Barème minimal sectoriel après indexation (vérification conformité)."}}},"notes":{"type":"string","description":"Remarques complémentaires (ex. impact sur autres éléments de rémunération)."},"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"}}}}}