openapi: 3.1.0
info:
title: HR Partner REST API
description: >-
HR Partner is a cloud-based human resources management SaaS platform from
HR Partner Software Pty Ltd (Australia), aimed at organizations of roughly
20 to 500 employees. This OpenAPI describes the public HR Partner REST API
exposed at https://api.hrpartner.io, covering company information,
employee records and sub-modules (contacts, addresses, notes, education,
skills, training, assets, benefits, dependents, grievances, positions,
renewables, attachments), leave management (requests, balances, absences),
timesheets and projects, expenses, recruitment (job listings, applicants,
applications, application-stage tracking, interviews), performance
(reviews, goals), checklists, reminders, document library, and lookups.
Authentication is via API key passed in the x-api-key header.
version: 1.0.0
termsOfService: https://hrpartner.io/terms-of-service
contact:
name: HR Partner Developer
url: https://developer.hrpartner.io/
email: [email protected]
license:
name: Proprietary
url: https://hrpartner.io/terms-of-service
servers:
- url: https://api.hrpartner.io
description: HR Partner Production API
security:
- apiKeyHeader: []
tags:
- name: Company
description: Retrieve company-level information for the HR Partner account.
- name: Employees
description: Read, create, and update employee records.
- name: Contacts
description: List employee contact details (phone, email, emergency).
- name: Addresses
description: List employee address records.
- name: Notes
description: Retrieve internal HR notes attached to employees.
- name: Education
description: Read employee education and qualification records.
- name: Skills
description: Read employee skills and competency ratings.
- name: Training
description: Read employee training and course completion records.
- name: Assets
description: Read company assets issued to employees.
- name: Benefits
description: Read employee benefit assignments.
- name: Dependents
description: Read employee dependent records.
- name: Grievances
description: Read employee grievance records.
- name: Positions
description: Read employee position history and remuneration.
- name: Renewables
description: Read renewable items such as certifications and licenses.
- name: Attachments
description: Read attachments stored against any HR Partner module.
- name: Leave Requests
description: Read leave and PTO requests submitted by employees.
- name: Leave Balances
description: Read leave entitlement balances and accruals.
- name: Absences
description: Read employee absence records.
- name: Timesheets
description: Read and create timesheets and timeclock entries.
- name: Projects
description: Read projects and activities used by timesheets.
- name: Expenses
description: Read employee expense claims.
- name: Job Listings
description: Read open job listings published by the organization.
- name: Applicants
description: Read, create, and update job applicants.
- name: Applications
description: Read, create, and update job applications and stage data.
- name: Application Stage Tracking
description: Read application stage history and tracking data.
- name: Reviews
description: Read performance reviews and scoring.
- name: Goals
description: Read performance and development goals.
- name: Checklists
description: Read onboarding and offboarding checklists.
- name: Reminders
description: Read, update, and delete user reminders.
- name: Library
description: Read document library files and categories.
- name: Lookups
description: Read system lookup definitions for configurable fields.
paths:
/company:
get:
tags: [Company]
operationId: getCompany
summary: Get Company Information
description: Retrieve company-level information for the HR Partner account.
responses:
'200':
description: Company information.
content:
application/json:
schema: { $ref: '#/components/schemas/Company' }
/employees:
get:
tags: [Employees]
operationId: listEmployees
summary: List Employees
description: Returns all employees in the HR Partner account with optional filtering.
parameters:
- { name: search, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: location, in: query, schema: { type: string } }
- { name: group, in: query, schema: { type: string } }
- { name: position, in: query, schema: { type: string } }
- { name: employment_status, in: query, schema: { type: string } }
- { name: gender_identity, in: query, schema: { type: string } }
- { name: is_active, in: query, schema: { type: boolean } }
- { name: is_terminated, in: query, schema: { type: boolean } }
- { name: reports_to, in: query, schema: { type: string } }
responses:
'200':
description: List of employees.
content:
application/json:
schema:
type: array
items: { $ref: '#/components/schemas/Employee' }
/employee/{employeeCode}:
get:
tags: [Employees]
operationId: getEmployee
summary: Get Employee
description: Retrieve a single employee by code.
parameters:
- { name: employeeCode, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single employee.
content:
application/json:
schema: { $ref: '#/components/schemas/Employee' }
post:
tags: [Employees]
operationId: upsertEmployee
summary: Create Or Update Employee
description: Create a new employee or update an existing one by code.
parameters:
- { name: employeeCode, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Employee' }
responses:
'200':
description: Created or updated employee.
content:
application/json:
schema: { $ref: '#/components/schemas/Employee' }
/contacts:
get:
tags: [Contacts]
operationId: listContacts
summary: List Contacts
description: List employee contact details across the account.
parameters:
- { name: search, in: query, schema: { type: string } }
- { name: contact_type, in: query, schema: { type: string } }
- { name: is_primary, in: query, schema: { type: boolean } }
- { name: is_public, in: query, schema: { type: boolean } }
- { name: is_emergency, in: query, schema: { type: boolean } }
responses:
'200':
description: List of contacts.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Contact' } }
/addresses:
get:
tags: [Addresses]
operationId: listAddresses
summary: List Addresses
description: List employee address records.
parameters:
- { name: search, in: query, schema: { type: string } }
- { name: address_type, in: query, schema: { type: string } }
- { name: location_search, in: query, schema: { type: string } }
responses:
'200':
description: List of addresses.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Address' } }
/notes:
get:
tags: [Notes]
operationId: listNotes
summary: List Notes
description: List internal HR notes attached to employees.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: note, in: query, schema: { type: string } }
- { name: created_date_from, in: query, schema: { type: string, format: date } }
- { name: created_date_to, in: query, schema: { type: string, format: date } }
- { name: updated_date_from, in: query, schema: { type: string, format: date } }
- { name: updated_date_to, in: query, schema: { type: string, format: date } }
- { name: tags, in: query, schema: { type: string } }
- { name: include_events, in: query, schema: { type: boolean } }
responses:
'200':
description: List of notes.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Note' } }
/education:
get:
tags: [Education]
operationId: listEducation
summary: List Education Records
description: List employee education records.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: education_type, in: query, schema: { type: string } }
- { name: education_status, in: query, schema: { type: string } }
- { name: institution, in: query, schema: { type: string } }
responses:
'200':
description: List of education records.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Education' } }
/skills:
get:
tags: [Skills]
operationId: listSkills
summary: List Skills
description: List employee skill ratings.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: skill_name, in: query, schema: { type: string } }
- { name: skill_rating, in: query, schema: { type: integer } }
- { name: skill_rating_from, in: query, schema: { type: integer } }
- { name: skill_rating_to, in: query, schema: { type: integer } }
responses:
'200':
description: List of skills.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Skill' } }
/training:
get:
tags: [Training]
operationId: listTraining
summary: List Training Records
description: List employee training and course records.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: training_type, in: query, schema: { type: string } }
- { name: course_name, in: query, schema: { type: string } }
- { name: institution, in: query, schema: { type: string } }
- { name: training_status, in: query, schema: { type: string } }
responses:
'200':
description: List of training records.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Training' } }
/assets:
get:
tags: [Assets]
operationId: listAssets
summary: List Assets
description: List company assets issued to employees.
responses:
'200':
description: List of assets.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Asset' } }
/benefits:
get:
tags: [Benefits]
operationId: listBenefits
summary: List Benefits
description: List employee benefit assignments.
responses:
'200':
description: List of benefits.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Benefit' } }
/dependents:
get:
tags: [Dependents]
operationId: listDependents
summary: List Dependents
description: List employee dependent records.
responses:
'200':
description: List of dependents.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Dependent' } }
/grievances:
get:
tags: [Grievances]
operationId: listGrievances
summary: List Grievances
description: List employee grievance records.
responses:
'200':
description: List of grievances.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Grievance' } }
/positions:
get:
tags: [Positions]
operationId: listPositions
summary: List Positions
description: List employee position history and remuneration.
responses:
'200':
description: List of positions.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Position' } }
/renewables:
get:
tags: [Renewables]
operationId: listRenewables
summary: List Renewables
description: List renewable items such as certifications and licenses.
responses:
'200':
description: List of renewables.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Renewable' } }
/attachments:
get:
tags: [Attachments]
operationId: listAttachments
summary: List Attachments
description: List attachments stored against any HR Partner module.
responses:
'200':
description: List of attachments.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Attachment' } }
/leave-requests:
get:
tags: [Leave Requests]
operationId: listLeaveRequests
summary: List Leave Requests
description: List employee leave and PTO requests.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: leave_type, in: query, schema: { type: string } }
- { name: leave_status, in: query, schema: { type: string } }
- { name: start_date_from, in: query, schema: { type: string, format: date } }
- { name: start_date_to, in: query, schema: { type: string, format: date } }
responses:
'200':
description: List of leave requests.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/LeaveRequest' } }
/leave-request/{id}:
get:
tags: [Leave Requests]
operationId: getLeaveRequest
summary: Get Leave Request
description: Retrieve a single leave request by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single leave request.
content:
application/json:
schema: { $ref: '#/components/schemas/LeaveRequest' }
/leave-balances:
get:
tags: [Leave Balances]
operationId: listLeaveBalances
summary: List Leave Balances
description: List employee leave entitlement balances and accruals.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: leave_type, in: query, schema: { type: string } }
responses:
'200':
description: List of leave balances.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/LeaveBalance' } }
/absences:
get:
tags: [Absences]
operationId: listAbsences
summary: List Absences
description: List employee absence records.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: absence_reason, in: query, schema: { type: string } }
- { name: absence_status, in: query, schema: { type: string } }
- { name: absence_date_from, in: query, schema: { type: string, format: date } }
- { name: absence_date_to, in: query, schema: { type: string, format: date } }
responses:
'200':
description: List of absences.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Absence' } }
/timesheets:
get:
tags: [Timesheets]
operationId: listTimesheets
summary: List Timesheets
description: List employee timesheets.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: department, in: query, schema: { type: string } }
- { name: week_commencing, in: query, schema: { type: string, format: date } }
- { name: timesheet_status, in: query, schema: { type: string } }
responses:
'200':
description: List of timesheets.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Timesheet' } }
/timesheet/{id}:
get:
tags: [Timesheets]
operationId: getTimesheet
summary: Get Timesheet
description: Retrieve a single timesheet by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single timesheet.
content:
application/json:
schema: { $ref: '#/components/schemas/Timesheet' }
/timesheet:
post:
tags: [Timesheets]
operationId: createTimesheetEntry
summary: Create Timesheet Entry
description: Add a timesheet or timeclock entry for an employee.
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/TimesheetEntry' }
responses:
'200':
description: Created timesheet entry.
content:
application/json:
schema: { $ref: '#/components/schemas/Timesheet' }
/projects:
get:
tags: [Projects]
operationId: listProjects
summary: List Projects
description: List projects and activities used by timesheets.
parameters:
- { name: search, in: query, schema: { type: string } }
- { name: status, in: query, schema: { type: string } }
responses:
'200':
description: List of projects.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Project' } }
/expenses:
get:
tags: [Expenses]
operationId: listExpenses
summary: List Expense Claims
description: List employee expense claims.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: expense_status, in: query, schema: { type: string } }
- { name: claim_date_from, in: query, schema: { type: string, format: date } }
- { name: claim_date_to, in: query, schema: { type: string, format: date } }
- { name: amount_from, in: query, schema: { type: number } }
- { name: amount_to, in: query, schema: { type: number } }
responses:
'200':
description: List of expense claims.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Expense' } }
/job-listings:
get:
tags: [Job Listings]
operationId: listJobListings
summary: List Job Listings
description: List open job listings published by the organization.
responses:
'200':
description: List of job listings.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/JobListing' } }
/job-listings/{id}:
get:
tags: [Job Listings]
operationId: getJobListing
summary: Get Job Listing
description: Retrieve a single job listing by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single job listing.
content:
application/json:
schema: { $ref: '#/components/schemas/JobListing' }
/applicants:
get:
tags: [Applicants]
operationId: listApplicants
summary: List Applicants
description: List recruitment applicants.
responses:
'200':
description: List of applicants.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Applicant' } }
post:
tags: [Applicants]
operationId: createApplicant
summary: Create Applicant
description: Create a new applicant.
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Applicant' }
responses:
'200':
description: Created applicant.
content:
application/json:
schema: { $ref: '#/components/schemas/Applicant' }
/applicants/{id}:
get:
tags: [Applicants]
operationId: getApplicant
summary: Get Applicant
description: Retrieve a single applicant by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single applicant.
content:
application/json:
schema: { $ref: '#/components/schemas/Applicant' }
post:
tags: [Applicants]
operationId: updateApplicant
summary: Update Applicant
description: Update an existing applicant by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Applicant' }
responses:
'200':
description: Updated applicant.
content:
application/json:
schema: { $ref: '#/components/schemas/Applicant' }
/applications:
get:
tags: [Applications]
operationId: listApplications
summary: List Applications
description: List job applications.
responses:
'200':
description: List of applications.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Application' } }
post:
tags: [Applications]
operationId: createApplication
summary: Create Application
description: Create a new job application.
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
responses:
'200':
description: Created application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
/applications/{id}:
get:
tags: [Applications]
operationId: getApplication
summary: Get Application
description: Retrieve a single application by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
post:
tags: [Applications]
operationId: updateApplication
summary: Update Application
description: Update an existing application by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
responses:
'200':
description: Updated application.
content:
application/json:
schema: { $ref: '#/components/schemas/Application' }
/application-stage-tracking:
get:
tags: [Application Stage Tracking]
operationId: listApplicationStageTracking
summary: List Application Stage Tracking
description: Read application stage history and tracking data.
responses:
'200':
description: List of application stage tracking entries.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/ApplicationStageTracking' } }
/reviews:
get:
tags: [Reviews]
operationId: listReviews
summary: List Performance Reviews
description: List performance reviews.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: review_type, in: query, schema: { type: string } }
- { name: review_status, in: query, schema: { type: string } }
- { name: reviewer, in: query, schema: { type: string } }
responses:
'200':
description: List of reviews.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Review' } }
/goals:
get:
tags: [Goals]
operationId: listGoals
summary: List Goals
description: List performance and development goals.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: goal_scope, in: query, schema: { type: string } }
- { name: goal_type, in: query, schema: { type: string } }
- { name: goal_is_active, in: query, schema: { type: boolean } }
- { name: goal_is_completed, in: query, schema: { type: boolean } }
responses:
'200':
description: List of goals.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Goal' } }
/checklist:
get:
tags: [Checklists]
operationId: listChecklists
summary: List Checklists
description: List onboarding, offboarding, and other checklists.
parameters:
- { name: employee, in: query, schema: { type: string } }
- { name: checklist_status, in: query, schema: { type: string } }
- { name: checklist_template, in: query, schema: { type: string } }
- { name: show_details, in: query, schema: { type: boolean } }
responses:
'200':
description: List of checklists.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Checklist' } }
/reminders:
get:
tags: [Reminders]
operationId: listReminders
summary: List Reminders
description: List user reminders.
responses:
'200':
description: List of reminders.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Reminder' } }
/reminder/{id}:
get:
tags: [Reminders]
operationId: getReminder
summary: Get Reminder
description: Retrieve a single reminder by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: A single reminder.
content:
application/json:
schema: { $ref: '#/components/schemas/Reminder' }
post:
tags: [Reminders]
operationId: updateReminder
summary: Update Reminder
description: Update an existing reminder by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
requestBody:
required: true
content:
application/json:
schema: { $ref: '#/components/schemas/Reminder' }
responses:
'200':
description: Updated reminder.
content:
application/json:
schema: { $ref: '#/components/schemas/Reminder' }
delete:
tags: [Reminders]
operationId: deleteReminder
summary: Delete Reminder
description: Delete a reminder by id.
parameters:
- { name: id, in: path, required: true, schema: { type: string } }
responses:
'200':
description: Reminder deleted.
/library/documents:
get:
tags: [Library]
operationId: listLibraryDocuments
summary: List Library Documents
description: List documents in the company document library.
responses:
'200':
description: List of library documents.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/LibraryDocument' } }
/library/categories:
get:
tags: [Library]
operationId: listLibraryCategories
summary: List Library Categories
description: List document categories in the company document library.
responses:
'200':
description: List of library categories.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/LibraryCategory' } }
/lookups:
get:
tags: [Lookups]
operationId: listLookups
summary: List Lookups
description: List system lookup definitions for configurable fields.
responses:
'200':
description: List of lookup definitions.
content:
application/json:
schema: { type: array, items: { $ref: '#/components/schemas/Lookup' } }
components:
securitySchemes:
apiKeyHeader:
type: apiKey
in: header
name: x-api-key
schemas:
Company:
type: object
properties:
id: { type: string }
name: { type: string }
country: { type: string }
timezone: { type: string }
currency: { type: string }
Employee:
type: object
properties:
id: { type: string }
code: { type: string }
first_names: { type: string }
last_name: { type: string }
full_name: { type: string }
date_of_birth: { type: string, format: date }
gender_identity: { type: string }
department: { type: string }
location: { type: string }
position: { type: string }
employment_status: { type: string }
email: { type: string }
started_at: { type: string, format: date }
finished_at: { type: string, format: date }
avatar: { type: string }
can_logon: { type: boolean }
portal_username: { type: string }
custom_data: { type: object }
tags: { type: array, items: { type: string } }
Contact:
type: object
properties:
id: { type: string }
type: { type: string }
details: { type: string }
is_primary: { type: boolean }
is_public: { type: boolean }
is_emergency: { type: boolean }
employee: { $ref: '#/components/schemas/EmployeeRef' }
Address:
type: object
properties:
id: { type: string }
type: { type: string }
address_1: { type: string }
address_2: { type: string }
suburb: { type: string }
state: { type: string }
post_code: { type: string }
country: { type: string }
employee: { $ref: '#/components/schemas/EmployeeRef' }
Note:
type: object
properties:
id: { type: string }
note: { type: string }
created_date: { type: string, format: date-time }
updated_date: { type: string, format: date-time }
employee: { $ref: '#/components/schemas/EmployeeRef' }
attachments: { type: array, items: { $ref: '#/components/schemas/Attachment' } }
Education:
type: object
properties:
id: { type: string }
institution: { type: string }
commence_date: { type: string, format: date }
completion_date: { type: string, format: date }
education_type: { type: string }
education_status: { type: string }
comments: { type: string }
employee: { $ref: '#/components/schemas/EmployeeRef' }
Skill:
type: object
properties:
id: { type: string }
skill_name: { type: string }
skill_rating: { type: integer }
comments: { type: string }
employee: { $ref: '#/components/schemas/EmployeeRef
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/openapi/hr-partner-rest-api-openapi.yml