openapi: 3.0.0 info: version: "3.0.3" title: 'Xero Payroll UK' description: 'This is the Xero Payroll API for orgs in the UK region.' termsOfService: "https://developer.xero.com/xero-developer-platform-terms-conditions/" contact: name: "Xero Platform Team" email: "api@xero.com" url: "https://developer.xero.com" tags: - name: PayrollUk servers: - description: Xero Payroll UK API url: https://api.xero.com/payroll.xro/2.0 paths: /Employees: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployees x-hasPayrollUkProblem: true summary: Retrieves employees parameters: - in: query name: filter description: Filter by first name, lastname, and/or whether they are an off-payroll worker schema: type: string example: firstName==John,lastName==Smith,isOffPayrollWorker==false - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer example: 5 responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Employees' example: '{ "id":"1a14e877-773d-4cd3-b253-f559a4b4be65", "providerName":"provider-name", "dateTimeUTC":"2020-03-24T18:43:43.860852", "httpStatusCode":"OK", "pagination":{ "page":1, "pageSize":100, "pageCount":1, "itemCount":3 }, "problem":null, "employees":[ { "employeeID":"aad6b292-7b94-408b-93f6-e489867e3fb0", "firstName":"Jack", "lastName":"Allan", "dateOfBirth":"1987-12-23T00:00:00", "gender":"M", "email":null, "phoneNumber":null, "startDate":"2020-02-03T00:00:00", "address":{ "addressLine1":"171 Midsummer Boulevard", "addressLine2":null, "city":"Milton Keynes", "county":null, "countryName":"UNITED KINGDOM", "postCode":"MK9 1EB" }, "payrollCalendarID":"216d80e6-af55-47b1-b718-9457c3f5d2fe", "updatedDateUTC":"2020-02-13T16:23:31", "createdDateUTC":"2020-02-10T10:00:24", "endDate":null, "isOffPayrollWorker":false }, { "employeeID":"67e545d4-e8a6-4f98-9f63-85c2383dfe12", "firstName":"Charlotte", "lastName":"Danes", "dateOfBirth":"1993-10-24T00:00:00", "gender":"F", "email":null, "phoneNumber":null, "startDate":"2020-02-03T00:00:00", "address":{ "addressLine1":"171 Midsummer Blvd", "addressLine2":null, "city":"Milton Keynes", "county":null, "countryName":"UNITED KINGDOM", "postCode":"MK9 1EB" }, "payrollCalendarID":"5e813d9e-949c-461f-8a89-e9ee8955a254", "updatedDateUTC":"2020-02-13T16:48:51", "createdDateUTC":"2020-02-13T16:32:12", "endDate":null, "isOffPayrollWorker":false }, { "employeeID":"eb4a0c3b-b0d6-440d-bccc-348b7dc92321", "firstName":"Chelsea", "lastName":"Serati", "dateOfBirth":"1976-02-16T00:00:00", "gender":"F", "email":null, "phoneNumber":null, "startDate":"2019-07-02T00:00:00", "address":{ "addressLine1":"171 Midsummer Boulevard", "addressLine2":null, "city":"Milton Keynes", "county":null, "countryName":"UNITED KINGDOM", "postCode":"MK9 1EB" }, "payrollCalendarID":"d45bc68f-59d6-4000-929d-1058dcfa79e1", "updatedDateUTC":"2020-02-13T16:53:12", "createdDateUTC":"2020-02-13T16:46:41", "endDate":null, "isOffPayrollWorker":false } ] }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployee x-hasPayrollUkProblem: true x-example: - dateOfBirthValue: key: dateOfBirth keyPascal: DateOfBirth keySnake: date_of_birth is_date: true object: employee java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2000, Month.OCTOBER, 28)" java: "LocalDate.of(2000, Month.OCTOBER, 28)" csharp: "new DateTime(2000, 10, 10)" php: "new DateTime('2000-10-28')" node: "'2000-10-28'" python: "dateutil.parser.parse('2000-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - Address: key: address keyPascal: Address keySnake: address is_object: true - addressLine1: key: addressLine1 keyPascal: AddressLine1 keySnake: address_line_1 default: 123 Test st object: address - city: key: city keyPascal: City keySnake: city object: address default: Rangiora - postCode: key: postCode keyPascal: PostCode keySnake: post_code object: address default: 7400 - countryName: key: countryName keyPascal: CountryName keySnake: country_name default: UNITED KINGDOM object: address is_last: true - employee: key: employee keyPascal: Employee is_object: true - firstName: key: firstName keyPascal: FirstName keySnake: first_name default: "Adam" object: employee - lastName: key: lastName keyPascal: LastName keySnake: last_name default: "Adamson" object: employee - dateOfBirth: is_variable: true nonString: true key: dateOfBirth keyPascal: DateOfBirth keySnake: date_of_birth default: dateOfBirth python: date_of_birth ruby: date_of_birth object: employee - setHomeAddress: is_last: true is_variable: true nonString: true key: address keyPascal: Address default: address python: address ruby: address object: employee summary: Creates employees parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeObject' example: '{ "id":"660ff206-fc4a-42f5-8f7d-de886bc2a3d3", "providerName":"provider-name", "dateTimeUTC":"2020-03-25T03:12:10.406476", "httpStatusCode":"OK", "pagination":null, "problem":null, "employee":{ "employeeID":"316146c7-26a4-4065-b9bd-346d0557ea96", "title":"Mr", "firstName":"Mike", "lastName":"Fancy", "dateOfBirth":"1999-01-01T00:00:00", "gender":"M", "email":"mike@starkindustries.com", "phoneNumber":null, "startDate":null, "nationalInsuranceNumber":null, "isOffPayrollWorker": false, "address": { "addressLine1": "171 Midsummer", "addressLine2":null, "city": "Milton Keyness", "county":null, "countryName":null, "postCode": "MK9 1EB" } "payrollCalendarID":null, "updatedDateUTC":"2020-03-25T03:12:10", "createdDateUTC":"2020-03-25T03:12:10", "niCategory":null, "employeeNumber":null, "endDate":null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Employee' example: '{ "title":"Mr", "firstName":"Mike", "lastName":"Fancy", "dateOfBirth":"1999-01-01T00:00:00", "gender":"M", "email":"mike@starkindustries.com", "isOffPayrollWorker": false, "address": { "addressLine1": "171 Midsummer", "city": "Milton Keyness", "postCode": "MK9 1EB" } }' /Employees/{EmployeeID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployee x-hasPayrollUkProblem: true summary: Retrieves specific employees by using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeObject' example: '{ "id": "9414291b-a8c6-08fa-b165-9b30b1e6aab5", "providerName": "!YLT5Y", "dateTimeUTC": "2018-04-09T05:15:18.1011141", "httpStatusCode": "OK", "pagination": null, "problem": null, "employee": { "employeeID": "d17e008e-3381-45c0-b50c-2fab7757e503", "title": "Mr.", "firstName": "Edgar", "lastName": "Allan Po", "dateOfBirth": "1985-03-24T00:00:00", "gender": "M", "email": "tester1@gmail.com", "phoneNumber": "0400123456", "nationalInsuranceNumber": null, "isOffPayrollWorker": false, "address": { "addressLine1": "171 Midsummer", "addressLine2": null, "city": "Milton Keyness", "county": null, "countryName": null, "postCode": "MK9 1EB" }, "payrollCalendarID": null, "updatedDateUTC": "2017-05-12T10:00:24", "createdDateUTC": "2017-05-12T10:00:24", "endDate": null } }' put: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: updateEmployee x-hasPayrollUkProblem: true summary: Updates a specific employee's detail x-example: - dateOfBirthValue: key: dateOfBirth keyPascal: DateOfBirth keySnake: date_of_birth is_date: true object: employee java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2000, Month.OCTOBER, 28)" java: "LocalDate.of(2000, Month.OCTOBER, 28)" csharp: "new DateTime(2000, 10, 10)" php: "new DateTime('2000-10-28')" node: "'2000-10-28'" python: "dateutil.parser.parse('2000-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - Address: key: address keyPascal: Address keySnake: address is_object: true - addressLine1: key: addressLine1 keyPascal: AddressLine1 keySnake: address_line_1 default: 123 Test st object: address - city: key: city keyPascal: City keySnake: city object: address default: Rangiora - postCode: key: postCode keyPascal: PostCode keySnake: post_code object: address default: 7400 - countryName: key: countryName keyPascal: CountryName keySnake: country_name default: NEW ZEALAND object: address is_last: true - employee: key: employee keyPascal: Employee is_object: true - firstName: key: firstName keyPascal: FirstName keySnake: first_name default: "Adam" object: employee - lastName: key: lastName keyPascal: LastName keySnake: last_name default: "Adamson" object: employee - dateOfBirth: is_variable: true nonString: true key: dateOfBirth keyPascal: DateOfBirth keySnake: date_of_birth default: dateOfBirth python: date_of_birth ruby: date_of_birth object: employee - setHomeAddress: is_last: true is_variable: true nonString: true key: address keyPascal: Address default: address python: address ruby: address object: employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: successful response content: application/json: schema: $ref: '#/components/schemas/EmployeeObject' example: '{ "id": "9414291b-a8c6-08fa-b165-9b30b1e6aab5", "providerName": "!YLT5Y", "dateTimeUTC": "2018-04-09T05:10:51.3504472", "httpStatusCode": "OK", "pagination": null, "problem": null, "employee": { "employeeID": "07f0f9fc-cc95-46ac-9a8a-aa03779f2bde", "title": "Mr.", "firstName": "TestDataUK", "lastName": "Tester", "dateOfBirth": "1992-11-22T00:00:00", "gender": "M", "email": "tester@gmail.com", "phoneNumber": "0400123456", "startDate": null, "nationalInsuranceNumber": null, "isOffPayrollWorker": false, "address": { "addressLine1": "171 Midsummer", "addressLine2":null, "city": "Milton Keyness", "county":null, "countryName":null, "postCode": "MK9 1EB" } "payrollCalendarID": null, "updatedDateUTC": "2017-06-27T04:56:03", "createdDateUTC": "2017-05-12T10:00:24", "endDate": null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Employee' example: '{ "title": "Mr.", "firstName": "TestDataUK", "lastName": "Tester", "dateOfBirth": "1992-11-22T00:00:00", "gender": "M", "email": "tester@gmail.com", "phoneNumber": "0400123456", "isOffPayrollWorker": false, "address": { "addressLine1": "171 Midsummer", "city": "Milton Keyness", "postCode": "MK9 1EB" } }' /Employees/{EmployeeID}/Employment: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployment x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - employment: key: employment keyPascal: Employment keySnake: employment is_object: true - payrollCalendarID: key: payrollCalendarID keyPascal: PayrollCalendarID keySnake: payroll_calendar_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: employment - startDate: is_variable: true nonString: true key: startDate keyPascal: StartDate keySnake: start_date default: startDate python: start_date ruby: start_date object: employment is_last: true summary: Creates employment detail for a specific employee using a unique employee ID parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmploymentObject' example: '{ "id": "0160a355-1e6d-4fdc-9532-c0857feaa515", "providerName": "provider-name", "dateTimeUTC": "2020-03-26T18:09:11.6235442", "httpStatusCode": "OK", "pagination": null, "problem": null, "employment": { "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "startDate": "2020-04-01T00:00:00", "niCategory": "A", "employeeNumber": "123ABC" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Employment' example: '{ "PayrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "StartDate": "2020-04-01", "EmployeeNumber": "123ABC", "NICategory": "A" }' /Employees/{EmployeeID}/Tax: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeTax x-hasPayrollUkProblem: true summary: Retrieves tax records for a specific employee using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeTaxObject' example: '{ "id": "a8577248-393a-4e7a-8a03-b43b90800b69", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T00:14:41.2462046", "httpStatusCode": "OK", "pagination": null, "problem": null, "employeeTax": { "starterType": "New Employee with P45", "starterDeclaration": "B.) This is currently their only job", "taxCode": "1185L", "w1M1": false, "previousTaxablePay": 2000, "previousTaxPaid": 200, "studentLoanDeduction": null, "hasPostGraduateLoans": false, "isDirector": false, "directorshipStartDate": null, "nicCalculationMethod": null } }' /Employees/{EmployeeID}/ukopeningbalances: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeOpeningBalances x-hasPayrollUkProblem: true summary: Retrieves a specific employee's openingbalances using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeOpeningBalancesObject' example: '{ "id": "ab1c33de-1927-4210-bf4f-2a55965cb4a9", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T01:13:00.6591505", "httpStatusCode": "OK", "pagination": null, "problem": null, "openingBalances": { "statutoryAdoptionPay": 10, "statutoryMaternityPay": 10, "statutoryPaternityPay": 10, "statutorySharedParentalPay": 10, "statutorySickPay": 10, "priorEmployeeNumber": "10.0" } }' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeeOpeningBalances x-hasPayrollUkProblem: true x-example: - employeeOpeningBalances: key: employeeOpeningBalances keyPascal: EmployeeOpeningBalances keySnake: employee_opening_balances is_object: true - statutoryMaternityPay: key: statutoryMaternityPay keyPascal: StatutoryMaternityPay keySnake: statutory_maternity_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutoryAdoptionPay: key: statutoryAdoptionPay keyPascal: StatutoryAdoptionPay keySnake: statutory_adoption_pay is_money: true nonString: true default: 100.0 object: employeeOpeningBalances - statutoryPaternityPay: key: statutoryPaternityPay keyPascal: StatutoryPaternityPay keySnake: statutory_paternity_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutorySharedParentalPay: key: statutorySharedParentalPay keyPascal: StatutorySharedParentalPay keySnake: statutory_shared_parental_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutorySickPay: key: statutorySickPay keyPascal: StatutorySickPay keySnake: statutory_sick_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances is_last: true summary: Creates an opening balance for a specific employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeOpeningBalancesObject' example: '{ "id": "0d30ef37-2fb4-4925-b563-faaee361c9cd", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T01:06:14.47566", "httpStatusCode": "OK", "pagination": null, "problem": null, "openingBalances": null }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeOpeningBalances' example: '{ "statutoryAdoptionPay": 10, "statutoryMaternityPay": 10, "statutoryPaternityPay": 10, "statutorySharedParentalPay": 10, "statutorySickPay": 10, "priorEmployeeNumber": 10 }' put: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: updateEmployeeOpeningBalances x-hasPayrollUkProblem: true x-example: - employeeOpeningBalances: key: employeeOpeningBalances keyPascal: EmployeeOpeningBalances keySnake: employee_opening_balances is_object: true - statutoryMaternityPay: key: statutoryMaternityPay keyPascal: StatutoryMaternityPay keySnake: statutory_maternity_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutoryAdoptionPay: key: statutoryAdoptionPay keyPascal: StatutoryAdoptionPay keySnake: statutory_adoption_pay is_money: true nonString: true default: 100.0 object: employeeOpeningBalances - statutoryPaternityPay: key: statutoryPaternityPay keyPascal: StatutoryPaternityPay keySnake: statutory_paternity_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutorySharedParentalPay: key: statutorySharedParentalPay keyPascal: StatutorySharedParentalPay keySnake: statutory_shared_parental_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances - statutorySickPay: key: statutorySickPay keyPascal: StatutorySickPay keySnake: statutory_sick_pay is_money: true nonString: true default: 0.0 object: employeeOpeningBalances is_last: true summary: Updates a specific employee's opening balances parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: successful response content: application/json: schema: $ref: '#/components/schemas/EmployeeOpeningBalancesObject' example: '{ "id": "21953776-783c-426c-bf15-cbde997839c4", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T15:45:09.7078637", "httpStatusCode": "OK", "pagination": null, "problem": null, "openingBalances": null }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeOpeningBalances' example: '{ "statutoryAdoptionPay": 20, "statutoryMaternityPay": 20, "statutoryPaternityPay": 20, "statutorySharedParentalPay": 20, "statutorySickPay": 20, "priorEmployeeNumber": 20 }' /Employees/{EmployeeID}/Leave: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeLeaves x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave records using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaves' example: '{ "id": "e4d42712-4876-4b32-987d-1f62538089de", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T15:58:16.0929399", "httpStatusCode": "OK", "pagination": null, "problem": null, "leave": [ { "leaveID": "384bf62a-5884-484d-b675-a3ad9c662f8e", "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "description": "Vacation to Majorca", "startDate": "2020-02-17T00:00:00", "endDate": "2020-02-21T00:00:00", "periods": [ { "periodStartDate": "2020-02-17T00:00:00", "periodEndDate": "2020-02-23T00:00:00", "numberOfUnits": 40, "periodStatus": "Approved" } ], "updatedDateUTC": "2020-02-10T10:15:53" } ] }' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeeLeave x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - endDateValue: key: endDate keyPascal: EndDate keySnake: end_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - employeeLeave: key: employeeLeave keyPascal: EmployeeLeave keySnake: employee_leave is_object: true - leaveTypeID: key: leaveTypeID keyPascal: LeaveTypeID keySnake: leave_type_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: employeeLeave - startDate: is_variable: true nonString: true key: startDate keyPascal: StartDate keySnake: start_date default: startDate python: start_date ruby: start_date object: employeeLeave - endDate: is_last: true is_variable: true nonString: true key: endDate keyPascal: EndDate keySnake: end_date default: endDate python: end_date ruby: end_date object: employeeLeave summary: Creates leave records for a specific employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveObject' example: '{ "id": "ef91410a-2be1-42cc-86db-e625344a82e9", "providerName": "provider-name", "dateTimeUTC": "2020-03-31T04:32:57.0247198", "httpStatusCode": "OK", "pagination": null, "problem": null, "leave": { "leaveID": "bdfedc6b-363b-4801-8ba6-9a074d400b31", "leaveTypeID": "1d2778ee-86ea-45c0-bbf8-1045485f6b3f", "description": "Creating a Description", "startDate": "2020-03-24T00:00:00", "endDate": "2020-03-26T00:00:00", "periods": [ { "periodStartDate": "2020-03-23T00:00:00", "periodEndDate": "2020-03-29T00:00:00", "numberOfUnits": 24, "periodStatus": "Approved" } ], "updatedDateUTC": "2020-03-31T04:32:56.9537857" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeLeave' example: '{ "leaveTypeID": "1d2778ee-86ea-45c0-bbf8-1045485f6b3f", "description": "Creating a Description", "startDate": "2020-03-24", "endDate": "2020-03-26" }' /Employees/{EmployeeID}/Leave/{LeaveID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeLeave x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave record using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: LeaveID x-snake: leave_id in: path required: true description: Leave id for single object schema: type: string format: uuid example: c4be24e5-e840-4c92-9eaa-2d86cd596314 responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveObject' example: '{ "id": "6ae25805-fef3-4c9b-9e69-9ccc71a6a8da", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T19:58:03.8455417", "httpStatusCode": "OK", "pagination": null, "problem": null, "leave": { "leaveID": "384bf62a-5884-484d-b675-a3ad9c662f8e", "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "description": "Vacation to Majorca", "startDate": "2020-02-17T00:00:00", "endDate": "2020-02-21T00:00:00", "periods": [ { "periodStartDate": "2020-02-17T00:00:00", "periodEndDate": "2020-02-23T00:00:00", "numberOfUnits": 40, "periodStatus": "Approved" } ], "updatedDateUTC": "2020-02-10T10:15:53" } }' put: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: updateEmployeeLeave x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - endDateValue: key: endDate keyPascal: EndDate keySnake: end_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - employeeLeave: key: employeeLeave keyPascal: EmployeeLeave keySnake: employee_leave is_object: true - leaveTypeID: key: leaveTypeID keyPascal: LeaveTypeID keySnake: leave_type_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: employeeLeave - startDate: is_variable: true nonString: true key: startDate keyPascal: StartDate keySnake: start_date default: startDate python: start_date ruby: start_date object: employeeLeave - endDate: is_last: true is_variable: true nonString: true key: endDate keyPascal: EndDate keySnake: end_date default: endDate python: end_date ruby: end_date object: employeeLeave summary: Updates a specific employee's leave records parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: LeaveID x-snake: leave_id in: path required: true description: Leave id for single object schema: type: string format: uuid example: c4be24e5-e840-4c92-9eaa-2d86cd596314 responses: '200': description: successful response content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveObject' example: '{ "id": "ea115d89-61a0-4a2d-ad77-e3c63a2b401f", "providerName": "provider-name", "dateTimeUTC": "2020-04-17T18:18:30.5118218", "httpStatusCode": "OK", "pagination": null, "problem": null, "leave": { "leaveID": "8340b795-50c1-428e-9fda-90badf081ab4", "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "description": "Creating a Description", "startDate": "2020-04-24T00:00:00", "endDate": "2020-04-26T00:00:00", "periods": [ { "periodStartDate": "2020-04-20T00:00:00", "periodEndDate": "2020-04-26T00:00:00", "numberOfUnits": 1, "periodStatus": "Approved" } ], "updatedDateUTC": "2020-04-17T18:18:30.614537" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeLeave' example: '{ "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "description": "Creating a Description", "startDate": "2020-04-24", "endDate": "2020-04-26", "periods": [ { "periodStartDate": "2020-04-20", "periodEndDate": "2020-04-26", "numberOfUnits": 1, "periodStatus": "Approved" } ] }' delete: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: deleteEmployeeLeave x-hasPayrollUkProblem: true summary: Deletes a specific employee's leave record parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: LeaveID x-snake: leave_id in: path required: true description: Leave id for single object schema: type: string format: uuid example: c4be24e5-e840-4c92-9eaa-2d86cd596314 responses: '200': description: successful response content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveObject' example: '{ "id": "b0ab87f6-bbca-4c81-b616-c545592f6988", "providerName": "provider-name", "dateTimeUTC": "2020-03-31T04:11:42.422139", "httpStatusCode": "OK", "pagination": null, "problem": null }' /Employees/{EmployeeID}/LeaveBalances: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeLeaveBalances x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave balances using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveBalances' example: '{ "id": "a9b96d49-fc15-4e25-8b62-818462ea6dbd", "providerName": "provider-name", "dateTimeUTC": "2020-03-31T04:45:06.125346", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 2 }, "problem": null, "leaveBalances": [ { "name": "Holiday", "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "balance": 32, "typeOfUnits": "Hours" }, { "name": "Parental Leave", "leaveTypeID": "1d2778ee-86ea-45c0-bbf8-1045485f6b3f", "balance": -80, "typeOfUnits": "Hours" } ] }' /Employees/{EmployeeID}/StatutoryLeaveBalance: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeStatutoryLeaveBalances x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave balances using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: LeaveType x-snake: leave_type in: query description: Filter by the type of statutory leave schema: type: string example: sick - name: AsOfDate x-snake: as_of_date in: query description: The date from which to calculate balance remaining. If not specified, current date UTC is used. schema: type: string format: date responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeStatutoryLeaveBalanceObject' example: '{ "id": "ee863df3-c394-4102-bb91-2b14de404c1c", "providerName": "provider-name", "dateTimeUTC": "2020-03-31T05:03:47.418497", "httpStatusCode": "OK", "pagination": null, "problem": null, "leaveBalance": { "leaveType": "Sick", "balanceRemaining": 1120, "units": "Hours" } }' /StatutoryLeaves/Summary/{EmployeeID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getStatutoryLeaveSummary x-hasPayrollUkProblem: true summary: Retrieves a specific employee's summary of statutory leaves using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: activeOnly x-snake: active_only in: query description: Filter response with leaves that are currently active or yet to be taken. If not specified, all leaves (past, current, and future scheduled) are returned schema: type: boolean responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeStatutoryLeavesSummaries' example: '{ "id": "1908f4d1-b85d-4d6d-a885-6b6e2922ad03", "providerName": "provider-name", "dateTimeUTC": "2020-04-02T19:47:06.0791382", "httpStatusCode": "OK", "pagination": null, "problem": null, "statutoryLeaves": [ { "statutoryLeaveID": "17f4c3c7-d65c-4572-9118-03798f26f813", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "type": "Sick", "endDate": "2020-04-01", "startDate": "2020-03-28", "isEntitled": false, "status": "Pending" } ] }' /StatutoryLeaves/Sick: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createEmployeeStatutorySickLeave x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - endDateValue: key: endDate keyPascal: EndDate keySnake: end_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - employeeStatutorySickLeave: key: employeeStatutorySickLeave keyPascal: EmployeeStatutorySickLeave keySnake: employee_statutory_sick_leave is_object: true - isPregnancyRelated: key: isPregnancyRelated keyPascal: IsPregnancyRelated keySnake: is_pregnancy_related nonString: true default: true object: employeeStatutorySickLeave - leaveTypeID: key: leaveTypeID keyPascal: LeaveTypeID keySnake: leave_type_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: employeeStatutorySickLeave - startDate: is_variable: true nonString: true key: startDate keyPascal: StartDate keySnake: start_date default: startDate python: start_date ruby: start_date object: employeeStatutorySickLeave - endDate: is_last: true is_variable: true nonString: true key: endDate keyPascal: EndDate keySnake: end_date default: endDate python: end_date ruby: end_date object: employeeStatutorySickLeave summary: Creates statutory sick leave records parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeStatutorySickLeaveObject' example: '{ "id": "35c840a3-04aa-43f1-9171-f7eaf4fd4454", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T18:59:28.3440854", "httpStatusCode": "OK", "pagination": null, "problem": null, "statutorySickLeave": { "statutoryLeaveID": "a2b5a1fb-ae21-47b4-876d-0b61fa6b37ab", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "leaveTypeID": "aab78802-e9d3-4bbd-bc87-df858054988f", "startDate": "2020-04-21", "endDate": "2020-04-24", "workPattern": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "isPregnancyRelated": false, "sufficientNotice": true, "isEntitled": false, "entitlementWeeksRequested": 0.8, "entitlementWeeksQualified": 27.2, "entitlementWeeksRemaining": 26.4, "overlapsWithOtherLeave": false, "entitlementFailureReasons": [ "NotQualifiedInPreviousPiw" ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeStatutorySickLeave' example: '{ "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "leaveTypeID": "aab78802-e9d3-4bbd-bc87-df858054988f", "startDate": "2020-04-21", "endDate": "2020-04-24", "workPattern": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "isPregnancyRelated": false, "sufficientNotice": true }' /StatutoryLeaves/Sick/{StatutorySickLeaveID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getEmployeeStatutorySickLeave x-hasPayrollUkProblem: true summary: Retrieves a statutory sick leave for an employee parameters: - name: StatutorySickLeaveID x-snake: statutory_sick_leave_id in: path required: true description: Statutory sick leave id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeStatutorySickLeaveObject' example: '{ "id": "c484213d-6225-4ede-bc5e-e81ef350af41", "providerName": "provider-name", "dateTimeUTC": "2020-04-17T18:31:49.3895522", "httpStatusCode": "OK", "pagination": null, "problem": null, "statutorySickLeave": { "statutoryLeaveID": "17f4c3c7-d65c-4572-9118-03798f26f813", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "leaveTypeID": "054a2b5e-fe51-4494-9486-3e3130323c69", "startDate": "2020-03-28", "endDate": "2020-04-01", "workPattern": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "isPregnancyRelated": false, "sufficientNotice": true, "isEntitled": false, "entitlementWeeksRequested": 0.6, "entitlementWeeksQualified": 28, "entitlementWeeksRemaining": 0, "overlapsWithOtherLeave": false, "entitlementFailureReasons": [ "AweLowerThanLel" ] } }' /Employees/{EmployeeID}/LeavePeriods: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeLeavePeriods x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave periods using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 00000000-0000-0000-0000-000000000000 - in: query name: startDate x-snake: start_date description: Filter by start date schema: type: string format: date - in: query name: endDate x-snake: end_date description: Filter by end date schema: type: string format: date responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/LeavePeriods' example: '{ "id": "00000000-0000-0000-0000-000000000000", "providerName": "provider-name", "dateTimeUTC": "2020-04-07T20:33:42.1904008", "httpStatusCode": "OK", "pagination": null, "problem": null, "periods": [ { "periodStartDate": "2020-02-24T00:00:00", "periodEndDate": "2020-03-01T00:00:00", "numberOfUnits": 40, "periodStatus": null }, { "periodStartDate": "2020-03-02T00:00:00", "periodEndDate": "2020-03-08T00:00:00", "numberOfUnits": 32, "periodStatus": null } ] }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' /Employees/{EmployeeID}/LeaveTypes: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeLeaveTypes x-hasPayrollUkProblem: true summary: Retrieves a specific employee's leave types using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveTypes' example: '{ "id": "d86959c6-94f5-437a-9367-581cb145fc4f", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T16:25:56.2931034", "httpStatusCode": "OK", "pagination": null, "problem": null, "leaveTypes": [ { "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "scheduleOfAccrual": "OnAnniversaryDate", "hoursAccruedAnnually": 200, "maximumToAccrue": 0, "openingBalance": 72, "rateAccruedHourly": 0 } ] }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeeLeaveType x-hasPayrollUkProblem: true x-example: - employeeLeaveType: key: employeeLeaveType keyPascal: EmployeeLeaveType keySnake: employee_leave_type is_object: true - leaveTypeID: key: leaveTypeID keyPascal: LeaveTypeID keySnake: leave_type_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: employeeLeaveType - scheduleOfAccrual: key: scheduleOfAccrual keyPascal: ScheduleOfAccrual keySnake: schedule_of_accrual nonString: true default: ScheduleOfAccrualEnum.BeginningOfCalendarYear php: XeroAPI\XeroPHP\Models\PayrollUk\EmployeeLeaveType\ScheduleOfAccrualEnum.BeginningOfCalendarYear node: EmployeeLeaveType.ScheduleOfAccrualEnum.BeginningOfCalendarYear ruby: XeroRuby::PayrollUk::EmployeeLeaveType::schedule_of_accrual::BEGINNINGOFCALENDARYEAR python: schedule_of_accrual::BEGINNINGOFCALENDARYEAR java: com.xero.models.payrolluk.EmployeeLeaveType.ScheduleOfAccrualEnum.BeginningOfCalendarYear csharp: EmployeeLeaveType.ScheduleOfAccrualEnum.BeginningOfCalendarYear object: employeeLeaveType - openingBalance: key: openingBalance keyPascal: OpeningBalance keySnake: opening_balance nonString: true default: 5.25 object: employeeLeaveType is_last: true summary: Creates employee leave type records parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveTypeObject' example: '{ "id": "3245e4c9-1ec5-4f3e-b659-fdb722733060", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T20:24:25.8151387", "httpStatusCode": "OK", "pagination": null, "problem": null, "leaveType": { "leaveTypeID": "4918f233-bd31-43f9-9633-bcc6de1178f2", "scheduleOfAccrual": "BeginningOfCalendarYear", "hoursAccruedAnnually": 10, "maximumToAccrue": 0, "openingBalance": 0, "rateAccruedHourly": 0 } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployeeLeaveType' example: '{ "leaveTypeID": "4918f233-bd31-43f9-9633-bcc6de1178f2", "scheduleOfAccrual": "BeginningOfCalendarYear", "hoursAccruedAnnually": 10 }' /Employees/{EmployeeID}/PaymentMethods: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeePaymentMethod x-hasPayrollUkProblem: true summary: Retrieves a specific employee's payment method using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PaymentMethodObject' example: '{ "id": "33c27fe9-de53-4114-8455-a6392add88b8", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T18:22:18.9003328", "httpStatusCode": "OK", "pagination": null, "problem": null, "paymentMethod": { "paymentMethod": "Electronically", "bankAccounts": [ { "accountName": "Oliver Furniss - Santander", "accountNumber": "12345678", "sortCode": "111111" } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeePaymentMethod x-hasPayrollUkProblem: true x-example: - bankAccount: key: bankAccount keyPascal: BankAccount keySnake: bank_account is_object: true - accountName: key: accountName keyPascal: AccountName keySnake: account_name default: Charlotte Danes object: bankAccount - accountNumber: key: accountNumber keyPascal: AccountNumber keySnake: account_number default: 123456 object: bankAccount - sortCode: key: sortCode keyPascal: SortCode keySnake: sort_code default: 123411 is_last: true object: bankAccount - bankAccounts: is_list: true key: bankAccounts keyPascal: BankAccounts keySnake: bank_accounts csharp: BankAccount java: BankAccount object: bankAccount - addBankAccount: is_last: true is_list_add: true key: bankAccounts keyPascal: BankAccounts keySnake: bank_accounts java: BankAccounts python: bank_account ruby: bank_account csharp: BankAccount object: bankAccount - paymentMethod: key: paymentMethod keyPascal: PaymentMethod keySnake: payment_method is_object: true - setBankAccount: is_last: true is_variable: true nonString: true key: bankAccounts keyPascal: BankAccounts default: bankAccounts object: paymentMethod summary: Creates an employee payment method parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PaymentMethodObject' example: '{ "id": "6c5eab91-8f3c-4569-a5ce-ab4eec112d35", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T18:48:16.6038123", "httpStatusCode": "OK", "pagination": null, "problem": null, "paymentMethod": { "paymentMethod": "Electronically", "bankAccounts": [ { "accountName": "Sid BofA", "accountNumber": "24987654", "sortCode": "287654" } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentMethod' example: '{ "paymentMethod": "Electronically", "bankAccounts": [ { "accountName": "Sid BofA", "accountNumber": "24987654", "sortCode": "287654" } ] }' /Employees/{EmployeeID}/PayTemplates: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeePayTemplate x-hasPayrollUkProblem: true summary: Retrieves a specific employee pay templates using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeePayTemplateObject' example: '{ "id": "3138be2b-96d9-44d0-a01e-80fd527555c8", "providerName": "provider-name", "dateTimeUTC": "2020-04-17T15:10:54.4464048", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 0, "itemCount": 0 }, "problem": null, "payTemplate": { "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "earningTemplates": [ { "payTemplateEarningID": "4e2a0753-56b9-423d-8068-624473bd1c00", "ratePerUnit": 25, "numberOfUnits": 10, "fixedAmount": null, "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "name": "Regular Hours" } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' # 503 /Employees/{EmployeeID}/PayTemplates/earnings: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeeEarningsTemplate x-hasPayrollUkProblem: true x-example: - earningsTemplate: key: earningsTemplate keyPascal: EarningsTemplate keySnake: earnings_template is_object: true - payTemplateEarningID: key: payTemplateEarningID keyPascal: PayTemplateEarningID keySnake: pay_template_earning_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - ratePerUnit: key: ratePerUnit keyPascal: RatePerUnit keySnake: rate_per_unit nonString: true default: 14.25 object: earningsTemplate is_money: true - numberOfUnits: key: numberOfUnits keyPascal: NumberOfUnits keySnake: number_of_units default: 35.50 nonString: true is_money: true object: earningsTemplate - fixedAmount: key: fixedAmount keyPascal: FixedAmount keySnake: fixed_amount default: 50 nonString: true object: earningsTemplate - earningsRateId: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - name: key: name keyPascal: Name keySnake: name default: Overtime Hours object: earningsTemplate is_last: true - earningsTemplates: is_list: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates csharp: EarningsTemplate java: EarningsTemplate - addEarningsTemplate: is_last: true is_list_add: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates java: EarningsTemplates python: earnings_template ruby: earnings_template csharp: EarningsTemplate object: earningsTemplate summary: Creates an earnings template records for a specific employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsTemplateObject' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EarningsTemplate' /Employees/{EmployeeID}/PayTemplates/earnings/{PayTemplateEarningID}: parameters: - $ref: '#/components/parameters/requiredHeader' put: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: updateEmployeeEarningsTemplate x-hasPayrollUkProblem: true x-example: - earningsTemplate: key: earningsTemplate keyPascal: EarningsTemplate keySnake: earnings_template is_object: true - payTemplateEarningID: key: payTemplateEarningID keyPascal: PayTemplateEarningID keySnake: pay_template_earning_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - ratePerUnit: key: ratePerUnit keyPascal: RatePerUnit keySnake: rate_per_unit nonString: true default: 14.25 object: earningsTemplate is_money: true - numberOfUnits: key: numberOfUnits keyPascal: NumberOfUnits keySnake: number_of_units default: 35.50 nonString: true is_money: true object: earningsTemplate - fixedAmount: key: fixedAmount keyPascal: FixedAmount keySnake: fixed_amount default: 50 nonString: true object: earningsTemplate - earningsRateId: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - name: key: name keyPascal: Name keySnake: name default: Overtime Hours object: earningsTemplate is_last: true - earningsTemplates: is_list: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates csharp: EarningsTemplate java: EarningsTemplate - addEarningsTemplate: is_last: true is_list_add: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates java: EarningsTemplates python: earnings_template ruby: earnings_template csharp: EarningsTemplate object: earningsTemplate summary: Updates a specific employee's earnings template records parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: PayTemplateEarningID x-snake: pay_template_earning_id in: path required: true description: Id for single pay template earnings object schema: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsTemplateObject' example: '{ "id": "39603f09-e06f-4cd4-8291-e3ad1df8b35b", "providerName": "provider-name", "dateTimeUTC": "2020-04-17T15:52:35.0247503", "httpStatusCode": "OK", "pagination": null, "problem": null, "earningTemplate": { "payTemplateEarningID": "4e2a0753-56b9-423d-8068-624473bd1c00", "ratePerUnit": 30, "numberOfUnits": 4, "fixedAmount": null, "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "name": "Regular Hours" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EarningsTemplate' example: '{ "ratePerUnit": 30, "numberOfUnits": 4, "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27" }' delete: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: deleteEmployeeEarningsTemplate summary: Deletes a specific employee's earnings template record parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: PayTemplateEarningID x-snake: pay_template_earning_id in: path required: true description: Id for single pay template earnings object schema: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: deletion successful /Employees/{EmployeeID}/paytemplateearnings: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createMultipleEmployeeEarningsTemplate x-hasPayrollUkProblem: true x-example: - earningsTemplate: key: earningsTemplate keyPascal: EarningsTemplate keySnake: earnings_template is_object: true - payTemplateEarningID: key: payTemplateEarningID keyPascal: PayTemplateEarningID keySnake: pay_template_earning_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - ratePerUnit: key: ratePerUnit keyPascal: RatePerUnit keySnake: rate_per_unit nonString: true default: 14.25 object: earningsTemplate is_money: true - numberOfUnits: key: numberOfUnits keyPascal: NumberOfUnits keySnake: number_of_units default: 35.50 nonString: true is_money: true object: earningsTemplate - fixedAmount: key: fixedAmount keyPascal: FixedAmount keySnake: fixed_amount default: 50 nonString: true object: earningsTemplate - earningsRateId: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsTemplate - name: key: name keyPascal: Name keySnake: name default: Overtime Hours object: earningsTemplate is_last: true - earningsTemplates: is_list: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates csharp: EarningsTemplate java: EarningsTemplate - addEarningsTemplate: is_last: true is_list_add: true key: earningsTemplates keyPascal: EarningsTemplates keySnake: earnings_templates java: EarningsTemplates python: earnings_template ruby: earnings_template csharp: EarningsTemplate object: earningsTemplate summary: Creates multiple earnings template records for a specific employee using a unique employee ID parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EmployeePayTemplates' example: '{ "id": "1c08b529-0827-4e91-a6a1-c479765aa65f", "providerName": "provider-name", "dateTimeUTC": "2020-04-17T16:56:35.6264368", "httpStatusCode": "OK", "pagination": null, "problem": null, "earningTemplates": [ { "payTemplateEarningID": "6b32533d-1111-4a92-ac52-7641315a1719", "ratePerUnit": 20, "numberOfUnits": 8, "fixedAmount": null, "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "name": "Regular Hours" }, { "payTemplateEarningID": "b8b16366-6a60-4b72-97c1-57af555da375", "ratePerUnit": 20, "numberOfUnits": 8, "fixedAmount": null, "earningsRateID": "973365f3-66b2-4c33-8ae6-14b75f78f68b", "name": "Overtime Hours" } ] }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EarningsTemplates' example: '[ { "ratePerUnit":20.0, "numberOfUnits":8.0, "earningsRateID":"87f5b43a-cf51-4b74-92de-94c819e82d27" }, { "ratePerUnit":20.0, "numberOfUnits":8.0, "earningsRateID":"973365f3-66b2-4c33-8ae6-14b75f78f68b" } ]' /Benefits: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getBenefits x-hasPayrollUkProblem: true summary: Retrieves employee benefits parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Benefits' example: '{ "id": "079865dc-f3df-4783-98a9-67db747ab82c", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T18:45:03.617089", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 1 }, "problem": null, "benefits": [ { "id": "17ee7e28-9f4c-4675-9590-cc0547c9f7ac", "name": "Mind The Gap Pensions", "category": "StakeholderPension", "liabilityAccountId": "d659ebbf-0760-4e07-a1fb-8de6b9ecdff9", "expenseAccountId": "edda7154-dfc8-4486-a82b-e5e955408eaa", "standardAmount": null, "percentage": 3, "calculationType": "PercentageOfGross", "currentRecord": true, "showBalanceToEmployee": false, "subjectToNIC": null, "subjectToPension": null, "subjectToTax": null, "isCalculatingOnQualifyingEarnings": null } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createBenefit x-hasPayrollUkProblem: true summary: Creates a new employee benefit parameters: - $ref: '#/components/parameters/idempotencyKey' x-example: - benefit: key: benefit keyPascal: Benefit keySnake: benefit is_object: true - name: key: name keyPascal: Name keySnake: name default: Benefit Name object: benefit - expenseAccountID: key: expenseAccountID keyPascal: ExpenseAccountID keySnake: expense_account_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: benefit - liabilityAccountID: key: liabilityAccountID keyPascal: LiabilityAccountID keySnake: liability_account_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: benefit - isCalculatingOnQualifyingEarnings: key: isCalculatingOnQualifyingEarnings keyPascal: IsCalculatingOnQualifyingEarnings keySnake: is_calculating_on_qualifying_earnings nonString: true default: true object: benefit is_last: true responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/BenefitObject' example: '{ "id": "95352407-6477-42f1-bd9c-bab28af8b0d9", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T18:59:01.5812362", "httpStatusCode": "OK", "pagination": null, "problem": null, "benefit": { "id": "d295bf25-fb61-4f91-9b62-a9ae87633746", "name": "My Big Bennie", "category": "StakeholderPension", "liabilityAccountId": "e0faa299-ca0d-4b0a-9e32-0dfabdf9179a", "expenseAccountId": "4b03500d-32fd-4616-8d70-e1e56e0519c6", "standardAmount": null, "percentage": 25, "calculationType": "PercentageOfGross", "currentRecord": true, "showBalanceToEmployee": true, "subjectToNIC": null, "subjectToPension": null, "subjectToTax": null, "isCalculatingOnQualifyingEarnings": null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Benefit' example: '{ "name": "My Big Bennie", "category": "StakeholderPension", "liabilityAccountId": "e0faa299-ca0d-4b0a-9e32-0dfabdf9179a", "expenseAccountId": "4b03500d-32fd-4616-8d70-e1e56e0519c6", "standardAmount": 50, "percentage": 25, "calculationType": "PercentageOfGross" }' /Benefits/{id}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getBenefit x-hasPayrollUkProblem: true summary: Retrieves a specific benefit by using a unique benefit ID parameters: - in: path name: id required: true description: Identifier for the benefit schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/BenefitObject' example: '{ "id": "e7959d7b-370d-47e5-bb15-4b68f136ddae", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T18:45:04.5134277", "httpStatusCode": "OK", "pagination": null, "problem": null, "benefit": { "id": "17ee7e28-9f4c-4675-9590-cc0547c9f7ac", "name": "Mind The Gap Pensions", "category": "StakeholderPension", "liabilityAccountId": "d659ebbf-0760-4e07-a1fb-8de6b9ecdff9", "expenseAccountId": "edda7154-dfc8-4486-a82b-e5e955408eaa", "standardAmount": null, "percentage": 3, "calculationType": "PercentageOfGross", "currentRecord": true, "showBalanceToEmployee": false, "subjectToNIC": null, "subjectToPension": null, "subjectToTax": null, "isCalculatingOnQualifyingEarnings": null } }' /Deductions: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getDeductions x-hasPayrollUkProblem: true summary: Retrieves deductions parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Deductions' example: '{ "id": "846b81f3-7192-4a78-a05c-ae5d2c402546", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T20:57:39.6123797", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 2 }, "problem": null, "deductions": [ { "deductionId": "7c736d59-a624-4584-920b-e9910d2887a0", "deductionName": "Mind The Gap Pensions (NPA)", "deductionCategory": "StakeholderPension", "liabilityAccountId": "d659ebbf-0760-4e07-a1fb-8de6b9ecdff9", "currentRecord": true, "standardAmount": null, "reducesSuperLiability": null, "reducesTaxLiability": null, "calculationType": "PercentageOfGross", "percentage": 5, "subjectToNIC": null, "subjectToTax": null, "isReducedByBasicRate": null, "applyToPensionCalculations": null, "isCalculatingOnQualifyingEarnings": null, "isPension": null }, { "deductionId": "49f301d4-2746-43a6-ba4a-e7001b5b83fc", "deductionName": "Post-Tax Pension", "deductionCategory": "StakeholderPensionPostTax", "liabilityAccountId": "d659ebbf-0760-4e07-a1fb-8de6b9ecdff9", "currentRecord": true, "standardAmount": null, "reducesSuperLiability": null, "reducesTaxLiability": null, "calculationType": "PercentageOfGross", "percentage": 0, "subjectToNIC": null, "subjectToTax": null, "isReducedByBasicRate": null, "applyToPensionCalculations": false, "isCalculatingOnQualifyingEarnings": null, "isPension": true } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createDeduction x-hasPayrollUkProblem: true x-example: - deduction: key: deduction keyPascal: Deduction keySnake: deduction is_object: true - deductionName: key: deductionName keyPascal: DeductionName keySnake: deduction_name default: Test Deduction object: deduction - deductionCategory: key: deductionCategory keyPascal: DeductionCategory keySnake: deduction_category nonString: true default: DeductionCategoryEnum.StakeholderPension php: XeroAPI\XeroPHP\Models\PayrollUk\Deduction\DeductionCategoryEnum.StakeholderPension node: Deduction.DeductionCategoryEnum.StakeholderPension ruby: XeroRuby::PayrollUk::Deduction::deduction_category_enum::STAKEHOLDERPENSION python: deduction_category_enum::STAKEHOLDERPENSION java: com.xero.models.payrolluk.Deduction.DeductionCategoryEnum.StakeholderPension csharp: Deduction.DeductionCategoryEnum.StakeholderPension object: deduction - liabilityAccountID: key: liabilityAccountId keyPascal: LiabilityAccountId keySnake: liability_account_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: deduction - calculationType: key: calculationType keyPascal: CalculationType keySnake: calculation_type nonString: true default: CalculationTypeEnum.PercentageOfGross php: XeroAPI\XeroPHP\Models\PayrolUk\Deduction\CalculationTypeEnum.PercentageOfGross node: Deduction.CalculationTypeEnum.PercentageOfGross ruby: XeroRuby::PayrollUk::Deduction::calculation_type_enum::PERCENTAGEOFGROSS python: calculation_type_enum::PERCENTAGEOFGROSS java: com.xero.models.payrolluk.Deduction.CalculationTypeEnum.PercentageOfGross csharp: Deduction.CalculationTypeEnum.PercentageOfGross object: deduction is_last: true summary: Creates a new deduction parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/DeductionObject' example: '{ "id": "26cf94f5-6b62-4f76-8e89-44e4d0062566", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T23:03:00.7012103", "httpStatusCode": "OK", "pagination": null, "problem": null, "deduction": { "deductionId": "b3695b29-750f-4957-98b4-678e4a529043", "deductionName": "My new deduction", "deductionCategory": "SalarySacrifice", "liabilityAccountId": "e0faa299-ca0d-4b0a-9e32-0dfabdf9179a", "currentRecord": true, "standardAmount": null, "reducesSuperLiability": null, "reducesTaxLiability": null, "calculationType": "FixedAmount", "percentage": null, "subjectToNIC": null, "subjectToTax": null, "isReducedByBasicRate": null, "applyToPensionCalculations": null, "isCalculatingOnQualifyingEarnings": null, "isPension": null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Deduction' example: '{ "deductionName": "My new deduction", "deductionCategory": "SalarySacrifice", "liabilityAccountId": "e0faa299-ca0d-4b0a-9e32-0dfabdf9179a", "calculationType": "FixedAmount" }' /Deductions/{deductionId}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getDeduction x-hasPayrollUkProblem: true summary: Retrieves a specific deduction by using a unique deduction ID parameters: - in: path name: deductionId x-snake: deduction_id required: true description: Identifier for the deduction schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/DeductionObject' example: '{ "id": "addf44c5-5a3b-4d25-a61c-4e9e85cb27b3", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T22:42:54.5394384", "httpStatusCode": "OK", "pagination": null, "problem": null, "deduction": { "deductionId": "7c736d59-a624-4584-920b-e9910d2887a0", "deductionName": "Mind The Gap Pensions (NPA)", "deductionCategory": "StakeholderPension", "liabilityAccountId": "d659ebbf-0760-4e07-a1fb-8de6b9ecdff9", "currentRecord": true, "standardAmount": null, "reducesSuperLiability": null, "reducesTaxLiability": null, "calculationType": "PercentageOfGross", "percentage": 5, "subjectToNIC": null, "subjectToTax": null, "isReducedByBasicRate": null, "applyToPensionCalculations": null, "isCalculatingOnQualifyingEarnings": null, "isPension": null } }' # NZ PAYROLL # /StatutoryDeductions: # parameters: # - $ref: '#/components/parameters/requiredHeader' # get: # security: # - OAuth2: [payroll.settings, payroll.settings.read] # tags: # - PayrollNZ # operationId: getStatutoryDeductions # summary: searches statutory deductions # parameters: # - in: query # name: page # description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. # schema: # type: integer # responses: # '200': # description: search results matching criteria # content: # application/json: # schema: # $ref: '#/components/schemas/StatutoryDeductions' # /StatutoryDeductions/{ID}: # parameters: # - $ref: '#/components/parameters/requiredHeader' # get: # security: # - OAuth2: [payroll.settings, payroll.settings.read] # tags: # - PayrollUk # operationId: getStatutoryDeduction # summary: retrieve a single statutory deduction by id # parameters: # - in: path # name: Id # required: true # description: Identifier for the statutory deduction # schema: # type: string # format: uuid # responses: # '200': # description: search results matching criteria # content: # application/json: # schema: # $ref: '#/components/schemas/Benefit' /EarningsOrders: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getEarningsOrders x-hasPayrollUkProblem: true summary: Retrieves earnings orders parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsOrders' example: '{ "id": "5bf85b65-c2de-4632-8e5e-cc0ab3d18ff0", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T23:21:36.0480051", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 8 }, "problem": null, "statutoryDeductions": [ { "id": "d00d0128-500b-4685-8332-8fc8743a395c", "name": "AEO (maintenance)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "PriorityOrder", "currentRecord": true }, { "id": "f7a63612-a68d-431e-96d4-3fd0708e46b5", "name": "AEO (fines)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "PriorityOrder", "currentRecord": true }, { "id": "dabd9a53-25ac-4349-9fb3-8005ea781574", "name": "AEO (civil debts)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "NonPriorityOrder", "currentRecord": true }, { "id": "73ae94bb-182c-4242-8d67-1a281597ca9c", "name": "CTAEO", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "PriorityOrder", "currentRecord": true }, { "id": "649a3c59-3937-43d2-b0e4-5e8942f17ffa", "name": "Child Support DEO", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "PriorityOrder", "currentRecord": true }, { "id": "d4a4441f-452a-4067-97ac-ded4d157c319", "name": "Earnings Arrestment (Scotland)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "TableBased", "currentRecord": true }, { "id": "deec134a-2378-439c-89db-a71fa57fb28a", "name": "Conjoined Arrestment Order (Scotland)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "TableBased", "currentRecord": true }, { "id": "750c7c89-0579-45b4-becc-221a52119bd4", "name": "Current Maintenance Arrest (Scotland)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "NonPriorityOrder", "currentRecord": true } ] }' /EarningsOrders/{id}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getEarningsOrder x-hasPayrollUkProblem: true summary: Retrieves a specific earnings orders by using a unique earnings orders id parameters: - in: path name: id required: true description: Identifier for the deduction schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsOrderObject' example: '{ "id": "e0fd1c57-e9d0-4c3f-9a1a-0355ddf7c060", "providerName": "provider-name", "dateTimeUTC": "2020-04-20T23:37:30.3398526", "httpStatusCode": "OK", "pagination": null, "problem": null, "statutoryDeduction": { "id": "d00d0128-500b-4685-8332-8fc8743a395c", "name": "AEO (maintenance)", "liabilityAccountId": "921237ae-76ff-4f4c-bf70-5c3c177b149d", "statutoryDeductionCategory": "PriorityOrder", "currentRecord": true } }' /EarningsRates: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getEarningsRates x-hasPayrollUkProblem: true summary: Retrieves earnings rates parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsRates' example: '{ "id": "fbe7a960-fad3-4293-8de9-0fabfbea615f", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T15:00:05.2418623", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 13 }, "problem": null, "earningsRates": [ { "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "name": "Regular Hours", "earningsType": "RegularEarnings", "rateType": "RatePerUnit", "typeOfUnits": "hours", "currentRecord": true, "expenseAccountID": "81da553d-c6c6-411e-95df-cc4ac8f7e1c2", "fixedAmount": null, "ratePerUnit": null, "multipleOfOrdinaryEarningsRate": null }, { "earningsRateID": "973365f3-66b2-4c33-8ae6-14b75f78f68b", "name": "Overtime Hours", "earningsType": "OvertimeEarnings", "rateType": "MultipleOfOrdinaryEarningsRate", "typeOfUnits": null, "currentRecord": true, "expenseAccountID": "81da553d-c6c6-411e-95df-cc4ac8f7e1c2", "fixedAmount": null, "ratePerUnit": null, "multipleOfOrdinaryEarningsRate": 1.5 } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createEarningsRate x-hasPayrollUkProblem: true summary: Creates a new earnings rate parameters: - $ref: '#/components/parameters/idempotencyKey' x-example: - earningsRate: key: earningsRate keyPascal: EarningsRate keySnake: earnings_rate is_object: true - earningsType: key: earningsType keyPascal: EarningsType keySnake: earnings_type nonString: true default: EarningsTypeEnum.RegularEarnings php: XeroAPI\XeroPHP\Models\PayrollUk\EarningsRate\EarningsTypeEnum.RegularEarnings node: EarningsRate.EarningsTypeEnum.RegularEarnings ruby: XeroRuby::PayrollUk::EarningsRate::earnings_type_enum::REGULAREARNINGS python: earnings_type_enum::REGULAREARNINGS java: com.xero.models.payrolluk.EarningsRate.EarningsTypeEnum.RegularEarnings csharp: EarningsRate.EarningsTypeEnum.RegularEarnings object: earningsRate - rateType: key: rateType keyPascal: RateType keySnake: rate_type php: XeroAPI\XeroPHP\Models\PayrollUk\EarningsRate\RateTypeEnum.RatePerUnit node: EarningsRate.RateTypeEnum.RatePerUnit ruby: XeroRuby::PayrollUk::EarningsRate::RateTypeEnum::ACCPAYCREDIT python_string: RATEPERUNIT java: com.xero.models.payrolluk.EarningsRate.RateTypeEnum.RATEPERUNIT csharp: EarningsRate.RateTypeEnum.RatePerUnit default: RatePerUnit object: earningsRate nonString: true - expenseAccountID: key: expenseAccountID keyPascal: ExpenseAccountID keySnake: expense_account_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: earningsRate - typeOfUnits: key: typeOfUnits keyPascal: TypeOfUnits keySnake: type_of_units default: Type object: earningsRate is_last: true responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsRateObject' example: '{ "id": "cc5341dd-c652-47f0-b8a3-67a22617ca7b", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T18:12:04.6341065", "httpStatusCode": "OK", "pagination": null, "problem": null, "earningsRate": { "earningsRateID": "fcf811a8-3843-4e87-8431-c62e83158aef", "name": "My Earnings Rate", "earningsType": "RegularEarnings", "rateType": "RatePerUnit", "typeOfUnits": "hours", "currentRecord": true, "expenseAccountID": "4b03500d-32fd-4616-8d70-e1e56e0519c6", "fixedAmount": null, "ratePerUnit": null, "multipleOfOrdinaryEarningsRate": null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EarningsRate' example: '{ "name": "My Earnings Rate", "earningsType": "RegularEarnings", "rateType": "RatePerUnit", "typeOfUnits": "hours", "expenseAccountID": "4b03500d-32fd-4616-8d70-e1e56e0519c6" }' /EarningsRates/{EarningsRateID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getEarningsRate x-hasPayrollUkProblem: true summary: Retrieves a specific earnings rates by using a unique earnings rate id parameters: - in: path name: EarningsRateID x-snake: earnings_rate_id required: true description: Identifier for the earnings rate schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/EarningsRateObject' example: '{ "id": "85375ff5-6ccf-4d8c-a976-0531c94597de", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T16:54:51.8240698", "httpStatusCode": "OK", "pagination": null, "problem": null, "earningsRate": { "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "name": "Regular Hours", "earningsType": "RegularEarnings", "rateType": "RatePerUnit", "typeOfUnits": "hours", "currentRecord": true, "expenseAccountID": "81da553d-c6c6-411e-95df-cc4ac8f7e1c2", "fixedAmount": null, "ratePerUnit": null, "multipleOfOrdinaryEarningsRate": null } }' /LeaveTypes: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getLeaveTypes x-hasPayrollUkProblem: true summary: Retrieves leave types parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer - in: query name: ActiveOnly x-snake: active_only description: Filters leave types by active status. By default the API returns all leave types. schema: type: boolean responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/LeaveTypes' example: '{ "id": "cb429b37-78d3-4b15-9788-83cbd1fd3f72", "providerName": "provider-name", "dateTimeUTC": "2020-03-27T18:32:57.9928041", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 12 }, "problem": null, "leaveTypes": [ { "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "name": "Holiday", "isPaidLeave": true, "showOnPayslip": true, "updatedDateUTC": "2020-02-13T15:56:11", "isStatutoryLeave": false, "isActive": true }, { "leaveTypeID": "1d2778ee-86ea-45c0-bbf8-1045485f6b3f", "name": "Parental Leave", "isPaidLeave": true, "showOnPayslip": true, "updatedDateUTC": "2020-03-27T18:19:53", "isStatutoryLeave": false, "isActive": true } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createLeaveType x-hasPayrollUkProblem: true x-example: - leaveType: key: leaveType keyPascal: LeaveType keySnake: leave_type is_object: true - name: key: name keyPascal: Name keySnake: name object: leaveType default: LeaveType - isPaidLeave: key: isPaidLeave keyPascal: IsPaidLeave keySnake: is_paid_leave nonString: true object: leaveType default: true - showOnPayslip: key: showOnPayslip keyPascal: ShowOnPayslip keySnake: show_on_payslip nonString: true object: leaveType default: true is_last: true summary: Creates a new leave type parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/LeaveTypeObject' example: '{ "id": "89aeb982-d6e8-45dd-a853-fcaee4fc99cc", "providerName": "provider-name", "dateTimeUTC": "2020-04-21T02:59:35.5461123", "httpStatusCode": "OK", "pagination": null, "problem": null, "leaveType": { "leaveTypeID": "4c027a23-6e7b-4547-808b-c34b2b140fef", "name": "My opebvwbfxf Leave", "isPaidLeave": false, "showOnPayslip": true, "updatedDateUTC": "2020-04-21T02:59:35.3831249", "isStatutoryLeave": null, "isActive": true } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LeaveType' example: '{ "name": "My opebvwbfxf Leave", "isPaidLeave": false, "showOnPayslip": true }' /LeaveTypes/{LeaveTypeID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getLeaveType x-hasPayrollUkProblem: true summary: Retrieves a specific leave type by using a unique leave type ID parameters: - in: path name: LeaveTypeID x-snake: leave_type_id required: true description: Identifier for the leave type schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/LeaveTypeObject' example: '{ "id": "684454f6-d808-46e0-b83d-5593a560b9d0", "providerName": "provider-name", "dateTimeUTC": "2020-04-21T02:59:34.9401664", "httpStatusCode": "OK", "pagination": null, "problem": null, "leaveType": { "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "name": "Holiday", "isPaidLeave": true, "showOnPayslip": true, "updatedDateUTC": "2020-04-20T20:14:31", "isStatutoryLeave": false, "isActive": true } }' /Reimbursements: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getReimbursements x-hasPayrollUkProblem: true summary: Retrieves reimbursements parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Reimbursements' example: '{ "id": "eea19a1d-a714-41c0-8730-94b6d4fbac84", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T00:17:27.1947108", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 5 }, "problem": null, "reimbursements": [ { "reimbursementID": "fef6115f-1606-4a74-be54-312d46b0eb0e", "name": "Travel Allowance", "accountID": "c7b73345-7f25-428a-bb97-7b20a1470a53", "currentRecord": true }, { "reimbursementID": "8e8d7849-26e1-41d1-a41f-7e1d0bfa147b", "name": "Mileage", "accountID": "0be1631e-cc7e-4c27-951f-308c3307c0fe", "currentRecord": true } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createReimbursement x-hasPayrollUkProblem: true x-example: - reimbursement: key: reimbursement keyPascal: Reimbursement keySnake: reimbursement is_object: true - name: key: name keyPascal: Name keySnake: name default: Test Reimbursement object: reimbursement - accountID: key: accountID keyPascal: AccountID keySnake: account_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: reimbursement is_last: true summary: Creates a new reimbursement parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/ReimbursementObject' example: '{ "id": "310ecff7-8577-4e05-98a3-3ce7ecb2868a", "providerName": "provider-name", "dateTimeUTC": "2020-04-15T00:43:39.0988382", "httpStatusCode": "OK", "pagination": null, "problem": null, "reimbursement": { "reimbursementID": "2b1b587a-39f6-43f8-9dd9-a858314333c8", "name": "My new Reimburse", "accountID": "9ee28149-32a9-4661-8eab-a28738696983", "currentRecord": true } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Reimbursement' example: '{ "name": "My new Reimburse", "accountID": "9ee28149-32a9-4661-8eab-a28738696983" }' /Reimbursements/{ReimbursementID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getReimbursement x-hasPayrollUkProblem: true summary: Retrieves a specific reimbursement by using a unique reimbursement id parameters: - in: path name: ReimbursementID x-snake: reimbursement_id required: true description: Identifier for the reimbursement schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/ReimbursementObject' example: '{ "id": "9c727a87-a96b-4998-b7e7-6b79347915cc", "providerName": "provider-name", "dateTimeUTC": "2020-04-21T03:05:16.5248369", "httpStatusCode": "OK", "pagination": null, "problem": null, "reimbursement": { "reimbursementID": "fef6115f-1606-4a74-be54-312d46b0eb0e", "name": "Travel Allowance", "accountID": "c7b73345-7f25-428a-bb97-7b20a1470a53", "currentRecord": true } }' /Timesheets: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.timesheets, payroll.timesheets.read] tags: - PayrollUk operationId: getTimesheets x-hasPayrollUkProblem: true summary: Retrieves timesheets parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer example: 5 - in: query name: filter description: Filter by employeeId and/or payrollCalendarId schema: type: string example: employeeId==00000000-0000-0000-0000-000000000000,payrollCalendarId==00000000-0000-0000-0000-000000000000 - in: query name: status description: filter results by any timesheets with a matching timesheet status schema: type: string example: Draft - in: query name: startDate x-snake: start_date description: filter results by any timesheets with a startDate on or after the provided date schema: type: string example: "2019-01-02" - in: query name: endDate x-snake: end_date description: filter results by any timesheets with a endDate on or before the provided date schema: type: string example: "2020-01-02" - in: query name: sort description: sort the order of timesheets returned. The default is based on the timesheets createdDate, sorted oldest to newest. Currently, the only other option is to reverse the order based on the timesheets startDate, sorted newest to oldest. schema: type: string example: startDate responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Timesheets' example: '{ "id": "d81c2087-3ecb-4d91-b775-73d85f593370", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T21:54:01.8865016", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 1 }, "problem": null, "timesheets": [ { "timesheetID": "0c94d453-3d8c-4167-8c25-b4025121d18b", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13T00:00:00", "endDate": "2020-04-19T00:00:00", "status": "Approved", "totalHours": 16, "updatedDateUTC": "2020-04-13T21:53:39" } ] }' post: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: createTimesheet x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - endDateValue: key: endDate keyPascal: EndDate keySnake: end_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - timesheet: key: timesheet keyPascal: Timesheet keySnake: timesheet is_object: true - payrollCalendarID: key: payrollCalendarID keyPascal: PayrollCalendarID keySnake: payroll_calendar_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheet - employeeID: key: employeeID keyPascal: EmployeeID keySnake: employee_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheet - startDate: is_variable: true nonString: true key: startDate keyPascal: StartDate keySnake: start_date default: startDate python: start_date ruby: start_date object: timesheet - endDate: is_last: true is_variable: true nonString: true key: endDate keyPascal: EndDate keySnake: end_date default: endDate python: end_date ruby: end_date object: timesheet summary: Creates a new timesheet parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetObject' example: '{ "id": "ef0aa7e2-6f7f-43f6-9186-af670dce7c69", "providerName": "provider-name", "dateTimeUTC": "2020-04-21T03:07:37.0148822", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheet": { "timesheetID": "88d2038a-06f7-4b8a-bdab-809804c0aa1d", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13T00:00:00", "endDate": "2020-04-19T00:00:00", "status": "Draft", "totalHours": 14, "updatedDateUTC": "2020-04-21T03:07:36.8132834", "timesheetLines": [ { "timesheetLineID": "03060d0c-b14a-4339-aced-51cb2e5313b7", "date": "2020-04-15T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 6 }, { "timesheetLineID": "53ebdb54-b604-4d15-8c42-5162a7fe88e6", "date": "2020-04-13T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 8 } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Timesheet' example: '{ "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13", "endDate": "2020-04-19", "timesheetLines": [ { "date": "2020-04-13", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnits": 8 }, { "date": "2020-04-15", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnits": 6 } ] }' /Timesheets/{TimesheetID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.timesheets, payroll.timesheets.read] tags: - PayrollUk operationId: getTimesheet x-hasPayrollUkProblem: true summary: Retrieve a specific timesheet by using a unique timesheet ID parameters: - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetObject' example: '{ "id": "504259ac-df26-482e-bd0a-d792d96453bb", "providerName": "provider-name", "dateTimeUTC": "2020-04-14T16:41:00.5013526", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheet": { "timesheetID": "25c59963-5df2-43c3-88f6-25a3caa63084", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13T00:00:00", "endDate": "2020-04-19T00:00:00", "status": "Draft", "totalHours": 14, "updatedDateUTC": "2020-04-14T16:31:35", "timesheetLines": [ { "timesheetLineID": "6cc1e5c3-f080-4dbc-a82b-bea256ef939f", "date": "2020-04-13T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 8 }, { "timesheetLineID": "3d900df1-9859-492b-9b00-155860158c0d", "date": "2020-04-15T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 6 } ] } }' delete: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: deleteTimesheet summary: Deletes a specific timesheet parameters: - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetLine' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' /Timesheets/{TimesheetID}/Lines: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: createTimesheetLine x-hasPayrollUkProblem: true x-example: - dateValue: key: date keyPascal: Date keySnake: date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - timesheetLine: key: timesheetLine keyPascal: TimesheetLine keySnake: timesheet_line is_object: true - timesheetLineID: key: timesheetLineID keyPascal: TimesheetLineID keySnake: timesheet_line_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - date: key: date keyPascal: Date keySnake: date default: date python: date ruby: date is_variable: true nonString: true object: timesheetLine - earningsRateID: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - trackingItemID: key: trackingItemID keyPascal: TrackingItemID keySnake: tracking_item_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - numberOfUnits: key: numberOfUnits keyPascal: NumberOfUnits keySnake: number_of_units default: 6 object: timesheetLine nonString: true is_last: true summary: Creates a new timesheet line for a specific timesheet using a unique timesheet ID parameters: - $ref: '#/components/parameters/idempotencyKey' - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetLineObject' example: '{ "id": "cf701261-529e-47cd-8156-5ec9ab3394ff", "providerName": "provider-name", "dateTimeUTC": "2020-04-14T17:19:22.8599292", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheetLine": { "timesheetLineID": "56fce87e-7f0d-4c19-8f74-7f5656651c81", "date": "2020-04-14T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 1 } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TimesheetLine' example: '{ "date": "2020-04-14", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnits": 1 }' /Timesheets/{TimesheetID}/Approve: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: approveTimesheet x-hasPayrollUkProblem: true summary: Approves a specific timesheet parameters: - $ref: '#/components/parameters/idempotencyKey' - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetObject' example: '{ "id": "94c27148-2749-4d85-bc1a-986e6de230ae", "providerName": "provider-name", "dateTimeUTC": "2020-06-01T20:32:19.7577043", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheet": { "timesheetID": "62bd8b5f-8e90-4868-a0e6-62f994f7d659", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13T00:00:00", "endDate": "2020-04-19T00:00:00", "status": "Approved", "totalHours": 9, "updatedDateUTC": "2020-06-01T20:32:19.9534744", "timesheetLines": [ { "timesheetLineID": "ce6db38f-efe9-49dc-ae42-7e6bad3cb167", "date": "2020-04-14T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 2 }, { "timesheetLineID": "bc8004d2-5965-4f4e-8e46-0519040b4a05", "date": "2020-04-15T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 6 }, { "timesheetLineID": "fd00cd5a-7d0c-4cb7-85ff-66bd3ed2439a", "date": "2020-04-14T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 1 } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' /Timesheets/{TimesheetID}/RevertToDraft: parameters: - $ref: '#/components/parameters/requiredHeader' post: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: revertTimesheet x-hasPayrollUkProblem: true summary: Reverts a specific timesheet to draft parameters: - $ref: '#/components/parameters/idempotencyKey' - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetObject' example: '{ "id": "a774530a-a50c-4480-a094-358cf80a7d98", "providerName": "provider-name", "dateTimeUTC": "2020-04-14T17:49:23.1119111", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheet": { "timesheetID": "0fd483c0-3302-48c6-bbd5-7247c9a02460", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "startDate": "2020-04-13T00:00:00", "endDate": "2020-04-19T00:00:00", "status": "Draft", "totalHours": 15, "updatedDateUTC": "2020-04-14T17:49:23.2188538", "timesheetLines": [ { "timesheetLineID": "17a08549-1ed1-416b-83e2-c65040119a02", "date": "2020-04-13T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 8 }, { "timesheetLineID": "0e912b7d-dc3f-4b95-a466-3f0f5c8581cb", "date": "2020-04-15T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 6 }, { "timesheetLineID": "d0faac99-f2d4-42b9-ab00-9c2bc6e8fe3a", "date": "2020-04-14T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 1 } ] } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' /Timesheets/{TimesheetID}/Lines/{TimesheetLineID}: parameters: - $ref: '#/components/parameters/requiredHeader' put: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: updateTimesheetLine x-hasPayrollUkProblem: true x-example: - dateValue: key: date keyPascal: Date keySnake: date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - timesheetLine: key: timesheetLine keyPascal: TimesheetLine keySnake: timesheet_line is_object: true - timesheetLineID: key: timesheetLineID keyPascal: TimesheetLineID keySnake: timesheet_line_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - date: key: date keyPascal: Date keySnake: date default: date python: date ruby: date is_variable: true nonString: true object: timesheetLine - earningsRateID: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - trackingItemID: key: trackingItemID keyPascal: TrackingItemID keySnake: tracking_item_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: timesheetLine - numberOfUnits: key: numberOfUnits keyPascal: NumberOfUnits keySnake: number_of_units default: 6 object: timesheetLine nonString: true is_last: true summary: Updates a specific timesheet line for a specific timesheet parameters: - $ref: '#/components/parameters/idempotencyKey' - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid - in: path name: TimesheetLineID x-snake: timesheet_line_id required: true description: Identifier for the timesheet line schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetLineObject' example: '{ "id": "582b87a6-14f3-409b-be89-f9b9c49db983", "providerName": "provider-name", "dateTimeUTC": "2020-04-14T18:07:30.718153", "httpStatusCode": "OK", "pagination": null, "problem": null, "timesheetLine": { "timesheetLineID": "c88edcad-af32-4536-a682-9a4772c21c8d", "date": "2020-04-14T00:00:00", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "trackingItemID": null, "numberOfUnits": 2 } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TimesheetLine' example: '{ "date": "2020-04-14", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnits": 2 }' delete: security: - OAuth2: [payroll.timesheets] tags: - PayrollUk operationId: deleteTimesheetLine summary: Deletes a specific timesheet line parameters: - in: path name: TimesheetID x-snake: timesheet_id required: true description: Identifier for the timesheet schema: type: string format: uuid - in: path name: TimesheetLineID x-snake: timesheet_line_id required: true description: Identifier for the timesheet line schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TimesheetLine' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' /PayRunCalendars: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getPayRunCalendars x-hasPayrollUkProblem: true summary: Retrieves payrun calendars parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRunCalendars' example: '{ "id": "f66c8da6-06c1-47c7-a415-366cb3991858", "providerName": "provider-name", "dateTimeUTC": "2020-03-25T18:39:43.9215965", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 3 }, "problem": null, "payRunCalendars": [ { "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "name": "Weekly ", "calendarType": "Weekly", "periodStartDate": "2020-02-10T00:00:00", "periodEndDate": "2020-02-16T00:00:00", "paymentDate": "2020-02-17T00:00:00", "updatedDateUTC": "2020-02-13T16:53:54" }, { "payrollCalendarID": "d45bc68f-59d6-4000-929d-1058dcfa79e1", "name": "Fortnightly ", "calendarType": "Fortnightly", "periodStartDate": "2020-02-03T00:00:00", "periodEndDate": "2020-02-16T00:00:00", "paymentDate": "2020-02-10T00:00:00", "updatedDateUTC": "2020-02-10T10:02:09" }, { "payrollCalendarID": "5e813d9e-949c-461f-8a89-e9ee8955a254", "name": "Monthly ", "calendarType": "Monthly", "periodStartDate": "2020-03-03T00:00:00", "periodEndDate": "2020-04-02T00:00:00", "paymentDate": "2020-03-31T00:00:00", "updatedDateUTC": "2020-02-13T16:54:07" } ] }' post: security: - OAuth2: [payroll.settings] tags: - PayrollUk operationId: createPayRunCalendar x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - paymentDateValue: key: paymentDate keyPascal: PaymentDate keySnake: payment_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - payRunCalendar: key: payRunCalendar keyPascal: PayRunCalendar keySnake: pay_run_calendar is_object: true - calendarType: key: calendarType keyPascal: CalendarType keySnake: calendar_type nonString: true default: PayRunCalendar.CalendarTypeEnum.Weekly php: XeroAPI\XeroPHP\Models\PayrollUk\PayRunCalendar\CalendarTypeEnum.WEEKLY node: PayRunCalendar.CalendarTypeEnum.Weekly ruby: XeroRuby::PayrollUk::PayRunCalendar::calendar_type_enum::WEEKLY python: calendar_type_enum.WEEKLY java: com.xero.models.payrolluk.PayRunCalendar.CalendarTypeEnum.WEEKLY csharp: PayRunCalendar.CalendarTypeEnum.Weekly object: payRunCalendar - periodStartDate: key: periodStartDate keyPascal: PeriodStartDate keySnake: period_start_date is_variable: true nonString: true default: startDate python: start_date ruby: start_date object: payRunCalendar - paymentDate: key: paymentDate keyPascal: PaymentDate keySnake: payment_date is_last: true is_variable: true nonString: true default: paymentDate python: payment_date ruby: payment_date object: payRunCalendar summary: Creates a new payrun calendar parameters: - $ref: '#/components/parameters/idempotencyKey' responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRunCalendarObject' example: '{ "id": "ef25e7f2-b5d6-454c-8147-396c373565dd", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T17:01:06.2708245", "httpStatusCode": "OK", "pagination": null, "problem": null, "payRunCalendar": { "payrollCalendarID": "5f29322d-9123-49be-bef0-9b14c35653d1", "name": "My Weekly Cal", "calendarType": "Weekly", "periodStartDate": "2020-05-01T00:00:00", "periodEndDate": "2020-05-07T00:00:00", "paymentDate": "2020-05-15T00:00:00", "updatedDateUTC": "2020-04-13T17:01:06.4944331" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PayRunCalendar' example: '{ "name": "My Weekly Cal", "calendarType": "Weekly", "periodStartDate": "2020-05-01", "paymentDate": "2020-05-15" }' /PayRunCalendars/{PayRunCalendarID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getPayRunCalendar x-hasPayrollUkProblem: true summary: Retrieves a specific payrun calendar by using a unique payrun calendar ID parameters: - in: path name: PayRunCalendarID x-snake: pay_run_calendar_id required: true description: Identifier for the payrun calendars schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRunCalendarObject' example: '{ "id": "dae942a3-b4fb-4b24-839b-14e1073f8cca", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T16:48:49.6902155", "httpStatusCode": "OK", "pagination": null, "problem": null, "payRunCalendar": { "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "name": "Weekly ", "calendarType": "Weekly", "periodStartDate": "2020-02-10T00:00:00", "periodEndDate": "2020-02-16T00:00:00", "paymentDate": "2020-02-17T00:00:00", "updatedDateUTC": "2020-02-13T16:53:54" } }' /Employees/{EmployeeID}/SalaryAndWages: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeSalaryAndWages x-hasPayrollUkProblem: true summary: Retrieves a specific employee's salary and wages by using a unique employee ID parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/SalaryAndWages' example: '{ "id": "56273e64-dff0-4542-96f3-54ad3ac27431", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T22:47:38.8995493", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 1 }, "problem": null, "salaryAndWages": [ { "salaryAndWagesID": "49c33012-c1ac-456c-91fd-cb7e6db6f5fe", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 40, "ratePerUnit": null, "numberOfUnitsPerDay": null, "daysPerWeek": null, "effectiveFrom": "2020-04-01T00:00:00", "annualSalary": 25000, "status": "Active", "paymentType": "Salary" } ] }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' post: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: createEmployeeSalaryAndWage x-hasPayrollUkProblem: true x-example: - salaryAndWage: key: salaryAndWage keyPascal: SalaryAndWage keySnake: salary_and_wage is_object: true - earningsRateID: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: salaryAndWage - numberOfUnitsPerDay: key: numberOfUnitsPerDay keyPascal: NumberOfUnitsPerDay keySnake: number_of_units_per_day default: 0 nonString: true object: salaryAndWage - numberOfUnitsPerWeek: key: numberOfUnitsPerWeek keyPascal: NumberOfUnitsPerWeek keySnake: number_of_units_per_week default: 0 nonString: true object: salaryAndWage - paymentType: key: paymentType keyPascal: PaymentType keySnake: payment_type nonString: true default: SalaryAndWage.PaymentTypeEnum.Salary php: XeroAPI\XeroPHP\Models\PayrollUk\SalaryAndWage\PaymentTypeEnum.SALARY node: SalaryAndWage.PaymentTypeEnum.Salary ruby: XeroRuby::PayrollUk::SalaryAndWage::payment_type_enum::SALARY python: payment_type_enum.Salary java: com.xero.models.payrolluk.SalaryAndWage.PaymentTypeEnum.SALARY csharp: SalaryAndWage.PaymentTypeEnum.Salary object: salaryAndWage - status: key: status keyPascal: Status keySnake: status nonString: true default: SalaryAndWage.StatusEnum.Active php: XeroAPI\XeroPHP\Models\PayrollUk\SalaryAndWage\StatusEnum.ACTIVE node: SalaryAndWage.StatusEnum.Active ruby: XeroRuby::PayrollUk::SalaryAndWage::status_enum::ACTIVE python: status_enum.Active java: com.xero.models.payrolluk.SalaryAndWage.StatusEnum.ACTIVE csharp: SalaryAndWage.StatusEnum.Active object: salaryAndWage is_last: true summary: Creates a salary and wage record for a specific employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/SalaryAndWageObject' example: '{ "id": "a15f15ec-a8ed-420b-82f6-1546a9bf6d57", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T23:46:35.2234544", "httpStatusCode": "OK", "pagination": null, "problem": null, "salaryAndWages": { "salaryAndWagesID": "1477fc72-b38d-4c0e-a46e-8657f0f32340", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 2, "ratePerUnit": null, "numberOfUnitsPerDay": 2, "daysPerWeek": null, "effectiveFrom": "2020-05-01T00:00:00", "annualSalary": 100, "status": "Pending", "paymentType": "Salary" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SalaryAndWage' example: '{ "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 2, "ratePerUnit": 10, "numberOfUnitsPerDay": 2, "effectiveFrom": "2020-05-01", "annualSalary": 100, "status": "ACTIVE", "paymentType": "Salary" }' /Employees/{EmployeeID}/SalaryAndWages/{SalaryAndWagesID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.employees, payroll.employees.read] tags: - PayrollUk operationId: getEmployeeSalaryAndWage x-hasPayrollUkProblem: true summary: Retrieves a specific salary and wages record for a specific employee using a unique salary and wage id parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: SalaryAndWagesID x-snake: salary_and_wages_id in: path required: true description: Id for single pay template earnings object schema: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/SalaryAndWages' example: '{ "id": "cd4f35e7-5062-494a-96c4-f81e9083b0b9", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T23:21:48.6291438", "httpStatusCode": "OK", "pagination": null, "problem": null, "salaryAndWages": [ { "salaryAndWagesID": "49c33012-c1ac-456c-91fd-cb7e6db6f5fe", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 40, "ratePerUnit": null, "numberOfUnitsPerDay": null, "daysPerWeek": null, "effectiveFrom": "2020-04-01T00:00:00", "annualSalary": 25000, "status": "Active", "paymentType": "Salary" } ] }' put: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: updateEmployeeSalaryAndWage x-hasPayrollUkProblem: true x-example: - salaryAndWage: key: salaryAndWage keyPascal: SalaryAndWage keySnake: salary_and_wage is_object: true - earningsRateID: key: earningsRateID keyPascal: EarningsRateID keySnake: earnings_rate_id is_uuid: true default: "00000000-0000-0000-0000-000000000000" object: salaryAndWage - numberOfUnitsPerDay: key: numberOfUnitsPerDay keyPascal: NumberOfUnitsPerDay keySnake: number_of_units_per_day default: 0 nonString: true object: salaryAndWage - numberOfUnitsPerWeek: key: numberOfUnitsPerWeek keyPascal: NumberOfUnitsPerWeek keySnake: number_of_units_per_week default: 0 nonString: true object: salaryAndWage - paymentType: key: paymentType keyPascal: PaymentType keySnake: payment_type nonString: true default: SalaryAndWage.PaymentTypeEnum.Salary php: XeroAPI\XeroPHP\Models\PayrollUk\SalaryAndWage\PaymentTypeEnum.SALARY node: SalaryAndWage.PaymentTypeEnum.Salary ruby: XeroRuby::PayrollUk::SalaryAndWage::payment_type_enum::SALARY python: payment_type_enum.Salary java: com.xero.models.payrolluk.SalaryAndWage.PaymentTypeEnum.SALARY csharp: SalaryAndWage.PaymentTypeEnum.Salary object: salaryAndWage - status: key: status keyPascal: Status keySnake: status nonString: true default: SalaryAndWage.StatusEnum.Active php: XeroAPI\XeroPHP\Models\PayrollUk\SalaryAndWage\StatusEnum.ACTIVE node: SalaryAndWage.StatusEnum.Active ruby: XeroRuby::PayrollUk::SalaryAndWage::status_enum::ACTIVE python: status_enum.Active java: com.xero.models.payrolluk.SalaryAndWage.StatusEnum.ACTIVE csharp: SalaryAndWage.StatusEnum.Active object: salaryAndWage is_last: true summary: Updates salary and wages record for a specific employee parameters: - $ref: '#/components/parameters/idempotencyKey' - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: SalaryAndWagesID x-snake: salary_and_wages_id in: path required: true description: Id for single pay template earnings object schema: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/SalaryAndWageObject' example: '{ "id": "d12a31ee-e094-4e67-9092-0d5e1d7569a6", "providerName": "provider-name", "dateTimeUTC": "2020-04-13T16:39:11.7310047", "httpStatusCode": "OK", "pagination": null, "problem": null, "salaryAndWages": { "salaryAndWagesID": "e9c7f567-b0a0-483c-b45f-d072e399352b", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 3, "ratePerUnit": null, "numberOfUnitsPerDay": null, "daysPerWeek": null, "effectiveFrom": "2020-05-15T00:00:00", "annualSalary": 101, "status": "Pending", "paymentType": "Salary" } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SalaryAndWage' example: '{ "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "numberOfUnitsPerWeek": 3, "ratePerUnit": 11, "effectiveFrom": "2020-05-15", "annualSalary": 101, "status": "ACTIVE", "paymentType": "Salary" }' delete: security: - OAuth2: [payroll.employees] tags: - PayrollUk operationId: deleteEmployeeSalaryAndWage summary: Deletes a salary and wages record for a specific employee parameters: - name: EmployeeID x-snake: employee_id in: path required: true description: Employee id for single object schema: type: string format: uuid example: 4ff1e5cc-9835-40d5-bb18-09fdb118db9c - name: SalaryAndWagesID x-snake: salary_and_wages_id in: path required: true description: Id for single salary and wages object schema: type: string format: uuid example: 3fa85f64-5717-4562-b3fc-2c963f66afa6 responses: '200': description: deletion successful /PayRuns: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.payruns, payroll.payruns.read] tags: - PayrollUk operationId: getPayRuns x-hasPayrollUkProblem: true summary: Retrieves pay runs parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer - in: query name: status description: By default get payruns will return all the payruns for an organization. You can add GET https://api.xero.com/payroll.xro/2.0/payRuns?statu={PayRunStatus} to filter the payruns by status. schema: type: string enum: - Draft - Posted responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRuns' example: '{ "id": "d748445b-fd11-4832-a85a-905fbfcf3d7c", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T21:55:55.0725037", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 2 }, "problem": null, "payRuns": [ { "payRunID": "e0a59d82-6229-4be4-9d66-49891b4d933e", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "periodStartDate": "2020-02-03T00:00:00", "periodEndDate": "2020-02-09T00:00:00", "paymentDate": "2020-02-10T00:00:00", "totalCost": 490.39, "totalPay": 376.92, "payRunStatus": "Draft", "payRunType": "Scheduled", "calendarType": "Weekly", "postedDateTime": null, "payslipMessage": null }, { "payRunID": "ea4f0a14-2c41-4583-9845-9e455972b326", "payrollCalendarID": "5e813d9e-949c-461f-8a89-e9ee8955a254", "periodStartDate": "2020-02-03T00:00:00", "periodEndDate": "2020-03-02T00:00:00", "paymentDate": "2020-02-28T00:00:00", "totalCost": 1502.08, "totalPay": 1294.65, "payRunStatus": "Posted", "payRunType": "Scheduled", "calendarType": "Monthly", "postedDateTime": "2020-02-13T16:54:11", "payslipMessage": null } ] }' /PayRuns/{PayRunID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.payruns, payroll.payruns.read] tags: - PayrollUk operationId: getPayRun x-hasPayrollUkProblem: true summary: Retrieves a specific pay run by using a unique pay run ID parameters: - in: path name: PayRunID x-snake: pay_run_id required: true description: Identifier for the pay run schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRunObject' example: '{ "id": "84471d62-74b6-4b21-845c-6d1e6f031172", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T21:55:55.745211", "httpStatusCode": "OK", "pagination": null, "problem": null, "payRun": { "payRunID": "e0a59d82-6229-4be4-9d66-49891b4d933e", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "periodStartDate": "2020-02-03T00:00:00", "periodEndDate": "2020-02-09T00:00:00", "paymentDate": "2020-02-10T00:00:00", "totalCost": 490.39, "totalPay": 376.92, "payRunStatus": "Draft", "payRunType": "Scheduled", "calendarType": "Weekly", "postedDateTime": null, "paySlips": [ { "paySlipID": "ed3fb9b3-e9a1-44fa-a224-8be49facbbe8", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "lastEdited": null, "firstName": "Mike", "lastName": "Johnpitragibigson", "totalEarnings": 480.77, "grossEarnings": 480.77, "totalPay": 386.54, "totalEmployerTaxes": 0, "totalEmployeeTaxes": 94.23, "totalDeductions": 9.62, "totalReimbursements": 0, "totalCourtOrders": 0, "totalBenefits": 9.62, "bacsHash": null, "paymentMethod": null } ], "payslipMessage": null, "invalidPayeeIDs": null } }' put: security: - OAuth2: [payroll.payruns] tags: - PayrollUk operationId: updatePayRun x-hasPayrollUkProblem: true x-example: - startDateValue: key: startDate keyPascal: StartDate keySnake: start_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 28)" java: "LocalDate.of(2020, Month.OCTOBER, 28)" csharp: "new DateTime(2020, 10, 10)" php: "new DateTime('2020-10-28')" node: "'2020-10-28'" python: "dateutil.parser.parse('2020-10-28T00:00:00Z')" ruby: "'YYYY-MM-DD'" - paymentDateValue: key: paymentDate keyPascal: PaymentDate keySnake: payment_date is_date: true java_datatype: LocalDate csharp_datatype: DateTime default: "LocalDate.of(2020, Month.OCTOBER, 30)" java: "LocalDate.of(2020, Month.OCTOBER, 30)" csharp: "new DateTime(2020, 10, 12)" php: "new DateTime('2020-10-30')" node: "'2020-10-30'" python: "dateutil.parser.parse('2020-10-30T00:00:00Z')" ruby: "'YYYY-MM-DD'" - payRunCalendar: key: payRunCalendar keyPascal: PayRunCalendar keySnake: pay_run_calendar is_object: true - calendarType: key: calendarType keyPascal: CalendarType keySnake: calendar_type nonString: true default: CalendarType.Weekly php: XeroAPI\XeroPHP\Models\PayrollUk\CalendarType.WEEKLY node: CalendarType.Weekly ruby: XeroRuby::PayrollUk::calendar_type::WEEKLY python: calendar_type.WEEKLY java: com.xero.models.payrolluk.CalendarType.WEEKLY csharp: CalendarType.Weekly object: payRunCalendar - periodStartDate: key: periodStartDate keyPascal: PeriodStartDate keySnake: period_start_date is_variable: true nonString: true default: startDate python: start_date ruby: start_date object: payRunCalendar - paymentDate: key: paymentDate keyPascal: PaymentDate keySnake: payment_date is_last: true is_variable: true nonString: true default: paymentDate python: payment_date ruby: payment_date object: payRunCalendar summary: Updates a specific pay run parameters: - $ref: '#/components/parameters/idempotencyKey' - in: path name: PayRunID x-snake: pay_run_id required: true description: Identifier for the pay run schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayRunObject' example: '{ "id": "f567524d-34d6-412b-97e3-f97152c1bbc2", "providerName": "provider-name", "dateTimeUTC": "2020-06-03T18:33:25.3607921", "httpStatusCode": "OK", "pagination": null, "problem": null, "payRun": { "payRunID": "e0a59d82-6229-4be4-9d66-49891b4d933e", "payrollCalendarID": "216d80e6-af55-47b1-b718-9457c3f5d2fe", "periodStartDate": "2020-02-03T00:00:00", "periodEndDate": "2020-02-09T00:00:00", "paymentDate": "2020-05-01T00:00:00", "totalCost": 523.79, "totalPay": 445.04, "payRunStatus": "Draft", "payRunType": "Scheduled", "calendarType": "Weekly", "postedDateTime": null, "paySlips": [ { "paySlipID": "ed3fb9b3-e9a1-44fa-a224-8be49facbbe8", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "lastEdited": null, "firstName": "Mike", "lastName": "Johncfvhitgezvson", "totalEarnings": 480.77, "grossEarnings": 480.77, "totalPay": 445.04, "totalEmployerTaxes": 43.02, "totalEmployeeTaxes": 35.73, "totalDeductions": 0, "totalReimbursements": 0, "totalCourtOrders": 0, "totalBenefits": 0, "bacsHash": null, "paymentMethod": "Electronically" } ], "payslipMessage": null, "invalidPayeeIDs": null } }' '400': description: validation error for a bad request content: application/json: schema: $ref: '#/components/schemas/Problem' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PayRun' example: '{ "paymentDate": "2020-05-01" }' /Payslips: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.payslip, payroll.payslip.read] tags: - PayrollUk operationId: getPaySlips x-hasPayrollUkProblem: true summary: Retrieves payslips parameters: - in: query name: page description: Page number which specifies the set of records to retrieve. By default the number of the records per set is 100. schema: type: integer - in: query required: true name: PayRunID x-snake: pay_run_id description: PayrunID which specifies the containing payrun of payslips to retrieve. By default, the API does not group payslips by payrun. schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Payslips' example: '{ "id": "c07aa280-478b-48b5-a778-499cf95c9781", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T21:50:46.3775117", "httpStatusCode": "OK", "pagination": { "page": 1, "pageSize": 100, "pageCount": 1, "itemCount": 1 }, "problem": null, "paySlips": [ { "paySlipID": "ed3fb9b3-e9a1-44fa-a224-8be49facbbe8", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "payRunID": "e0a59d82-6229-4be4-9d66-49891b4d933e", "lastEdited": null, "firstName": "Mike", "lastName": "Johnpitragibigson", "totalEarnings": 480.77, "grossEarnings": 480.77, "totalPay": 386.54, "totalEmployerTaxes": 0, "totalEmployeeTaxes": 94.23, "totalDeductions": 9.62, "totalReimbursements": 0, "totalCourtOrders": 0, "totalBenefits": 9.62, "bacsHash": null, "paymentMethod": null, "earningsLines": [ { "earningsLineID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "displayName": "Regular Hours", "ratePerUnit": 12.019231, "numberOfUnits": 40, "fixedAmount": null, "amount": 480.77, "isLinkedToTimesheet": false, "isAverageDailyPayRate": null } ], "leaveEarningsLines": [], "timesheetEarningsLines": [], "deductionLines": [], "reimbursementLines": [], "leaveAccrualLines": [ { "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "numberOfUnits": 0 } ], "benefitLines": [], "paymentLines": [ { "paymentLineID": "08ceb312-07af-4ce0-ae9a-176532f07009", "amount": 384.3, "accountNumber": null, "sortCode": null, "accountName": null } ], "employeeTaxLines": [ { "taxLineID": "e7dc717a-4399-4702-9e15-adb87e568dc9", "description": "PAYE", "amount": 48.6, "globalTaxTypeID": 1, "manualAdjustment": false }, { "taxLineID": "c774af0b-4776-4c81-9c96-ad18e4b35f40", "description": "Employee National Insurance Contribution", "amount": 38.25, "globalTaxTypeID": 2, "manualAdjustment": false } ], "employerTaxLines": [ { "taxLineID": "8de7a488-57ed-4d58-b76a-d9f9460ebded", "description": "Employer National Insurance Contribution", "amount": 43.99, "globalTaxTypeID": 3, "manualAdjustment": false } ], "courtOrderLines": [] } ] }' /Payslips/{PayslipID}: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.payslip, payroll.payslip.read] tags: - PayrollUk operationId: getPaySlip x-hasPayrollUkProblem: true summary: Retrieves a specific payslip by using a unique payslip ID parameters: - in: path name: PayslipID x-snake: payslip_id required: true description: Identifier for the payslip schema: type: string format: uuid responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/PayslipObject' example: '{ "id": "80c558c3-bc7a-48d0-91b2-20b8ec784f0d", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T22:04:35.1798025", "httpStatusCode": "OK", "pagination": null, "problem": null, "paySlip": { "paySlipID": "ed3fb9b3-e9a1-44fa-a224-8be49facbbe8", "employeeID": "aad6b292-7b94-408b-93f6-e489867e3fb0", "payRunID": "e0a59d82-6229-4be4-9d66-49891b4d933e", "lastEdited": null, "firstName": "Mike", "lastName": "Johnpitragibigson", "totalEarnings": 480.77, "grossEarnings": 480.77, "totalPay": 386.54, "totalEmployerTaxes": 0, "totalEmployeeTaxes": 94.23, "totalDeductions": 9.62, "totalReimbursements": 0, "totalCourtOrders": 0, "totalBenefits": 9.62, "bacsHash": null, "paymentMethod": null, "earningsLines": [ { "earningsLineID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "earningsRateID": "87f5b43a-cf51-4b74-92de-94c819e82d27", "displayName": "Regular Hours", "ratePerUnit": 12.019231, "numberOfUnits": 40, "fixedAmount": null, "amount": 480.77, "isLinkedToTimesheet": false, "isAverageDailyPayRate": null } ], "leaveEarningsLines": [], "timesheetEarningsLines": [], "deductionLines": [], "reimbursementLines": [], "leaveAccrualLines": [ { "leaveTypeID": "ed08dffe-788e-4b24-9630-f0fa2f4d164c", "numberOfUnits": 0 } ], "benefitLines": [], "paymentLines": [ { "paymentLineID": "08ceb312-07af-4ce0-ae9a-176532f07009", "amount": 384.3, "accountNumber": null, "sortCode": null, "accountName": null } ], "employeeTaxLines": [ { "taxLineID": "e7dc717a-4399-4702-9e15-adb87e568dc9", "description": "PAYE", "amount": 48.6, "globalTaxTypeID": 1, "manualAdjustment": false }, { "taxLineID": "c774af0b-4776-4c81-9c96-ad18e4b35f40", "description": "Employee National Insurance Contribution", "amount": 38.25, "globalTaxTypeID": 2, "manualAdjustment": false } ], "employerTaxLines": [ { "taxLineID": "8de7a488-57ed-4d58-b76a-d9f9460ebded", "description": "Employer National Insurance Contribution", "amount": 43.99, "globalTaxTypeID": 3, "manualAdjustment": false } ], "courtOrderLines": [] } }' /Settings: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getSettings x-hasPayrollUkProblem: true summary: Retrieves payroll settings responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/Settings' example: '{ "id": "3cb41871-980a-47e4-878f-7c576b0d3677", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T21:27:04.8905569", "httpStatusCode": "OK", "pagination": null, "problem": null, "settings": { "accounts": [ { "accountID": "9ee28149-32a9-4661-8eab-a28738696983", "type": "WAGESPAYABLE", "code": "814", "name": "Wages Payable - Payroll" }, { "accountID": "81da553d-c6c6-411e-95df-cc4ac8f7e1c2", "type": "WAGESEXPENSE", "code": "477", "name": "Salaries" }, { "accountID": "bd9e85e0-0478-433d-ae9f-0b3c4f04bfe4", "type": "BANK", "code": "090", "name": "Business Bank Account" }, { "accountID": "43072840-e67b-45df-8b90-f52ebedb2779", "type": "PAYELIABILITY", "code": "825", "name": "PAYE Payable" }, { "accountID": "a2377a9f-f5bd-4327-8f85-e3461b591912", "type": "NICLIABILITY", "code": "826", "name": "NIC Payable" }, { "accountID": "4e24254c-2770-433d-9845-8925ded5e14a", "type": "EMPLOYERSNIC", "code": "479", "name": "Employers National Insurance" }, { "accountID": "9ee28149-32a9-4661-8eab-a28738696983", "type": "PAYEECONTRIBUTION", "code": "814", "name": "Wages Payable - Payroll" } ] } }' /Settings/trackingCategories: parameters: - $ref: '#/components/parameters/requiredHeader' get: security: - OAuth2: [payroll.settings, payroll.settings.read] tags: - PayrollUk operationId: getTrackingCategories x-hasPayrollUkProblem: true summary: Retrieves tracking categories responses: '200': description: search results matching criteria content: application/json: schema: $ref: '#/components/schemas/TrackingCategories' example: '{ "id": "e56628f7-a25e-4d23-88c5-56e2895e2143", "providerName": "provider-name", "dateTimeUTC": "2020-04-10T21:13:21.498344", "httpStatusCode": "OK", "pagination": null, "problem": null, "trackingCategories": { "employeeGroupsTrackingCategoryID": "9d8ad8f6-0d0f-41e0-8851-ef47e8b54ae6", "timesheetTrackingCategoryID": "1d7d2015-10e7-4ecb-8b44-f331c8b63e2d" } }' components: securitySchemes: OAuth2: type: oauth2 description: For more information visit https://developer.xero.com/documentation/oauth2/overview flows: authorizationCode: authorizationUrl: 'https://login.xero.com/identity/connect/authorize' tokenUrl: 'https://identity.xero.com/connect/token' scopes: payroll.employees: Grant read-write access to payroll employees payroll.employees.read: Grant read-only access to payroll employees payroll.payruns: Grant read-write access to payroll payruns payroll.payruns.read: Grant read-only access to payroll payruns payroll.payslip: Grant read-write access to payroll payslips payroll.payslip.read: Grant read-only access to payroll payslips payroll.settings: Grant read-write access to payroll settings payroll.settings.read: Grant read-only access to payroll settings payroll.timesheets: Grant read-write access to payroll timesheets payroll.timesheets.read: Grant read-only access to payroll timesheets parameters: requiredHeader: in: header name: Xero-Tenant-Id x-snake: xero_tenant_id description: Xero identifier for Tenant schema: type: string required: true idempotencyKey: in: header name: Idempotency-Key x-snake: idempotency_key description: This allows you to safely retry requests without the risk of duplicate processing. 128 character max. example: "KEY_VALUE" schema: type: string schemas: Pagination: properties: page: type: integer example: 1 pageSize: type: integer example: 10 pageCount: type: integer example: 1 itemCount: type: integer example: 2 Problem: description: The object returned for a bad request type: object properties: type: description: The type of error format type: string example: application/problem+json title: description: The type of the error type: string example: BadRequest status: description: The error status code type: string example: 400 detail: description: A description of the error type: string example: Validation error occurred. instance: type: string invalidFields: type: array items: $ref: '#/components/schemas/InvalidField' InvalidField: type: object properties: name: description: The name of the field that caused the error type: string example: DateOfBirth reason: description: The reason the error occurred type: string example: The Date of Birth is required. Employees: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' employees: type: array items: $ref: '#/components/schemas/Employee' EmployeeObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' employee: $ref: '#/components/schemas/Employee' problem: $ref: '#/components/schemas/Problem' Employee: type: object required: - Title - FirstName - LastName - DateOfBirth - Gender - Address properties: employeeID: description: Xero unique identifier for the employee type: string format: uuid example: d90457c4-f1be-4f2e-b4e3-f766390a7e30 title: description: Title of the employee type: string example: Mrs firstName: description: First name of employee type: string example: Karen lastName: description: Last name of employee type: string example: Jones dateOfBirth: description: Date of birth of the employee (YYYY-MM-DD) type: string format: date example: 2019-01-02 x-is-date: true address: $ref: '#/components/schemas/Address' email: description: The email address for the employee type: string example: developer@me.com gender: description: The employee’s gender type: string enum: - M - F example: F phoneNumber: description: Employee phone number type: string example: 415-555-1212 startDate: description: Employment start date of the employee at the time it was requested type: string format: date example: 2020-01-19 x-is-date: true endDate: description: Employment end date of the employee at the time it was requested type: string format: date example: 2020-01-19 x-is-date: true payrollCalendarID: description: Xero unique identifier for the payroll calendar of the employee type: string format: uuid updatedDateUTC: description: UTC timestamp of last update to the employee type: string format: date-time x-is-datetime: true createdDateUTC: description: UTC timestamp when the employee was created in Xero type: string format: date-time x-is-datetime: true nationalInsuranceNumber: description: National insurance number of the employee type: string example: AB123456C isOffPayrollWorker: description: Whether the employee is an off payroll worker type: boolean EmploymentObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' employment: $ref: '#/components/schemas/Employment' Employment: type: object required: - PayrollCalendarID - StartDate - EmployeeNumber - NICategory properties: payrollCalendarID: description: Xero unique identifier for the payroll calendar of the employee type: string format: uuid startDate: description: Start date of the employment (YYYY-MM-DD) type: string format: date x-is-date: true employeeNumber: description: The employment number of the employee type: string example: 007 niCategory: description: The NI Category of the employee type: string enum: - A - B - C - F - H - I - J - L - M - S - V - X - Z example: A EmployeeTaxObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' employeeTax: $ref: '#/components/schemas/EmployeeTax' EmployeeTax: type: object properties: starterType: description: The Starter type. type: string example: New Employee with P45 starterDeclaration: description: Starter declaration. type: string example: B.) This is currently their only job taxCode: description: The Tax code. type: string example: 1185L w1M1: description: Describes whether the tax settings is W1M1 type: boolean previousTaxablePay: description: The previous taxable pay type: number format: double x-is-money: true previousTaxPaid: description: The tax amount previously paid type: number format: double x-is-money: true studentLoanDeduction: description: The employee's student loan deduction type type: string example: Plan Type 2 hasPostGraduateLoans: description: Describes whether the employee has post graduate loans type: boolean isDirector: description: Describes whether the employee is director type: boolean directorshipStartDate: description: The directorship start date type: string format: date x-is-date: true nicCalculationMethod: description: NICs calculation method type: string example: Annualized EmployeeOpeningBalancesObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' openingBalances: $ref: '#/components/schemas/EmployeeOpeningBalances' EmployeeOpeningBalances: type: object properties: statutoryAdoptionPay: description: The total accumulated statutory adoption pay amount received by the employee for current fiscal year to date type: number format: double x-is-money: true statutoryMaternityPay: description: The total accumulated statutory maternity pay amount received by the employee for current fiscal year to date type: number format: double x-is-money: true statutoryPaternityPay: description: The total accumulated statutory paternity pay amount received by the employee for current fiscal year to date type: number format: double x-is-money: true statutorySharedParentalPay: description: The total accumulated statutory shared parental pay amount received by the employee for current fiscal year to date type: number format: double x-is-money: true statutorySickPay: description: The total accumulated statutory sick pay amount received by the employee for current fiscal year to date type: number format: double x-is-money: true priorEmployeeNumber: description: The unique employee number issued by the employee's former employer type: number format: double EmployeeLeaves: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leave: type: array items: $ref: '#/components/schemas/EmployeeLeave' EmployeeLeaveObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leave: $ref: '#/components/schemas/EmployeeLeave' EmployeeLeave: type: object required: - leaveTypeID - description - startDate - endDate properties: leaveID: description: The Xero identifier for LeaveType type: string format: uuid leaveTypeID: description: The Xero identifier for LeaveType type: string format: uuid description: description: The description of the leave (max length = 50) type: string startDate: description: Start date of the leave (YYYY-MM-DD) type: string format: date x-is-date: true endDate: description: End date of the leave (YYYY-MM-DD) type: string format: date x-is-date: true periods: description: The leave period information. The StartDate, EndDate and NumberOfUnits needs to be specified when you do not want to calculate NumberOfUnits automatically. Using incorrect period StartDate and EndDate will result in automatic computation of the NumberOfUnits. type: array items: $ref: '#/components/schemas/LeavePeriod' updatedDateUTC: description: UTC timestamp of last update to the leave type note type: string format: date-time x-is-datetime: true LeavePeriods: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' periods: type: array items: $ref: '#/components/schemas/LeavePeriod' LeavePeriod: type: object properties: periodStartDate: description: The Pay Period Start Date (YYYY-MM-DD) type: string format: date x-is-date: true periodEndDate: description: The Pay Period End Date (YYYY-MM-DD) type: string format: date x-is-date: true numberOfUnits: description: The Number of Units for the leave type: number format: double periodStatus: description: Period Status type: string enum: - Approved - Completed EmployeeLeaveBalances: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveBalances: type: array items: $ref: '#/components/schemas/EmployeeLeaveBalance' EmployeeLeaveBalance: type: object properties: name: description: Name of the leave type. type: string example: Holiday leaveTypeID: description: The Xero identifier for leave type type: string format: uuid balance: description: The employees current balance for the corresponding leave type. type: number format: double typeOfUnits: description: The type of the units of the leave. type: string example: hours EmployeeStatutoryLeaveBalanceObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveBalance: $ref: '#/components/schemas/EmployeeStatutoryLeaveBalance' EmployeeStatutoryLeaveBalance: type: object properties: leaveType: description: The type of statutory leave type: string enum: - Sick - Adoption - Maternity - Paternity - Sharedparental balanceRemaining: description: The balance remaining for the corresponding leave type as of specified date. type: number format: double units: description: The units will be "Hours" type: string enum: - Hours EmployeeStatutoryLeavesSummaries: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' statutoryLeaves: type: array items: $ref: '#/components/schemas/EmployeeStatutoryLeaveSummary' EmployeeStatutoryLeaveSummary: type: object properties: statutoryLeaveID: description: The unique identifier (guid) of a statutory leave. type: string format: uuid employeeID: description: The unique identifier (guid) of the employee type: string format: uuid type: description: The category of statutory leave type: string enum: - Sick - Adoption - Maternity - Paternity - Sharedparental startDate: description: The date when the leave starts type: string format: date x-is-date: true endDate: description: The date when the leave ends type: string format: date x-is-date: true isEntitled: description: Whether the leave was entitled to receive payment type: boolean status: description: The status of the leave type: string enum: - Pending - In-Progress - Completed EmployeeStatutorySickLeaves: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' statutorySickLeave: type: array items: $ref: '#/components/schemas/EmployeeStatutorySickLeave' EmployeeStatutorySickLeaveObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' statutorySickLeave: $ref: '#/components/schemas/EmployeeStatutorySickLeave' EmployeeStatutorySickLeave: type: object required: - employeeID - startDate - endDate - workPattern - leaveTypeID - isPregnancyRelated - sufficientNotice properties: statutoryLeaveID: description: The unique identifier (guid) of a statutory leave type: string format: uuid employeeID: description: The unique identifier (guid) of the employee type: string format: uuid leaveTypeID: description: The unique identifier (guid) of the "Statutory Sick Leave (non-pensionable)" pay item type: string format: uuid startDate: description: The date when the leave starts type: string format: date x-is-date: true endDate: description: The date when the leave ends type: string format: date x-is-date: true type: description: the type of statutory leave type: string example: "Sick" status: description: the type of statutory leave type: string example: "Pending" workPattern: description: The days of the work week the employee is scheduled to work at the time the leave is taken type: array items: type: string isPregnancyRelated: description: Whether the sick leave was pregnancy related type: boolean sufficientNotice: description: Whether the employee provided sufficient notice and documentation as required by the employer supporting the sick leave request type: boolean isEntitled: description: Whether the leave was entitled to receive payment type: boolean entitlementWeeksRequested: description: The amount of requested time (in weeks) type: number format: double entitlementWeeksQualified: description: The amount of statutory sick leave time off (in weeks) that is available to take at the time the leave was requested type: number format: double entitlementWeeksRemaining: description: A calculated amount of time (in weeks) that remains for the statutory sick leave period type: number format: double overlapsWithOtherLeave: description: Whether another leave (Paternity, Shared Parental specifically) occurs during the requested leave's period. While this is allowed it could affect payment amounts type: boolean entitlementFailureReasons: description: If the leave requested was considered "not entitled", the reasons why are listed here. type: array items: type: string enum: - UnableToCalculateAwe - AweLowerThanLel - NotQualifiedInPreviousPiw - ExceededMaximumEntitlementWeeksOfSsp - ExceededMaximumDurationOfPiw - SufficientNoticeNotGiven EmployeeLeaveTypes: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveTypes: type: array items: $ref: '#/components/schemas/EmployeeLeaveType' EmployeeLeaveTypeObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveType: $ref: '#/components/schemas/EmployeeLeaveType' EmployeeLeaveType: type: object required: - leaveTypeID - scheduleOfAccrual properties: leaveTypeID: description: The Xero identifier for leave type type: string format: uuid scheduleOfAccrual: description: The schedule of accrual type: string enum: - BeginningOfCalendarYear - OnAnniversaryDate - EachPayPeriod - OnHourWorked hoursAccruedAnnually: description: The number of hours accrued for the leave annually. This is 0 when the scheduleOfAccrual chosen is "OnHourWorked" type: number format: double maximumToAccrue: description: The maximum number of hours that can be accrued for the leave type: number format: double openingBalance: description: The initial number of hours assigned when the leave was added to the employee type: number format: double rateAccruedHourly: description: The number of hours added to the leave balance for every hour worked by the employee. This is normally 0, unless the scheduleOfAccrual chosen is "OnHourWorked" type: number format: double EmployeePayTemplateObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' payTemplate: $ref: '#/components/schemas/EmployeePayTemplate' EmployeePayTemplates: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' earningTemplates: $ref: '#/components/schemas/EarningsTemplates' EmployeePayTemplate: type: object required: - EarningTemplates properties: employeeID: description: Unique identifier for the employee type: string format: uuid earningTemplates: $ref: '#/components/schemas/EarningsTemplates' EarningsTemplates: type: array items: $ref: '#/components/schemas/EarningsTemplate' EarningsTemplateObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' earningTemplate: $ref: '#/components/schemas/EarningsTemplate' EarningsTemplate: type: object properties: payTemplateEarningID: description: The Xero identifier for the earnings template type: string format: uuid ratePerUnit: description: The rate per unit type: number format: double x-is-money: true numberOfUnits: description: The rate per unit type: number format: double x-is-money: true fixedAmount: description: The fixed amount per period type: number format: double x-is-money: true earningsRateID: description: The corresponding earnings rate identifier type: string format: uuid name: description: The read-only name of the Earning Template. type: string Benefits: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' benefits: type: array items: $ref: '#/components/schemas/Benefit' BenefitObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' benefit: $ref: '#/components/schemas/Benefit' Benefit: type: object required: - name - category - liabilityAccountId - expenseAccountId - calculationType - percentage properties: id: description: unique identifier in Xero type: string format: uuid name: description: Name of the employer pension type: string category: description: Category type of the employer pension type: string enum: - StakeholderPension - Other liabilityAccountId: description: Xero identifier for Liability Account type: string format: uuid expenseAccountId: description: Xero identifier for Expense Account type: string format: uuid standardAmount: description: Standard amount of the employer pension type: number format: double x-is-money: true percentage: description: Percentage of gross of the employer pension type: number format: double x-is-money: true calculationType: description: Calculation Type of the employer pension (FixedAmount or PercentageOfGross). type: string enum: - FixedAmount - PercentageOfGross currentRecord: description: Identifier of a record is active or not. type: boolean subjectToNIC: description: Identifier of subject To NIC type: boolean subjectToPension: description: Identifier of subject To pension type: boolean subjectToTax: description: Identifier of subject To Tax type: boolean isCalculatingOnQualifyingEarnings: description: Identifier of calculating on qualifying earnings type: boolean showBalanceToEmployee: description: display the balance to employee type: boolean Deductions: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' deductions: type: array items: $ref: '#/components/schemas/Deduction' DeductionObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' deduction: $ref: '#/components/schemas/Deduction' Deduction: type: object required: - deductionName - liabilityAccountId properties: deductionId: description: The Xero identifier for Deduction type: string format: uuid deductionName: description: Name of the deduction type: string deductionCategory: description: Deduction Category type type: string enum: - CapitalContributions - ChildCareVoucher - MakingGood - PostgraduateLoanDeductions - PrivateUsePayments - SalarySacrifice - StakeholderPension - StakeholderPensionPostTax - StudentLoanDeductions - UkOther liabilityAccountId: description: Xero identifier for Liability Account type: string format: uuid currentRecord: description: Identifier of a record is active or not. type: boolean standardAmount: description: Standard amount of the deduction type: number format: double x-is-money: true reducesSuperLiability: description: Identifier of reduces super liability type: boolean reducesTaxLiability: description: Identifier of reduces tax liability type: boolean calculationType: description: determine the calculation type whether fixed amount or percentage of gross type: string enum: - FixedAmount - PercentageOfGross percentage: description: Percentage of gross type: number format: double x-is-money: true subjectToNIC: description: Identifier of subject To NIC type: boolean subjectToTax: description: Identifier of subject To Tax type: boolean isReducedByBasicRate: description: Identifier of reduced by basic rate applicable or not type: boolean applyToPensionCalculations: description: Identifier for apply to pension calculations type: boolean isCalculatingOnQualifyingEarnings: description: Identifier of calculating on qualifying earnings type: boolean isPension: description: Identifier of applicable for pension or not type: boolean StatutoryDeductions: type: array items: $ref: '#/components/schemas/StatutoryDeduction' StatutoryDeduction: type: object properties: id: description: The Xero identifier for earnings order type: string format: uuid name: description: Name of the earnings order type: string statutoryDeductionCategory: $ref: '#/components/schemas/StatutoryDeductionCategory' liabilityAccountId: description: Xero identifier for Liability Account type: string format: uuid currentRecord: description: Identifier of a record is active or not. type: boolean StatutoryDeductionCategory: description: Statutory Deduction Category type: string enum: - AdditionalStudentLoan - ChildSupport - CourtFines - Creditor - FederalLevy - InlandRevenueArrears - KiwiSaver - MsdRepayments - NonPriorityOrder - PriorityOrder - TableBased - StudentLoan - VoluntaryStudentLoan - USChildSupport EarningsOrders: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' statutoryDeductions: type: array items: $ref: '#/components/schemas/EarningsOrder' EarningsOrderObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' statutoryDeduction: $ref: '#/components/schemas/EarningsOrder' EarningsOrder: type: object required: - name properties: id: description: Xero unique identifier for an earning rate type: string format: uuid name: description: Name of the earning order type: string statutoryDeductionCategory: $ref: '#/components/schemas/StatutoryDeductionCategory' liabilityAccountId: description: Xero identifier for Liability Account type: string format: uuid currentRecord: description: Identifier of a record is active or not. type: boolean default: true EarningsRates: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' earningsRates: type: array items: $ref: '#/components/schemas/EarningsRate' EarningsRateObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' earningsRate: $ref: '#/components/schemas/EarningsRate' EarningsRate: type: object required: - name - earningsType - rateType - typeOfUnits - expenseAccountID properties: earningsRateID: description: Xero unique identifier for an earning rate type: string format: uuid name: description: Name of the earning rate type: string earningsType: description: Indicates how an employee will be paid when taking this type of earning type: string enum: - Allowance - BackPay - Bonus - Commission - LumpSum - OtherEarnings - OvertimeEarnings - RegularEarnings - StatutoryAdoptionPay - StatutoryAdoptionPayNonPensionable - StatutoryBereavementPay - StatutoryMaternityPay - StatutoryMaternityPayNonPensionable - StatutoryPaternityPay - StatutoryPaternityPayNonPensionable - StatutoryParentalBereavementPayNonPensionable - StatutorySharedParentalPay - StatutorySharedParentalPayNonPensionable - StatutorySickPay - StatutorySickPayNonPensionable - TipsNonDirect - TipsDirect - TerminationPay rateType: description: Indicates the type of the earning rate type: string enum: - RatePerUnit - MultipleOfOrdinaryEarningsRate - FixedAmount typeOfUnits: description: The type of units used to record earnings type: string currentRecord: description: Indicates whether an earning type is active type: boolean expenseAccountID: description: The account that will be used for the earnings rate type: string format: uuid ratePerUnit: description: Default rate per unit (optional). Only applicable if RateType is RatePerUnit type: number format: double x-is-money: true multipleOfOrdinaryEarningsRate: description: This is the multiplier used to calculate the rate per unit, based on the employee’s ordinary earnings rate. For example, for time and a half enter 1.5. Only applicable if RateType is MultipleOfOrdinaryEarningsRate type: number format: double x-is-money: true fixedAmount: description: Optional Fixed Rate Amount. Applicable for FixedAmount Rate type: number format: double x-is-money: true LeaveTypes: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveTypes: type: array items: $ref: '#/components/schemas/LeaveType' LeaveTypeObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' leaveType: $ref: '#/components/schemas/LeaveType' LeaveType: type: object required: - name - isPaidLeave - showOnPayslip properties: leaveID: description: Xero unique identifier for the leave type: string format: uuid leaveTypeID: description: Xero unique identifier for the leave type type: string format: uuid name: description: Name of the leave type type: string isPaidLeave: description: Indicate that an employee will be paid when taking this type of leave type: boolean showOnPayslip: description: Indicate that a balance for this leave type to be shown on the employee’s payslips type: boolean updatedDateUTC: description: UTC timestamp of last update to the leave type note type: string format: date-time x-is-datetime: true isActive: description: Shows whether the leave type is active or not type: boolean isStatutoryLeave: description: Shows whether the leave type is a statutory leave type or not type: boolean Reimbursements: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' reimbursements: type: array items: $ref: '#/components/schemas/Reimbursement' ReimbursementObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' reimbursement: $ref: '#/components/schemas/Reimbursement' Reimbursement: type: object required: - name - accountID properties: reimbursementID: description: Xero unique identifier for a reimbursement type: string format: uuid name: description: Name of the reimbursement type: string accountID: description: Xero unique identifier for the account used for the reimbursement type: string format: uuid currentRecord: description: Indicates that whether the reimbursement is active type: boolean Timesheets: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' timesheets: type: array items: $ref: '#/components/schemas/Timesheet' TimesheetObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' timesheet: $ref: '#/components/schemas/Timesheet' Timesheet: type: object required: - payrollCalendarID - employeeID - startDate - endDate properties: timesheetID: description: The Xero identifier for a Timesheet type: string format: uuid payrollCalendarID: description: The Xero identifier for the Payroll Calendar that the Timesheet applies to type: string format: uuid employeeID: description: The Xero identifier for the Employee that the Timesheet is for type: string format: uuid startDate: description: The Start Date of the Timesheet period (YYYY-MM-DD) type: string format: date x-is-date: true endDate: description: The End Date of the Timesheet period (YYYY-MM-DD) type: string format: date x-is-date: true status: description: Status of the timesheet type: string enum: - Draft - Approved - Completed totalHours: description: The Total Hours of the Timesheet type: number format: double updatedDateUTC: description: The UTC date time that the Timesheet was last updated type: string format: date-time x-is-datetime: true timesheetLines: $ref: '#/components/schemas/TimesheetLines' TimesheetLines: type: array items: $ref: '#/components/schemas/TimesheetLine' TimesheetLineObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' timesheetLine: $ref: '#/components/schemas/TimesheetLine' TimesheetLine: type: object required: - date - earningsRateID - numberOfUnits properties: timesheetLineID: description: The Xero identifier for a Timesheet Line type: string format: uuid date: description: The Date that this Timesheet Line is for (YYYY-MM-DD) type: string format: date x-is-date: true earningsRateID: description: The Xero identifier for the Earnings Rate that the Timesheet is for type: string format: uuid trackingItemID: description: The Xero identifier for the Tracking Item that the Timesheet is for type: string format: uuid numberOfUnits: description: The Number of Units of the Timesheet Line type: number format: double PayRunCalendars: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' payRunCalendars: type: array items: $ref: '#/components/schemas/PayRunCalendar' PayRunCalendarObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' payRunCalendar: $ref: '#/components/schemas/PayRunCalendar' PayRunCalendar: type: object required: - name - calendarType - periodStartDate - paymentDate properties: payrollCalendarID: description: Xero unique identifier for the payroll calendar type: string format: uuid name: description: Name of the calendar type: string calendarType: description: Type of the calendar type: string enum: - Weekly - Fortnightly - FourWeekly - Monthly - Annual - Quarterly periodStartDate: description: Period start date of the calendar type: string format: date x-is-date: true periodEndDate: description: Period end date of the calendar type: string format: date x-is-date: true paymentDate: description: Payment date of the calendar type: string format: date x-is-date: true updatedDateUTC: description: UTC timestamp of the last update to the pay run calendar type: string format: date-time x-is-datetime: true PaymentMethodObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' paymentMethod: $ref: '#/components/schemas/PaymentMethod' PaymentMethod: type: object required: - paymentMethod properties: paymentMethod: description: The payment method code type: string enum: - Cheque - Electronically - Manual bankAccounts: type: array items: $ref: '#/components/schemas/BankAccount' SalaryAndWages: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' salaryAndWages: type: array items: $ref: '#/components/schemas/SalaryAndWage' SalaryAndWageObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' salaryAndWages: $ref: '#/components/schemas/SalaryAndWage' SalaryAndWage: type: object required: - earningsRateID - numberOfUnitsPerWeek - effectiveFrom - annualSalary - status - paymentType properties: salaryAndWagesID: description: Xero unique identifier for a salary and wages record type: string format: uuid earningsRateID: description: Xero unique identifier for an earnings rate type: string format: uuid numberOfUnitsPerWeek: description: The Number of Units per week for the corresponding salary and wages type: number format: double ratePerUnit: description: The rate of each unit for the corresponding salary and wages type: number format: double numberOfUnitsPerDay: description: The Number of Units per day for the corresponding salary and wages type: number format: double effectiveFrom: description: The effective date of the corresponding salary and wages type: string format: date x-is-date: true annualSalary: description: The annual salary type: number format: double status: description: The current status of the corresponding salary and wages type: string enum: - Active - Pending - History paymentType: description: The type of the payment of the corresponding salary and wages type: string enum: - Salary - Hourly PayRuns: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' payRuns: type: array items: $ref: '#/components/schemas/PayRun' PayRunObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' payRun: $ref: '#/components/schemas/PayRun' PayRun: type: object properties: payRunID: description: Xero unique identifier for the pay run type: string format: uuid payrollCalendarID: description: Xero unique identifier for the payroll calendar type: string format: uuid periodStartDate: description: Period start date of the payroll calendar type: string format: date x-is-date: true periodEndDate: description: Period end date of the payroll calendar type: string format: date x-is-date: true paymentDate: description: Payment date of the pay run type: string format: date x-is-date: true totalCost: description: Total cost of the pay run type: number format: double totalPay: description: Total pay of the pay run type: number format: double payRunStatus: description: Pay run status type: string enum: - Draft - Posted payRunType: description: Pay run type type: string enum: - Scheduled - Unscheduled - EarlierYearUpdate calendarType: description: Calendar type of the pay run type: string enum: - Weekly - Fortnightly - FourWeekly - Monthly - Annual - Quarterly postedDateTime: description: Posted date time of the pay run type: string format: date x-is-date: true paySlips: type: array items: $ref: '#/components/schemas/Payslip' PayslipObject: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' paySlip: $ref: '#/components/schemas/Payslip' Payslips: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' paySlips: type: array items: $ref: '#/components/schemas/Payslip' Payslip: type: object properties: paySlipID: description: The Xero identifier for a Payslip type: string format: uuid employeeID: description: The Xero identifier for payroll employee type: string format: uuid payRunID: description: The Xero identifier for the associated payrun type: string format: uuid lastEdited: description: The date payslip was last updated type: string format: date x-is-datetime: true firstName: description: Employee first name type: string lastName: description: Employee last name type: string totalEarnings: description: Total earnings before any deductions. Same as gross earnings for UK. type: number format: double grossEarnings: description: Total earnings before any deductions. Same as total earnings for UK. type: number format: double totalPay: description: The employee net pay type: number format: double totalEmployerTaxes: description: The employer's tax obligation type: number format: double totalEmployeeTaxes: description: The part of an employee's earnings that is deducted for tax purposes type: number format: double totalDeductions: description: Total amount subtracted from an employee's earnings to reach total pay type: number format: double totalReimbursements: description: Total reimbursements are nontaxable payments to an employee used to repay out-of-pocket expenses when the person incurs those expenses through employment type: number format: double totalCourtOrders: description: Total amounts required by law to subtract from the employee's earnings type: number format: double totalBenefits: description: Benefits (also called fringe benefits, perquisites or perks) are various non-earnings compensations provided to employees in addition to their normal earnings or salaries type: number format: double bacsHash: description: BACS Service User Number type: string paymentMethod: description: The payment method code type: string enum: - Cheque - Electronically - Manual earningsLines: $ref: '#/components/schemas/EarningsLines' leaveEarningsLines: $ref: '#/components/schemas/LeaveEarningsLines' timesheetEarningsLines: $ref: '#/components/schemas/TimesheetEarningsLines' deductionLines: $ref: '#/components/schemas/DeductionLines' reimbursementLines: $ref: '#/components/schemas/ReimbursementLines' leaveAccrualLines: $ref: '#/components/schemas/LeaveAccrualLines' benefitLines: $ref: '#/components/schemas/BenefitLines' paymentLines: $ref: '#/components/schemas/PaymentLines' employeeTaxLines: $ref: '#/components/schemas/TaxLines' employerTaxLines: $ref: '#/components/schemas/TaxLines' courtOrderLines: $ref: '#/components/schemas/CourtOrderLines' EarningsLines: type: array items: $ref: '#/components/schemas/EarningsLine' EarningsLine: type: object properties: earningsLineID: description: Xero identifier for payroll earnings line type: string format: uuid earningsRateID: description: Xero identifier for payroll earnings rate type: string format: uuid displayName: description: name of earnings rate for display in UI type: string ratePerUnit: description: Rate per unit for earnings line type: number format: double numberOfUnits: description: Earnings number of units type: number format: double fixedAmount: description: Earnings fixed amount. Only applicable if the EarningsRate RateType is Fixed type: number format: double amount: description: The amount of the earnings line. type: number format: double isLinkedToTimesheet: description: Identifies if the earnings is taken from the timesheet. False for earnings line type: boolean isAverageDailyPayRate: description: Identifies if the earnings is using an average daily pay rate type: boolean LeaveEarningsLines: type: array items: $ref: '#/components/schemas/LeaveEarningsLine' LeaveEarningsLine: type: object properties: earningsRateID: description: Xero identifier for payroll leave earnings rate type: string format: uuid ratePerUnit: description: Rate per unit for leave earnings line type: number format: double numberOfUnits: description: Leave earnings number of units type: number format: double fixedAmount: description: Leave earnings fixed amount. Only applicable if the EarningsRate RateType is Fixed type: number format: double amount: description: The amount of the earnings line. type: number format: double isLinkedToTimesheet: description: Identifies if the leave earnings is taken from the timesheet. False for leave earnings line type: boolean TimesheetEarningsLines: type: array items: $ref: '#/components/schemas/TimesheetEarningsLine' TimesheetEarningsLine: type: object properties: earningsRateID: description: Xero identifier for payroll timesheet earnings rate type: string format: uuid ratePerUnit: description: Rate per unit for timesheet earnings line type: number format: double numberOfUnits: description: Timesheet earnings number of units type: number format: double fixedAmount: description: Timesheet earnings fixed amount. Only applicable if the EarningsRate RateType is Fixed type: number format: double amount: description: The amount of the timesheet earnings line. type: number format: double isLinkedToTimesheet: description: Identifies if the timesheet earnings is taken from the timesheet. False for leave earnings line type: boolean DeductionLines: type: array items: $ref: '#/components/schemas/DeductionLine' DeductionLine: type: object properties: deductionTypeID: description: Xero identifier for payroll deduction type: string format: uuid amount: description: The amount of the deduction line type: number format: double subjectToTax: description: Identifies if the deduction is subject to tax type: boolean percentage: description: Deduction rate percentage type: number format: double ReimbursementLines: type: array items: $ref: '#/components/schemas/ReimbursementLine' ReimbursementLine: type: object properties: reimbursementTypeID: description: Xero identifier for payroll reimbursement type: string format: uuid description: description: Reimbursement line description type: string amount: description: Reimbursement amount type: number format: double x-is-money: true LeaveAccrualLines: type: array items: $ref: '#/components/schemas/LeaveAccrualLine' LeaveAccrualLine: type: object properties: leaveTypeID: description: Xero identifier for the Leave type type: string format: uuid numberOfUnits: description: Leave accrual number of units type: number format: double BenefitLines: type: array items: $ref: '#/components/schemas/BenefitLine' BenefitLine: type: object properties: benefitTypeID: description: Xero identifier for payroll benefit type type: string format: uuid displayName: description: Benefit display name type: string amount: description: The amount of the benefit line. type: number format: double fixedAmount: description: Benefit fixed amount type: number format: double percentage: description: Benefit rate percentage type: number format: double PaymentLines: type: array items: $ref: '#/components/schemas/PaymentLine' PaymentLine: type: object properties: paymentLineID: description: Xero identifier for payroll payment line type: string format: uuid amount: description: The amount of the payment line type: number format: double accountNumber: description: The account number type: string sortCode: description: The account sort code type: string accountName: description: The account name type: string TaxLines: type: array items: $ref: '#/components/schemas/TaxLine' TaxLine: type: object properties: taxLineID: description: Xero identifier for payroll tax line type: string format: uuid description: description: Tax line description type: string isEmployerTax: description: Identifies if the amount is paid for by the employee or employer. True if employer pays the tax type: boolean amount: description: The amount of the tax line type: number format: double globalTaxTypeID: description: Tax type ID type: string manualAdjustment: description: Identifies if the tax line is a manual adjustment type: boolean CourtOrderLines: type: array items: $ref: '#/components/schemas/CourtOrderLine' CourtOrderLine: type: object properties: courtOrderTypeID: description: Xero identifier for payroll court order type type: string format: uuid amount: description: Amount type: number format: double Settings: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' settings: $ref: '#/components/schemas/Accounts' Accounts: type: object properties: accounts: type: array items: $ref: '#/components/schemas/Account' Account: type: object properties: accountID: description: The Xero identifier for Settings. type: string format: uuid type: description: The assigned AccountType type: string enum: - BANK - EMPLOYERSNIC - NICLIABILITY - PAYEECONTRIBUTION - PAYELIABILITY - WAGESPAYABLE - WAGESEXPENSE code: description: A unique 3 digit number for each Account type: string name: description: Name of the Account. type: string Address: type: object required: - addressLine1 - city - postCode properties: addressLine1: description: Address line 1 for employee home address type: string example: 123 Main St addressLine2: description: Address line 2 for employee home address type: string example: Apt 4 city: description: Suburb for employee home address type: string example: Fulham postCode: description: PostCode for employee home address type: string example: SW6 6EY countryName: description: Country of HomeAddress type: string example: United Kingdom BankAccounts: type: array items: $ref: '#/components/schemas/BankAccount' BankAccount: type: object required: - accountName - accountNumber - sortCode properties: accountName: description: Bank account name (max length = 32) type: string accountNumber: description: Bank account number (digits only; max length = 8) type: string sortCode: description: Bank account sort code (6 digits) type: string TrackingCategories: type: object properties: pagination: $ref: '#/components/schemas/Pagination' problem: $ref: '#/components/schemas/Problem' trackingCategories: $ref: '#/components/schemas/TrackingCategory' TrackingCategory: type: object properties: employeeGroupsTrackingCategoryID: description: The Xero identifier for Employee groups tracking category. type: string format: uuid timesheetTrackingCategoryID: description: The Xero identifier for Timesheet tracking category. type: string format: uuid