{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","additionalProperties":false,"required":["letter","employer","employee","joint_committee","engagement","compensation","framework_agreement","applicable_law","signature"],"properties":{"letter":{"type":"object","additionalProperties":false,"required":["drafting_date","drafting_place"],"properties":{"reference":{"type":"string","description":"Internal employer reference for this flexi-job contract (e.g. FLEXI-2026-0042)."},"drafting_date":{"type":"string","format":"date","description":"Date on which the contract is signed."},"drafting_place":{"type":"string","description":"City where the contract is signed."}}},"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","description":"Forme juridique (SRL/BV, SA/NV, Comm.V/SCS, Personne physique, ...)."},"registered_office":{"type":"string"},"bce_number":{"type":"string","pattern":"^0[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$","description":"Numéro BCE/KBO (format 0xxx.xxx.xxx)."},"vat_number":{"type":"string","pattern":"^BE0[0-9]{9}$","description":"Numéro TVA/BTW (format BE0xxxxxxxxx)."},"onss_number":{"type":"string","description":"Numéro d'immatriculation ONSS/RSZ (format 1.xxx.xxx-xx)."},"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","eligibility_status"],"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}$","description":"Numéro de registre national/NISS (format YY.MM.DD-NNN.CC)."},"address":{"type":"string","description":"Home address of the flexi-worker."},"eligibility_status":{"type":"string","enum":["main_employment_4_5","pensioner_statutory","pensioner_contractual"],"description":"Eligibility basis: main_employment_4_5 = employed at least 4/5 time elsewhere; pensioner_statutory = statutory pensioner; pensioner_contractual = contractual pensioner."},"main_employer_name":{"type":"string","description":"Name of the worker's main employer (required if eligibility_status = main_employment_4_5)."},"dimona_eligibility_confirmed":{"type":"boolean","description":"Employer confirms eligibility has been verified via ONSS T-3/T-4 quarter check through the Dimona STU-X declaration."}}},"joint_committee":{"type":"object","additionalProperties":false,"required":["number","name"],"properties":{"number":{"type":"string","description":"Joint committee number (e.g. 302, 201, 304, 140, 144, 121). Must be an eligible flexi-job sector CP."},"name":{"type":"string","description":"Full name of the joint committee."},"sector_eligible_confirmed":{"type":"boolean","description":"Employer confirms the CP/PC is among the sectors eligible for the flexi-job regime (Loi 16.11.2015 + Loi-programme 22.12.2023)."}}},"engagement":{"type":"object","additionalProperties":false,"required":["function_title","function_description","start_date"],"properties":{"function_title":{"type":"string","description":"Job title / function of the flexi-worker."},"function_description":{"type":"string","description":"Brief description of tasks performed."},"start_date":{"type":"string","format":"date","description":"Start date of the engagement."},"end_date":{"type":"string","format":"date","description":"End date, if fixed-term."},"variable_schedule":{"type":"boolean","description":"Whether the schedule is variable (typical for flexi-jobs — exact hours confirmed via Dimona before each prestation)."},"dimona_type":{"type":"string","enum":["STU","STU-X"],"description":"Dimona declaration type for each individual prestation."}}},"compensation":{"type":"object","additionalProperties":false,"required":["flexi_hourly_wage_eur","flexi_holiday_pay_pct","solidarity_contribution_pct"],"properties":{"flexi_hourly_wage_eur":{"type":"number","minimum":11.81,"description":"Gross hourly flexi-wage (flexiloon) in EUR. Must be at least the indexed minimum (EUR 11.81/hour in 2026). Includes the 7.67% integrated flexi-holiday pay."},"flexi_holiday_pay_pct":{"type":"number","enum":[7.67],"description":"Integrated flexi-holiday pay percentage (flexivakantiegeld) — always 7.67%."},"solidarity_contribution_pct":{"type":"number","enum":[25.0],"description":"Employer solidarity contribution rate — 25%, replaces standard ONSS employer contributions."},"cp_minimum_wage_eur":{"type":"number","minimum":0,"description":"Applicable CP minimum hourly wage if higher than statutory minimum."},"payment_frequency":{"type":"string","enum":["per_prestation","weekly","monthly"],"description":"Payment frequency for flexi-wage."}}},"framework_agreement":{"type":"object","additionalProperties":false,"required":["reference","signing_date"],"properties":{"reference":{"type":"string","description":"Reference of the underlying framework agreement (accord-cadre / raamovereenkomst) — must be signed before the first flexi-job prestation."},"signing_date":{"type":"string","format":"date","description":"Date on which the framework agreement was signed."}}},"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"}}}}}