{ "name": "PayrollRecord", "type": "object", "properties": { "pay_period_start": { "type": "string", "format": "date", "description": "Start of pay period" }, "pay_period_end": { "type": "string", "format": "date", "description": "End of pay period" }, "vendor_id": { "type": "string", "description": "Vendor ID" }, "vendor_name": { "type": "string", "description": "Vendor name" }, "payroll_status": { "type": "string", "enum": [ "Draft", "Processing", "Approved", "Paid" ], "default": "Draft", "description": "Overall payroll batch status" }, "entries": { "type": "array", "description": "Individual employee payroll entries", "items": { "type": "object", "properties": { "staff_id": { "type": "string" }, "staff_name": { "type": "string" }, "email": { "type": "string" }, "position": { "type": "string" }, "regular_hours": { "type": "number" }, "overtime_hours": { "type": "number" }, "double_time_hours": { "type": "number" }, "regular_rate": { "type": "number" }, "overtime_rate": { "type": "number" }, "double_time_rate": { "type": "number" }, "regular_pay": { "type": "number" }, "overtime_pay": { "type": "number" }, "double_time_pay": { "type": "number" }, "gross_pay": { "type": "number" }, "timecard_status": { "type": "string", "enum": [ "employee_pending", "employee_confirmed", "employee_edited", "approved", "paid" ], "default": "employee_pending" }, "timecard_sent_at": { "type": "string", "format": "date-time" }, "employee_response_at": { "type": "string", "format": "date-time" }, "employee_edit_notes": { "type": "string" }, "approved_at": { "type": "string", "format": "date-time" }, "approved_by": { "type": "string" }, "paid_at": { "type": "string", "format": "date-time" }, "shifts": { "type": "array", "items": { "type": "object", "properties": { "event_name": { "type": "string" }, "date": { "type": "string", "format": "date" }, "clock_in": { "type": "string" }, "clock_out": { "type": "string" }, "hours": { "type": "number" }, "role": { "type": "string" } } } } } } }, "total_regular_pay": { "type": "number" }, "total_overtime_pay": { "type": "number" }, "total_gross_pay": { "type": "number" }, "notes": { "type": "string" } }, "required": [ "pay_period_start", "pay_period_end" ] }