{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/api/company/{company_id}":{"get":{"tags":["Company"],"summary":"Get Company","description":"Get detailed company data (including basic info on all employees) by ID.","operationId":"get_company_api_company__company_id__get","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Company Api Company  Company Id  Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]},"delete":{"tags":["Company"],"summary":"Delete Company","description":"Delete a company by its ID. Only accessible to users with permission.","operationId":"delete_company_api_company__company_id__delete","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]},"patch":{"tags":["Company"],"summary":"Patch Company","description":"Partial **update** – supply only the fields you want to change.\nAn empty body is permitted (no-op).  \nTo clear a value entirely, pass it as `null` (provided the DB column is\nnullable).","operationId":"patch_company_api_company__company_id__patch","parameters":[{"description":"Company ID","required":true,"schema":{"type":"integer","title":"Company Id","description":"Company ID"},"example":1,"name":"company_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyPartialUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/pay-rates":{"get":{"tags":["Company"],"summary":"Get Company Pay Rates","description":"Get company pay rates grouped by award and classification (company pay-rate group). By default this returns all awards, including a no-award bucket where `award_id`/`award_name` are null. Use `award` and/or `classification` query filters to narrow results by id or exact name (case-insensitive). Set `include_employees=true` to include employee summaries for each classification.\n\nEach returned pay rate includes a stable `reference` value in the format `company:{id}`. That reference can be supplied as `hours[].rate_reference` in `/api/company/{company_id}/pays/create` so your integration can map external award-engine outputs to LP company rates without sending a fixed dollar rate.","operationId":"get_company_pay_rates_api_company__company_id__pay_rates_get","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Optional award selector. Match by award id or exact name (case-insensitive). Use `none` or `null` for no-award classifications.","required":false,"schema":{"type":"string","title":"Award","description":"Optional award selector. Match by award id or exact name (case-insensitive). Use `none` or `null` for no-award classifications."},"example":"Hospitality Award","name":"award","in":"query"},{"description":"Optional classification selector. Match by company pay-rate group id or exact group name (case-insensitive).","required":false,"schema":{"type":"string","title":"Classification","description":"Optional classification selector. Match by company pay-rate group id or exact group name (case-insensitive)."},"example":"Level 1","name":"classification","in":"query"},{"description":"Set to `true` to include employees nested under each classification with `id`, `format_name`, and `number`.","required":false,"schema":{"type":"boolean","title":"Include Employees","description":"Set to `true` to include employees nested under each classification with `id`, `format_name`, and `number`.","default":false},"example":false,"name":"include_employees","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyPayRatesResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/redirect/company/{company_id}":{"get":{"tags":["Company"],"summary":"Redirect an authenticated user straight to the Pays screen for the given company.","description":"Authenticated helper that mirrors selecting a company then navigating to the Pays screen.\n\nIt validates the user's access to the company, updates the customer's default company,\nand issues a 302 redirect to the front-end route that will open Pays for that company.","operationId":"redirect_to_company_pays_api_redirect_company__company_id__get","parameters":[{"description":"Target company id to open in the UI.","required":true,"schema":{"type":"integer","title":"Company Id","description":"Target company id to open in the UI."},"name":"company_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/create":{"put":{"tags":["Company"],"summary":"Create Company","description":"Create a **new** company record.\n\n* `id` is **ignored** if supplied (it is generated by Lightning Payroll).\n* `employees` may be omitted (you can add them later).","operationId":"create_company_api_company_create_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company":{"get":{"tags":["Company"],"summary":"Get All Companies","description":"Get detailed list of all accessible companies, including basic employee information.","operationId":"get_all_companies_api_company_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Get All Companies Api Company Get"}}}},"404":{"description":"Not found"}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/employees":{"get":{"tags":["Employee"],"summary":"Get Employees","description":"Get detailed info for all employees in a company.","operationId":"get_employees_api_company__company_id__employees_get","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Get Employees Api Company  Company Id  Employees Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/employees/create":{"put":{"tags":["Employee"],"summary":"Create one or more new employees for a company","description":"Accepts a list of EmployeeCreate models, attempts to create each one, and returns a list of EmployeeResult indicating success or per-item errors. Note that required fields have an asterisk (*) in the model definition.","operationId":"create_employees_api_company__company_id__employees_create_put","parameters":[{"description":"The unique Lightning Payroll–generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique Lightning Payroll–generated ID of the company."},"example":1,"name":"company_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EmployeeCreate"},"type":"array","title":"Employees"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EmployeeResult"},"type":"array","title":"Response Create Employees Api Company  Company Id  Employees Create Put"}}}},"404":{"description":"Company not found.","content":{"application/json":{"example":{"status_code":10404,"message":"Company not found"}}}},"400":{"description":"Bad request, e.g., empty employee list.","content":{"application/json":{"example":{"status_code":10400,"message":"Employee list cannot be empty."}}}},"422":{"description":"Validation error for one or more employees.","content":{"application/json":{"example":{"status_code":10422,"message":"[{'loc': ('body', 0, 'email'), 'msg': 'Invalid email format.', 'type': 'value_error'}]"}}}},"207":{"description":"Partial success – some creations had validation errors.","content":{"application/json":{"example":[{"employee":{"id":456,"first_name":"Bob","last_name":"Jones","email":"bob.jones@example.com"},"errors":{}},{"errors":{"tax_file_number":"Invalid TFN checksum."}}]}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/employees/update":{"patch":{"tags":["Employee"],"summary":"Update Employees","description":"Update one or more existing employees for a company.","operationId":"update_employees_api_company__company_id__employees_update_patch","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Specify which employee identifier is used in `employee_ids`:\n- `employee_id`: Use LP-internal database IDs (integers).\n- `employee_number`: Use your own external employee numbers (strings).\n\nDefault is `employee_id`. These identifiers must be unique for each employee across **all** companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier is used in `employee_ids`:\n- `employee_id`: Use LP-internal database IDs (integers).\n- `employee_number`: Use your own external employee numbers (strings).\n\nDefault is `employee_id`. These identifiers must be unique for each employee across **all** companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EmployeeUpdate"},"type":"array","title":"Employees"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EmployeeResult"},"type":"array","title":"Response Update Employees Api Company  Company Id  Employees Update Patch"}}}},"404":{"description":"Not found"},"422":{"description":"Validation error for one or more employees.","content":{"application/json":{"example":{"status_code":10422,"message":"[{'loc': ('body', 0, 'tax_file_number'), 'msg': 'Invalid tax file number (fails ATO checksum).', 'type': 'value_error'}, {'loc': ('body', 1, 'tax_file_number'), 'msg': 'Invalid tax file number (fails ATO checksum).', 'type': 'value_error'}]"}}}},"207":{"description":"Partial success – some employee updates had validation errors.","content":{"application/json":{"example":{"employee":{"tax_file_number":"111111111","first_name":"Harry","last_name":"Stone","date_of_birth":"1990-01-01","pay_method":"DIRECT BANK ENTRY","pay_period":"WEEKLY","standard_hours_per_day":7.6,"standard_days_per_week":5,"stp_employment_status":"F","active_pay_recipient":true,"start_date":"2024-07-01","employment_status":"Full time","tfnd_signed_date":"2024-07-01","has_claimed_tax_free_threshold":true,"super_rate":0.115,"is_super_enabled":true,"is_leave_enabled":true,"accrue_holiday_leave_per_hour":276923,"accrue_sick_leave_per_hour":138463,"accrue_lsl_per_hour":60023,"num_holiday_leave_days_per_year":63,"is_lsl_enabled":true,"lsl_x_years":10,"lsl_accrued_x_years":8,"id":32,"company_id":2,"readable_stp_employment_status":"Full Time","is_australian_resident":true,"income_stream":"SAW","stp_id":32,"tax_treatment_code":"NAXXXX","single_touch_residency_status":"Resident","is_terminated":false},"errors":{}}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}/pay-rates":{"get":{"tags":["Employee"],"summary":"Get Employee Pay Rates","description":"Get all pay-rate options available to a given employee. Returns three categories: system rates, employee-specific rates, and company rates attached to the employee. Each row includes a stable `reference` key for integration mapping.","operationId":"get_employee_pay_rates_api_employees__employee_id__pay_rates_get","parameters":[{"description":"The employee identifier. Interpreted as LP employee_id or employee_number based on identifier_type.","required":true,"schema":{"type":"string","title":"Employee Id","description":"The employee identifier. Interpreted as LP employee_id or employee_number based on identifier_type."},"example":1,"name":"employee_id","in":"path"},{"description":"Specify which employee identifier to use:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to use:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeePayRatesResponse"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}":{"get":{"tags":["Employee"],"summary":"Get Employee","description":"Get employee data by Lightning Payroll ID.","operationId":"get_employee_api_employees__employee_id__get","parameters":[{"description":"The unique LP-generated ID of the employee.","required":true,"schema":{"type":"integer","title":"Employee Id","description":"The unique LP-generated ID of the employee."},"example":1,"name":"employee_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Employee Api Employees  Employee Id  Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/payroll-number/{employee_number}":{"get":{"tags":["Employee"],"summary":"Get Employee By Payroll Number","description":"Get detailed employee data by their user-controlled payroll number, rather than their unique LP ID.","operationId":"get_employee_by_payroll_number_api_employees_payroll_number__employee_number__get","parameters":[{"description":"The user-controlled payroll number of the employee. Must be unique across all companies.","required":true,"schema":{"type":"string","title":"Employee Number","description":"The user-controlled payroll number of the employee. Must be unique across all companies."},"example":"12345","name":"employee_number","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Employee By Payroll Number Api Employees Payroll Number  Employee Number  Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/pay-run/{pay_run_id}":{"get":{"tags":["Pay Runs"],"summary":"Get Pay Run","description":"Get pay run data by ID.","operationId":"get_pay_run_api_pay_run__pay_run_id__get","parameters":[{"description":"The unique LP-generated ID of the pay run.","required":true,"schema":{"type":"integer","title":"Pay Run Id","description":"The unique LP-generated ID of the pay run."},"example":1,"name":"pay_run_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Pay Run Api Pay Run  Pay Run Id  Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/pay-run/{pay_run_id}/gl-postings":{"get":{"tags":["Pay Runs"],"summary":"Get Gl Postings For Pay Run","description":"Retrieve detailed General Ledger (GL) postings for a specific pay run.","operationId":"get_gl_postings_for_pay_run_api_pay_run__pay_run_id__gl_postings_get","parameters":[{"description":"The unique LP-generated ID of the pay run.","required":true,"schema":{"type":"integer","title":"Pay Run Id","description":"The unique LP-generated ID of the pay run."},"example":1,"name":"pay_run_id","in":"path"}],"responses":{"200":{"description":"A list of GL postings for the specified pay run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GLPostingsResponse"},"example":{"pay_run_id":1,"postings":[{"account_id":"00-00-0001","description":"Gross Wages","amount":1500.0,"date":"14/01/2025"},{"account_id":"00-00-0002","description":"Superannuation (incl Super levy and Salary sacrifice)","amount":172.5,"date":"14/01/2025"},{"account_id":"00-00-0004","description":"Bank/Net","amount":-1335.0,"date":"14/01/2025"},{"account_id":"00-00-0005","description":"Group Tax Clearing","amount":-165.0,"date":"14/01/2025"},{"account_id":"00-00-0006","description":"Superannuation Clearing (incl Super levy and Salary sacrifice)","amount":-172.5,"date":"14/01/2025"}]}}}},"404":{"description":"Not found"},"400":{"description":"Bad request due to invalid pay run ID or incomplete data.","content":{"application/json":{"example":{"detail":"No pay run found with the given pay_run_id"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/pay-runs":{"post":{"tags":["Pay Runs"],"summary":"Get Pay Runs","description":"Get pay runs ending between the given dates (or processed within the given dates.","operationId":"get_pay_runs_api_company__company_id__pay_runs_post","parameters":[{"description":"The ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The start date for the pay run search in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"Start Date","description":"The start date for the pay run search in `YYYY-MM-DD` format. Defaults to today if not provided."},"example":"2024-07-01","name":"start_date","in":"query"},{"description":"The end date for the pay run search in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"End Date","description":"The end date for the pay run search in `YYYY-MM-DD` format. Defaults to today if not provided."},"example":"2025-06-30","name":"end_date","in":"query"},{"description":"Set to `True` to search for pay runs processed within the given date range. The alternative is to search by pay run end date. Searching by pay run end date can be problematic because ATO records are reported based on the processed date, not the pay run end date.","required":false,"schema":{"type":"boolean","title":"Use Processed Date","description":"Set to `True` to search for pay runs processed within the given date range. The alternative is to search by pay run end date. Searching by pay run end date can be problematic because ATO records are reported based on the processed date, not the pay run end date.","default":false},"example":false,"name":"use_processed_date","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/pays":{"post":{"tags":["Pays"],"summary":"Get Pays","description":"Get summarised list of all completed pays within a given date range. Pay results can be grouped by pay run or employee, or neither (flat Pay list). Request body is a list of employee IDs to filter. If no employee identifiers are provided, all employees for the company_id are included. The identifier_type query parameter can be used to specify whether the employee_ids are LP IDs (employee_id) or user-controlled payroll numbers (employee_number). If using the employee_number, please be aware that they must be unique across ALL companies.","operationId":"get_pays_api_company__company_id__pays_post","parameters":[{"description":"The ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The start date for the pays in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"Start Date","description":"The start date for the pays in `YYYY-MM-DD` format. Defaults to today if not provided."},"example":"2024-07-01","name":"start_date","in":"query"},{"description":"The end date for the pays in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"End Date","description":"The end date for the pays in `YYYY-MM-DD` format. Defaults to today if not provided."},"example":"2025-06-30","name":"end_date","in":"query"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee.","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee.","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"Specify which employee identifier provided in `employee_ids`:\n- `employee_id`: Use LP-internal database IDs (integers).\n- `employee_number`: Use your own external employee numbers (strings).\n\nDefault is `employee_id`. These identifiers must be unique for each employee across **all** companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier provided in `employee_ids`:\n- `employee_id`: Use LP-internal database IDs (integers).\n- `employee_number`: Use your own external employee numbers (strings).\n\nDefault is `employee_id`. These identifiers must be unique for each employee across **all** companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array","title":"Employee Ids","description":"A list of employee identifiers to filter the pays. The type of identifiers is specified by the `identifier_type` parameter.","default":[]}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/pays/create":{"put":{"tags":["Pays"],"summary":"Create Pays For Date","description":"Create pays for a given date. The identifier_type query parameter can be used to specify whether the employee_ids are LP IDs (employee_id) or user-controlled payroll numbers (employee_number). If using the employee_number, please be aware that they must be unique across ALL companies.","operationId":"create_pays_for_date_api_company__company_id__pays_create_put","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee (using either employee_id or employee_number depending on identifier_type).","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee (using either employee_id or employee_number depending on identifier_type).","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"If True, and this request creates multiple pays for the same employee in the same pay run with different departments, redistribute the combined tax for those new pays in proportion to each pay's gross. Only affects pays created by this call.","required":false,"schema":{"type":"boolean","title":"Redistribute Tax By Gross","description":"If True, and this request creates multiple pays for the same employee in the same pay run with different departments, redistribute the combined tax for those new pays in proportion to each pay's gross. Only affects pays created by this call.","default":true},"example":true,"name":"redistribute_tax_by_gross","in":"query"},{"description":"Specify which employee identifier to use in 'workers_comp_pays' and when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to use in 'workers_comp_pays' and when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"},{"description":"The date when these pays were processed, in `YYYY-MM-DD` format. Defaults to today if not provided. The pay run chosen will be the one that matches this date.","required":false,"schema":{"type":"string","title":"Pay Date","description":"The date when these pays were processed, in `YYYY-MM-DD` format. Defaults to today if not provided. The pay run chosen will be the one that matches this date.","default":"2026-04-03"},"example":"2026-04-03","name":"pay_date","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PayCreate"},"type":"array","title":"Pays","description":"A list of new pay objects to create, which were paid or to be paid on the given pay_date. Provide a single `pay_department` string (unique name or code) per pay to assign a cost centre to all pay items."},"example":[{"employee_id":1234,"hours":[{"description":"Ordinary Time","rate":"30.00","units":"hours","is_overtime":false,"value":"37.5"},{"description":"Saturday Overtime","multiplier":"1.5","units":"hours","is_overtime":true,"value":"5.0"},{"description":"Travel Reimbursement","rate":"0.85","units":"kms","is_overtime":false,"value":"120"},{"description":"Piece Work - Sheep Shearing","rate":"3.50","units":"sheep","is_overtime":false,"value":"90"}],"leave":[{"description":"Annual Leave","leave_type":"HOLIDAY","multiplier":"1.0","hours":"7.6","leave_loading_amount":"3.80","date":"2023-08-15"},{"description":"Personal Leave","leave_type":"SICK","rate":"38.00","hours":"4.0","date":"2023-08-15"}],"pay_department":"Engineering","allowances":[{"description":"Tool Allowance","amount":"50.00","allowance_category":"TD"},{"description":"Car Allowance","amount":"200.00","is_taxable":true,"is_itemised":true,"is_included_in_super_calculations":false,"allowance_category":"AD"}],"deductions":[{"description":"Union Fees","amount":"25.00","classification":"Child Support Deduction"},{"description":"Health Insurance","amount":"100.00","classification":"Normal","is_included_in_super_calculations":true}],"bonuses":[{"description":"Performance Bonus","amount":"500.00","tax_method":"NORMAL_EARNINGS"},{"description":"Director's Fee","amount":"1000.00","tax_method":"SPREAD_OVER_SPECIFIC_RANGE","start_date":"2023-01-01","end_date":"2023-01-31","is_included_in_super_calculations":false,"is_directors_fees":true}],"pay_sacrifices":[{"description":"Laptop Salary Sacrifice","amount":"150.00"},{"amount":"300.00","description":"Car Salary Sacrifice","is_included_in_super_calculations":false,"is_super":true}],"back_payments":[{"description":"Back Pay Adjustment","amount":"200.00","stp_category":"DIRECTOR_S_FEES","tax_method":"NORMAL_EARNINGS","start_date":"2023-01-01","end_date":"2023-01-31"},{"description":"Award Increase Adjustment","amount":"120.00","stp_category":"OVERTIME","tax_method":"NORMAL_EARNINGS","start_date":"2023-02-01","end_date":"2023-02-28"}]}]}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmployeeNumberPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/EmployeeIDPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/PayRunPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/Pay"},"type":"array"}],"title":"Response Create Pays For Date Api Company  Company Id  Pays Create Put"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/pays/{pay_id}":{"get":{"tags":["Pays"],"summary":"Get Single Pay","description":"Get **one** pay record (identified by `pay_id`) that belongs to the specified company. Pass the updated pay data in the request body.","operationId":"get_single_pay_api_company__company_id__pays__pay_id__get","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The unique LP-generated pay ID you want to update.","required":true,"schema":{"type":"integer","title":"Pay Id","description":"The unique LP-generated pay ID you want to update."},"example":42,"name":"pay_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]},"put":{"tags":["Pays"],"summary":"Update Single Pay","description":"Update **one** pay record (identified by `pay_id`) that belongs to the specified company. Pass the updated pay data in the request body.","operationId":"update_single_pay_api_company__company_id__pays__pay_id__put","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The unique LP-generated pay ID you want to update.","required":true,"schema":{"type":"integer","title":"Pay Id","description":"The unique LP-generated pay ID you want to update."},"example":42,"name":"pay_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PayUpdate"}],"title":"Pay Update","description":"The updated pay object."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pay"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/create-workers-comp-pays":{"put":{"tags":["Pays"],"summary":"Create Workers Comp Pays For Date","description":"Create worker's compensation pays for a given date. This route is a custom route for a single client. For full pay creation use the /pays/create endpoint. The identifier_type query parameter can be used to specify whether the employee_ids are LP IDs (employee_id) or user-controlled payroll numbers (employee_number). If using the employee_number, please be aware that they must be unique across ALL companies.","operationId":"create_workers_comp_pays_for_date_api_company__company_id__create_workers_comp_pays_put","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee (using either employee_id or employee_number depending on identifier_type).","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee (using either employee_id or employee_number depending on identifier_type).","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"Specify which employee identifier to use in 'workers_comp_pays' and when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to use in 'workers_comp_pays' and when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"},{"description":"The date when these pays were processed, in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"Pay Date","description":"The date when these pays were processed, in `YYYY-MM-DD` format. Defaults to today if not provided.","default":"2026-04-03"},"example":"2024-07-01","name":"pay_date","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NewWorkersCompensationPay"},"type":"array","title":"Workers Comp Pays","description":"A list of workers' compensation pay objects to create, which were paid or to be paid on the given date."},"example":[{"employee_id":"1","workers_compensation_amount":100.0,"tax":10.0},{"employee_id":"2","workers_compensation_amount":200.0,"tax":20.0}]}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmployeeNumberPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/EmployeeIDPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/PayRunPays"},"type":"array"},{"items":{"$ref":"#/components/schemas/Pay"},"type":"array"}],"title":"Response Create Workers Comp Pays For Date Api Company  Company Id  Create Workers Comp Pays Put"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/update-workers-comp-pay/{pay_id}":{"patch":{"tags":["Pays"],"summary":"Update Workers Comp Pay","description":"Modify the value of a worker's compensation pay for a given date. This route is a custom route for a single client. For full pay creation use the /pays/create endpoint. The identifier_type query parameter can be used to specify whether the employee_ids are LP IDs (employee_id) or user-controlled payroll numbers (employee_number). If using the employee_number, please be aware that they must be unique across ALL companies.","operationId":"update_workers_comp_pay_api_company__company_id__update_workers_comp_pay__pay_id__patch","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The unique LP-generated ID of the pay object.","required":true,"schema":{"type":"integer","title":"Pay Id","description":"The unique LP-generated ID of the pay object."},"example":1,"name":"pay_id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/NewWorkersCompensationPay"}],"title":"Workers Comp Pay","description":"A single compensation pay object with values to override and existing pay."},"example":{"employee_id":"1","workers_compensation_amount":100.0,"tax":10.0}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pay"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/pays/{pay_id}":{"delete":{"tags":["Pays"],"summary":"Delete Pay","description":"Delete a pay by ID. This action is irreversible. If the pay has STP history it cannot be deleted.","operationId":"delete_pay_api_pays__pay_id__delete","parameters":[{"description":"The unique LP-generated ID of the pay.","required":true,"schema":{"type":"integer","title":"Pay Id","description":"The unique LP-generated ID of the pay."},"example":1,"name":"pay_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/company/{company_id}/unsubmitted-stp-pays":{"get":{"tags":["Single Touch"],"summary":"Get Unsubmitted Stp Pays","description":"Get all pays which either have not been STP-submitted or were unsuccessfully submitted to the ATO, within a given date range. Pay results can be grouped by pay run or employee, or neither (flat Pay list).","operationId":"get_unsubmitted_stp_pays_api_company__company_id__unsubmitted_stp_pays_get","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"The start date of the search range in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"Start Date","description":"The start date of the search range in `YYYY-MM-DD` format. Defaults to today if not provided.","default":"2026-04-03"},"example":"2024-07-01","name":"start_date","in":"query"},{"description":"The end date of the search range in `YYYY-MM-DD` format. Defaults to today if not provided.","required":false,"schema":{"type":"string","title":"End Date","description":"The end date of the search range in `YYYY-MM-DD` format. Defaults to today if not provided.","default":"2026-04-03"},"example":"2025-06-30","name":"end_date","in":"query"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee.","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee.","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/single-touch/{company_id}/submit-stp-pays":{"post":{"tags":["Single Touch"],"summary":"Submit Stp Pays","description":"Submit Single Touch for the given pay IDs. They must all share the same pay_run_id and only one pay_id per employee per submission is allowed.","operationId":"submit_stp_pays_api_single_touch__company_id__submit_stp_pays_post","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee.","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee.","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"Set to `True` if this STP submission is an update event and only includes pre-submitted pay IDs.","required":false,"schema":{"type":"boolean","title":"Is Update Event","description":"Set to `True` if this STP submission is an update event and only includes pre-submitted pay IDs.","default":false},"example":false,"name":"is_update_event","in":"query"},{"description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Pay IDs","description":"A list of pay IDs to submit to the ATO. They must all share the same pay_run_id and only one pay_id per employee per submission is allowed."},"example":[1,2,3]}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/single-touch/{company_id}/check-stp-responses":{"post":{"tags":["Single Touch"],"summary":"Check Stp Responses","description":"Force an ATO Single Touch response check for the given company and pay_ids and return pays.","operationId":"check_stp_responses_api_single_touch__company_id__check_stp_responses_post","parameters":[{"description":"The unique LP-generated ID of the company.","required":true,"schema":{"type":"integer","title":"Company Id","description":"The unique LP-generated ID of the company."},"example":1,"name":"company_id","in":"path"},{"description":"Set to `True` to group pay results by pay run.","required":false,"schema":{"type":"boolean","title":"Group By Pay Run","description":"Set to `True` to group pay results by pay run.","default":false},"example":false,"name":"group_by_pay_run","in":"query"},{"description":"Set to `True` to group pay results by employee.","required":false,"schema":{"type":"boolean","title":"Group By Employee","description":"Set to `True` to group pay results by employee.","default":false},"example":false,"name":"group_by_employee","in":"query"},{"description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","required":false,"schema":{"type":"string","pattern":"^(employee_id|employee_number)$","title":"Identifier Type","description":"Specify which employee identifier to return when grouping pays by employee:\n- 'employee_id': Use LP-internal database IDs (integers).\n- 'employee_number': Use your own external employee numbers (strings).\nDefault is 'employee_id'. These must be unique for each employee across all companies.","default":"employee_id"},"example":"employee_id","name":"identifier_type","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"items":{"type":"integer"},"type":"array","title":"Pay Ids","description":"A list of pay IDs to gather STP response information about."},"example":[1,2,3]}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}/bank-accounts":{"get":{"tags":["Employee"],"summary":"Get Employee Bank Accounts","description":"Get employee bank accounts by Lightning Payroll Employee ID.","operationId":"get_employee_bank_accounts_api_employees__employee_id__bank_accounts_get","parameters":[{"description":"The unique LP-generated ID of the employee.","required":true,"schema":{"type":"integer","title":"Employee Id","description":"The unique LP-generated ID of the employee."},"example":1,"name":"employee_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Get Employee Bank Accounts Api Employees  Employee Id  Bank Accounts Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}/bank-accounts/{bank_account_id}":{"delete":{"tags":["Employee"],"summary":"Delete Employee Bank Account","description":"Delete a specific bank account for an employee by account ID.","operationId":"delete_employee_bank_account_api_employees__employee_id__bank_accounts__bank_account_id__delete","parameters":[{"description":"The unique LP-generated ID of the employee.","required":true,"schema":{"type":"integer","title":"Employee Id","description":"The unique LP-generated ID of the employee."},"example":1,"name":"employee_id","in":"path"},{"description":"The unique ID of the bank account to delete.","required":true,"schema":{"type":"integer","title":"Bank Account Id","description":"The unique ID of the bank account to delete."},"example":123,"name":"bank_account_id","in":"path"}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}/super-funds":{"get":{"tags":["Employee"],"summary":"Get Employee Super Funds","description":"Get employee super fund information by Lightning Payroll Employee ID.","operationId":"get_employee_super_funds_api_employees__employee_id__super_funds_get","parameters":[{"description":"The unique LP-generated ID of the employee.","required":true,"schema":{"type":"integer","title":"Employee Id","description":"The unique LP-generated ID of the employee."},"example":1,"name":"employee_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","title":"Response Get Employee Super Funds Api Employees  Employee Id  Super Funds Get"}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/employees/{employee_id}/super-funds/{super_fund_id}":{"delete":{"tags":["Employee"],"summary":"Delete Employee Super Fund","description":"Delete an employee super fund by its ID and associated Lightning Payroll Employee ID.","operationId":"delete_employee_super_fund_api_employees__employee_id__super_funds__super_fund_id__delete","parameters":[{"description":"The unique LP-generated ID of the employee.","required":true,"schema":{"type":"integer","title":"Employee Id","description":"The unique LP-generated ID of the employee."},"example":1,"name":"employee_id","in":"path"},{"description":"The unique ID of the employee super fund to be deleted.","required":true,"schema":{"type":"integer","title":"Super Fund Id","description":"The unique ID of the employee super fund to be deleted."},"example":10,"name":"super_fund_id","in":"path"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/api/oauth/authorize":{"get":{"tags":["Authentication"],"summary":"Starts the OAuth 2.0 Authorization Code Flow (302 redirect to sign-in/consent screen)","description":"Redirects the user to the front-end login/consent page to initiate the OAuth 2.0 Authorization Code flow.\n\nThis endpoint:\n- Validates the `client_id` and `redirect_uri` (must be URL-encoded per RFC 3986).\n- Ensures the owning customer has API admin privileges.\n- Stores a unique internal `state`.\n- Issues an HTTP 302 redirect to the front-end with OAuth parameters.\n\n**Note:** When redirecting, ensure your application URL-encodes the `redirect_uri` parameter (e.g., `https%3A%2F%2Fyourapp.com%2Foauth%2Fcallback`).\n\nUpon successful interaction, the front-end will obtain a one-time-use `code` (valid for 10 minutes) and return it to your `redirect_uri` as `?code=...&state=...`.","operationId":"oauth_authorize_api_oauth_authorize_get","parameters":[{"name":"client_id","in":"query","required":true,"schema":{"title":"Client Id","description":"Unique client ID issued to the API consumer.","examples":{"client_id":{"summary":"Example Client ID","value":"abc123xyz"}},"type":"string"},"description":"Unique client ID issued to the API consumer."},{"name":"redirect_uri","in":"query","required":true,"schema":{"title":"Redirect Uri","description":"Callback URI where the authorization code is sent. Must be URL-encoded according to RFC 3986.","examples":{"redirect_uri":{"summary":"Example Redirect URI (URL-encoded)","value":"https%3A%2F%2Fyourapp.com%2Foauth%2Fcallback"}},"type":"string"},"description":"Callback URI where the authorization code is sent. Must be URL-encoded according to RFC 3986."},{"name":"state","in":"query","required":true,"schema":{"title":"State","description":"Opaque value to maintain state between the request and callback. Returned unchanged by the authorization server.","examples":{"state":{"summary":"Example State Value","value":"xyz456customstate"}},"type":"string"},"description":"Opaque value to maintain state between the request and callback. Returned unchanged by the authorization server."},{"name":"scope","in":"query","required":false,"schema":{"title":"Scope","description":"Space-delimited list of scopes requested by the client. Required: `openid`. Other scopes: `payroll.read`, `payroll.write`.","default":"openid","examples":{"openid_only":{"summary":"Default identity scope","value":"openid"},"openid_with_write":{"summary":"Include write access","value":"openid payroll.write"}},"type":"string"},"description":"Space-delimited list of scopes requested by the client. Required: `openid`. Other scopes: `payroll.read`, `payroll.write`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"302":{"description":"Redirect to front-end login/consent screen"},"400":{"description":"Invalid `client_id` or `redirect_uri`"},"403":{"description":"Forbidden: Customer lacks API admin privileges"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/oauth/token":{"post":{"tags":["Authentication"],"summary":"OAuth 2.0 token exchange","description":"Exchange an **authorization code** *or* **refresh token** for a fresh pair of tokens.\n\n## Typical workflow\n1. **End-user login** ➡️ you redirect to `/oauth/authorize`.\n2. You receive `?code=…` on your `redirect_uri`.\n3. POST the `code` here with `grant_type=authorization_code` to obtain:\n   * a short-lived **JWT access token** (`access_token`)\n   * a long-lived **opaque refresh token** (`refresh_token`)\n4. When the access token expires, call this endpoint again\n   (`grant_type=refresh_token`) with the stored `refresh_token`.\n\n## Scopes\nThe access token inherits the scope granted during the original\nauthorization request. Request narrower scopes – e.g. `payroll.read` – to\nfollow the principle of least privilege.\n\n## Security recommendations for partners\n* **Always** transmit `client_secret` over TLS (HTTPS).\n* Store **refresh tokens** server-side only; treat them like passwords.\n* Rotate refresh tokens **immediately** after use (this endpoint does it for you).\n* Use the `expires_in` field to schedule token renewal **before** expiry.\n* Validate the JWT’s signature and `aud`/`iss` claims.\n\n## Error handling\n* `400 Bad Request` – missing params, invalid `grant_type`, code expired, etc.\n* `401 Unauthorized` – bad `client_id`/`client_secret`.\n* `404 Not Found` – customer linked to the token no longer exists.\n\n---\n\n**Notes for Lightning Payroll internal maintainers**\n\n* Client secrets are stored **bcrypt-hashed** and compared constant-time.\n* Authorization codes & refresh tokens are **SHA-256** hashed in DB.\n* Refresh-token rotation is **single-use** (row marked `revoked=True`).\n* Access tokens are generated via `security.refresh_access_token`.","operationId":"oauth_token_api_oauth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_token_api_oauth_token_post"}}},"required":true},"responses":{"200":{"description":"Access token + new refresh token issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"404":{"description":"Referenced customer not found"},"400":{"description":"Malformed request, missing/invalid parameters"},"401":{"description":"Invalid `client_id` / `client_secret` combination"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health_check":{"get":{"tags":["Public","API Health"],"summary":"Health Check","operationId":"health_check_health_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/admin/customers/{customer_id}/conversations":{"get":{"tags":["Admin"],"summary":"List Conversations","operationId":"list_conversations_admin_customers__customer_id__conversations_get","parameters":[{"required":true,"schema":{"type":"integer","title":"Customer Id"},"name":"customer_id","in":"path"},{"required":false,"schema":{"type":"string","title":"Q"},"name":"q","in":"query"},{"required":false,"schema":{"type":"integer","title":"Company Id"},"name":"company_id","in":"query"},{"required":false,"schema":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"type":"integer","minimum":0.0,"title":"Offset","default":0},"name":"offset","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/admin/conversations/{conversation_id}/messages":{"get":{"tags":["Admin"],"summary":"List Messages","operationId":"list_messages_admin_conversations__conversation_id__messages_get","parameters":[{"required":true,"schema":{"type":"integer","title":"Conversation Id"},"name":"conversation_id","in":"path"},{"required":false,"schema":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","default":200},"name":"limit","in":"query"},{"required":false,"schema":{"type":"integer","minimum":0.0,"title":"Offset","default":0},"name":"offset","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/admin/search":{"get":{"tags":["Admin"],"summary":"Global Search","operationId":"global_search_admin_search_get","parameters":[{"required":true,"schema":{"type":"string","minLength":2,"title":"Q"},"name":"q","in":"query"},{"required":false,"schema":{"type":"integer","title":"Customer Id"},"name":"customer_id","in":"query"},{"required":false,"schema":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":50},"name":"limit","in":"query"},{"required":false,"schema":{"type":"integer","minimum":0.0,"title":"Offset","default":0},"name":"offset","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}},"/admin/customers":{"get":{"tags":["Admin"],"summary":"Chat Customers","operationId":"chat_customers_admin_customers_get","parameters":[{"required":false,"schema":{"type":"string","title":"Q"},"name":"q","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]},{"HTTPBearer":[]}]}}},"components":{"schemas":{"BackPayments":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the back payment. Required when creating a new back payment.","example":"Back Pay Adjustment"},"amount":{"type":"number","title":"Amount","description":"The dollar amount for the back payment. Required when creating a new back payment.","example":"200.00"},"stp_category":{"type":"string","title":"Stp Category","description":"The back payment category code (use underscores). Codes are required when creating a new back payment. Codes: BONUS_COMMISSION_NON_DIRECTOR_S_FEES, DIRECTOR_S_FEES, GROSS, ITEMISED_ALLOWANCES, LEAVE, OVERTIME, UNCLASSIFIED.","example":"GROSS"},"tax_method":{"type":"string","title":"Tax Method","description":"The tax method applied to the back payment.Required when creating a new back payment.Allowed codes with labels: NORMAL_EARNINGS = As normal earnings; SPREAD_OVER_SPECIFIC_RANGE = Use date range; SPREAD_OVER_FINANCIAL_YEAR = Over this financial year; METHOD_A_WHOLE_YEAR = Method A (Whole Year); METHOD_A_SPECIFIC_RANGE = Method A (Use Date Range); METHOD_B1 = Method B(i)(Use Date Range); METHOD_B2 = Method B(ii)(Whole Year).","example":"NORMAL_EARNINGS"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"The start date for the back payment period.","example":"2023-01-01"},"end_date":{"type":"string","format":"date","title":"End Date","description":"The end date for the back payment period.","example":"2023-01-31"}},"additionalProperties":false,"type":"object","required":["description","amount"],"title":"BackPayments"},"Body_oauth_token_api_oauth_token_post":{"properties":{"grant_type":{"type":"string","enum":["authorization_code","refresh_token"],"title":"Grant Type","description":"OAuth 2.0 grant type to use. `authorization_code` ▶ exchange an auth-code; `refresh_token` ▶ rotate an existing refresh token."},"code":{"type":"string","title":"Code","description":"Authorization **code** obtained from `/oauth/authorize`. Required when `grant_type=authorization_code`."},"refresh_token":{"type":"string","title":"Refresh Token","description":"Existing refresh token. Required when `grant_type=refresh_token`."},"client_id":{"type":"string","title":"Client Id","description":"Public identifier for your integration, supplied during app registration."},"client_secret":{"type":"string","title":"Client Secret","description":"Confidential secret linked to `client_id`. **Transmitted in the request body** – never log or expose this value."},"redirect_uri":{"type":"string","title":"Redirect Uri","description":"Must exactly match the `redirect_uri` used when the authorization code was issued. Required for `grant_type=authorization_code`. HTTPS required in production."}},"type":"object","required":["grant_type","client_id","client_secret"],"title":"Body_oauth_token_api_oauth_token_post"},"Company":{"properties":{"name":{"type":"string","title":"Name","example":"Tech Solutions Pty Ltd"},"address1":{"type":"string","title":"Address1","example":"456 Business Road"},"address2":{"type":"string","title":"Address2","example":"Suite 12"},"city":{"type":"string","title":"City","example":"Melbourne"},"state":{"type":"string","title":"State","example":"VIC"},"postcode":{"type":"string","title":"Postcode","example":"3000"},"phone":{"type":"string","title":"Phone","example":"03 1234 5678"},"email":{"type":"string","format":"email","title":"Email","example":"contact@techsolutions.com.au"},"abn":{"type":"string","title":"Abn","description":"Australian Business Number (11 digits)","example":"12 345 678 901"},"location_id":{"type":"integer","title":"Location Id","example":1},"contact_first_name":{"type":"string","title":"Contact First Name","example":"Alice"},"contact_middle_name":{"type":"string","title":"Contact Middle Name","example":"Marie"},"contact_last_name":{"type":"string","title":"Contact Last Name","example":"Smith"},"employees":{"items":{"$ref":"#/components/schemas/EmployeeBasic"},"type":"array","title":"Employees","description":"Optional list of employees; each item is `EmployeeBasic`."},"id":{"type":"integer","title":"Id","description":"Unique company identifier.","example":1}},"type":"object","required":["name","abn","location_id","contact_first_name","contact_middle_name","contact_last_name","id"],"title":"Company","example":{"name":"Techy town Solutions Pty Ltd","address1":"123 Business Road","address2":"Suite 234234","city":"Perth","state":"WA","postcode":"6000","phone":"03 1234 1111","email":"billy@techsolutions.com.au","abn":"10000000000","location_id":1,"contact_first_name":"billy","contact_last_name":"bob","employees":[{"id":31,"company_id":2,"first_name":"David","last_name":"Patel","date_of_birth":"2000-06-16","start_date":"2024-06-18","is_terminated":false,"country":"AU","tax_file_number":"111111111","has_claimed_tax_free_threshold":true,"is_australian_resident":true,"has_help_liability":false,"stp_employment_status":"F"}],"id":2}},"CompanyCreate":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"},"address1":{"type":"string","maxLength":100,"minLength":1,"title":"Address1"},"address2":{"type":"string","maxLength":100,"minLength":0,"title":"Address2"},"city":{"type":"string","maxLength":60,"minLength":1,"title":"City"},"state":{"type":"string","maxLength":3,"minLength":2,"title":"State"},"postcode":{"type":"string","pattern":"^\\d{4}$","title":"Postcode"},"phone":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone"},"email":{"type":"string","format":"email","title":"Email"},"abn":{"type":"string","title":"Abn"},"location_id":{"type":"integer","title":"Location Id"},"contact_first_name":{"type":"string","maxLength":60,"minLength":1,"title":"Contact First Name"},"contact_last_name":{"type":"string","maxLength":60,"minLength":1,"title":"Contact Last Name"}},"type":"object","required":["name","address1","city","state","postcode","phone","email","abn","location_id","contact_first_name","contact_last_name"],"title":"CompanyCreate","description":"Schema for creating a new company.\nAll fields are required except address2.","example":{"name":"Techy town Solutions Pty Ltd","address1":"123 Business Road","address2":"Level 3","city":"Perth","state":"WA","postcode":"6000","phone":"03 1234 1111","email":"billy@techsolutions.com.au","abn":"10000000000","location_id":1,"contact_first_name":"billy","contact_last_name":"bob"}},"CompanyPartialUpdate":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name","description":"The registered name of the company.","example":"Acme Widgets Pty Ltd"},"address1":{"type":"string","maxLength":100,"minLength":1,"title":"Address1","description":"The main street address of the company.","example":"123 Smith Street"},"address2":{"type":"string","maxLength":100,"minLength":1,"title":"Address2","description":"Optional second line of the address (e.g., Suite number).","example":"Suite 2B"},"city":{"type":"string","maxLength":60,"minLength":1,"title":"City","description":"The suburb or city of the company's address.","example":"Melbourne"},"state":{"type":"string","maxLength":3,"minLength":2,"title":"State","description":"Australian state or territory code (2-3 characters).","example":"VIC"},"postcode":{"type":"string","pattern":"^\\d{4}$","title":"Postcode","description":"4-digit Australian postal code.","example":"3000"},"phone":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone","description":"Optional company contact phone number.","example":"+61 3 9123 4567"},"email":{"type":"string","format":"email","title":"Email","description":"Contact email address for the company.","example":"info@acmewidgets.com.au"},"abn":{"type":"string","title":"Abn","description":"Australian Business Number (ABN) using TFN format (8-9 digits).","example":"10000000000"},"location_id":{"type":"integer","title":"Location Id","description":"Internal ID representing a specific office or business unit location.","example":1},"contact_first_name":{"type":"string","maxLength":60,"minLength":1,"title":"Contact First Name","description":"First name of the company's primary contact person.","example":"Alice"},"contact_middle_name":{"type":"string","maxLength":60,"minLength":0,"title":"Contact Middle Name","description":"Optional middle name of the company's primary contact person.","example":"Marie"},"contact_last_name":{"type":"string","maxLength":60,"minLength":1,"title":"Contact Last Name","description":"Last name of the company's primary contact person.","example":"Johnson"}},"additionalProperties":false,"type":"object","title":"CompanyPartialUpdate","description":"Schema for partially updating a company.\nAll fields are optional, designed for PATCH-style updates.","example":{"name":"Techy Bros Solutions Pty Ltd","email":"billybro@techsolutions.com.au"}},"CompanyPayRateAwardGroup":{"properties":{"award_id":{"type":"integer","title":"Award Id"},"award_name":{"type":"string","title":"Award Name"},"classifications":{"items":{"$ref":"#/components/schemas/CompanyPayRateClassificationGroup"},"type":"array","title":"Classifications"}},"type":"object","required":["classifications"],"title":"CompanyPayRateAwardGroup"},"CompanyPayRateClassificationGroup":{"properties":{"classification_id":{"type":"integer","title":"Classification Id"},"classification_name":{"type":"string","title":"Classification Name"},"pay_rates":{"items":{"$ref":"#/components/schemas/CompanyPayRateOption"},"type":"array","title":"Pay Rates"},"employees":{"items":{"$ref":"#/components/schemas/CompanyPayRateEmployeeSummary"},"type":"array","title":"Employees"}},"type":"object","required":["classification_id","pay_rates"],"title":"CompanyPayRateClassificationGroup"},"CompanyPayRateEmployeeSummary":{"properties":{"id":{"type":"integer","title":"Id"},"format_name":{"type":"string","title":"Format Name"},"number":{"type":"string","title":"Number"}},"type":"object","required":["id","format_name"],"title":"CompanyPayRateEmployeeSummary"},"CompanyPayRateOption":{"properties":{"reference":{"type":"string","title":"Reference"},"id":{"type":"integer","title":"Id"},"description":{"type":"string","title":"Description"},"rate_type":{"type":"string","title":"Rate Type"},"multiplier":{"type":"number","title":"Multiplier"},"rate":{"type":"number","title":"Rate"},"units":{"type":"string","title":"Units"},"is_hours":{"type":"boolean","title":"Is Hours"},"is_overtime":{"type":"boolean","title":"Is Overtime"}},"type":"object","required":["reference","id","description","rate_type","is_hours","is_overtime"],"title":"CompanyPayRateOption"},"CompanyPayRatesResponse":{"properties":{"company_id":{"type":"integer","title":"Company Id"},"awards":{"items":{"$ref":"#/components/schemas/CompanyPayRateAwardGroup"},"type":"array","title":"Awards"}},"type":"object","required":["company_id","awards"],"title":"CompanyPayRatesResponse"},"Employee":{"properties":{"tax_file_number":{"type":"string","title":"Tax File Number","example":"123456789"},"first_name":{"type":"string","maxLength":60,"minLength":0,"title":"First Name","example":"John"},"middle_name":{"type":"string","maxLength":60,"minLength":0,"title":"Middle Name","example":"Richard"},"last_name":{"type":"string","maxLength":60,"minLength":0,"title":"Last Name","example":"Smith"},"date_of_birth":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Date Of Birth","example":"1985-07-15"},"address1":{"type":"string","maxLength":100,"minLength":0,"title":"Address1","example":"123 Elm St"},"address2":{"type":"string","maxLength":100,"minLength":0,"title":"Address2","example":"123 Elm St"},"city":{"type":"string","maxLength":60,"minLength":0,"title":"City","example":"Sydney"},"state":{"type":"string","maxLength":3,"minLength":2,"title":"State","example":"NSW"},"country":{"type":"string","maxLength":2,"title":"Country","example":"AU"},"postcode":{"type":"string","pattern":"^\\d{4}$","title":"Postcode","example":"2000"},"email_address":{"type":"string","format":"email","title":"Email Address","description":"Email address of the employee.","example":"tonytiger@gmail.com"},"phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Home","description":"Home phone number of the employee.","example":"02 1234 5678"},"phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Mobile","description":"Mobile phone number of the employee.","example":"0412 345 678"},"phone_medical":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Medical","description":"Medical contact phone number of the employee.","example":"02 8765 4321"},"gender":{"type":"string","enum":["MALE","FEMALE","INDETERMINATE","UNKNOWN"],"title":"Gender","description":"Gender of the employee. Must be one of MALE, FEMALE, INDETERMINATE, or UNKNOWN.","example":"MALE"},"kin_name":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Name","description":"Name of the next of kin.","example":"Jane Smith"},"kin_relationship":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Relationship","description":"Relationship of the next of kin to the employee.","example":"Sister"},"kin_address1":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address1","description":"Address line 1 of the next of kin.","example":"456 Oak St"},"kin_address2":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address2","description":"Address line 2 of the next of kin.","example":"Apt 5B"},"kin_city":{"type":"string","maxLength":60,"minLength":0,"title":"Kin City","description":"City of the next of kin.","example":"Melbourne"},"kin_state":{"type":"string","maxLength":3,"minLength":2,"title":"Kin State","description":"State of the next of kin.","example":"VIC"},"kin_postcode":{"type":"string","pattern":"^\\d{4}$","title":"Kin Postcode","description":"Postcode of the next of kin.","example":"3000"},"kin_phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Home","description":"Home phone number of the next of kin.","example":"03 1234 5678"},"kin_phone_work":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Work","description":"Work phone number of the next of kin.","example":"03 8765 4321"},"kin_phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Mobile","description":"Mobile phone number of the next of kin.","example":"0412 345 678"},"kin_notes":{"type":"string","title":"Kin Notes","description":"Additional notes about the next of kin.","example":"Emergency contact"},"pay_method":{"type":"string","enum":["CASH","DIRECT BANK ENTRY","OTHER"],"title":"Pay Method","description":"The method of payment for the employee.","default":"DIRECT BANK ENTRY","example":"CASH"},"pay_period":{"type":"string","enum":["WEEKLY","FORTNIGHTLY","MONTHLY"],"title":"Pay Period","description":"The pay period frequency for the employee. Valid values: WEEKLY, FORTNIGHTLY, MONTHLY","default":"WEEKLY","example":"WEEKLY"},"pay_rate_per_hour":{"type":"number","title":"Pay Rate Per Hour","description":"Hourly pay rate for the employee. This is used to calculate the employee's gross pay based on hours worked.","example":"25.00"},"standard_hours_per_day":{"type":"number","title":"Standard Hours Per Day","example":"7.6"},"standard_days_per_week":{"type":"integer","title":"Standard Days Per Week","description":"Number of standard working days per week for the employee. This is used to calculate leave accruals and RDOs.","example":"5"},"stp_employment_status":{"type":"string","title":"Stp Employment Status","description":"Employment status for STP reporting. On reads, unexpected values are passed through unchanged.","example":"F"},"active_pay_recipient":{"type":"boolean","title":"Active Pay Recipient","description":"Whether the employee is an active pay recipient. If False, the employee will not have pending pays generated for them, but they will still count towards licence limits and be included in reports. This is useful for employees who are on leave or not currently receiving pay but are not terminated.","example":true},"start_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Start Date","example":"2025-06-04"},"employment_status":{"type":"string","pattern":"(?i)^(full[-\\s]?time|part[-\\s]?time|casual|labour[\\s-]?hire)$","title":"Employment Status","example":"Full time"},"tfnd_signed_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Tfnd Signed Date","description":"Date the employee signed the TFN declaration.","example":"2025-06-04"},"is_foreign_resident":{"type":"boolean","title":"Is Foreign Resident"},"is_closely_held":{"type":"boolean","title":"Is Closely Held","description":"Whether the employee is a closely held employee. Closely held employees are typically family members of the business owner or directors of the company.","example":false},"has_claimed_tax_free_threshold":{"type":"boolean","title":"Has Claimed Tax Free Threshold"},"has_stsl_liability":{"type":"boolean","title":"Has Stsl Liability"},"include_email_and_phone_in_stp":{"type":"boolean","title":"Include Email And Phone In Stp","description":"Whether to include the employee's email address and phone number in STP reports sent to the ATO. Defaults to False if not set.","example":false},"abn":{"type":"string","title":"Abn","description":"Australian Business Number (ABN) of the employee, if applicable. Required for non-standard employees who bill as contractors.","example":"12345678901"},"working_holiday_tax_scale_applies":{"type":"boolean","title":"Working Holiday Tax Scale Applies","description":"Whether the employee is subject to the Working Holiday Maker tax scale. If True, the employee's tax calculations will use the WHM tax scale instead of the standard tax scale.","example":false},"leave_loading_percentage":{"type":"number","title":"Leave Loading Percentage","description":"Leave loading percentage, e.g. 0.175 for 17.5%","example":"0.175"},"position":{"type":"string","maxLength":60,"minLength":0,"title":"Position","description":"Position or job title of the employee.","example":"Manager"},"employee_portal_active":{"type":"boolean","title":"Employee Portal Active","description":"Whether the employee has access to the online portal.","example":false},"allow_edit_timesheet":{"type":"boolean","title":"Allow Edit Timesheet","description":"Whether the employee is allowed to edit their own timesheets in the online portal.","example":false},"allow_edit_timeclock":{"type":"boolean","title":"Allow Edit Timeclock","description":"Whether the employee is allowed to use the timeclock in the online portal.","example":false},"allow_edit_account_details":{"type":"boolean","title":"Allow Edit Account Details","description":"Whether the employee is allowed to edit their own personal details in the online portal.","example":false},"allow_edit_tax_settings":{"type":"boolean","title":"Allow Edit Tax Settings","description":"Whether the employee is allowed to edit their tax settings in the online portal.","example":false},"allow_edit_bank_accounts":{"type":"boolean","title":"Allow Edit Bank Accounts","description":"Whether the employee is allowed to edit their own bank account details in the online portal.","example":false},"allow_edit_super_details":{"type":"boolean","title":"Allow Edit Super Details","description":"Whether the employee is allowed to edit their super details in the online portal.","example":false},"allow_edit_leave_requests":{"type":"boolean","title":"Allow Edit Leave Requests","description":"Whether the employee is allowed to make leave requests through the online portal.","example":false},"allow_edit_leave_requests_when_negative":{"type":"boolean","title":"Allow Edit Leave Requests When Negative","description":"Whether the employee is allowed to make leave requests even when they have, or will reach, a negative leave balance.","example":false},"allow_view_holiday_leave_balance":{"type":"boolean","title":"Allow View Holiday Leave Balance","description":"Whether the employee is allowed to view their holiday leave balance in the online portal.","example":false},"allow_view_sick_leave_balance":{"type":"boolean","title":"Allow View Sick Leave Balance","description":"Whether the employee is allowed to view their sick leave balance in the online portal.","example":false},"allow_view_long_service_leave_balance":{"type":"boolean","title":"Allow View Long Service Leave Balance","description":"Whether the employee is allowed to view their long service leave balance in the online portal.","example":false},"allow_view_payslips":{"type":"boolean","title":"Allow View Payslips","description":"Whether the employee is allowed to view their payslips in the online portal.","example":false},"department":{"type":"string","maxLength":60,"minLength":0,"title":"Department","example":"Human Resources"},"number":{"type":"string","maxLength":60,"minLength":0,"title":"Number","description":"User-controlled unique employee payroll number/code. This is not the same as the internal database ID.","example":"EMP001"},"honorific":{"type":"string","maxLength":18,"minLength":0,"title":"Honorific","description":"Honorific title for the employee (e.g., Mr, Ms, Dr).","example":"Mr"},"show_roster_summary_on_payslip":{"type":"boolean","title":"Show Roster Summary On Payslip","description":"Whether to show the roster summary on the payslip.","example":false},"show_position_on_payslip":{"type":"boolean","title":"Show Position On Payslip","description":"Whether to show the employee's position on the payslip.","example":false},"show_department_on_payslip":{"type":"boolean","title":"Show Department On Payslip","description":"Whether to show the employee's department on the payslip.","example":false},"payslip_show_holiday_leave_balance":{"type":"boolean","title":"Payslip Show Holiday Leave Balance","description":"Whether to show the employee's holiday leave balance on the payslip.","example":false},"payslip_show_sick_leave_balance":{"type":"boolean","title":"Payslip Show Sick Leave Balance","description":"Whether to show the employee's sick leave balance on the payslip.","example":false},"payslip_show_lsl_balance":{"type":"boolean","title":"Payslip Show Lsl Balance","description":"Whether to show the employee's long service leave balance on the payslip.","example":false},"payslip_show_negative_leave_balances":{"type":"boolean","title":"Payslip Show Negative Leave Balances","description":"Whether to show negative leave balances on the payslip.","example":false},"payslip_show_custom_balances":{"type":"boolean","title":"Payslip Show Custom Balances","description":"Whether to show custom leave balances on the payslip.","example":false},"payslip_leave_units":{"type":"string","enum":["HOURS","DAYS"],"title":"Payslip Leave Units","description":"The unit of measurement for leave balances shown on the payslip. Valid values: HOURS, DAYS","example":"HOURS"},"payslip_show_hours_and_rate":{"type":"boolean","title":"Payslip Show Hours And Rate","description":"Whether to show hours worked and pay rate on the payslip.","example":false},"payslip_show_allowance_units":{"type":"boolean","title":"Payslip Show Allowance Units","description":"Whether to show allowance units on the payslip.","example":false},"payslip_show_base_ordinary_rate":{"type":"boolean","title":"Payslip Show Base Ordinary Rate","description":"Whether to show the base ordinary rate on the payslip.","example":false},"payslip_show_super_ytd":{"type":"boolean","title":"Payslip Show Super Ytd","description":"Whether to show the year-to-date superannuation contributions on the payslip.","example":false},"payslip_note":{"type":"string","title":"Payslip Note","description":"An added note to be displayed on each upcoming payslip for this employee.","example":"Thank you for your hard work!"},"payslip_show_ytd":{"type":"boolean","title":"Payslip Show Ytd","description":"Whether to show year-to-date totals on the payslip.","example":false},"payslip_show_zero_dollar_leave":{"type":"boolean","title":"Payslip Show Zero Dollar Leave","description":"Whether to show zero dollar leave balances on the payslip.","example":false},"payslip_time_non_decimal":{"type":"boolean","title":"Payslip Time Non Decimal","description":"Whether to show time in non-decimal format (e.g., 1:30 instead of 1.5 hours) on the payslip.","example":false},"primary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Primary Bank Bsb","example":"987-654"},"primary_bank_account_number":{"type":"string","maxLength":12,"title":"Primary Bank Account Number","example":"87654321"},"primary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Primary Bank Account Name","example":"John Smith"},"secondary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Secondary Bank Bsb","example":"123-456"},"secondary_bank_account_number":{"type":"string","maxLength":12,"title":"Secondary Bank Account Number","example":"12345678"},"secondary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Secondary Bank Account Name","example":"John Smith"},"secondary_bank_reference":{"type":"string","maxLength":18,"minLength":0,"title":"Secondary Bank Reference","example":"Child Support"},"secondary_bank_amount_per_period":{"type":"number","title":"Secondary Bank Amount Per Period","description":"Amount to be paid to the secondary bank account per pay period. Remaining pay will be paid to the primary bank account.","example":"100.00"},"default_employee_fund_member_number":{"type":"string","maxLength":20,"title":"Default Employee Fund Member Number","example":"12345678"},"default_employee_fund_usi":{"type":"string","maxLength":20,"title":"Default Employee Fund Usi","example":"STA0100AU"},"super_rate":{"type":"number","title":"Super Rate","description":"Total superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.115 for 11.5%). This is the rate applied to the employee's ordinary time earnings for superannuation contributions. Any excess above the compulsory_super_rate is categorised as RESC (Reportable Employer Super Contributions).","example":"0.115"},"compulsory_super_rate":{"type":"number","title":"Compulsory Super Rate","description":"Compulsory superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.105 for 10.5%). This is the minimum rate required by law for superannuation contributions.","example":"0.105"},"is_super_enabled":{"type":"boolean","title":"Is Super Enabled","description":"Whether superannuation contributions are enabled for this employee. If False, no super calculations will be performed for this employee, regardless of the super_rate or compulsory_super_rate settings.","example":true},"is_super_age_threshold_enabled":{"type":"boolean","title":"Is Super Age Threshold Enabled","description":"Whether the superannuation age threshold is enabled for this employee. If True, the employee's age will be considered when calculating super contributions. If False, the employee's age will not affect super calculations.","example":true},"super_based_on":{"type":"string","enum":["OTE","GROSS"],"title":"Super Based On","description":"The basis for superannuation calculations for this employee. Valid values: OTE (Ordinary Time Earnings, recommended) or GROSS (Gross Pay). If OTE, super is calculated based on the employee's ordinary time earnings. If GROSS, super is calculated based on the employee's gross pay.","example":"OTE"},"is_leave_enabled":{"type":"boolean","title":"Is Leave Enabled","description":"Whether leave calculations are enabled for this employee. If False, no leave accruals will be calculated for this employee.","example":true},"include_leave_loading_in_super":{"type":"boolean","title":"Include Leave Loading In Super","description":"Whether to include leave loading in superannuation calculations for this employee. If True, leave loading will be included in the superannuation contributions. If False, leave loading will not be included in super calculations.","example":false},"accrue_leave_on_hours_worked":{"type":"boolean","title":"Accrue Leave On Hours Worked","description":"Whether to accrue leave based on hours worked (pro rata). If True, leave will be accrued based on the number of hours worked by the employee. If False, leave will be accrued by the pay period.","example":true},"accrue_leave_on_overtime_hours":{"type":"boolean","title":"Accrue Leave On Overtime Hours","description":"Whether to accrue leave based on overtime hours worked. If True, leave will be accrued based on the number of overtime hours worked by the employee. If False, overtime hours will not contribute to leave accruals.","example":false},"accrue_holiday_leave_per_hour":{"type":"number","title":"Accrue Holiday Leave Per Hour","description":"Holiday leave accrual rate per hour worked, expressed as a decimal (e.g., 0.076923 for 20 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":"0.076923"},"accrue_sick_leave_per_hour":{"type":"number","title":"Accrue Sick Leave Per Hour","description":"Sick leave accrual rate per hour worked, expressed as a decimal (e.g., 0.038462 for 10 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of sick leave hours accrued by the employee based on their hours worked.","example":"0.038462"},"accrue_lsl_per_hour":{"type":"number","title":"Accrue Lsl Per Hour","description":"Long Service Leave (LSL) accrual rate per hour worked, expressed as a decimal (e.g., 0.016673 for 8.6667 weeks per 10 years). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of LSL hours accrued by the employee based on their hours worked.","example":"0.016673"},"num_sick_leave_days_per_year":{"type":"integer","title":"Num Sick Leave Days Per Year","description":"Number of personal/sick days per year for the employee. This is used to calculate the number of personal leave hours accrued by the employee based on their hours worked.","example":10},"num_holiday_leave_days_per_year":{"type":"integer","title":"Num Holiday Leave Days Per Year","description":"Number of annual/holiday days per year for the employee. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":20},"is_lsl_enabled":{"type":"boolean","title":"Is Lsl Enabled","description":"Whether Long Service Leave (LSL) calculations are enabled for this employee. If False, no LSL accruals will be calculated for this employee.","example":true},"lsl_x_years":{"type":"integer","title":"Lsl X Years","description":"Number of years of service required to qualify for Long Service Leave (LSL). This is used to determine when the employee is eligible for LSL based on their length of service.","example":10},"lsl_accrued_x_years":{"type":"integer","title":"Lsl Accrued X Years","description":"Number of weeks LSL accrued for every lsl_x_years years of service. This is used to calculate the number of LSL hours accrued by the employee based on their length of service.","example":10},"hourly_amount_for_workers_comp_leave":{"type":"number","title":"Hourly Amount For Workers Comp Leave","example":"25.50"},"hourly_amount_for_paid_parental_leave":{"type":"number","title":"Hourly Amount For Paid Parental Leave","example":"30.75"},"rdo_hours":{"type":"number","title":"Rdo Hours","description":"Total hours of Rostered Days Off (RDOs) accrued by the employee as at their most recent pay.","example":"55.42"},"toil_hours":{"type":"number","title":"Toil Hours","description":"Total hours of Time Off In Lieu (TOIL) accrued by the employee as at their most recent pay.","example":"20.00"},"id":{"type":"integer","title":"Id"},"company_id":{"type":"integer","title":"Company Id"},"readable_stp_employment_status":{"type":"string","title":"Readable Stp Employment Status","description":"Human-readable employment status for Single Touch Payroll (STP) reporting. This is derived from the stp_employment_status field and is used for display purposes in reports and the online portal.","example":"Full time"},"is_australian_resident":{"type":"boolean","title":"Is Australian Resident","description":"Whether the employee is an Australian resident for tax purposes. This is used to determine the employee's tax treatment and reporting in Single Touch Payroll (STP). To control this value, use the is_foreign_resident field. If is_foreign_resident is True, this field will be set to False automatically.","example":true},"income_stream":{"type":"string","enum":["SAW","CHP","WHM","VOL"],"title":"Income Stream","description":"Income stream type for the employee. Valid values: SAW (Salary and Wages), CHP (Closely held), WHM (Working Holiday Maker), VOL (Voluntary).","example":"SAW"},"stp_id":{"type":"integer","title":"Stp Id","description":"Unique identifier for the employee in the Single Touch Payroll (STP) system. This is used to identify the employee in STP reports sent to the ATO.","example":1},"has_leave_loading":{"type":"boolean","title":"Has Leave Loading","description":"Whether the employee is set to receive annual leave loading.","example":true},"username":{"type":"string","maxLength":60,"minLength":0,"title":"Username","description":"Username for the employee, used for online portal login purposes.","example":"smithjohnjames"},"standard_hours_per_week":{"type":"number","title":"Standard Hours Per Week","description":"Standard hours worked by the employee per week. This is calculated as standard_hours_per_day * standard_days_per_week.","example":"38"},"rdo_days":{"type":"number","title":"Rdo Days","description":"Number of Rostered Days Off (RDOs) accrued by the employee as at their most recent pay. This is calculated based on the employee's rdo_hours / standard_hours_per_day.","example":"12"},"toil_days":{"type":"number","title":"Toil Days","description":"Number of Time Off In Lieu (TOIL) days accrued by the employee as at their most recent pay. This is calculated based on the employee's toil_hours / standard_hours_per_day.","example":"5"},"holiday_leave_hours":{"type":"number","title":"Holiday Leave Hours","description":"Total hours of Annual Leave accrued by the employee as at their most recent pay.","example":"120"},"sick_leave_hours":{"type":"number","title":"Sick Leave Hours","description":"Total hours of Personal Leave accrued by the employee as at their most recent pay.","example":"80"},"lsl_leave_hours":{"type":"number","title":"Lsl Leave Hours","description":"Total hours of Long Service Leave (LSL) accrued by the employee as at their most recent pay.","example":"30"},"pay_period_gross":{"type":"number","title":"Pay Period Gross","description":"Typical gross pay for the employee, based on their current pay settings.","example":"5000.00"},"annual_gross":{"type":"number","title":"Annual Gross","description":"Estimated annual gross pay for the employee, based on their current pay settings. This is calculated as pay_period_gross * (52 weeks / pay_period frequency).","example":"130000.00"},"current_ytd_gross":{"type":"number","title":"Current Ytd Gross","description":"Year-to-date gross pay for the employee, based on the YTD of their most recent completed pay.","example":"50000.00"},"last_pay_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Last Pay Date","description":"Pay run end date of the employee's most recent completed pay. This is used to determine the employee's last pay date and is important for leave calculations and reporting.","example":"2023-06-30"},"last_pay_processed_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Last Pay Processed Date","description":"Processed date of the employee's most recent completed pay. This is used to determine when the employee's last pay was processed and is important for leave calculations and reporting.","example":"2023-07-01"},"format_name":{"type":"string","title":"Format Name","description":"Formatted name of the employee, typically in 'Last, First Middle' format. This is used for display purposes in reports and the online portal.","example":"Smith, John James"},"format_name_shorter":{"type":"string","title":"Format Name Shorter","description":"Shortened formatted name of the employee, typically in 'Last, First Initials' format. This is used for display purposes in some reports and the online portal.","example":"Smith, John J."},"default_employee_fund_name":{"type":"string","title":"Default Employee Fund Name","description":"Name of the default superannuation fund for the employee. This is used for superannuation contributions and reporting.","example":"Super Fund Pty Ltd"},"lsl_eligible_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Lsl Eligible Date","description":"Date when the employee becomes eligible for Long Service Leave (LSL). This is calculated based on the employee's start date and lsl_x_years setting. If the employee has not yet reached the required years of service, this will be None.","example":"2025-06-04"},"default_lsl_over_ten_years":{"type":"number","title":"Default Lsl Over Ten Years","description":"Recommended number of weeks of Long Service Leave (LSL) accrued for every 10 years of service, based on the company's state/territory regulations. This is used to calculate the number of LSL hours accrued by the employee based on their length of service. ","example":"8.6667"},"tax_treatment_code":{"type":"string","title":"Tax Treatment Code","description":"Tax treatment code for the employee, used for Single Touch Payroll (STP) reporting. This is used to describe how the employee's earnings are taxed and reported to the ATO.","example":"RTSXXX"},"single_touch_residency_status":{"type":"string","title":"Single Touch Residency Status","description":"Residency status of the employee for Single Touch Payroll (STP) reporting. This is used to describe if the employee is a resident, non-resident or working holiday maker for tax purposes.","example":"RESIDENT"},"is_terminated":{"type":"boolean","title":"Is Terminated","default":false,"example":false},"termination_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Termination Date","example":"2023-06-30"},"cessation_type_code":{"anyOf":[{"enum":[null]},{"type":"string","enum":["","V","I","R","F","C"]}],"title":"Cessation Type Code","description":"Cessation type code for the employee's termination.","example":"V"}},"additionalProperties":false,"type":"object","required":["id"],"title":"Employee","description":"Full employee record returned by the API, used in get requests."},"EmployeeBasic":{"properties":{"id":{"type":"integer","title":"Id","description":"The unique identifier of the employee.","example":1234},"number":{"type":"string","title":"Number","description":"The external unique employee number.","example":"EMP001"},"company_id":{"type":"integer","title":"Company Id","description":"The unique identifier of the company the employee belongs to.","example":5678},"first_name":{"type":"string","title":"First Name","description":"The first name of the employee.","example":"John"},"last_name":{"type":"string","title":"Last Name","description":"The last name of the employee.","example":"Doe"},"date_of_birth":{"type":"string","format":"date","title":"Date Of Birth","description":"The date of birth of the employee.","example":"1990-01-01"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"The date the employee started working.","example":"2020-01-15"},"is_terminated":{"type":"boolean","title":"Is Terminated","description":"Indicates whether the employee has been terminated.","example":false},"termination_date":{"type":"string","format":"date","title":"Termination Date","description":"The date the employee was terminated, if applicable.","example":"2021-12-31"},"address1":{"type":"string","title":"Address1","description":"The first line of the employee's address.","example":"123 Main Street"},"address2":{"type":"string","title":"Address2","description":"The second line of the employee's address.","example":"Apt 4B"},"city":{"type":"string","title":"City","description":"The city where the employee resides.","example":"Sydney"},"state":{"type":"string","title":"State","description":"The state or province where the employee resides.","example":"NSW"},"postcode":{"type":"string","title":"Postcode","description":"The postal code of the employee's address.","example":"2000"},"country":{"type":"string","title":"Country","description":"The country where the employee resides.","example":"Australia"},"tax_file_number":{"type":"string","title":"Tax File Number","description":"The tax file number of the employee.","example":"123456789"},"has_claimed_tax_free_threshold":{"type":"boolean","title":"Has Claimed Tax Free Threshold","description":"Indicates whether the employee has claimed the tax-free threshold.","example":true},"is_australian_resident":{"type":"boolean","title":"Is Australian Resident","description":"Indicates whether the employee is an Australian resident for tax purposes.","example":true},"has_help_liability":{"type":"boolean","title":"Has Help Liability","description":"Indicates whether the employee has a HELP (Higher Education Loan Program), TSL or any other STSL(Study or Training Support Loans) liability.","example":false},"stp_employment_status":{"type":"string","title":"Stp Employment Status","description":"The Single Touch Payroll (STP) employment status of the employee.","example":"full_time"},"hourly_amount_for_workers_comp_leave":{"type":"number","title":"Hourly Amount For Workers Comp Leave","description":"The hourly amount for workers' compensation leave.","example":"25.50"}},"type":"object","title":"EmployeeBasic"},"EmployeeCreate":{"properties":{"tax_file_number":{"type":"string","title":"Tax File Number","description":"Tax File Number (TFN) of the employee. Must be a valid TFN and pass ATO checksum validation.","example":"123456789"},"first_name":{"type":"string","maxLength":60,"minLength":1,"title":"First Name"},"middle_name":{"type":"string","maxLength":60,"minLength":0,"title":"Middle Name","example":"Richard"},"last_name":{"type":"string","maxLength":60,"minLength":1,"title":"Last Name"},"date_of_birth":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","title":"Date Of Birth"},"address1":{"type":"string","maxLength":100,"minLength":1,"title":"Address1"},"address2":{"type":"string","maxLength":100,"minLength":0,"title":"Address2","example":"123 Elm St"},"city":{"type":"string","maxLength":60,"minLength":1,"title":"City"},"state":{"type":"string","maxLength":3,"minLength":2,"title":"State"},"country":{"type":"string","maxLength":2,"title":"Country"},"postcode":{"type":"string","pattern":"^\\d{4}$","title":"Postcode"},"email_address":{"type":"string","format":"email","title":"Email Address","description":"Email address of the employee.","example":"tonytiger@gmail.com"},"phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Home","description":"Home phone number of the employee.","example":"02 1234 5678"},"phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Mobile","description":"Mobile phone number of the employee.","example":"0412 345 678"},"phone_medical":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Medical","description":"Medical contact phone number of the employee.","example":"02 8765 4321"},"gender":{"type":"string","enum":["MALE","FEMALE","INDETERMINATE","UNKNOWN"],"title":"Gender","description":"Gender of the employee. Must be one of MALE, FEMALE, INDETERMINATE, or UNKNOWN.","example":"MALE"},"kin_name":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Name","description":"Name of the next of kin.","example":"Jane Smith"},"kin_relationship":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Relationship","description":"Relationship of the next of kin to the employee.","example":"Sister"},"kin_address1":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address1","description":"Address line 1 of the next of kin.","example":"456 Oak St"},"kin_address2":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address2","description":"Address line 2 of the next of kin.","example":"Apt 5B"},"kin_city":{"type":"string","maxLength":60,"minLength":0,"title":"Kin City","description":"City of the next of kin.","example":"Melbourne"},"kin_state":{"type":"string","maxLength":3,"minLength":2,"title":"Kin State","description":"State of the next of kin.","example":"VIC"},"kin_postcode":{"type":"string","pattern":"^\\d{4}$","title":"Kin Postcode","description":"Postcode of the next of kin.","example":"3000"},"kin_phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Home","description":"Home phone number of the next of kin.","example":"03 1234 5678"},"kin_phone_work":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Work","description":"Work phone number of the next of kin.","example":"03 8765 4321"},"kin_phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Mobile","description":"Mobile phone number of the next of kin.","example":"0412 345 678"},"kin_notes":{"type":"string","title":"Kin Notes","description":"Additional notes about the next of kin.","example":"Emergency contact"},"pay_method":{"type":"string","enum":["CASH","DIRECT BANK ENTRY","OTHER"],"title":"Pay Method","description":"The method of payment for the employee.","default":"DIRECT BANK ENTRY","example":"CASH"},"pay_period":{"type":"string","enum":["WEEKLY","FORTNIGHTLY","MONTHLY"],"title":"Pay Period","description":"The pay period frequency for the employee. Valid values: WEEKLY, FORTNIGHTLY, MONTHLY","default":"WEEKLY","example":"WEEKLY"},"pay_rate_per_hour":{"type":"number","title":"Pay Rate Per Hour","description":"Hourly pay rate for the employee. This is used to calculate the employee's gross pay based on hours worked.","example":"25.00"},"standard_hours_per_day":{"type":"number","title":"Standard Hours Per Day","example":"7.6"},"standard_days_per_week":{"type":"integer","title":"Standard Days Per Week","description":"Number of standard working days per week for the employee. This is used to calculate leave accruals and RDOs.","example":"5"},"stp_employment_status":{"type":"string","enum":["C","P","F"],"title":"Stp Employment Status","description":"The employment status of the employee for Single Touch Payroll (STP) reporting. Valid values: C, P, F. This is used to determine how the employee's earnings are reported to the ATO.","default":"F","example":"F"},"active_pay_recipient":{"type":"boolean","title":"Active Pay Recipient","description":"Whether the employee is an active pay recipient. If False, the employee will not have pending pays generated for them, but they will still count towards licence limits and be included in reports. This is useful for employees who are on leave or not currently receiving pay but are not terminated.","example":true},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","title":"Start Date"},"employment_status":{"type":"string","pattern":"(?i)^(full[-\\s]?time|part[-\\s]?time|casual|labour[\\s-]?hire)$","title":"Employment Status"},"tfnd_signed_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Tfnd Signed Date","description":"Date the employee signed the TFN declaration.","example":"2025-06-04"},"is_foreign_resident":{"type":"boolean","title":"Is Foreign Resident"},"is_closely_held":{"type":"boolean","title":"Is Closely Held"},"has_claimed_tax_free_threshold":{"type":"boolean","title":"Has Claimed Tax Free Threshold"},"has_stsl_liability":{"type":"boolean","title":"Has Stsl Liability"},"include_email_and_phone_in_stp":{"type":"boolean","title":"Include Email And Phone In Stp","description":"Whether to include the employee's email address and phone number in STP reports sent to the ATO. Defaults to False if not set.","example":false},"abn":{"type":"string","title":"Abn","description":"Australian Business Number (ABN) of the employee, if applicable. Required for non-standard employees who bill as contractors.","example":"12345678901"},"working_holiday_tax_scale_applies":{"type":"boolean","title":"Working Holiday Tax Scale Applies","description":"Whether the employee is subject to the Working Holiday Maker tax scale. If True, the employee's tax calculations will use the WHM tax scale instead of the standard tax scale.","example":false},"leave_loading_percentage":{"type":"number","title":"Leave Loading Percentage","description":"Leave loading percentage, e.g. 0.175 for 17.5%","example":"0.175"},"position":{"type":"string","maxLength":60,"minLength":0,"title":"Position","description":"Position or job title of the employee.","example":"Manager"},"employee_portal_active":{"type":"boolean","title":"Employee Portal Active","description":"Whether the employee has access to the online portal.","example":false},"allow_edit_timesheet":{"type":"boolean","title":"Allow Edit Timesheet","description":"Whether the employee is allowed to edit their own timesheets in the online portal.","example":false},"allow_edit_timeclock":{"type":"boolean","title":"Allow Edit Timeclock","description":"Whether the employee is allowed to use the timeclock in the online portal.","example":false},"allow_edit_account_details":{"type":"boolean","title":"Allow Edit Account Details","description":"Whether the employee is allowed to edit their own personal details in the online portal.","example":false},"allow_edit_tax_settings":{"type":"boolean","title":"Allow Edit Tax Settings","description":"Whether the employee is allowed to edit their tax settings in the online portal.","example":false},"allow_edit_bank_accounts":{"type":"boolean","title":"Allow Edit Bank Accounts","description":"Whether the employee is allowed to edit their own bank account details in the online portal.","example":false},"allow_edit_super_details":{"type":"boolean","title":"Allow Edit Super Details","description":"Whether the employee is allowed to edit their super details in the online portal.","example":false},"allow_edit_leave_requests":{"type":"boolean","title":"Allow Edit Leave Requests","description":"Whether the employee is allowed to make leave requests through the online portal.","example":false},"allow_edit_leave_requests_when_negative":{"type":"boolean","title":"Allow Edit Leave Requests When Negative","description":"Whether the employee is allowed to make leave requests even when they have, or will reach, a negative leave balance.","example":false},"allow_view_holiday_leave_balance":{"type":"boolean","title":"Allow View Holiday Leave Balance","description":"Whether the employee is allowed to view their holiday leave balance in the online portal.","example":false},"allow_view_sick_leave_balance":{"type":"boolean","title":"Allow View Sick Leave Balance","description":"Whether the employee is allowed to view their sick leave balance in the online portal.","example":false},"allow_view_long_service_leave_balance":{"type":"boolean","title":"Allow View Long Service Leave Balance","description":"Whether the employee is allowed to view their long service leave balance in the online portal.","example":false},"allow_view_payslips":{"type":"boolean","title":"Allow View Payslips","description":"Whether the employee is allowed to view their payslips in the online portal.","example":false},"department":{"type":"string","maxLength":60,"minLength":0,"title":"Department","example":"Human Resources"},"number":{"type":"string","maxLength":60,"minLength":0,"title":"Number","description":"User-controlled unique employee payroll number/code. This is not the same as the internal database ID.","example":"EMP001"},"honorific":{"type":"string","maxLength":18,"minLength":0,"title":"Honorific","description":"Honorific title for the employee (e.g., Mr, Ms, Dr).","example":"Mr"},"show_roster_summary_on_payslip":{"type":"boolean","title":"Show Roster Summary On Payslip","description":"Whether to show the roster summary on the payslip.","example":false},"show_position_on_payslip":{"type":"boolean","title":"Show Position On Payslip","description":"Whether to show the employee's position on the payslip.","example":false},"show_department_on_payslip":{"type":"boolean","title":"Show Department On Payslip","description":"Whether to show the employee's department on the payslip.","example":false},"payslip_show_holiday_leave_balance":{"type":"boolean","title":"Payslip Show Holiday Leave Balance","description":"Whether to show the employee's holiday leave balance on the payslip.","example":false},"payslip_show_sick_leave_balance":{"type":"boolean","title":"Payslip Show Sick Leave Balance","description":"Whether to show the employee's sick leave balance on the payslip.","example":false},"payslip_show_lsl_balance":{"type":"boolean","title":"Payslip Show Lsl Balance","description":"Whether to show the employee's long service leave balance on the payslip.","example":false},"payslip_show_negative_leave_balances":{"type":"boolean","title":"Payslip Show Negative Leave Balances","description":"Whether to show negative leave balances on the payslip.","example":false},"payslip_show_custom_balances":{"type":"boolean","title":"Payslip Show Custom Balances","description":"Whether to show custom leave balances on the payslip.","example":false},"payslip_leave_units":{"type":"string","enum":["HOURS","DAYS"],"title":"Payslip Leave Units","description":"The unit of measurement for leave balances shown on the payslip. Valid values: HOURS, DAYS","example":"HOURS"},"payslip_show_hours_and_rate":{"type":"boolean","title":"Payslip Show Hours And Rate","description":"Whether to show hours worked and pay rate on the payslip.","example":false},"payslip_show_allowance_units":{"type":"boolean","title":"Payslip Show Allowance Units","description":"Whether to show allowance units on the payslip.","example":false},"payslip_show_base_ordinary_rate":{"type":"boolean","title":"Payslip Show Base Ordinary Rate","description":"Whether to show the base ordinary rate on the payslip.","example":false},"payslip_show_super_ytd":{"type":"boolean","title":"Payslip Show Super Ytd","description":"Whether to show the year-to-date superannuation contributions on the payslip.","example":false},"payslip_note":{"type":"string","title":"Payslip Note","description":"An added note to be displayed on each upcoming payslip for this employee.","example":"Thank you for your hard work!"},"payslip_show_ytd":{"type":"boolean","title":"Payslip Show Ytd","description":"Whether to show year-to-date totals on the payslip.","example":false},"payslip_show_zero_dollar_leave":{"type":"boolean","title":"Payslip Show Zero Dollar Leave","description":"Whether to show zero dollar leave balances on the payslip.","example":false},"payslip_time_non_decimal":{"type":"boolean","title":"Payslip Time Non Decimal","description":"Whether to show time in non-decimal format (e.g., 1:30 instead of 1.5 hours) on the payslip.","example":false},"primary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Primary Bank Bsb","example":"987-654"},"primary_bank_account_number":{"type":"string","maxLength":12,"title":"Primary Bank Account Number","example":"87654321"},"primary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Primary Bank Account Name","example":"John Smith"},"secondary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Secondary Bank Bsb","example":"123-456"},"secondary_bank_account_number":{"type":"string","maxLength":12,"title":"Secondary Bank Account Number","example":"12345678"},"secondary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Secondary Bank Account Name","example":"John Smith"},"secondary_bank_reference":{"type":"string","maxLength":18,"minLength":0,"title":"Secondary Bank Reference","example":"Child Support"},"secondary_bank_amount_per_period":{"type":"number","title":"Secondary Bank Amount Per Period","description":"Amount to be paid to the secondary bank account per pay period. Remaining pay will be paid to the primary bank account.","example":"100.00"},"default_employee_fund_member_number":{"type":"string","maxLength":20,"title":"Default Employee Fund Member Number","example":"12345678"},"default_employee_fund_usi":{"type":"string","maxLength":20,"title":"Default Employee Fund Usi","example":"STA0100AU"},"super_rate":{"type":"number","title":"Super Rate","description":"Total superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.115 for 11.5%). This is the rate applied to the employee's ordinary time earnings for superannuation contributions. Any excess above the compulsory_super_rate is categorised as RESC (Reportable Employer Super Contributions).","example":"0.115"},"compulsory_super_rate":{"type":"number","title":"Compulsory Super Rate","description":"Compulsory superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.105 for 10.5%). This is the minimum rate required by law for superannuation contributions.","example":"0.105"},"is_super_enabled":{"type":"boolean","title":"Is Super Enabled","description":"Whether superannuation contributions are enabled for this employee. If False, no super calculations will be performed for this employee, regardless of the super_rate or compulsory_super_rate settings.","example":true},"is_super_age_threshold_enabled":{"type":"boolean","title":"Is Super Age Threshold Enabled","description":"Whether the superannuation age threshold is enabled for this employee. If True, the employee's age will be considered when calculating super contributions. If False, the employee's age will not affect super calculations.","example":true},"super_based_on":{"type":"string","enum":["OTE","GROSS"],"title":"Super Based On","description":"The basis for superannuation calculations for this employee. Valid values: OTE (Ordinary Time Earnings, recommended) or GROSS (Gross Pay). If OTE, super is calculated based on the employee's ordinary time earnings. If GROSS, super is calculated based on the employee's gross pay.","example":"OTE"},"is_leave_enabled":{"type":"boolean","title":"Is Leave Enabled","description":"Whether leave calculations are enabled for this employee. If False, no leave accruals will be calculated for this employee.","example":true},"include_leave_loading_in_super":{"type":"boolean","title":"Include Leave Loading In Super","description":"Whether to include leave loading in superannuation calculations for this employee. If True, leave loading will be included in the superannuation contributions. If False, leave loading will not be included in super calculations.","example":false},"accrue_leave_on_hours_worked":{"type":"boolean","title":"Accrue Leave On Hours Worked","description":"Whether to accrue leave based on hours worked (pro rata). If True, leave will be accrued based on the number of hours worked by the employee. If False, leave will be accrued by the pay period.","example":true},"accrue_leave_on_overtime_hours":{"type":"boolean","title":"Accrue Leave On Overtime Hours","description":"Whether to accrue leave based on overtime hours worked. If True, leave will be accrued based on the number of overtime hours worked by the employee. If False, overtime hours will not contribute to leave accruals.","example":false},"accrue_holiday_leave_per_hour":{"type":"number","title":"Accrue Holiday Leave Per Hour","description":"Holiday leave accrual rate per hour worked, expressed as a decimal (e.g., 0.076923 for 20 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":"0.076923"},"accrue_sick_leave_per_hour":{"type":"number","title":"Accrue Sick Leave Per Hour","description":"Sick leave accrual rate per hour worked, expressed as a decimal (e.g., 0.038462 for 10 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of sick leave hours accrued by the employee based on their hours worked.","example":"0.038462"},"accrue_lsl_per_hour":{"type":"number","title":"Accrue Lsl Per Hour","description":"Long Service Leave (LSL) accrual rate per hour worked, expressed as a decimal (e.g., 0.016673 for 8.6667 weeks per 10 years). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of LSL hours accrued by the employee based on their hours worked.","example":"0.016673"},"num_sick_leave_days_per_year":{"type":"integer","title":"Num Sick Leave Days Per Year","description":"Number of personal/sick days per year for the employee. This is used to calculate the number of personal leave hours accrued by the employee based on their hours worked.","example":10},"num_holiday_leave_days_per_year":{"type":"integer","title":"Num Holiday Leave Days Per Year","description":"Number of annual/holiday days per year for the employee. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":20},"is_lsl_enabled":{"type":"boolean","title":"Is Lsl Enabled","description":"Whether Long Service Leave (LSL) calculations are enabled for this employee. If False, no LSL accruals will be calculated for this employee.","example":true},"lsl_x_years":{"type":"integer","title":"Lsl X Years","description":"Number of years of service required to qualify for Long Service Leave (LSL). This is used to determine when the employee is eligible for LSL based on their length of service.","example":10},"lsl_accrued_x_years":{"type":"integer","title":"Lsl Accrued X Years","description":"Number of weeks LSL accrued for every lsl_x_years years of service. This is used to calculate the number of LSL hours accrued by the employee based on their length of service.","example":10},"hourly_amount_for_workers_comp_leave":{"type":"number","title":"Hourly Amount For Workers Comp Leave","example":"25.50"},"hourly_amount_for_paid_parental_leave":{"type":"number","title":"Hourly Amount For Paid Parental Leave","example":"30.75"},"rdo_hours":{"type":"number","title":"Rdo Hours","description":"Total hours of Rostered Days Off (RDOs) accrued by the employee as at their most recent pay.","example":"55.42"},"toil_hours":{"type":"number","title":"Toil Hours","description":"Total hours of Time Off In Lieu (TOIL) accrued by the employee as at their most recent pay.","example":"20.00"}},"additionalProperties":false,"type":"object","required":["tax_file_number","first_name","last_name","date_of_birth","address1","city","state","country","postcode","start_date","employment_status","is_foreign_resident","is_closely_held","has_claimed_tax_free_threshold","has_stsl_liability"],"title":"EmployeeCreate","description":"Payload required when *creating* an employee.","example":{"tax_file_number":"111111111","first_name":"Alice","last_name":"Smith","date_of_birth":"1990-01-01","address1":"123 Example Street","city":"Sydney","state":"NSW","country":"AU","postcode":"2000","start_date":"2024-07-01","employment_status":"Full time","is_foreign_resident":false,"is_closely_held":false,"has_claimed_tax_free_threshold":true,"has_stsl_liability":false}},"EmployeeIDPays":{"properties":{"employee_id":{"type":"integer","title":"Employee Id"},"pays":{"items":{"$ref":"#/components/schemas/Pay"},"type":"array","minItems":0,"title":"Pays"}},"type":"object","required":["employee_id","pays"],"title":"EmployeeIDPays"},"EmployeeNumberPays":{"properties":{"employee_number":{"type":"string","title":"Employee Number"},"pays":{"items":{"$ref":"#/components/schemas/Pay"},"type":"array","minItems":0,"title":"Pays"}},"type":"object","required":["employee_number","pays"],"title":"EmployeeNumberPays"},"EmployeePayRateCategorySet":{"properties":{"system":{"items":{"$ref":"#/components/schemas/EmployeePayRateOption"},"type":"array","title":"System","description":"System-generated rates based on employee pay_rate_per_hour."},"employee":{"items":{"$ref":"#/components/schemas/EmployeePayRateOption"},"type":"array","title":"Employee","description":"Employee-specific pay rates."},"company":{"items":{"$ref":"#/components/schemas/EmployeePayRateOption"},"type":"array","title":"Company","description":"Company pay rates linked to this employee."}},"type":"object","title":"EmployeePayRateCategorySet"},"EmployeePayRateOption":{"properties":{"reference":{"type":"string","title":"Reference","description":"Stable identifier for this rate option. Format examples: 'system:ordinary_time', 'employee:123', 'company:456'.","example":"employee:42"},"source":{"type":"string","enum":["system","employee","company"],"title":"Source","description":"The category this rate belongs to.","example":"employee"},"id":{"type":"integer","title":"Id","description":"Database id for employee/company rates. Null for system rates.","example":42},"description":{"type":"string","title":"Description","description":"Rate description shown to users.","example":"Ordinary Time"},"rate":{"type":"number","title":"Rate","description":"Resolved decimal rate value for the employee.","example":"30.00000"},"units":{"type":"string","title":"Units","description":"Units for this rate (for example Hours, kms, sheep).","example":"Hours"},"is_overtime":{"type":"boolean","title":"Is Overtime","description":"Whether this rate is treated as overtime.","default":false,"example":false},"display_label":{"type":"string","title":"Display Label","description":"Convenience label in the UI-friendly format 'Description ($rate)'.","example":"Ordinary Time ($30.00000)"}},"type":"object","required":["reference","source","description","rate","display_label"],"title":"EmployeePayRateOption"},"EmployeePayRatesResponse":{"properties":{"employee_id":{"type":"integer","title":"Employee Id","description":"The LP employee id this rate list was generated for.","example":1234},"rates":{"allOf":[{"$ref":"#/components/schemas/EmployeePayRateCategorySet"}],"title":"Rates","description":"Rates grouped by category."},"all":{"items":{"$ref":"#/components/schemas/EmployeePayRateOption"},"type":"array","title":"All","description":"Flat list of all rate options (system + employee + company)."},"duplicate_descriptions":{"items":{"type":"string"},"type":"array","title":"Duplicate Descriptions","description":"Descriptions that appear more than once (case-insensitive) across categories. If non-empty, API consumers should prefer 'reference' over description matching."}},"type":"object","required":["employee_id","rates"],"title":"EmployeePayRatesResponse"},"EmployeeResult":{"properties":{"employee":{"allOf":[{"$ref":"#/components/schemas/Employee"}],"title":"Employee","description":"The employee object if creation succeeded.","example":{"id":123,"first_name":"Alice","last_name":"Smith","email":"alice@example.com"}},"errors":{"additionalProperties":{"type":"string"},"type":"object","title":"Errors","description":"Field-level validation or creation errors, if any.","example":{"email":"Invalid email address","tax_file_number":"Duplicate TFN"}}},"type":"object","title":"EmployeeResult"},"EmployeeUpdate":{"properties":{"tax_file_number":{"type":"string","title":"Tax File Number","example":"123456789"},"first_name":{"type":"string","maxLength":60,"minLength":0,"title":"First Name","example":"John"},"middle_name":{"type":"string","maxLength":60,"minLength":0,"title":"Middle Name","example":"Richard"},"last_name":{"type":"string","maxLength":60,"minLength":0,"title":"Last Name","example":"Smith"},"date_of_birth":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Date Of Birth","example":"1985-07-15"},"address1":{"type":"string","maxLength":100,"minLength":0,"title":"Address1","example":"123 Elm St"},"address2":{"type":"string","maxLength":100,"minLength":0,"title":"Address2","example":"123 Elm St"},"city":{"type":"string","maxLength":60,"minLength":0,"title":"City","example":"Sydney"},"state":{"type":"string","maxLength":3,"minLength":2,"title":"State","example":"NSW"},"country":{"type":"string","maxLength":2,"title":"Country","example":"AU"},"postcode":{"type":"string","pattern":"^\\d{4}$","title":"Postcode","example":"2000"},"email_address":{"type":"string","format":"email","title":"Email Address","description":"Email address of the employee.","example":"tonytiger@gmail.com"},"phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Home","description":"Home phone number of the employee.","example":"02 1234 5678"},"phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Mobile","description":"Mobile phone number of the employee.","example":"0412 345 678"},"phone_medical":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Phone Medical","description":"Medical contact phone number of the employee.","example":"02 8765 4321"},"gender":{"type":"string","enum":["MALE","FEMALE","INDETERMINATE","UNKNOWN"],"title":"Gender","description":"Gender of the employee. Must be one of MALE, FEMALE, INDETERMINATE, or UNKNOWN.","example":"MALE"},"kin_name":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Name","description":"Name of the next of kin.","example":"Jane Smith"},"kin_relationship":{"type":"string","maxLength":60,"minLength":0,"title":"Kin Relationship","description":"Relationship of the next of kin to the employee.","example":"Sister"},"kin_address1":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address1","description":"Address line 1 of the next of kin.","example":"456 Oak St"},"kin_address2":{"type":"string","maxLength":100,"minLength":0,"title":"Kin Address2","description":"Address line 2 of the next of kin.","example":"Apt 5B"},"kin_city":{"type":"string","maxLength":60,"minLength":0,"title":"Kin City","description":"City of the next of kin.","example":"Melbourne"},"kin_state":{"type":"string","maxLength":3,"minLength":2,"title":"Kin State","description":"State of the next of kin.","example":"VIC"},"kin_postcode":{"type":"string","pattern":"^\\d{4}$","title":"Kin Postcode","description":"Postcode of the next of kin.","example":"3000"},"kin_phone_home":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Home","description":"Home phone number of the next of kin.","example":"03 1234 5678"},"kin_phone_work":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Work","description":"Work phone number of the next of kin.","example":"03 8765 4321"},"kin_phone_mobile":{"type":"string","pattern":"$|^[0-9 +()-]{8,15}$","title":"Kin Phone Mobile","description":"Mobile phone number of the next of kin.","example":"0412 345 678"},"kin_notes":{"type":"string","title":"Kin Notes","description":"Additional notes about the next of kin.","example":"Emergency contact"},"pay_method":{"type":"string","enum":["CASH","DIRECT BANK ENTRY","OTHER"],"title":"Pay Method","description":"The method of payment for the employee.","default":"DIRECT BANK ENTRY","example":"CASH"},"pay_period":{"type":"string","enum":["WEEKLY","FORTNIGHTLY","MONTHLY"],"title":"Pay Period","description":"The pay period frequency for the employee. Valid values: WEEKLY, FORTNIGHTLY, MONTHLY","default":"WEEKLY","example":"WEEKLY"},"pay_rate_per_hour":{"type":"number","title":"Pay Rate Per Hour","description":"Hourly pay rate for the employee. This is used to calculate the employee's gross pay based on hours worked.","example":"25.00"},"standard_hours_per_day":{"type":"number","title":"Standard Hours Per Day","example":"7.6"},"standard_days_per_week":{"type":"integer","title":"Standard Days Per Week","description":"Number of standard working days per week for the employee. This is used to calculate leave accruals and RDOs.","example":"5"},"stp_employment_status":{"type":"string","enum":["C","P","F"],"title":"Stp Employment Status","description":"The employment status of the employee for Single Touch Payroll (STP) reporting. Valid values: C, P, F. This is used to determine how the employee's earnings are reported to the ATO.","default":"F","example":"F"},"active_pay_recipient":{"type":"boolean","title":"Active Pay Recipient","description":"Whether the employee is an active pay recipient. If False, the employee will not have pending pays generated for them, but they will still count towards licence limits and be included in reports. This is useful for employees who are on leave or not currently receiving pay but are not terminated.","example":true},"start_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Start Date","example":"2025-06-04"},"employment_status":{"type":"string","pattern":"(?i)^(full[-\\s]?time|part[-\\s]?time|casual|labour[\\s-]?hire)$","title":"Employment Status","example":"Full time"},"tfnd_signed_date":{"type":"string","pattern":"^$|^\\d{4}-\\d{2}-\\d{2}$","title":"Tfnd Signed Date","description":"Date the employee signed the TFN declaration.","example":"2025-06-04"},"is_foreign_resident":{"type":"boolean","title":"Is Foreign Resident"},"is_closely_held":{"type":"boolean","title":"Is Closely Held","description":"Whether the employee is a closely held employee. Closely held employees are typically family members of the business owner or directors of the company.","example":false},"has_claimed_tax_free_threshold":{"type":"boolean","title":"Has Claimed Tax Free Threshold"},"has_stsl_liability":{"type":"boolean","title":"Has Stsl Liability"},"include_email_and_phone_in_stp":{"type":"boolean","title":"Include Email And Phone In Stp","description":"Whether to include the employee's email address and phone number in STP reports sent to the ATO. Defaults to False if not set.","example":false},"abn":{"type":"string","title":"Abn","description":"Australian Business Number (ABN) of the employee, if applicable. Required for non-standard employees who bill as contractors.","example":"12345678901"},"working_holiday_tax_scale_applies":{"type":"boolean","title":"Working Holiday Tax Scale Applies","description":"Whether the employee is subject to the Working Holiday Maker tax scale. If True, the employee's tax calculations will use the WHM tax scale instead of the standard tax scale.","example":false},"leave_loading_percentage":{"type":"number","title":"Leave Loading Percentage","description":"Leave loading percentage, e.g. 0.175 for 17.5%","example":"0.175"},"position":{"type":"string","maxLength":60,"minLength":0,"title":"Position","description":"Position or job title of the employee.","example":"Manager"},"employee_portal_active":{"type":"boolean","title":"Employee Portal Active","description":"Whether the employee has access to the online portal.","example":false},"allow_edit_timesheet":{"type":"boolean","title":"Allow Edit Timesheet","description":"Whether the employee is allowed to edit their own timesheets in the online portal.","example":false},"allow_edit_timeclock":{"type":"boolean","title":"Allow Edit Timeclock","description":"Whether the employee is allowed to use the timeclock in the online portal.","example":false},"allow_edit_account_details":{"type":"boolean","title":"Allow Edit Account Details","description":"Whether the employee is allowed to edit their own personal details in the online portal.","example":false},"allow_edit_tax_settings":{"type":"boolean","title":"Allow Edit Tax Settings","description":"Whether the employee is allowed to edit their tax settings in the online portal.","example":false},"allow_edit_bank_accounts":{"type":"boolean","title":"Allow Edit Bank Accounts","description":"Whether the employee is allowed to edit their own bank account details in the online portal.","example":false},"allow_edit_super_details":{"type":"boolean","title":"Allow Edit Super Details","description":"Whether the employee is allowed to edit their super details in the online portal.","example":false},"allow_edit_leave_requests":{"type":"boolean","title":"Allow Edit Leave Requests","description":"Whether the employee is allowed to make leave requests through the online portal.","example":false},"allow_edit_leave_requests_when_negative":{"type":"boolean","title":"Allow Edit Leave Requests When Negative","description":"Whether the employee is allowed to make leave requests even when they have, or will reach, a negative leave balance.","example":false},"allow_view_holiday_leave_balance":{"type":"boolean","title":"Allow View Holiday Leave Balance","description":"Whether the employee is allowed to view their holiday leave balance in the online portal.","example":false},"allow_view_sick_leave_balance":{"type":"boolean","title":"Allow View Sick Leave Balance","description":"Whether the employee is allowed to view their sick leave balance in the online portal.","example":false},"allow_view_long_service_leave_balance":{"type":"boolean","title":"Allow View Long Service Leave Balance","description":"Whether the employee is allowed to view their long service leave balance in the online portal.","example":false},"allow_view_payslips":{"type":"boolean","title":"Allow View Payslips","description":"Whether the employee is allowed to view their payslips in the online portal.","example":false},"department":{"type":"string","maxLength":60,"minLength":0,"title":"Department","example":"Human Resources"},"number":{"type":"string","maxLength":60,"minLength":0,"title":"Number","description":"User-controlled unique employee payroll number/code. This is not the same as the internal database ID.","example":"EMP001"},"honorific":{"type":"string","maxLength":18,"minLength":0,"title":"Honorific","description":"Honorific title for the employee (e.g., Mr, Ms, Dr).","example":"Mr"},"show_roster_summary_on_payslip":{"type":"boolean","title":"Show Roster Summary On Payslip","description":"Whether to show the roster summary on the payslip.","example":false},"show_position_on_payslip":{"type":"boolean","title":"Show Position On Payslip","description":"Whether to show the employee's position on the payslip.","example":false},"show_department_on_payslip":{"type":"boolean","title":"Show Department On Payslip","description":"Whether to show the employee's department on the payslip.","example":false},"payslip_show_holiday_leave_balance":{"type":"boolean","title":"Payslip Show Holiday Leave Balance","description":"Whether to show the employee's holiday leave balance on the payslip.","example":false},"payslip_show_sick_leave_balance":{"type":"boolean","title":"Payslip Show Sick Leave Balance","description":"Whether to show the employee's sick leave balance on the payslip.","example":false},"payslip_show_lsl_balance":{"type":"boolean","title":"Payslip Show Lsl Balance","description":"Whether to show the employee's long service leave balance on the payslip.","example":false},"payslip_show_negative_leave_balances":{"type":"boolean","title":"Payslip Show Negative Leave Balances","description":"Whether to show negative leave balances on the payslip.","example":false},"payslip_show_custom_balances":{"type":"boolean","title":"Payslip Show Custom Balances","description":"Whether to show custom leave balances on the payslip.","example":false},"payslip_leave_units":{"type":"string","enum":["HOURS","DAYS"],"title":"Payslip Leave Units","description":"The unit of measurement for leave balances shown on the payslip. Valid values: HOURS, DAYS","example":"HOURS"},"payslip_show_hours_and_rate":{"type":"boolean","title":"Payslip Show Hours And Rate","description":"Whether to show hours worked and pay rate on the payslip.","example":false},"payslip_show_allowance_units":{"type":"boolean","title":"Payslip Show Allowance Units","description":"Whether to show allowance units on the payslip.","example":false},"payslip_show_base_ordinary_rate":{"type":"boolean","title":"Payslip Show Base Ordinary Rate","description":"Whether to show the base ordinary rate on the payslip.","example":false},"payslip_show_super_ytd":{"type":"boolean","title":"Payslip Show Super Ytd","description":"Whether to show the year-to-date superannuation contributions on the payslip.","example":false},"payslip_note":{"type":"string","title":"Payslip Note","description":"An added note to be displayed on each upcoming payslip for this employee.","example":"Thank you for your hard work!"},"payslip_show_ytd":{"type":"boolean","title":"Payslip Show Ytd","description":"Whether to show year-to-date totals on the payslip.","example":false},"payslip_show_zero_dollar_leave":{"type":"boolean","title":"Payslip Show Zero Dollar Leave","description":"Whether to show zero dollar leave balances on the payslip.","example":false},"payslip_time_non_decimal":{"type":"boolean","title":"Payslip Time Non Decimal","description":"Whether to show time in non-decimal format (e.g., 1:30 instead of 1.5 hours) on the payslip.","example":false},"primary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Primary Bank Bsb","example":"987-654"},"primary_bank_account_number":{"type":"string","maxLength":12,"title":"Primary Bank Account Number","example":"87654321"},"primary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Primary Bank Account Name","example":"John Smith"},"secondary_bank_bsb":{"type":"string","pattern":"$|^\\d{3}-\\d{3}$","title":"Secondary Bank Bsb","example":"123-456"},"secondary_bank_account_number":{"type":"string","maxLength":12,"title":"Secondary Bank Account Number","example":"12345678"},"secondary_bank_account_name":{"type":"string","maxLength":32,"minLength":0,"title":"Secondary Bank Account Name","example":"John Smith"},"secondary_bank_reference":{"type":"string","maxLength":18,"minLength":0,"title":"Secondary Bank Reference","example":"Child Support"},"secondary_bank_amount_per_period":{"type":"number","title":"Secondary Bank Amount Per Period","description":"Amount to be paid to the secondary bank account per pay period. Remaining pay will be paid to the primary bank account.","example":"100.00"},"default_employee_fund_member_number":{"type":"string","maxLength":20,"title":"Default Employee Fund Member Number","example":"12345678"},"default_employee_fund_usi":{"type":"string","maxLength":20,"title":"Default Employee Fund Usi","example":"STA0100AU"},"super_rate":{"type":"number","title":"Super Rate","description":"Total superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.115 for 11.5%). This is the rate applied to the employee's ordinary time earnings for superannuation contributions. Any excess above the compulsory_super_rate is categorised as RESC (Reportable Employer Super Contributions).","example":"0.115"},"compulsory_super_rate":{"type":"number","title":"Compulsory Super Rate","description":"Compulsory superannuation rate used on the employee's upcoming pays, expressed as a decimal (e.g., 0.105 for 10.5%). This is the minimum rate required by law for superannuation contributions.","example":"0.105"},"is_super_enabled":{"type":"boolean","title":"Is Super Enabled","description":"Whether superannuation contributions are enabled for this employee. If False, no super calculations will be performed for this employee, regardless of the super_rate or compulsory_super_rate settings.","example":true},"is_super_age_threshold_enabled":{"type":"boolean","title":"Is Super Age Threshold Enabled","description":"Whether the superannuation age threshold is enabled for this employee. If True, the employee's age will be considered when calculating super contributions. If False, the employee's age will not affect super calculations.","example":true},"super_based_on":{"type":"string","enum":["OTE","GROSS"],"title":"Super Based On","description":"The basis for superannuation calculations for this employee. Valid values: OTE (Ordinary Time Earnings, recommended) or GROSS (Gross Pay). If OTE, super is calculated based on the employee's ordinary time earnings. If GROSS, super is calculated based on the employee's gross pay.","example":"OTE"},"is_leave_enabled":{"type":"boolean","title":"Is Leave Enabled","description":"Whether leave calculations are enabled for this employee. If False, no leave accruals will be calculated for this employee.","example":true},"include_leave_loading_in_super":{"type":"boolean","title":"Include Leave Loading In Super","description":"Whether to include leave loading in superannuation calculations for this employee. If True, leave loading will be included in the superannuation contributions. If False, leave loading will not be included in super calculations.","example":false},"accrue_leave_on_hours_worked":{"type":"boolean","title":"Accrue Leave On Hours Worked","description":"Whether to accrue leave based on hours worked (pro rata). If True, leave will be accrued based on the number of hours worked by the employee. If False, leave will be accrued by the pay period.","example":true},"accrue_leave_on_overtime_hours":{"type":"boolean","title":"Accrue Leave On Overtime Hours","description":"Whether to accrue leave based on overtime hours worked. If True, leave will be accrued based on the number of overtime hours worked by the employee. If False, overtime hours will not contribute to leave accruals.","example":false},"accrue_holiday_leave_per_hour":{"type":"number","title":"Accrue Holiday Leave Per Hour","description":"Holiday leave accrual rate per hour worked, expressed as a decimal (e.g., 0.076923 for 20 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":"0.076923"},"accrue_sick_leave_per_hour":{"type":"number","title":"Accrue Sick Leave Per Hour","description":"Sick leave accrual rate per hour worked, expressed as a decimal (e.g., 0.038462 for 10 days per year). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of sick leave hours accrued by the employee based on their hours worked.","example":"0.038462"},"accrue_lsl_per_hour":{"type":"number","title":"Accrue Lsl Per Hour","description":"Long Service Leave (LSL) accrual rate per hour worked, expressed as a decimal (e.g., 0.016673 for 8.6667 weeks per 10 years). Used when both accrue_leave_on_hours_worked and is_leave_enabled are enabled. This is used to calculate the number of LSL hours accrued by the employee based on their hours worked.","example":"0.016673"},"num_sick_leave_days_per_year":{"type":"integer","title":"Num Sick Leave Days Per Year","description":"Number of personal/sick days per year for the employee. This is used to calculate the number of personal leave hours accrued by the employee based on their hours worked.","example":10},"num_holiday_leave_days_per_year":{"type":"integer","title":"Num Holiday Leave Days Per Year","description":"Number of annual/holiday days per year for the employee. This is used to calculate the number of holiday leave hours accrued by the employee based on their hours worked.","example":20},"is_lsl_enabled":{"type":"boolean","title":"Is Lsl Enabled","description":"Whether Long Service Leave (LSL) calculations are enabled for this employee. If False, no LSL accruals will be calculated for this employee.","example":true},"lsl_x_years":{"type":"integer","title":"Lsl X Years","description":"Number of years of service required to qualify for Long Service Leave (LSL). This is used to determine when the employee is eligible for LSL based on their length of service.","example":10},"lsl_accrued_x_years":{"type":"integer","title":"Lsl Accrued X Years","description":"Number of weeks LSL accrued for every lsl_x_years years of service. This is used to calculate the number of LSL hours accrued by the employee based on their length of service.","example":10},"hourly_amount_for_workers_comp_leave":{"type":"number","title":"Hourly Amount For Workers Comp Leave","example":"25.50"},"hourly_amount_for_paid_parental_leave":{"type":"number","title":"Hourly Amount For Paid Parental Leave","example":"30.75"},"rdo_hours":{"type":"number","title":"Rdo Hours","description":"Total hours of Rostered Days Off (RDOs) accrued by the employee as at their most recent pay.","example":"55.42"},"toil_hours":{"type":"number","title":"Toil Hours","description":"Total hours of Time Off In Lieu (TOIL) accrued by the employee as at their most recent pay.","example":"20.00"},"id":{"type":"integer","title":"Id","description":"Internal Lightning Payroll employee id"},"delete_non_rdo_and_toil_leave_items":{"type":"boolean","title":"Delete Non Rdo And Toil Leave Items","description":"If True, all non-RDO and non-TOIL leave items will be deleted from the employee's leave balances. This is useful for resetting leave balances when an employee's leave settings have been potentially misconfigured.","example":false}},"additionalProperties":false,"type":"object","required":["id"],"title":"EmployeeUpdate","description":"Payload for *partial* updates (PATCH). Only id is mandatory."},"GLPosting":{"properties":{"account_id":{"anyOf":[{"type":"string"},{"type":"integer"}],"title":"Account Id","description":"The account identifier associated with the GL posting.","example":"00-00-0001"},"description":{"type":"string","title":"Description","description":"A brief description of the GL posting.","example":"Gross Wages"},"amount":{"type":"number","title":"Amount","description":"The monetary amount for the GL posting. Positive for debits, negative for credits.","example":"1500.00"},"date":{"type":"string","title":"Date","description":"The date of the GL posting in DD/MM/YYYY format.","example":"14/01/2025"}},"type":"object","required":["account_id","description","amount","date"],"title":"GLPosting"},"GLPostingsResponse":{"properties":{"pay_run_id":{"type":"integer","title":"Pay Run Id","description":"The unique LP-generated ID of the pay run.","example":1},"postings":{"items":{"$ref":"#/components/schemas/GLPosting"},"type":"array","title":"Postings","description":"A list of GL postings associated with the specified pay run."}},"type":"object","required":["pay_run_id","postings"],"title":"GLPostingsResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoursOut":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","example":"Ordinary Time"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this hours row. Provide either `rate` or `multiplier`.","example":"30.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.5 for time-and-a-half, 2.0 for double time).","example":"1.5"},"rate_reference":{"type":"string","title":"Rate Reference","description":"Optional stable pay-rate reference from `GET /api/employees/{employee_id}/pay-rates` (for example `system:ordinary_time`, `employee:42`, `company:73`). Use as an alternative to sending a raw `rate`.","example":"employee:42"},"rate_description":{"type":"string","maxLength":60,"minLength":0,"title":"Rate Description","description":"Optional pay-rate description to resolve a rate by description for this employee. Use when you do not send `rate`. If multiple rates share the same description, the API will return a validation error and require `rate_reference`.","example":"Ordinary Time"},"units":{"type":"string","maxLength":32,"minLength":0,"title":"Units","example":"hours"},"is_overtime":{"type":"boolean","title":"Is Overtime","default":false,"example":false},"value":{"type":"number","title":"Value","example":"37.5"},"id":{"type":"integer","title":"Id"},"pay_amount":{"type":"number","title":"Pay Amount","description":"The total amount for this pay hours row, calculated as rate * value.","example":"1125.00"}},"type":"object","required":["description","units","value","id","pay_amount"],"title":"HoursOut"},"Leave":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the leave.","example":"Annual Leave"},"leave_type":{"type":"string","title":"Leave Type","description":"A short identifier for the type of leave. Provide the code with underscores (e.g., ALT_HOLIDAY, ANCILLARY, ANNUAL_HOLIDAYS, COMPASSIONATE, EMPLOYER_FUNDED_PAID_PARENTAL, HOLIDAY, LONG_SERVICE, NZ_BEREAVEMENT, NZ_DEFENCE_FORCE, NZ_EMPLOYMENT_RELATIONS_EDUCATION, NZ_FAMILY_VIOLENCE, NZ_JURY_SERVICE, NZ_TIME_OFF_TO_VOTE, OTHER, PAID_PARENTAL, PAID_PUBLIC_HOLIDAY, SICK, UNPAID, WORKERS_COMP).","example":"HOLIDAY"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this leave (e.g., hourly rate). Optional if using `multiplier` or to default to the employee's pay_rate_per_hour.","example":"38.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.0 for base rate, 1.5 for time-and-a-half).","example":"1.0"},"date":{"type":"string","title":"Date","description":"The date of the leave.","example":"2023-01-01"},"hours":{"type":"number","title":"Hours","description":"The number of hours leave taken.","example":"7.6"},"leave_loading_amount":{"type":"number","title":"Leave Loading Amount","description":"The dollar amount of leave loading, if applicable.","example":"3.80"}},"additionalProperties":false,"type":"object","required":["description","leave_type","date","hours"],"title":"Leave"},"LeaveBalanceRow":{"properties":{"leave_type":{"type":"string","title":"Leave Type","description":"Short code or internal key for the leave type.","example":"HOLIDAY"},"name":{"type":"string","title":"Name","description":"User-facing name of the leave type.","example":"Annual Leave"},"hours":{"type":"number","title":"Hours","description":"Decimal quantity of leave hours remaining.","example":"32.0"}},"type":"object","required":["leave_type","name"],"title":"LeaveBalanceRow","description":"Return schema for leave balance objects exposed via the API."},"LeaveBase":{"properties":{"name":{"type":"string","title":"Name","example":"Annual Leave"},"leave_type":{"type":"string","title":"Leave Type","example":"annual"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this leave (e.g., hourly rate). Optional if using `multiplier` or to default to the employee's pay_rate_per_hour.","example":"38.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.0 for base rate, 1.5 for time-and-a-half).","example":"1.0"},"hours":{"type":"number","title":"Hours","example":"7.6"},"value":{"type":"number","title":"Value","description":"Alias for hours to allow legacy payloads providing 'value'.","example":"7.6"},"leave_loading_amount":{"type":"number","title":"Leave Loading Amount","description":"Extra dollar loading applied to the leave (if any).","example":"3.80"}},"type":"object","required":["name","leave_type","hours"],"title":"LeaveBase","description":"Core attributes that describe a single leave line or entitlement."},"LeaveOut":{"properties":{"name":{"type":"string","title":"Name","example":"Annual Leave"},"leave_type":{"type":"string","title":"Leave Type","example":"annual"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this leave (e.g., hourly rate). Optional if using `multiplier` or to default to the employee's pay_rate_per_hour.","example":"38.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.0 for base rate, 1.5 for time-and-a-half).","example":"1.0"},"hours":{"type":"number","title":"Hours","example":"7.6"},"value":{"type":"number","title":"Value","description":"Alias for hours to allow legacy payloads providing 'value'.","example":"7.6"},"leave_loading_amount":{"type":"number","title":"Leave Loading Amount","description":"Extra dollar loading applied to the leave (if any).","example":"3.80"},"id":{"type":"integer","title":"Id"},"amount":{"type":"number","title":"Amount","description":"The total amount for this leave row, calculated as rate * time_taken.","example":"288.80"}},"type":"object","required":["name","leave_type","hours","id","amount"],"title":"LeaveOut","description":"What the API returns after create / read."},"LeaveUpdate":{"properties":{"name":{"type":"string","title":"Name","example":"Annual Leave"},"leave_type":{"type":"string","title":"Leave Type","example":"annual"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this leave (e.g., hourly rate). Optional if using `multiplier` or to default to the employee's pay_rate_per_hour.","example":"38.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.0 for base rate, 1.5 for time-and-a-half).","example":"1.0"},"hours":{"type":"number","title":"Hours","example":"7.6"},"value":{"type":"number","title":"Value","description":"Alias for hours to allow legacy payloads providing 'value'.","example":"7.6"},"leave_loading_amount":{"type":"number","title":"Leave Loading Amount","description":"Extra dollar loading applied to the leave (if any).","example":"3.80"},"id":{"type":"integer","title":"Id","example":42}},"type":"object","required":["name","leave_type","hours","id"],"title":"LeaveUpdate","description":"Full payload for a PATCH/PUT – requires the primary-key `id`."},"NewWorkersCompensationPay":{"properties":{"employee_id":{"type":"integer","title":"Employee Id","description":"The internal unique identifier for the employee.","example":1234},"employee_number":{"type":"string","title":"Employee Number","description":"The external unique identifier (employee number) for the employee.","example":"EMP001"},"workers_compensation_amount":{"type":"number","title":"Workers Compensation Amount","description":"The amount of workers' compensation to be paid.","example":"1500.00"},"tax":{"type":"number","title":"Tax","description":"The tax amount associated with the workers' compensation payment.","example":"300.00"}},"type":"object","required":["workers_compensation_amount","tax"],"title":"NewWorkersCompensationPay"},"Pay":{"properties":{"id":{"type":"integer","title":"Id","description":"The unique identifier of the pay.","example":2001},"employee_id":{"type":"integer","title":"Employee Id","description":"The internal unique database identifier of the employee.","example":1234},"employee_number":{"type":"string","title":"Employee Number","description":"The user-controlled unique employee payroll number/code.","example":"EMP001"},"pay_run_id":{"type":"integer","title":"Pay Run Id","description":"The unique identifier of the pay run associated with this pay.","example":1001},"processed_date":{"type":"string","format":"date","title":"Processed Date","description":"The date when the pay was processed.","example":"2023-01-31"},"pay_run_end_date":{"type":"string","format":"date","title":"Pay Run End Date","description":"The end date of the pay run period.","example":"2023-01-31"},"employee_format_name_shorter":{"type":"string","title":"Employee Format Name Shorter","description":"The formatted short name of the employee (e.g., 'J. Doe').","example":"J. Doe"},"employee_last_name":{"type":"string","title":"Employee Last Name","description":"The last name of the employee.","example":"Doe"},"employee_first_name":{"type":"string","title":"Employee First Name","description":"The first name of the employee.","example":"John"},"employee_email_address":{"type":"string","title":"Employee Email Address","description":"The email address of the employee.","example":"john.doe@example.com"},"status":{"type":"string","title":"Status","description":"The status of the pay (e.g., 'processed', 'pending').","example":"processed"},"gross":{"type":"number","title":"Gross","description":"The gross amount of the pay.","example":"5000.00"},"tax":{"type":"number","title":"Tax","description":"The tax amount deducted from the pay.","example":"1000.00"},"net":{"type":"number","title":"Net","description":"The net amount of the pay after deductions.","example":"4000.00"},"super":{"type":"number","title":"Super","description":"The superannuation amount associated with the pay.","example":"500.00"},"total_workers_compensation":{"type":"number","title":"Total Workers Compensation","description":"The total workers' compensation amount.","example":"200.00"},"resc_super_amount":{"type":"number","title":"Resc Super Amount","description":"The Reportable Employer Super Contributions (RESC) amount.","example":"150.00"},"compulsory_super_amount":{"type":"number","title":"Compulsory Super Amount","description":"The compulsory superannuation amount.","example":"350.00"},"format_name":{"type":"string","title":"Format Name","description":"The formatted full name of the employee (e.g., 'John Doe').","example":"John Doe"},"is_complete":{"type":"boolean","title":"Is Complete","description":"Indicates whether the pay process is complete.","example":true},"stp_status":{"type":"string","title":"Stp Status","description":"The Single Touch Payroll (STP) status.","example":"submitted"},"stp_service_action":{"type":"string","title":"Stp Service Action","description":"The STP service action taken.","example":"lodged"},"stp_timestamp":{"type":"string","format":"date","title":"Stp Timestamp","description":"The timestamp when the STP action was performed.","example":"2023-01-31"},"hours":{"items":{"$ref":"#/components/schemas/HoursOut"},"type":"array","title":"Hours","description":"A list of pay hours associated with this pay, including description, rate, units, overtime status, and value.","example":[{"id":1,"description":"Ordinary Time","rate":"30.00","units":"hours","is_overtime":false,"value":"37.5","pay_amount":"1125.00"},{"id":2,"description":"Saturday Overtime","rate":"45.00","units":"hours","is_overtime":true,"value":"5.0","pay_amount":"225.00"}]},"leave":{"items":{"$ref":"#/components/schemas/LeaveOut"},"type":"array","title":"Leave","description":"A list of leave hours associated with this pay, including description, leave type, rate, value, and optional leave loading amount. Leave types can include: HOLIDAY, SICK, LONG SERVICE, PAID PARENTAL, EMPLOYER FUNDED PAID PARENTAL, WORKERS COMP, COMPASSIONATE, ANCILLARY, PAID PUBLIC HOLIDAY, UNPAID, OTHER.","example":[{"id":10,"name":"Annual Leave","leave_type":"HOLIDAY","rate":"38.00","hours":"7.6","leave_loading_amount":"3.80","amount":"288.80"}]},"leave_balance_rows":{"items":{"$ref":"#/components/schemas/LeaveBalanceRow"},"type":"array","title":"Leave Balance Rows","description":"A list of leave balance rows associated with this pay, showing the employee's leave balances.","example":[{"leave_type":"annual","name":"Annual Leave","hours":"120.00"},{"leave_type":"sick","name":"Personal Leave","hours":"80.00"}]},"allowances":{"items":{"$ref":"#/components/schemas/PayAllowance"},"type":"array","title":"Allowances","description":"A list of allowances included in this pay, each with a description and amount.","example":[{"description":"Tool Allowance","amount":"50.00","is_taxable":true,"is_itemised":false,"is_included_in_super_calculations":true,"allowance_category":"TD"}]},"deductions":{"items":{"$ref":"#/components/schemas/PayDeduction"},"type":"array","title":"Deductions","description":"A list of deductions applied to this pay, each with a description and amount.","example":[{"description":"Union Fees","amount":"25.00","is_included_in_super_calculations":false}]},"bonuses":{"items":{"$ref":"#/components/schemas/PayBonus"},"type":"array","title":"Bonuses","description":"A list of bonuses included in this pay, each with a description and amount.","example":[{"description":"Performance Bonus","amount":"500.00","start_date":"2023-01-01","end_date":"2023-01-31","is_included_in_super_calculations":true,"is_directors_fees":false,"is_return_to_work":false,"tax_method":"NORMAL_EARNINGS"}]},"pay_sacrifices":{"items":{"$ref":"#/components/schemas/PaySacrifice"},"type":"array","title":"Pay Sacrifices","description":"A list of salary sacrifices associated with this pay, each with an amount.","example":[{"amount":"150.00","description":"Car Salary Sacrifice","is_included_in_super_calculations":true,"is_super":true}]},"pay_department":{"type":"string","maxLength":32,"minLength":0,"title":"Pay Department","description":"Single department name applied to this pay and all of its items.","example":"Engineering"},"back_payments":{"items":{"$ref":"#/components/schemas/BackPayments"},"type":"array","title":"Back Payments","description":"A list of back payments associated with this pay.","example":[{"description":"Back Pay Adjustment","amount":"200.00","stp_category":"ordinary_time_earnings","tax_method":"NORMAL_EARNINGS","start_date":"2023-01-01","end_date":"2023-01-31"}]}},"type":"object","required":["status","hours","leave","leave_balance_rows","allowances","deductions"],"title":"Pay"},"PayAllowance":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the allowance.\nRequired when creating or matching an allowance.","example":"Tool Allowance"},"amount":{"type":"number","title":"Amount","description":"The dollar amount for the allowance.\nRequired when creating a new allowance (or if no allowance matches the description). May be omitted when reusing an existing allowance matched by description.","example":"50.00"},"allowance_category":{"type":"string","title":"Allowance Category","description":"Required allowance category code (e.g. 'TD' for Tools). Only codes are accepted. Codes are required when creating a new allowance; you may omit this when reusing an existing allowance that already has a code. Codes: AD, CD, KN, LD, MD, OD, QN, RD, TD. (Labels for reference: Cents per KM, Award Transport, Laundry, Overtime Meals, Domestic & Overseas Travel/Accommodation, Tools, Tasks, Qualifications/Certificates, Other)","example":"TD"},"is_taxable":{"type":"boolean","title":"Is Taxable","description":"Whether the allowance is taxable.\n- Defaults to True when creating a new employee allowance.\n","example":true},"is_itemised":{"type":"boolean","title":"Is Itemised","description":"Whether the allowance is itemised on the pay.\n- Defaults to False when creating a new employee allowance.\n","example":false},"is_included_in_super_calculations":{"type":"boolean","title":"Is Included In Super Calculations","description":"Whether this allowance is included in superannuation calculations.\n- Defaults to True when creating a new employee allowance.\n","example":true}},"additionalProperties":false,"type":"object","required":["description"],"title":"PayAllowance"},"PayBonus":{"properties":{"amount":{"type":"number","title":"Amount","description":"The dollar amount for the bonus.\nRequired when creating a new bonus (or if no bonus matches the description). May be omitted when reusing an existing bonus matched by description.","example":"100.00"},"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the bonus.\nRequired when creating or matching a bonus.","example":"Performance Bonus"},"start_date":{"type":"string","format":"date","title":"Start Date","description":"The start date for the bonus period. Required when tax_method uses a specific date range.","example":"2023-01-01"},"end_date":{"type":"string","format":"date","title":"End Date","description":"The end date for the bonus period. Required when tax_method uses a specific date range.","example":"2023-01-31"},"is_included_in_super_calculations":{"type":"boolean","title":"Is Included In Super Calculations","description":"Whether this bonus is included in superannuation calculations.\n- Defaults to True when creating a new employee bonus.\n","example":true},"is_directors_fees":{"type":"boolean","title":"Is Directors Fees","description":"Indicates if the bonus is for director's fees.","example":false},"is_return_to_work":{"type":"boolean","title":"Is Return To Work","description":"Indicates if the bonus is a return to work bonus.","example":false},"tax_method":{"type":"string","title":"Tax Method","description":"The tax calculation method for the bonus. Provide the *code* (e.g. 'NORMAL_EARNINGS'); docs display the readable labels. Allowed codes with labels: NORMAL_EARNINGS = As normal earnings; SPREAD_OVER_SPECIFIC_RANGE = Use date range; SPREAD_OVER_FINANCIAL_YEAR = Over this financial year; METHOD_A_WHOLE_YEAR = Method A (Whole Year); METHOD_A_SPECIFIC_RANGE = Method A (Use Date Range); METHOD_B1 = Method B(i)(Use Date Range); METHOD_B2 = Method B(ii)(Whole Year).","example":"NORMAL_EARNINGS"}},"additionalProperties":false,"type":"object","required":["description"],"title":"PayBonus"},"PayCreate":{"properties":{"employee_id":{"type":"integer","title":"Employee Id","description":"The internal Lightning Payroll (LP) unique ID for the employee. Use this if `identifier_type=employee_id`.","example":1234},"employee_number":{"type":"string","maxLength":32,"minLength":0,"title":"Employee Number","description":"The external user-controlled employee number. Required only if `identifier_type=employee_number`. Must be unique across ALL companies.","example":"EMP001"},"hours":{"items":{"$ref":"#/components/schemas/PayHours"},"type":"array","title":"Hours","description":"Optional list of pay hour items (may be empty), including description, rate, multiplier, or pay-rate mapping keys (`rate_reference` / `rate_description`), units, overtime status, and value.","example":[{"description":"Ordinary Time","rate":"30.00","units":"hours","is_overtime":false,"value":"37.5"},{"description":"Saturday Overtime","multiplier":"1.5","units":"hours","is_overtime":true,"value":"5.0"},{"description":"Ordinary Time","rate_reference":"system:ordinary_time","units":"hours","value":"7.6"}]},"leave":{"items":{"$ref":"#/components/schemas/Leave"},"type":"array","title":"Leave","description":"Optional list of leave items (may be empty), including description, leave type, rate/multiplier, value, date, and optional leave loading amount. `rate` is optional; when omitted the employee's pay_rate_per_hour is used.","example":[{"description":"Annual Leave","leave_type":"HOLIDAY","multiplier":"1.0","value":"7.6","leave_loading_amount":"3.80"}]},"pay_department":{"type":"string","maxLength":32,"minLength":0,"title":"Pay Department","description":"Department/Cost-centre name or code to be applied to all items in this entire pay. ","example":"Engineering"},"allowances":{"items":{"$ref":"#/components/schemas/PayAllowance"},"type":"array","title":"Allowances","description":"A list of allowances to be included in the pay.\n\nUsage rules:\n- IDs are not accepted; providing an `id` will raise a 400 Bad Request because it's a forbidden field. Match allowances by `description` instead.\n- The API will attempt to find an existing allowance for the employee with the same `description`.\n  - If a match is found, that allowance will be reused and creation-only required fields can be omitted (e.g. `amount`, `allowance_category`—existing values are reused).\n  - If no match is found, a NEW allowance will be created for this employee. In this case, `description`, `amount` and `allowance_category` (code) are REQUIRED.\n    • `allowance_category` must be one of the codes: AD, CD, KN, LD, MD, OD, QN, RD, TD (labels for reference: Cents per KM, Award Transport, Laundry, Overtime Meals, Domestic & Overseas Travel/Accommodation, Tools, Tasks, Qualifications/Certificates, Other). Only codes are accepted for new allowances.     • `is_taxable` defaults to True if not supplied.\n    • `is_itemised` defaults to False if not supplied.\n    • `is_included_in_super_calculations` defaults to True if not supplied.","example":[{"description":"Tool Allowance","amount":"50.00","allowance_category":"TD"},{"description":"Car Allowance","amount":"200.00","is_taxable":true,"is_itemised":true,"is_included_in_super_calculations":false,"allowance_category":"RD"}]},"deductions":{"items":{"$ref":"#/components/schemas/PayDeduction"},"type":"array","title":"Deductions","description":"A list of deductions to be included in the pay.\n\nUsage rules:\n- IDs are not accepted; providing an `id` will raise a 400 Bad Request because it's a forbidden field. Match deductions by `description` instead.\n- The API will attempt to find an existing deduction for the employee with the same `description`.\n  - If a match is found, that deduction will be reused and creation-only required fields can be omitted (e.g. `amount`, `classification`—existing values are reused).\n  - If no match is found, a NEW deduction will be created for this employee. In this case, `description`, `amount`, and `classification` (code) are REQUIRED.\n    • `classification` must be one of: CHARITY, CHILD_SUPPORT_DEDUCTION, CHILD_SUPPORT_GARNISHEE, NORMAL, UNION_FEES. Only codes are accepted for new deductions.\n    • `is_included_in_super_calculations` defaults to True if not supplied.","example":[{"description":"Union Fees","amount":"25.00","classification":"UNION_FEES"},{"description":"Health Insurance","amount":"100.00","classification":"NORMAL","is_included_in_super_calculations":false}]},"bonuses":{"items":{"$ref":"#/components/schemas/PayBonus"},"type":"array","title":"Bonuses","description":"A list of bonuses to be included in the pay.\n\nUsage rules:\n- IDs are not accepted; providing an `id` will raise a 400 Bad Request because it's a forbidden field. Match bonuses by `description` instead.\n- The API will attempt to find an existing bonus for the employee with the same `description`.\n  - If a match is found, that bonus will be reused and creation-only required fields can be omitted (e.g. `amount`, `tax_method`, and any range dates—existing values are reused).\n  - If no match is found, a NEW bonus will be created for this employee. In this case, `description`, `amount`, and `tax_method` are REQUIRED.\n    • `tax_method` must be one of: NORMAL_EARNINGS = As normal earnings; SPREAD_OVER_SPECIFIC_RANGE = Use date range; SPREAD_OVER_FINANCIAL_YEAR = Over this financial year; METHOD_A_WHOLE_YEAR = Method A (Whole Year); METHOD_A_SPECIFIC_RANGE = Method A (Use Date Range); METHOD_B1 = Method B(i)(Use Date Range); METHOD_B2 = Method B(ii)(Whole Year) (send the *code*, docs show the labels). Defaults to 'NORMAL_EARNINGS' if not supplied.\n    • If `tax_method` is a date-range method, `start_date` and `end_date` are REQUIRED.\n    • `is_included_in_super_calculations` defaults to True if not supplied.\n    • `is_directors_fees` defaults to False if not supplied.\n    • `is_return_to_work` defaults to False if not supplied.","example":[{"description":"Performance Bonus","amount":"500.00","tax_method":"NORMAL_EARNINGS"},{"description":"Director's Fee","amount":"1000.00","tax_method":"SPREAD_OVER_SPECIFIC_RANGE","start_date":"2023-01-01","end_date":"2023-01-31","is_included_in_super_calculations":false,"is_directors_fees":true,"is_return_to_work":false}]},"pay_sacrifices":{"items":{"$ref":"#/components/schemas/PaySacrifice"},"type":"array","title":"Pay Sacrifices","description":"A list of pay sacrifices to be included in the pay.\n\nUsage rules:\n- IDs are not accepted; providing an `id` will raise a 400 Bad Request because it's a forbidden field. Match pay sacrifices by `description` instead.\n- The API will attempt to find an existing pay sacrifice for the employee with the same `description`.\n  - If a match is found, that pay sacrifice will be reused and creation-only required fields can be omitted (e.g. `amount`—existing values are reused).\n  - If no match is found, a NEW pay sacrifice will be created for this employee. In this case,    `description` and `amount` are REQUIRED.\n    • `is_included_in_super_calculations` defaults to True if not supplied.\n    • `is_super` defaults to True if not supplied.","example":[{"description":"Laptop Salary Sacrifice"},{"description":"Car Salary Sacrifice","amount":"300.00","is_included_in_super_calculations":false,"is_super":true}]},"back_payments":{"items":{"$ref":"#/components/schemas/BackPayments"},"type":"array","title":"Back Payments","description":"A list of back payments to be included in the pay.\n\nUsage rules:\n- IDs are not accepted; providing an `id` will raise a 400 Bad Request because it's a forbidden field. Match back payments by `description` and `amount` instead.\n- The API will attempt to find an existing back payment for the employee with the same `description` and `amount`.\n  - If a match is found, that back payment will be reused.\n  - If no match is found, a NEW back payment will be created for this employee. In this case, `description`, `amount`, and `stp_category` (code, underscored) are REQUIRED.\n    • `stp_category` must be one of: BONUS_COMMISSION_NON_DIRECTOR_S_FEES, DIRECTOR_S_FEES, GROSS, ITEMISED_ALLOWANCES, LEAVE, OVERTIME, UNCLASSIFIED. Only codes are accepted for new back payments.\n    • `tax_method`, `start_date`, and `end_date` are optional.","example":[{"description":"Back Pay Adjustment","amount":"200.00","stp_category":"GROSS","tax_method":"NORMAL_EARNINGS","start_date":"2023-01-01","end_date":"2023-01-31"}]}},"type":"object","title":"PayCreate"},"PayDeduction":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the deduction.\nRequired when creating or matching a deduction.","example":"Union Fees"},"amount":{"type":"number","title":"Amount","description":"The dollar amount for the deduction.\nRequired when creating a new deduction (or if no deduction matches the description). May be omitted when reusing an existing deduction matched by description.","example":"25.00"},"classification":{"type":"string","title":"Classification","description":"Deduction classification code (use underscores). Codes are required when creating a new deduction; you may omit when reusing an existing deduction. Codes: CHARITY, CHILD_SUPPORT_DEDUCTION, CHILD_SUPPORT_GARNISHEE, NORMAL, UNION_FEES.","example":"UNION_FEES"},"is_included_in_super_calculations":{"type":"boolean","title":"Is Included In Super Calculations","description":"Whether this deduction affects superannuation calculations.\n- Defaults to True when creating a new deduction.\n","example":false}},"additionalProperties":false,"type":"object","required":["description"],"title":"PayDeduction"},"PayHours":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","description":"A brief description of the pay hours.","example":"Regular Hours, KMs, Overtime, Saturday, etc."},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for the pay hours row, such as hourly rate, per kilometre rate, etc. Provide either `rate` or `multiplier`.","example":"30.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.5 for time-and-a-half, 2.0 for double time).","example":"1.5"},"rate_reference":{"type":"string","title":"Rate Reference","description":"Optional stable pay-rate reference from `GET /api/employees/{employee_id}/pay-rates` (for example `system:ordinary_time`, `employee:42`, `company:73`). Use as an alternative to sending a raw `rate`.","example":"company:73"},"rate_description":{"type":"string","maxLength":60,"minLength":0,"title":"Rate Description","description":"Optional pay-rate description to resolve a rate by description for this employee. Use when you do not send `rate`. If multiple rates share the same description, the API will return a validation error and require `rate_reference`.","example":"Ordinary Time"},"units":{"type":"string","maxLength":32,"minLength":0,"title":"Units","description":"The type of units for the pay hours row, such as hours, kilometres, buckets, etc.","example":"hours"},"is_overtime":{"type":"boolean","title":"Is Overtime","description":"Indicates whether the hours are overtime hours, which affects super guarantee calculations.","default":false,"example":false},"value":{"type":"number","title":"Value","description":"The number of units for the pay hours row, such as hours worked, kilometres driven, etc.","example":"37.5"}},"type":"object","required":["description","units","value"],"title":"PayHours"},"PayHoursBase":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","example":"Ordinary Time"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this hours row. Provide either `rate` or `multiplier`.","example":"30.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.5 for time-and-a-half, 2.0 for double time).","example":"1.5"},"rate_reference":{"type":"string","title":"Rate Reference","description":"Optional stable pay-rate reference from `GET /api/employees/{employee_id}/pay-rates` (for example `system:ordinary_time`, `employee:42`, `company:73`). Use as an alternative to sending a raw `rate`.","example":"employee:42"},"rate_description":{"type":"string","maxLength":60,"minLength":0,"title":"Rate Description","description":"Optional pay-rate description to resolve a rate by description for this employee. Use when you do not send `rate`. If multiple rates share the same description, the API will return a validation error and require `rate_reference`.","example":"Ordinary Time"},"units":{"type":"string","maxLength":32,"minLength":0,"title":"Units","example":"hours"},"is_overtime":{"type":"boolean","title":"Is Overtime","default":false,"example":false},"value":{"type":"number","title":"Value","example":"37.5"}},"type":"object","required":["description","units","value"],"title":"PayHoursBase"},"PayHoursUpdate":{"properties":{"description":{"type":"string","maxLength":60,"minLength":1,"title":"Description","example":"Ordinary Time"},"rate":{"type":"number","title":"Rate","description":"The dollar amount per unit for this hours row. Provide either `rate` or `multiplier`.","example":"30.00"},"multiplier":{"type":"number","title":"Multiplier","description":"Alternative to `rate`. Multiplies the employee's pay_rate_per_hour (e.g., 1.5 for time-and-a-half, 2.0 for double time).","example":"1.5"},"rate_reference":{"type":"string","title":"Rate Reference","description":"Optional stable pay-rate reference from `GET /api/employees/{employee_id}/pay-rates` (for example `system:ordinary_time`, `employee:42`, `company:73`). Use as an alternative to sending a raw `rate`.","example":"employee:42"},"rate_description":{"type":"string","maxLength":60,"minLength":0,"title":"Rate Description","description":"Optional pay-rate description to resolve a rate by description for this employee. Use when you do not send `rate`. If multiple rates share the same description, the API will return a validation error and require `rate_reference`.","example":"Ordinary Time"},"units":{"type":"string","maxLength":32,"minLength":0,"title":"Units","example":"hours"},"is_overtime":{"type":"boolean","title":"Is Overtime","default":false,"example":false},"value":{"type":"number","title":"Value","example":"37.5"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["description","units","value","id"],"title":"PayHoursUpdate"},"PayRunPays":{"properties":{"pay_run_id":{"type":"integer","title":"Pay Run Id","description":"The unique identifier of the pay run.","example":1001},"pay_run_end_date":{"type":"string","format":"date","title":"Pay Run End Date","description":"The end date of the pay run period.","example":"2023-01-31"},"pay_period":{"type":"string","title":"Pay Period","description":"The pay period frequency associated with the pay run (WEEKLY, FORTNIGHTLY, MONTHLY).","example":"WEEKLY"},"pays":{"items":{"$ref":"#/components/schemas/Pay"},"type":"array","minItems":0,"title":"Pays","description":"A list of basic pay information associated with the pay run."}},"type":"object","required":["pay_run_id","pay_run_end_date","pay_period","pays"],"title":"PayRunPays"},"PaySacrifice":{"properties":{"amount":{"type":"number","title":"Amount","description":"The dollar amount for the pay sacrifice.\nRequired when creating a new pay sacrifice (or if no pay sacrifice matches the description). May be omitted when reusing an existing pay sacrifice matched by description.","example":"150.00"},"description":{"type":"string","maxLength":60,"minLength":0,"title":"Description","description":"A brief description of the pay sacrifice.\nRequired when creating or matching a pay sacrifice.","example":"Salary Sacrifice for Car"},"is_included_in_super_calculations":{"type":"boolean","title":"Is Included In Super Calculations","description":"Whether this pay sacrifice is included in superannuation calculations.\n- Defaults to True when creating a new employee pay sacrifice.\n","example":true},"is_super":{"type":"boolean","title":"Is Super","description":"Indicates if the pay sacrifice is for superannuation.","example":true}},"additionalProperties":false,"type":"object","required":["description"],"title":"PaySacrifice"},"PayUpdate":{"properties":{"hours":{"items":{"anyOf":[{"$ref":"#/components/schemas/PayHoursUpdate"},{"$ref":"#/components/schemas/PayHoursBase"}]},"type":"array","title":"Hours"},"leave":{"items":{"anyOf":[{"$ref":"#/components/schemas/LeaveUpdate"},{"$ref":"#/components/schemas/LeaveBase"}]},"type":"array","title":"Leave"},"leave_balance_rows":{"items":{"$ref":"#/components/schemas/LeaveBalanceRow"},"type":"array","title":"Leave Balance Rows"}},"type":"object","required":["hours","leave","leave_balance_rows"],"title":"PayUpdate"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token","description":"JWT access token, signed with our system key","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.…"},"token_type":{"type":"string","enum":["Bearer"],"title":"Token Type","description":"Always **Bearer** for Lightning Payroll APIs","example":"Bearer"},"expires_in":{"type":"integer","title":"Expires In","description":"Lifetime of the `access_token` in **seconds** (default: 3600 = 1 hour)","example":3600},"refresh_token":{"type":"string","title":"Refresh Token","description":"New opaque refresh token string (store this securely – it is shown only once)","example":"v5G3sbpZBqC4mfA5fEUvVxv8povwU9Dg82kUn4qB6-M"},"refresh_expires_in":{"type":"integer","title":"Refresh Expires In","description":"Lifetime of the `refresh_token` in **seconds** (default: 2 592 000 = 30 days)","example":2592000}},"type":"object","required":["access_token","token_type","expires_in","refresh_token","refresh_expires_in"],"title":"TokenResponse","description":"Standard OAuth 2.0 token payload returned by this endpoint."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"login"}}},"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Admin"},{"name":"API Health"},{"name":"Authentication"},{"name":"Company"},{"name":"Employee"},{"name":"Pay Runs"},{"name":"Pays"},{"name":"Public"},{"name":"Single Touch"}]}