Xero Payroll Australia API

Payroll management API for Australian businesses using Xero. Supports managing employees, pay runs, pay slips, leave applications, payroll calendars, tax declarations, and superannuation. Compliant with Australian payroll regulations including Single Touch Payroll (STP).

OpenAPI Specification

xero-payroll-au-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 12.0.2
  title: Xero Payroll AU API
  description: This is the Xero Payroll API for orgs in Australia region.
  termsOfService: https://developer.xero.com/xero-developer-platform-terms-conditions/
  contact:
    name: Xero Platform Team
    email: [email protected]
    url: https://developer.xero.com
  license:
    name: MIT
    url: https://github.com/XeroAPI/Xero-OpenAPI/blob/master/LICENSE
servers:
  - description: Xero Payroll AU API
    url: https://api.xero.com/payroll.xro/1.0
tags:
  - name: PayrollAu
    description: Operations available to regular developers
paths:
  /Employees:
    parameters:
      - $ref: "#/components/parameters/requiredHeader"
    get:
      security:
        - OAuth2:
            - payroll.employees
            - payroll.employees.read
      tags:
        - PayrollAu
      operationId: getEmployees
      summary: Searches payroll employees
      parameters:
        - in: header
          name: If-Modified-Since
          x-snake: if_modified_since
          description: Only records created or modified since this timestamp will be returned
          example: "2020-02-06T12:17:43.202-08:00"
          schema:
            type: string
            format: date-time
        - in: query
          name: where
          description: Filter by an any element
          schema:
            type: string
          example: Status=="ACTIVE"
        - in: query
          name: order
          description: Order by an any element
          schema:
            type: string
          example: EmailAddress%20DESC
        - in: query
          name: page
          description: e.g. page=1 – Up to 100 employees will be returned in a single API call
          schema:
            type: integer
      responses:
        "200":
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Employees"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573621523465)/
                Employees:
                  - EmployeeID: b34e89ff-770d-4099-b7e5-f968767118bc
                    FirstName: Jack
                    MiddleNames: Johnson
                    LastName: Sparrow
                    Status: ACTIVE
                    Email: [email protected]
                    DateOfBirth: /Date(572313600000+0000)/
                    Gender: M
                    Phone: "4153332323"
                    Mobile: 415-1234567
                    StartDate: /Date(1547164800000+0000)/
                    OrdinaryEarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                    PayrollCalendarID: 22a05fc5-386d-4950-9842-3e7a6c812135
                    UpdatedDateUTC: /Date(1572915814000+0000)/
                    IsSTP2Qualified: false
                  - EmployeeID: 7aa04979-ded5-44d9-b09a-793749425844
                    FirstName: John
                    LastName: Smith
                    Status: ACTIVE
                    Email: [email protected]
                    DateOfBirth: /Date(315619200000+0000)/
                    Gender: M
                    StartDate: /Date(1572566400000+0000)/
                    OrdinaryEarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                    PayrollCalendarID: 78bb86b9-e1ea-47ac-b75d-f087a81931de
                    UpdatedDateUTC: /Date(1572916028000+0000)/
                    IsSTP2Qualified: false
        "400":
          description: validation error for a bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIException"
    post:
      security:
        - OAuth2:
            - payroll.employees
      tags:
        - PayrollAu
      summary: Creates a payroll employee
      parameters:
        - $ref: "#/components/parameters/idempotencyKey"
      operationId: createEmployee
      x-hasPayrollAuProblem: 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'"
        - homeAddress:
          key: homeAddress
          keyPascal: HomeAddress
          keySnake: home_address
          is_object: true
        - addressLine1:
          key: addressLine1
          keyPascal: AddressLine1
          keySnake: address_line_1
          default: 123 Test st
          object: homeAddress
        - region:
          key: region
          keyPascal: Region
          keySnake: region
          object: homeAddress
          default: VIC
        - postalCode:
          nonString: true
          key: postalCode
          keyPascal: PostalCode
          keySnake: postal_code
          object: homeAddress
          default: 3000
        - city:
          key: city
          keyPascal: City
          keySnake: city
          default: Melbourne
          object: homeAddress
          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: homeAddress
          keyPascal: HomeAddress
          default: homeAddress
          python: home_address
          ruby: home_address
          object: employee
      responses:
        "200":
          description: A successful request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Employees"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573621524489)/
                Employees:
                  - EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    FirstName: Albus
                    MiddleNames: Percival
                    LastName: Dumbledore
                    Status: ACTIVE
                    Email: [email protected]
                    DateOfBirth: /Date(321523200000+0000)/
                    JobTitle: Regional Manager
                    Gender: M
                    HomeAddress:
                      AddressLine1: 101 Green St
                      City: Island Bay
                      Region: NSW
                      PostalCode: "6023"
                      Country: AUSTRALIA
                    Phone: 444-2323
                    Mobile: 555-1212
                    StartDate: /Date(321523200000+0000)/
                    Classification: corporate
                    OrdinaryEarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                    UpdatedDateUTC: /Date(1573621524458+0000)/
                    IsAuthorisedToApproveLeave: true
                    IsAuthorisedToApproveTimesheets: true
        "400":
          description: invalid input, object invalid - TODO
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/Employee"
            example: '[ { "FirstName": "Albus", "LastName": "Dumbledore", "DateOfBirth": "/Date(321523200000+0000)/", "HomeAddress": { "AddressLine1": "101 Green St", "City": "Island Bay", "Region": "NSW", "PostalCode": "6023", "Country": "AUSTRALIA" }, "StartDate": "/Date(321523200000+0000)/", "MiddleNames": "Percival", "Email": "[email protected]", "Gender": "M", "Phone": "444-2323", "Mobile": "555-1212", "IsAuthorisedToApproveLeave": true, "IsAuthorisedToApproveTimesheets": true, "JobTitle": "Regional Manager", "Classification": "corporate", "OrdinaryEarningsRateID": "ab874dfb-ab09-4c91-954e-43acf6fc23b4", "Status": "ACTIVE" } ]'
  /Employees/{EmployeeID}:
    parameters:
      - $ref: "#/components/parameters/requiredHeader"
    get:
      security:
        - OAuth2:
            - payroll.employees
            - payroll.employees.read
      tags:
        - PayrollAu
      summary: Retrieves an employee's detail by unique employee id
      operationId: getEmployee
      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/Employees"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573623316150)/
                Employees:
                  - EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    Title: Mr.
                    FirstName: Albus
                    MiddleNames: Frank
                    LastName: Dumbledore
                    Status: ACTIVE
                    Email: [email protected]
                    DateOfBirth: /Date(321494400000+0000)/
                    JobTitle: Regional Manager
                    Gender: M
                    HomeAddress:
                      AddressLine1: 101 Green St
                      City: Island Bay
                      Region: NSW
                      PostalCode: "6023"
                      Country: AUSTRALIA
                    Phone: 444-2323
                    Mobile: 555-1212
                    StartDate: /Date(321494400000+0000)/
                    Classification: corporate
                    OrdinaryEarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                    PayrollCalendarID: 78bb86b9-e1ea-47ac-b75d-f087a81931de
                    UpdatedDateUTC: /Date(1573623306000+0000)/
                    EmployeeGroupName: foo
                    IsAuthorisedToApproveLeave: true
                    IsAuthorisedToApproveTimesheets: true
                    TaxDeclaration:
                      AustralianResidentForTaxPurposes: true
                      TaxFreeThresholdClaimed: true
                      HasHELPDebt: false
                      HasSFSSDebt: false
                      EligibleToReceiveLeaveLoading: false
                      UpdatedDateUTC: /Date(1573623306000+0000)/
                      HasStudentStartupLoan: false
                      ResidencyStatus: AUSTRALIANRESIDENT
                      IncludeLeaveLoadingInQualifyingEarnings: false
                    BankAccounts: []
                    OpeningBalances:
                      OpeningBalanceDate: /Date(1573603200000+0000)/
                      EarningsLines: []
                      DeductionLines: []
                      SuperLines: []
                      ReimbursementLines: []
                      LeaveLines:
                        - LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                          NumberOfUnits: 10
                      PaidLeaveEarningsLines: []
                    PayTemplate:
                      EarningsLines:
                        - EarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                          CalculationType: USEEARNINGSRATE
                          NormalNumberOfUnits: 3
                      DeductionLines:
                        - DeductionTypeID: ed05ea82-e40a-4eb6-9c2e-4b3c03e7e938
                          CalculationType: FIXEDAMOUNT
                          Amount: 4
                      SuperLines:
                        - ContributionType: SGC
                          CalculationType: STATUTORY
                          MinimumMonthlyEarnings: 450
                          ExpenseAccountCode: "478"
                          LiabilityAccountCode: "826"
                      ReimbursementLines:
                        - ReimbursementTypeID: aa8cfa40-d872-4be0-8a94-bb7f00962f74
                          Description: boo
                          Amount: 55
                      LeaveLines:
                        - LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                          CalculationType: FIXEDAMOUNTEACHPERIOD
                          AnnualNumberOfUnits: 4
                          EntitlementFinalPayPayoutType: NOTPAIDOUT
                          IsQualifyingEarnings: false
                    SuperMemberships: []
                    LeaveBalances:
                      - LeaveName: Carer Leave (unpaid)
                        LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                        NumberOfUnits: 10
                        TypeOfUnits: Hours
    post:
      security:
        - OAuth2:
            - payroll.employees
      tags:
        - PayrollAu
      summary: Updates an employee's detail
      operationId: updateEmployee
      description: Update properties on a single employee
      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'"
        - homeAddress:
          key: homeAddress
          keyPascal: HomeAddress
          keySnake: home_address
          is_object: true
        - addressLine1:
          key: addressLine1
          keyPascal: AddressLine1
          keySnake: address_line_1
          default: 123 Test st
          object: homeAddress
        - region:
          key: region
          keyPascal: Region
          keySnake: region
          object: homeAddress
          default: VIC
        - postalCode:
          nonString: true
          key: postalCode
          keyPascal: PostalCode
          keySnake: postal_code
          object: homeAddress
          default: 3000
        - city:
          key: city
          keyPascal: City
          keySnake: city
          default: Melbourne
          object: homeAddress
          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: homeAddress
          keyPascal: HomeAddress
          default: homeAddress
          python: home_address
          ruby: home_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: A successful request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Employees"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: 3f93110a-df13-49c7-b82f-a069813df188
                DateTimeUTC: /Date(1573621524786)/
                Employees:
                  - EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    FirstName: Albus
                    MiddleNames: Frank
                    LastName: Dumbledore
                    Status: ACTIVE
                    Email: [email protected]
                    DateOfBirth: /Date(321523200000+0000)/
                    JobTitle: Regional Manager
                    Gender: M
                    HomeAddress:
                      AddressLine1: 101 Green St
                      City: Island Bay
                      Region: NSW
                      PostalCode: "6023"
                      Country: AUSTRALIA
                    Phone: 444-2323
                    Mobile: 555-1212
                    StartDate: /Date(321523200000+0000)/
                    Classification: corporate
                    OrdinaryEarningsRateID: ab874dfb-ab09-4c91-954e-43acf6fc23b4
                    UpdatedDateUTC: /Date(1573621524755+0000)/
                    IsAuthorisedToApproveLeave: true
                    IsAuthorisedToApproveTimesheets: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/Employee"
            example: '[ { "MiddleNames": "Frank" } ]'
  /LeaveApplications:
    parameters:
      - $ref: "#/components/parameters/requiredHeader"
    get:
      security:
        - OAuth2:
            - payroll.employees
            - payroll.employees.read
      tags:
        - PayrollAu
      operationId: getLeaveApplications
      summary: Retrieves leave applications
      parameters:
        - in: header
          name: If-Modified-Since
          x-snake: if_modified_since
          description: Only records created or modified since this timestamp will be returned
          example: "2020-02-06T12:17:43.202-08:00"
          schema:
            type: string
            format: date-time
        - in: query
          name: where
          description: Filter by an any element
          schema:
            type: string
          example: Status=="ACTIVE"
        - in: query
          name: order
          description: Order by an any element
          schema:
            type: string
          example: EmailAddress%20DESC
        - in: query
          name: page
          description: e.g. page=1 – Up to 100 objects will be returned in a single API call
          schema:
            type: integer
      responses:
        "200":
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LeaveApplications"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573679791199)/
                LeaveApplications:
                  - LeaveApplicationID: 1d4cd583-0107-4386-936b-672eb3d1f624
                    EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1573171200000+0000)/
                        PayPeriodEndDate: /Date(1573689600000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 0
                    Title: vacation
                    StartDate: /Date(1573516800000+0000)/
                    EndDate: /Date(1573516800000+0000)/
                    UpdatedDateUTC: /Date(1573623008000+0000)/
                    PayOutType: DEFAULT
                  - LeaveApplicationID: 3b934902-1e16-4c02-a3d3-68fa7d63e01d
                    EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1573171200000+0000)/
                        PayPeriodEndDate: /Date(1573689600000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 8
                    Title: Cashed Out
                    StartDate: /Date(1573516800000+0000)/
                    EndDate: /Date(1573516800000+0000)/
                    UpdatedDateUTC: /Date(1573623008000+0000)/
                    PayOutType: CASHED_OUT
                  - LeaveApplicationID: 62b90465-66e9-4c3a-8151-de1e6335554d
                    EmployeeID: b34e89ff-770d-4099-b7e5-f968767118bc
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1571961600000+0000)/
                        PayPeriodEndDate: /Date(1572480000000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 0
                      - PayPeriodStartDate: /Date(1572566400000+0000)/
                        PayPeriodEndDate: /Date(1573084800000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 0
                    Title: Yep Carer Leave
                    Description: My updated Description
                    StartDate: /Date(1572559200000+0000)/
                    EndDate: /Date(1572645600000+0000)/
                    UpdatedDateUTC: /Date(1573447344000+0000)/
                    PayOutType: DEFAULT
                  - LeaveApplicationID: e8bd9eeb-18c9-4475-9c81-b298f9aa26c0
                    EmployeeID: b34e89ff-770d-4099-b7e5-f968767118bc
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1571961600000+0000)/
                        PayPeriodEndDate: /Date(1572480000000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 0
                      - PayPeriodStartDate: /Date(1572566400000+0000)/
                        PayPeriodEndDate: /Date(1573084800000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 0
                    Title: Hello World
                    StartDate: /Date(1572559200000+0000)/
                    EndDate: /Date(1572645600000+0000)/
                    UpdatedDateUTC: /Date(1573447343000+0000)/
                    PayOutType: DEFAULT
        "400":
          description: validation error for a bad request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/APIException"
    post:
      security:
        - OAuth2:
            - payroll.employees
      tags:
        - PayrollAu
      summary: Creates a leave application
      parameters:
        - $ref: "#/components/parameters/idempotencyKey"
      operationId: createLeaveApplication
      x-hasPayrollAuProblem: 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'"
        - leaveApplication:
          key: leaveApplication
          keyPascal: LeaveApplication
          is_object: true
        - employeeId:
          is_uuid: true
          key: employeeId
          keyPascal: EmployeeId
          keySnake: employee_id
          object: leaveApplication
          default: 00000000-0000-0000-0000-000000000000
        - leaveTypeId:
          is_uuid: true
          key: leaveTypeId
          keyPascal: LeaveTypeId
          keySnake: leave_type_id
          object: leaveApplication
          default: 00000000-0000-0000-0000-000000000000
        - title:
          key: title
          keyPascal: Title
          keySnake: title
          default: Annual Leave
          object: leaveApplication
        - startDate:
          is_variable: true
          nonString: true
          key: startDate
          keyPascal: StartDate
          keySnake: start_date
          default: startDate
          python: start_date
          ruby: start_date
          object: leaveApplication
        - 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: leaveApplication
      responses:
        "200":
          description: A successful request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LeaveApplications"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573679791917)/
                LeaveApplications:
                  - LeaveApplicationID: 5f7097e4-51f2-46cc-921b-45bc73ea7831
                    EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1572566400000+0000)/
                        PayPeriodEndDate: /Date(1573084800000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 7.6
                    Title: Hello World
                    StartDate: /Date(1572559200000+0000)/
                    EndDate: /Date(1572645600000+0000)/
                    UpdatedDateUTC: /Date(1573679791897+0000)/
                    PayOutType: DEFAULT
        "400":
          description: invalid input, object invalid - TODO
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/LeaveApplication"
            example: '[ { "EmployeeID": "cdfb8371-0b21-4b8a-8903-1024df6c391e", "LeaveTypeID": "184ea8f7-d143-46dd-bef3-0c60e1aa6fca", "Title": "Hello World", "StartDate": "/Date(1572559200000+0000)/", "EndDate": "/Date(1572645600000+0000)/" } ]'
  /LeaveApplications/v2:
    parameters:
      - $ref: "#/components/parameters/requiredHeader"
    get:
      security:
        - OAuth2:
            - payroll.employees
            - payroll.employees.read
      tags:
        - PayrollAu
      operationId: getLeaveApplicationsV2
      summary: Retrieves leave applications including leave requests
      parameters:
        - in: header
          name: If-Modified-Since
          x-snake: if_modified_since
          description: Only records created or modified since this timestamp will be returned
          example: "2020-02-06T12:17:43.202-08:00"
          schema:
            type: string
            format: date-time
        - in: query
          name: where
          description: Filter by an any element
          schema:
            type: string
          example: Status=="ACTIVE"
        - in: query
          name: order
          description: Order by an any element
          schema:
            type: string
          example: EmailAddress%20DESC
        - in: query
          name: page
          description: e.g. page=1 – Up to 100 objects will be returned in a single API call
          schema:
            type: integer
      responses:
        "200":
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LeaveApplications"
              example:
                Id: 00000000-0000-0000-0000-000000000000
                Status: OK
                ProviderName: provider-name
                DateTimeUTC: /Date(1573679791199)/
                LeaveApplications:
                  - LeaveApplicationID: 1d4cd583-0107-4386-936b-672eb3d1f624
                    EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1573171200000+0000)/
                        PayPeriodEndDate: /Date(1573689600000+0000)/
                        LeavePeriodStatus: REQUESTED
                        NumberOfUnits: 4
                    Title: vacation
                    StartDate: /Date(1573516800000+0000)/
                    EndDate: /Date(1573516800000+0000)/
                    UpdatedDateUTC: /Date(1573623008000+0000)/
                    PayOutType: DEFAULT
                  - LeaveApplicationID: 3b934902-1e16-4c02-a3d3-68fa7d63e01d
                    EmployeeID: cdfb8371-0b21-4b8a-8903-1024df6c391e
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1573171200000+0000)/
                        PayPeriodEndDate: /Date(1573689600000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 8
                    Title: Cashed Out
                    StartDate: /Date(1573516800000+0000)/
                    EndDate: /Date(1573516800000+0000)/
                    UpdatedDateUTC: /Date(1573623008000+0000)/
                    PayOutType: CASHED_OUT
                  - LeaveApplicationID: 62b90465-66e9-4c3a-8151-de1e6335554d
                    EmployeeID: b34e89ff-770d-4099-b7e5-f968767118bc
                    LeaveTypeID: 184ea8f7-d143-46dd-bef3-0c60e1aa6fca
                    LeavePeriods:
                      - PayPeriodStartDate: /Date(1571961600000+0000)/
                        PayPeriodEndDate: /Date(1572480000000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 8
                      - PayPeriodStartDate: /Date(1572566400000+0000)/
                        PayPeriodEndDate: /Date(1573084800000+0000)/
                        LeavePeriodStatus: SCHEDULED
                        NumberOfUnits: 8
                    Title: Yep Carer Leave
                    Description: My updated Description
                    StartDate: /Date(1572559200000+0000)/
                    EndDate: /Date(1572645600000+0000)/
                    UpdatedDateUTC: /Date(1573447344000+0000)/
                    PayOutType: DEFAULT
                  - LeaveApplicationID: e8bd9eeb-18c9-4475-9c81-b298f9aa26c0
                    EmployeeID: b34e89ff-770d-4099-b7e5-f968767118bc
                    Le

# --- truncated at 32 KB (185 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xero/refs/heads/main/openapi/xero-payroll-au-openapi.yml