{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["contract","employer","employee","joint_committee","work","compensation","applicable_law","signature"],"properties":{"contract":{"type":"object","additionalProperties":false,"required":["drafting_date","drafting_place","start_date","end_date"],"properties":{"reference":{"type":"string"},"drafting_date":{"type":"string","format":"date"},"drafting_place":{"type":"string"},"start_date":{"type":"string","format":"date"},"end_date":{"type":"string","format":"date","description":"Seasonal contracts are always fixed-term (CDD saisonnier)."},"season":{"type":"string","enum":["spring","summer","autumn","winter","harvest","custom"],"description":"Season label for human readability."},"dimona_type":{"type":"string","enum":["EXTRA","STU","standard"],"description":"Dimona type: EXTRA for collective agricultural/horticultural seasonal declarations; STU for students; standard for individual declarations."},"plukkaart_applicable":{"type":"boolean","description":"Whether the plukkaart (carte de cueillette) flat-rate voucher system applies (agriculture and horticulture day workers)."}}},"employer":{"type":"object","additionalProperties":false,"required":["name","legal_form","registered_office","bce_number","vat_number","onss_number","represented_by"],"properties":{"name":{"type":"string"},"legal_form":{"type":"string"},"registered_office":{"type":"string"},"bce_number":{"type":"string","pattern":"^0[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$"},"vat_number":{"type":"string","pattern":"^BE0[0-9]{9}$"},"onss_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":["surname","given_name","national_register_number","address"],"properties":{"surname":{"type":"string"},"given_name":{"type":"string"},"national_register_number":{"type":"string","pattern":"^[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}-[0-9]{3}\\.[0-9]{2}$"},"address":{"type":"string"},"nationality":{"type":"string","description":"Nationality — relevant for EU/non-EU work permit verification."}}},"joint_committee":{"type":"object","additionalProperties":false,"required":["number","name"],"properties":{"number":{"type":"string","description":"Joint committee number (e.g. 144 agriculture, 145 horticulture, 302 HORECA)."},"name":{"type":"string"}}},"work":{"type":"object","additionalProperties":false,"required":["function_title","place_of_work"],"properties":{"function_title":{"type":"string"},"function_description":{"type":"string"},"place_of_work":{"type":"string"},"days_per_week":{"type":"integer","minimum":1,"maximum":7},"hours_per_day":{"type":"number","exclusiveMinimum":0}}},"compensation":{"type":"object","additionalProperties":false,"required":["wage_type","payment_frequency"],"properties":{"wage_type":{"type":"string","enum":["hourly","daily","piece_rate"],"description":"Wage calculation basis."},"gross_hourly_wage_eur":{"type":"number","minimum":0},"gross_daily_wage_eur":{"type":"number","minimum":0,"description":"Gross daily wage for day workers (plukkaart)."},"piece_rate_eur_per_unit":{"type":"number","minimum":0},"piece_rate_unit":{"type":"string"},"payment_frequency":{"type":"string","enum":["daily","weekly","biweekly","monthly"]}}},"accommodation":{"type":"object","additionalProperties":false,"required":["provided"],"properties":{"provided":{"type":"boolean","description":"Whether the employer provides accommodation."},"address":{"type":"string"},"monthly_value_eur":{"type":"number","minimum":0,"description":"Monthly rental value of accommodation (avantage en nature — included in remuneration basis for social contributions)."}}},"applicable_law":{"type":"object","additionalProperties":false,"required":["governing_law","competent_court"],"properties":{"governing_law":{"type":"string"},"competent_court":{"type":"string"}}},"signature":{"type":"object","additionalProperties":false,"required":["copies","mention_lu_et_approuve"],"properties":{"copies":{"type":"integer","minimum":2},"mention_lu_et_approuve":{"type":"boolean"}}}}}