HR Partner REST API

Public REST API for HR Partner, covering 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, lookups, and company information. Authentication is via API key passed in the x-api-key header. Rate limits are 60 GET/POST requests per second and 900 requests per one-minute burst, with HTTPS required.

HR Partner REST API is published by HR Partner on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 11 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include HR, HRIS, Employee Records, Leave Management, and Recruitment. The published artifact set on APIs.io includes API documentation, an API reference, authentication docs, rate-limit docs, an OpenAPI specification, and 11 Naftiko capability specs.

Documentation

Specifications

Other Resources

🔗
SpectralRules
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/rules/hr-partner-rest-api-rules.yml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-employees.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-employee-records.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-leave.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-timesheets.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-recruitment.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-performance.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-checklists.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-expenses.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-library.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-company.yaml
🔗
NaftikoCapability
https://raw.githubusercontent.com/api-evangelist/hr-partner/refs/heads/main/capabilities/hr-partner-onboarding-workflow.yaml

OpenAPI Specification

hr-partner-rest-api-openapi.yml Raw ↑
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