NAV Navbar
shell ruby javascript

Introduction

Welcome to the HR Partner API documentation. This site is designed for developers or advanced users of HR Partner to be able to create mini apps or routines to read (and sometimes write) information from our system.

We have created some short code snippets here using some popular languages in order to showcase how to use the API.

You must have an active trial or paid subscription to HR Partner in order to be able to use or test the API. Sign up for an account now at www.hrpartner.io

Authentication

To authorize, use this code:

# With Ruby, you need to pass the api key in the header with each request
require 'rest-client'

endpoint = 'https://api.hrpartner.io/employees'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
# With shell, you can just pass the correct header with each request
curl "https://api.hrpartner.io/employees"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/employees";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

Make sure to replace ee095c2f58da4f36d087ca7794384f4d with your API key.

HR Partner requires a unique API key to ensure security of any calls to our API. Every HR Partner company is issued a randomly generated API key that can be accessed by going to Setup -> Configure -> Integrations within the main menu (Note: You will have to have full access rights to HR Partner in order to access this menu). You will also need to activate API access to your company, which is turned off by default for protection of your data.

Always keep your API key safe and secure like you would your password. Anyone with your API key can access your company data, including all employee information and attachments etc.

If you suspect that your API key has been compromised, you can generate a new one within HR Partner, or else you can turn off API access to your company from the same menu area.

Your API key must be included in all calls to our API gateway, in the header of each call as follows:

x-api-key:ee095c2f58da4f36d087ca7794384f4d

Endpoint

The HR Partner API supports a simplified REST protocol. You may make GET, POST and DELETE calls against our REST endpoint at:

https://api.hrpartner.io/

All calls to the endpoint must be made using the HTTPS secure protocol. Calls made over HTTP will either be automatically re-routed to HTTPS or else be ignored.

Rate Limits

Our API currently has a rate limit of:

Please consider this when making calls to our API, and please allow for some results to take up to 5 seconds to be returned. We currently don't implement 'paging' on our result sets (yet), so it can take some time for a large packet of JSON data to be returned to you.

We have a general timeout of 60 seconds on API responses. If you are constantly getting a 504 Timeout message, try adding some filter parameters to reduce the amount of data being returned to you.

Disclaimer

Note: The API is still in 'early release' at this point in time, so the information below is subject to change with little notice. Where possible, we will try not to make changes to our API interface which will break anything that was written using the older spec, but we reserve the right to make changes to improve performance or improve security without advanced notification during the early release phase.


Company

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/company'

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/company"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/company";

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "name": "Acme Industries",
  "slug": "adme-industries",
  "logo_image_link": "AyJfTPg769sI1wVSxQVwBQ/logo/acme_logo.png",
  "subdomain": "acme",
  "subscribed": true,
  "subscribed_until": "2099-03-21T00:00:00+00:00",
  "employee_limit": 50,
  "total_employees": 31,
  "active_employees": 26,
  "timezone": "Australia/Sydney",
  "sms_credits": 1.0
}

This endpoint retrieves your basic company data from HR Partner.

HTTP Request

GET https://api.hrpartner.io/company

This call will return basic company information from HR Partner, including the company name, your subscription expiry information and employee counts. It is useful for validating that you are communicating with the correct HR Partner company.

Employees

Get All Employees

require 'rest-client'

endpoint = 'https://api.hrpartner.io/employees'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/employees"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/employees";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 1001,
    "code": "40100",
    "first_names": "Barry",
    "last_name": "Aardvark",
    "full_name": "Aardvark, Barry",
    "date_of_birth": "1990-08-10",
    "gender_identity": "Male",
    "is_active": true,
    "is_terminated": false,
    "is_on_leave": false,
    "pay_point": "",
    "department": "Administration",
    "location": "Main Office",
    "group": "Middleton Branch",
    "position": "Storeperson",
    "employment_status": "Full Time",
    "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6MU22Q/employee/Ppm/aardvark--barry.png",
    "email": "barry.aardvark@mailinator.com",
    "started_at": "0019-11-07",
    "finished_at": null
  },
  {
    "id": 1003,
    "code": "40101",
    "first_names": "Yolanda",
    "last_name": "Bbardin",
    "full_name": "Bbardin, Yolanda",
    "date_of_birth": "1989-05-13",
    "gender_identity": "Female",
    "is_active": true,
    "is_terminated": false,
    "is_on_leave": false,
    "pay_point": "",
    "department": "Administration",
    "location": "Main Office",
    "group": "Stanstead Branch",
    "position": "Accounts Clerk",
    "employment_status": "Full Time",
    "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6MU22Q/employee/EEM/bbardin--yolanda.png",
    "email": "yolanda@mailinator.com",
    "started_at": "0019-11-08",
    "finished_at": null
  },
  {
    "id": 1012,
    "code": "ANTHS",
    "first_names": "Susan",
    "last_name": "Anthony",
    "full_name": "Anthony, Susan",
    "date_of_birth": null,
    "gender_identity": "Female",
    "is_active": false,
    "is_terminated": true,
    "is_on_leave": false,
    "pay_point": "",
    "department": "Warehouse",
    "location": "Perth",
    "group": "Middleton Branch",
    "position": "Driver",
    "employment_status": "Casual",
    "avatar": "",
    "email": "susananthony@mailinator.com",
    "started_at": "2017-08-21",
    "finished_at": "2020-03-17"
  }
]

This endpoint retrieves all employees in the system.

HTTP Request

GET https://api.hrpartner.io/employees

Query Parameters

Parameter Type Description
search text Return only employees whose first or last names match this search text.
department text Specify one or more department names (separated by commas) to only show employees within that department.
location text Only return employees within this location.
group text Only return employees within this group. (See notice below for extra information)
position text Only return employees with this position description.
employment_status text Only return employees with this employment status.
gender_identity text (M/F or extended identity full string) Only return employees with this gender.
pay_point text Only return employees that have this pay point identifier.
birth_date_from, birth_date_to date (yyyy-mm-dd) Return employees whose birth date falls between these two dates (inclusive).
start_date_from, start_date_to date (yyyy-mm-dd) Return employees whose starting employment date falls between these two dates (inclusive).
end_date_from, end_date_to date (yyyy-mm-dd) Return employees whose termination/ending date falls between these two dates (inclusive).
tag text Only return employees who have this tag (single tag only).
is_active true/false Choose whether to return only active employees.
is_terminated true/false Choose whether to return only terminated employees.
can_logon true/false Choose whether to return only employee who can logon to their portal.
eligible_for_rehire true/false Choose whether to return only employee who are eligible for re-hiring.
reports_to text Only return employees who report to the employee with this Employee Code.

Examples

To get a list of all employees in the "London" location who are not terminated:

GET https://api.hrpartner.io/employees?location=London&is_terminated=false

To get all employees in either the "Admin Team" or "Warehouse" departments:

GET https://api.hrpartner.io/employees?department=Admin Team,Warehouse

To get all full time employees who started employment during March 2020:

GET https://api.hrpartner.io/employees?start_date_from=2020-03-01&start_date_to=2020-03-31&employment_status=Full Time

To get all employees who report to the person that has Employee Code "EMP001", who are not terminated:

GET https://api.hrpartner.io/employees?is_terminated=false&reports_to=EMP001

Get A Specific Employee

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/employee/'
employeecode = 'BLENA'

result = RestClient.get(endpoint + employeecode, header)

puts result
curl "https://api.hrpartner.io/employee/BLENA"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/employee/";
var employeecode = "BLENA"

client.get(endpoint + employeecode, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": 1001,
  "code": "BLENA",
  "first_names": "Arthur",
  "last_name": "Blenkinshop",
  "full_name": "Blenkinshop, Arthur",
  "salutation": "",
  "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6MU22Q/employee/sk8y65/ArthurBlenkinshop.jpg",
  "date_of_birth": "1988-02-23",
  "gender_identity": "Male",
  "pay_point": "",
  "tax_number": "",
  "started_at": "2009-05-22",
  "finished_at": "",
  "is_active": true,
  "is_terminated": false,
  "is_on_leave": true,
  "can_logon": true,
  "portal_username": "BLENA",
  "custom_data": {
    "annual-salary": 45000.0,
    "warnings-given": 0,
    "citizenship": "Other (Foreign)",
    "next-increment-due": "2016-03-22",
    "next-increment-amount": 2500.25,
    "training-category": "Pool A - Darwin",
    "training-cert-number": "K123",
    "usual-start-time": "08:00",
    "usual-end-time": "05:15",
    "favourite-books": "Fantasy fiction and historical novels.",
    "has-drivers-licence": true
  },
  "department": "Sales",
  "location": "Main Office",
  "group": "Middleton Branch",
  "position": "Warehouse Supervisor",
  "employment_status": "Full Time",
  "reports_to": "BURRS",
  "tags": [
    {
      "tag": "Smoker"
    },
    {
      "tag": "EOM Winner"
    },
    {
      "tag": "Picnic Committee"
    },
    {
      "tag": "Project Blenheim"
    }
  ],
  "employee_contacts": [
    {
      "id": 11,
      "type": "Mobile",
      "details": "+61 213 433442",
      "is_primary": true
    },
    {
      "id": 14,
      "type": "Email",
      "details": "arthurblenkinshop@mailinator.com",
      "is_primary": true
    },
    {
      "id": 16,
      "type": "Twitter",
      "details": "@theblenkinsop",
      "is_primary": false
    },
    {
      "id": 18,
      "type": "LinkedIn",
      "details": "linked.in/blenkinsop",
      "is_primary": false
    },
    {
      "id": 500,
      "type": "Email",
      "details": "arthurathome@mailinator.com",
      "is_primary": false
    }
  ],
  "employee_addresses": [
    {
      "id": 1,
      "type": "Home",
      "address_1": "123 Main Street",
      "address_2": null,
      "suburb": "Marrickville",
      "state": "WA",
      "post_code": "8089",
      "country": "Australia"
    },
    {
      "id": 3,
      "type": "Delivery",
      "address_1": "2/35B William Street",
      "address_2": "St. Macarthur Building",
      "suburb": "Tennville",
      "state": "LO",
      "post_code": "90-004",
      "country": "New Zealand"
    }
  ]
}

This endpoint retrieves a single employee from the system using their Employee Code.

HTTP Request

GET https://api.hrpartner.io/employee/{employeeCode}

This call will return a lot more detail about an individual employee, including all their contact details, address details, as well as any custom fields that you may have created within your HR Partner company.

Update/Add An Employee

require 'rest-client'

# Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
postbody = {
  "code": "BLENA",
  "tax_number": "112-509-6867",
  "can_logon": true,
  "portal_username": "ABLENK001",
  "custom_data": {
    "annual-salary": 62500.00,
    "usual-start-time": "09:00",
    "usual-end-time": "16:45",
    "favourite-books": "Super hero comics.",
  },
  "employment_status": "Contract",
  "tags": [
    {
      "tag": "External Contractor"
    }
  ],
  "employee_contacts": [
    {
      "id": 11,
      "type": "Mobile",
      "details": "+61 444 982311",
      "is_primary": true
    },
    {
      "type": "Email",
      "details": "blenkarthur@test.com",
      "is_primary": false
    }
  ]
}

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', :body => postbody}
endpoint = 'https://api.hrpartner.io/employee/'
employeecode = 'BLENA'

result = RestClient.post(endpoint + employeecode, header)

puts result
curl "https://api.hrpartner.io/employee/BLENA"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -H "Content-Type: application/json"
  -X POST
  -d '{"code": "BLENA","tax_number": "112-509-6867","can_logon": true,"portal_username": "ABLENK001", \
  "custom_data": {"annual-salary": 62500.00,"usual-start-time": "09:00","usual-end-time": "16:45","favourite-books": "Super hero comics.",}, \
  "employment_status": "Contract","tags": [{"tag": "External Contractor"}], \
  "employee_contacts": [{"id": 11,"type": "Mobile","details": "+61 444 982311","is_primary": true},{"type": "Email","details": "blenkarthur@test.com","is_primary": false}]}'
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var postbody = postbody = {
  "code": "BLENA",
  "tax_number": "112-509-6867",
  "can_logon": true,
  "portal_username": "ABLENK001",
  "custom_data": {
    "annual-salary": 62500.00,
    "usual-start-time": "09:00",
    "usual-end-time": "16:45",
    "favourite-books": "Super hero comics.",
  },
  "employment_status": "Contract",
  "tags": [
    {
      "tag": "External Contractor"
    }
  ],
  "employee_contacts": [
    {
      "id": 11,
      "type": "Mobile",
      "details": "+61 444 982311",
      "is_primary": true
    },
    {
      "type": "Email",
      "details": "blenkarthur@test.com",
      "is_primary": false
    }
  ]
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, body: postbody};
var endpoint = "https://api.hrpartner.io/employee/";
var employeecode = "BLENA"

client.post(endpoint + employeecode, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "code": "BLENA",
  "first_names": "Arthur",
  "last_name": "Blenkinshop",
  "full_name": "Blenkinshop, Arthur",
  "salutation": "",
  "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6MU22Q/employee/sk8y65/ArthurBlenkinshop.jpg",
  "date_of_birth": "1988-02-23",
  "gender_identity": "Male",
  "pay_point": "",
  "tax_number": "112-509-6867",
  "started_at": "2009-05-22",
  "finished_at": "",
  "is_active": true,
  "is_terminated": false,
  "eligible_for_rehire": false,
  "is_on_leave": true,
  "can_logon": true,
  "portal_username": "ABLENK001",
  "custom_data": {
    "annual-salary": 62500.00,
    "warnings-given": 0,
    "citizenship": "Other (Foreign)",
    "next-increment-due": "2016-03-22",
    "next-increment-amount": 2500.25,
    "training-category": "Pool A - Darwin",
    "training-cert-number": "K123",
    "usual-start-time": "09:00",
    "usual-end-time": "16:45",
    "favourite-books": "Super hero comics.",
    "has-drivers-licence": true
  },
  "department": "Sales",
  "location": "Main Office",
  "group": "Middleton Branch",
  "position": "Warehouse Supervisor",
  "employment_status": "Contract",
  "reports_to": "BURRS",
  "tags": [
    {
      "tag": "Smoker"
    },
    {
      "tag": "EOM Winner"
    },
    {
      "tag": "Picnic Committee"
    },
    {
      "tag": "Project Blenheim"
    },
    {
      "tag": "External Contractor"
    }
  ],
  "employee_contacts": [
    {
      "id": 11,
      "type": "Mobile",
      "details": "+61 444 982311",
      "is_primary": true
    },
    {
      "id": 14,
      "type": "Email",
      "details": "arthurblenkinshop@mailinator.com",
      "is_primary": true
    },
    {
      "id": 16,
      "type": "Twitter",
      "details": "@theblenkinsop",
      "is_primary": false
    },
    {
      "id": 18,
      "type": "LinkedIn",
      "details": "linked.in/blenkinsop",
      "is_primary": false
    },
    {
      "id": 500,
      "type": "Email",
      "details": "arthurathome@mailinator.com",
      "is_primary": false
    },
    {
      "id": 621,
      "type": "Email",
      "details": "blenkarthur@test.com",
      "is_primary": false
    }
  ],
  "employee_addresses": [
    {
      "id": 1,
      "type": "Home",
      "address_1": "123 Main Street",
      "address_2": null,
      "suburb": "Marrickville",
      "state": "WA",
      "post_code": "8089",
      "country": "Australia"
    },
    {
      "id": 3,
      "type": "Delivery",
      "address_1": "2/35B William Street",
      "address_2": "St. Macarthur Building",
      "suburb": "Tennville",
      "state": "LO",
      "post_code": "90-004",
      "country": "New Zealand"
    }
  ]
}

This endpoint either updates an existing employee, or adds a new employee (if the employeeCode does not exist).

HTTP Request

POST https://api.hrpartner.io/employee/{employeeCode}

A successful POST will return an employee object (see the GET /employee call above) upon successful modification or addition.

POST Body

The JSON packet that can be POSTed to the endpoint is essentially the same as the JSON that you receive from the GET call to the /employee endpoint.

Parameter Type Description
code* text The employee code
first_names text The first (and optionally, middle) name of the employee
last_name text The surname of the employee
full_name text The combines name of the employee (i.e. First Last or Last, First)
salutation text Any greeting or salutation that you will use for the employee
date_of_birth yyyy-mm-dd Employee's date of birth in yyyy-mm-dd format
gender_identity M/F or text Either M or F, or if extended gender identities is turned on for the company, then the full text of the gender identity
pay_point text A reference for the employee's pay point
tax_number text The SSN, TFN, National ID or other tax identifier for the employee
started_at yyyy-mm-dd The date the employee started with the company
finished_at yyyy-mm-dd The date the employee was terminated or left the company
is_active true/false Flag whether the employee is active in HR Partner
is_terminated true/false Flag whether the employee is terminated in HR Partner
can_logon true/false Flag whether the employee can log on to their employee portal
portal_username text Employee's username for the portal
custom_data object See Custom Data structure below
department+ text Department name that the employee belongs to
location+ text Location that the employee is in
position+ text Employee's position or job title
employment_status+ text The employment status of the employee (i.e. Full Time, Part Time, Contractor etc.)
reports_to text The Employee Code of the person this employee reports to
tags object See Tags structure below
employee_contacts object See Employee Contacts structure below
employee_addresses object See Employee Addresses structure below

* - Mandatory (required) field

+ - If the field contains data that isn't already in HR Partner, it will be added to the list of drop down options

Please note that the employee code is also required in the POST body as well as the URL for added verification and security.

Custom Data

The custom_data object within the employee data object will contain the field names and field contents of any custom fields that you have added to your HR Partner company. Probably the best option is to execute a GET call on the /employee/{employeeCode} endpoint to get a current employee object and look at the structure of it to ascertain the exact structure of the object that needs to get sent back in the POST call.

Tags

The tags object contains an array of custom tags that you can allocate to the employee.

Parameter Type Description
tag text Tag name

Please note the construction of this object carefully. It is not simply an array of strings, but rather an array of objects (see example of fetched employee data above).

If you use a tag that doesn't exist in HR Partner, that tag will get added to the list of tags, as well as being allocated to the employee.

Employee Contacts

This object contains the various contact items against the employee.

Parameter Type Description
id number The internal ID number of the contact data. If included, the contact details will be updated. If omitted, the contact details will be added
type text Must be one of: Phone, Email, Mobile, Fax, Pager, Facebook, Twitter, Google+, LinkedIn, Skype, Instagram, GitHub
details* text The actual contact details (email address or number etc.)
is_primary true/false Flag for whether this address is primary (will be used as default address for system emails or SMSs)

Employee Addresses

This object contains the various address data against the employee.

Parameter Type Description
id number The internal ID number of the address. If included, the address details will be updated. If omitted, the address details will be added
type text Must be one of: Home, Postal, Work, Delivery, Next of Kin, Visiting
address_1 text First line of their address
address_2 text optional second line of their address
suburb text Either the suburb name or city name
state text The state or county name
post_code text Contains the zip or postal code
country text Must contain the valid name of a country

Employee Sub Modules

The following sections contain the methods required to read the sub module or category data for each employee. At the current time, we only support reading of data from these modules, but a future version of the API may include write back ability.

Absences

require 'rest-client'

endpoint = 'https://api.hrpartner.io/absences'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/absences"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/absences";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 14,
    "leave_type": "taken",
    "absence_reason": "Sick Leave",
    "description": "High fever",
    "absence_date": "2015-05-05",
    "return_date": "2015-05-07",
    "duration": 3.0,
    "physician": "Dr. Cromby",
    "certificate_number": "58475849887",
    "absence_status": "Recovered",
    "comments": "",
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  },
  {
    "id": 5,
    "leave_type": "taken",
    "absence_reason": "Bereavement Leave",
    "description": "Attended auntie's funeral",
    "absence_date": "2015-07-09",
    "return_date": "2015-07-09",
    "duration": 2.0,
    "physician": "",
    "certificate_number": "",
    "absence_status": "Completed",
    "comments": "",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    },
    "attachments": [
      {
        "description": "Doctors Note 2015-07-10.pdf",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/kPbSM9Mss5YXw37x2zNGFw/Doctors Note 2015-07-10.pdf",
        "size": 3601929
      }
    ]
  },
  {
    "id": 12,
    "leave_type": "taken",
    "absence_reason": "Sick Leave",
    "description": "Not feeling well",
    "absence_date": "2015-08-11",
    "return_date": "2015-08-12",
    "duration": 2.0,
    "physician": "Dr. Zhivago",
    "certificate_number": "T059457487",
    "absence_status": "Completed",
    "comments": "",
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  }
]

The Absences module contains the records for each employee's leave or vacation time taken off. Now also includes any TOIL/Flexi time that has been added back as well.

HTTP Request

GET https://api.hrpartner.io/absences

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the absence records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee absences within that department.
location text Only return employees within this location.
group text Only return employees within this group.
type text Specifies whether you want "taken" leave records or "added" leave (TOIL/Flexi)
absence_reason text Return only absence records with this particular absence reason.
duration_from, duration_to number Return only leave records with a duration between these values (inclusive).
physician text Return record with this partial text in the physician name field.
certificate_number text Return records with this text within the certificate field.
absence_status text Return records which have this absence status set.
comments text Search for this text within the comments field and return those.
absence_date_from, absence_date_to date (yyyy-mm-dd) Return leave records that fall between these two dates (inclusive).

Examples

To get a list of all absence records for employee whose code is 'JONES':

GET https://api.hrpartner.io/absences?employee=JONES

To get all sick leave records approved by Dr. Smith:

GET https://api.hrpartner.io/absences?physician=Smith&absence_reason=Sick Leave

To get all 'Approved' leave records that occured during March 2020:

GET https://api.hrpartner.io/absences?absence_date_from=2020-03-01&absence_date_to=2020-03-31&absence_status=Approved

To get all TOIL/Flexi additions for the month of April 2020:

GET https://api.hrpartner.io/absences?absence_date_from=2020-04-01&absence_date_to=2020-04-30&type=added

Attachments

If an absence record includes attachments, they will be returned as an object array underneath the main absence record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Assets

require 'rest-client'

endpoint = 'https://api.hrpartner.io/assets'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/assets"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/assets";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 6,
    "asset_type": "Mobile Phones",
    "description": "iPhone 6 (Black)",
    "asset_identifier": "P90446",
    "serial_number": "A908573",
    "out_date": "2015-10-28",
    "in_date": null,
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 8,
    "asset_type": "Vehicle",
    "description": "Mazda 3",
    "asset_identifier": "V944",
    "serial_number": "4738342923846673",
    "out_date": "2015-10-01",
    "in_date": "2015-10-31",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Administration"
    }
  },
  {
    "id": 9,
    "asset_type": "Computer",
    "description": "Apple Macbook Pro (2009)",
    "asset_identifier": "PC344",
    "serial_number": "Y847587-AA",
    "out_date": "2015-10-02",
    "in_date": "2015-10-29",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  }
]

The Assets module contains the records for company equipment that is on loan to the employee.

HTTP Request

GET https://api.hrpartner.io/assets

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the asset records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee assets within that department.
description text Return only assets with this partial text within the description field.
asset_identifier text Return only assets which have this text within the identifier field.
serial_number text Return only assets which have this text within the serial number field.
asset_type text Select only assets which have this type.
out_date_from, out_date_to date (yyyy-mm-dd) Select only assets that went out (allocated to the employee) between these two dates (inclusive).
in_date_from, in_date_to date (yyyy-mm-dd) Select only assets that came back to the company between these two dates (inclusive).

Examples

To get a list all asset records for employees in the department 'Finance':

GET https://api.hrpartner.io/assets?department=Finance

To find all records which have the word 'Apple' within the description, and are of type 'Phone':

GET https://api.hrpartner.io/assets?description=Apple&asset_type=Phone

To see all assets that are due back in during March 2020:

GET https://api.hrpartner.io/assets?in_date_from=2020-03-01&in_date_to=2020-03-31

Attachments

If an asset record includes attachments, they will be returned as an object array underneath the main asset record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Attachments

require 'rest-client'

endpoint = 'https://api.hrpartner.io/assets'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/assets"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/assets";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 7,
    "description": "My Cat.jpeg",
    "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/t3FfZo45ytnaUedhspSUuQ/My Cat.jpeg",
    "module": "note",
    "module_id": 25,
    "size": 6417,
    "uploaded_date": "2015-10-18T13:56:25+00:00",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop"
    }
  },
  {
    "id": 8,
    "description": "EmploymentContract002",
    "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/biFFfaPJqgwlWbcbPVWTzQ/EmploymentContract002",
    "module": "review",
    "module_id": 2,
    "size": 336892,
    "uploaded_date": "2015-10-18T14:13:32+00:00",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge"
    }
  },
  {
    "id": 10,
    "description": "kids.jpg",
    "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/9GanCSkAzi5jzr32Cc2YCA/kids.jpg",
    "module": "dependent",
    "module_id": 2,
    "size": 1785990,
    "uploaded_date": "2015-10-18T14:16:43+00:00",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop"
    }
  }
]

The Attachments module contains the records for all file attachments for every employee within the company.

HTTP Request

GET https://api.hrpartner.io/attachments

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the attachments for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee attachments within those departments.
description text Return only attachment with this partial text within the description (file name) field.
module text Return only attachments which belong to this particular module (See Modules list in another section).
uploaded_date_from, uploaded_date_to date (yyyy-mm-dd) Select only attachments that were uploaded between these two dates (inclusive).

Examples

To get a list all attachments for employees with the code 'BLENA':

GET https://api.hrpartner.io/attachments?employee=BLENA

To find all attachments which have the word 'contract' within the file name, belong to the module 'review':

GET https://api.hrpartner.io/attachments?description=contract&module=review

To see all attachments that were uploaded on 23rd March 2020:

GET https://api.hrpartner.io/attachments?uploaded_date_from=2020-03-23&uploaded_date_to=2020-03-23

Benefits

require 'rest-client'

endpoint = 'https://api.hrpartner.io/benefits'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/benefits"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/benefits";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 1,
    "description": "A1Health Plan",
    "start_date": "2017-03-01",
    "end_date": "2018-02-28",
    "benefit_value": 3655.0,
    "benefit_value_period": "Year",
    "benefit_type": "Health Insurance",
    "benefit_provider": "MLC Health",
    "benefit_status": "Active",
    "comments": "Company health plan",
    "employee": {
      "code": "MILLS",
      "first_names": "Sally",
      "last_name": "Miller",
      "full_name": "Miller, Sally",
      "department": "Sales"
    }
  },
  {
    "id": 2,
    "description": "Tertiary Assist Program",
    "start_date": "2017-01-01",
    "end_date": "2017-12-31",
    "benefit_value": 600.0,
    "benefit_value_period": "Year",
    "benefit_type": "Educational Assistance",
    "benefit_provider": "BT University",
    "benefit_status": "Pending",
    "comments": "",
    "employee": {
      "code": "FISHL",
      "first_names": "Logan",
      "last_name": "Fisher",
      "full_name": "Fisher, Logan",
      "department": "Administration"
    },
    "attachments": [
      {
        "description": "FinAssistForm-F43.pdf",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/NuDMMix__IgSJyqdW3BjpA/FinAssistForm-F43.pdf",
        "size": 74921
      }
    ]
  }
]

The Benefits module contains the records for any additional benefit or allowance plans that the employee may be on.

HTTP Request

GET https://api.hrpartner.io/benefits

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the benefit records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee benefits within that department.
benefit_type text Specify the benefit type to list only records matching this type.
benefit_status text Specify the benefit status to retrieve only records which matchi this status.
description text Return only benefits with this partial text within the description field.
comments text Return only benefits with this partial text within the comments field.
start_date_from, start_date_to date (yyyy-mm-dd) Select only benefits that started between these two dates (inclusive).
end_date_from, end_date_to date (yyyy-mm-dd) Select only benefits that finish between these two dates (inclusive).
benefit_value_from, benefit_value_to number Return only benefits with a value between these two parameters.
benefit_value_period text Retrieve only benefits which have this value period.

Examples

To get a list all benefit records for employees in the department 'Sales' that have a status of 'After Tax':

GET https://api.hrpartner.io/benefits?department=Sales&benefit_status=After Tax

To find all benefit records which have the word 'Health' within the description, and are valued between $100.00 and $500.00 per month:

GET https://api.hrpartner.io/benefits?description=Health&benefit_value_from=100&benefit_value_to=500&benefit_value_period=Month

To see all benefits that started in the year 2020:

GET https://api.hrpartner.io/benefits?start_date_from=2020-01-01&start_date_to=2020-12-31

Attachments

If a benefit record includes attachments, they will be returned as an object array underneath the main benefit record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Dependents

require 'rest-client'

endpoint = 'https://api.hrpartner.io/dependents'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/dependents"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/dependents";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 134,
    "dependent_type": "Son",
    "name": "William",
    "contact_details": "",
    "date_of_birth": "2009-03-11",
    "comments": "",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    },
    "attachments": [
      {
        "description": "10342961_10152816950947786_4977910610541866258_n.jpg",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/mAn9-w8cEaE4Jfg2PqgSBg/10342961_10152816950947786_4977910610541866258_n.jpg",
        "size": 126615
      }
    ]
  },
  {
    "id": 189,
    "dependent_type": "Daughter",
    "name": "Sally-Anne",
    "contact_details": "",
    "date_of_birth": "2011-07-22",
    "comments": "His favourite daughter!",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    },
    "attachments": [
      {
        "description": "Sally.JPG",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/biFFfaPJqgwlWbcbPVWTzQ/Sally.JPG",
        "size": 336892
      },
      {
        "description": "coincollection.jpg",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/9GanCSkAzi5jzr32Cc2YCA/coincollection.jpg",
        "size": 1785990
      }
    ]
  },
  {
    "id": 211,
    "dependent_type": "Wife",
    "name": "Samantha",
    "contact_details": "0498 412556",
    "date_of_birth": "1974-12-16",
    "comments": "",
    "employee": {
      "code": "BURRS",
      "first_names": "Sally",
      "last_name": "Burridge",
      "full_name": "Burridge, Sally",
      "department": "Administration"
    }
  }
]

The Dependents module contains the records for any dependents, spouses, kids or family related to the employee.

HTTP Request

GET https://api.hrpartner.io/dependents

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the dependent records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee dependents within that department.
dependent_type text Specify the dependent type to list only records matching this type.
name text Return only dependents with this partial text within the name field.
contact_details text Return only dependents with this partial text within the contact details field.
comments text Return only dependents with this partial text within the comments field.
date_of_birth_from, date_of_birth_to date (yyyy-mm-dd) Select only dependents whose date of birth falls between these two dates (inclusive).

Examples

To get a list all dependent records for employee with the code 'BURRS':

GET https://api.hrpartner.io/dependents?employee=BURRS

To find all dependent records who have the name of 'John':

GET https://api.hrpartner.io/dependents?name=John

Attachments

If a dependent record includes attachments, they will be returned as an object array underneath the main dependent record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Education

require 'rest-client'

endpoint = 'https://api.hrpartner.io/education'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/education"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/education";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 2031,
    "institution": "Dutton High School",
    "commence_date": "2009-11-27",
    "completion_date": "2010-11-15",
    "education_type": "High School",
    "education_status": "No Result",
    "comments": null,
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 3499,
    "institution": "Farville Secondary College",
    "commence_date": "2012-01-25",
    "completion_date": "2012-02-29",
    "education_type": "Adult Education",
    "education_status": "Passed",
    "comments": null,
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 5150,
    "institution": "King Street High School",
    "commence_date": "1970-03-01",
    "completion_date": "1976-12-31",
    "education_type": "High School",
    "education_status": "Passed",
    "comments": null,
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    }
  }
]

The Education module contains the records for any educational institutions that the employee may have attended before they started with your company.

HTTP Request

GET https://api.hrpartner.io/education

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the education records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee educational records within that department.
education_type text Specify the education type to list only records matching this type.
education_status text Specify the education outcome or status to report for.
institution text Return only educational records with this partial text within the institution field.
qualification text Return only educational records with this partial text within the qualification field.
comments text Return only education details where the comments field contains this partial string.
commence_date_from, commence_date_to date (yyyy-mm-dd) Return only education records which commenced between these two dates (inclusive).
completion_date_from, completion_date_to date (yyyy-mm-dd) Select only education records which had a completion date that falls between these two dates (inclusive).

Examples

To get a list all education records for employee with the code '00204':

GET https://api.hrpartner.io/education?employee=BURRS

To find all education records for employees who attended high school and passed:

GET https://api.hrpartner.io/education?education_type=High School&education_status=Passed

To find all education records in the year 2020 for employees in the Finance department:

GET https://api.hrpartner.io/education?department=Finance&commence_date_from=2020-01-01&commence_date_to=2020-12-31

Attachments

If an education record includes attachments, they will be returned as an object array underneath the main education record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Grievances

require 'rest-client'

endpoint = 'https://api.hrpartner.io/grievances'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/grievances"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/grievances";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 7254,
    "grievance_type": "Complaint",
    "description": "Used bad language in conversation with customer",
    "reported_date": "2019-02-21",
    "actioned_by": "RR",
    "grievance_status": "Resolved",
    "comments": "",
    "employee": {
      "code": "GRANC",
      "first_names": "Craig",
      "last_name": "Grant",
      "full_name": "Grant, Craig",
      "department": "Sales"
    }
  },
  {
    "id": 7299,
    "grievance_type": "Harrassment",
    "description": "Inappropriate behaviour at company function",
    "reported_date": "2019-03-27",
    "actioned_by": "",
    "grievance_status": "Dismissed",
    "comments": "",
    "employee": {
      "code": "GRANC",
      "first_names": "Craig",
      "last_name": "Grant",
      "full_name": "Grant, Craig",
      "department": "Sales"
    }
  },
  {
    "id": 8013,
    "grievance_type": "Complaint",
    "description": "Colleagues lodged a complaint",
    "reported_date": "2019-09-03",
    "actioned_by": "Fred Jones",
    "grievance_status": "Inconclusive",
    "comments": "Others reported Kate being a bit rude today.",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    }
  }
]

The Grievance module contains the records for any complaints or harrasments or other grievances that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/grievances

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the grievance records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee grievance records within that department.
grievance_type text Specify the grievance type to list only records matching this type.
grievance_status text Specify the grievance outcome or status to report for.
description text Return only grievance records with this partial text within the institution field.
actioned_by text Return only grievance details where the 'actioned by' field containt this partial name.
reported_date_from, reported_date_to date (yyyy-mm-dd) Return only grievance records which reported between these two dates (inclusive).

Examples

To get a list all grievance records for complaints:

GET https://api.hrpartner.io/grievances?grievance_type=Complaint

To find all grievance records for employees in the Warehouse department that were filed in March 2020:

GET https://api.hrpartner.io/grievances?department=Warehouse&reported_date_from=2020-03-31&reported_date_to=2020-03-31

To find all grievances that were actioned by John Smith with a resulting status of 'In Mediation':

GET https://api.hrpartner.io/grievances?actioned_by=John Smith&grievance_status=In Mediation

Attachments

If a grievance record includes attachments, they will be returned as an object array underneath the main grievance record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Interviews

require 'rest-client'

endpoint = 'https://api.hrpartner.io/interviews'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/interviews"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/interviews";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 1056,
    "interview_type": "Initial Interview",
    "description": "First interview",
    "interviewer": "Dr. Johnson",
    "interview_date": "2015-10-16",
    "comments": "This was a test interview",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 1077,
    "interview_type": "Three Month Interview",
    "description": "3 Month Interview",
    "interviewer": "Jake Cartwright",
    "interview_date": "2015-10-06",
    "comments": "Sat down with Arthur for his 3 month interview - everything seemed to go OK, and he seemed happy.",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 1096,
    "interview_type": "Induction Interview",
    "description": "Primary Interview for Bess",
    "interviewer": "Jim Hanson",
    "interview_date": "2015-07-01",
    "comments": "Everything seems fine.  Bess seems happy with how things are progressing at this stage.",
    "employee": {
      "code": "LUCAB",
      "first_names": "Bessi",
      "last_name": "Lucas",
      "full_name": "Lucas, Bessi",
      "department": "Sales"
    }
  },
  {
    "id": 2322,
    "interview_type": "Induction Interview",
    "description": "Saying hello to Katrina",
    "interviewer": "Jeff Garner",
    "interview_date": "2018-08-16",
    "comments": "Welcome to the company!",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    },
    "attachments": [
      {
        "description": "Welcome_Kit.pdf",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/msqw63X2V3cFkL8ohJvnng/Welcome_Kit.pdf",
        "size": 84879
      },
      {
        "description": "Interview-notes-2018-08-16.pdf",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/msqw63X2V3cFkL8ohJvnng/Interview-notes-2018-08-16.pdf",
        "size": 57321
      }
    ]
  }
]

The Interview module contains the records for any interviews or meetings that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/interviews

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the interview records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee interview records within that department.
interview_type text Specify the interview type to list only records matching this type.
description text Return only interview records with this partial text within the description field.
interviewer text Return only interview details where the 'interviewer' field contains this partial name.
interview_date_from, interview_date_to date (yyyy-mm-dd) Return only interview records which happened between these two dates (inclusive).

Examples

To get a list all interview records of the type "First Interview":

GET https://api.hrpartner.io/interview?interview_type=First Interview

To find all interview records for employees in the Finance department that were filed in March 2020:

GET https://api.hrpartner.io/interview?department=Finance&interview_date_from=2020-03-01&interview_date_to=2020-03-31

To find all interviews that were carried out by Mary Jones and had the word 'promotion' in the description:

GET https://api.hrpartner.io/interview?interviewer=Mary Jones&description=promotion

Attachments

If an interview record includes attachments, they will be returned as an object array underneath the main interview record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Notes

require 'rest-client'

endpoint = 'https://api.hrpartner.io/notes'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/notes"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/notes";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 3623,
    "note": "Need to schedule a meeting with James to discuss promotion",
    "created_date": "2015-11-02T00:33:02+00:00",
    "updated_date": "2015-11-02T00:33:02+00:00",
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  },
  {
    "id": 3678,
    "note": "Buy a birthday present for Kylie!",
    "created_date": "2015-11-03T21:36:04+00:00",
    "updated_date": "2015-11-03T21:36:04+00:00",
    "employee": {
      "code": "HARVK",
      "first_names": "Kylie",
      "last_name": "Harvey",
      "full_name": "Harvey, Kylie",
      "department": "Customer Support"
    }
  },
  {
    "id": 3704,
    "note": "Stacey is looking to make a presentation to the team next week.",
    "created_date": "2015-11-06T02:20:01+00:00",
    "updated_date": "2015-11-06T02:20:01+00:00",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge",
      "full_name": "Burridge, Stacey",
      "department": "Warehouse"
    }
  },
  {
    "id": 39,
    "note": "Rakesh wants to apply for Project Icarus as he thinks he will be a big help to that team in achieving their objectives.",
    "created_date": "2015-11-14T02:15:29+00:00",
    "updated_date": "2015-11-14T02:15:29+00:00",
    "employee": {
      "code": "PARAR",
      "first_names": "Rakesh",
      "last_name": "Parameswaran",
      "full_name": "Parameswaran, Rakesh",
      "department": "Administration"
    },
    "attachments": [
      {
        "description": "IMG_5711.PNG",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/5mtnOdablhnE1c8XlfLOog/IMG_5711.PNG",
        "size": 275890
      },
      {
        "description": "Project Icarus Costings.csv",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/wOOoi3-8V1_ugFuc2O5Sww/Project Icarus Costings.csv",
        "size": 3795
      }
    ]
  }
]

The Notes module contains any free forms notes that have been made against your employee.

HTTP Request

GET https://api.hrpartner.io/notes

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the notes for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee notes within that department.
note text Return only notes with this partial text within the note text field.
created_date_from, created_date_to date (yyyy-mm-dd) Return notes that were created between these two dates (inclusive).
updated_date_from, updated_date_to date (yyyy-mm-dd) Return only notes which were updated/modified between these two dates (inclusive).
tags text Return only notes that have the matching hashtags. Specify tags in a comma separated list without the leading '#' character.

Examples

To get a list all notes for John Smith (employee code SMITJ):

GET https://api.hrpartner.io/notes?employee=SMITJ

To find all notes created in March 2020:

GET https://api.hrpartner.io/notes?created_date_from=2020-03-01&created_date_to=2020-03-31

To find all notes that contain the word 'promotion' and were modified in the first week of March 2020:

GET https://api.hrpartner.io/notes?note=promotion&updated_date_from=2020-03-01&updated_date_to=2020-03-08

To find all notes for employee code WILSJ that have the '#late' or '#workshop' hashtags:

GET https://api.hrpartner.io/notes?employee=WILSJ&tags=late,workshop

Attachments

If a note includes attachments, they will be returned as an object array underneath the main note record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Positions

require 'rest-client'

endpoint = 'https://api.hrpartner.io/positions'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/positions"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/positions";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 3970,
    "position": "Operations Manager",
    "commence_date": "2015-10-03",
    "completion_date": null,
    "pay_level": "",
    "remuneration": 50000.0,
    "remuneration_period": "year",
    "comments": "Latest promotion",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    },
    "attachments": [
      {
        "description": "IMG_1816.JPG",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/cNh0JliuSEvD4zoMGOsQxA/IMG_1816.JPG",
        "size": 457352
      },
      {
        "description": "IMG_1815.JPG",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/cNh0JliuSEvD4zoMGOsQxA/IMG_1815.JPG",
        "size": 399918
      }
    ]
  },
  {
    "id": 4278,
    "position": "Driver",
    "commence_date": "2015-07-01",
    "completion_date": "2019-10-03",
    "pay_level": "",
    "remuneration": 45600.0,
    "remuneration_period": "year",
    "comments": "Due for a promotion on 5th Dec after a retraining.",
    "employee": {
      "code": "DUNND",
      "first_names": "Deanne",
      "last_name": "Dunn",
      "full_name": "Dunn, Deanne",
      "department": "Warehouse"
    }
  },
  {
    "id": 4299,
    "position": "Intern",
    "commence_date": "2017-03-01",
    "completion_date": null,
    "pay_level": "",
    "remuneration": 25000.0,
    "remuneration_period": "year",
    "comments": "",
    "employee": {
      "code": "FLETC",
      "first_names": "Curtis",
      "last_name": "Fletcher",
      "full_name": "Fletcher, Curtis",
      "department": "Production"
    }
  },
  {
    "id": 4351,
    "position": "Assembly Line Worker",
    "commence_date": "2017-04-12",
    "completion_date": "2017-05-22",
    "pay_level": "",
    "remuneration": 30000.0,
    "remuneration_period": "year",
    "comments": "",
    "employee": {
      "code": "FLETC",
      "first_names": "Curtis",
      "last_name": "Fletcher",
      "full_name": "Fletcher, Curtis",
      "department": "Production"
    }
  }
]

The Position module contains the records for any position or employment contracts that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/positions

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the position records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee position records within that department.
position text Specify the position name to list only records matching this position name.
comments text Return only position records with this partial text within the comments field.
remuneration_from, remuneration_to number Return position records where the remuneration is between these two figures (inclusive).
paylevel text Return position information where the pay level contains this text.
commence_date_from, commence_date_to date (yyyy-mm-dd) Return only position records which commenced between these two dates (inclusive).
completion_date_from, completion_date_to date (yyyy-mm-dd) Return only position records which completed between these two dates (inclusive).

Examples

To get a list all position records in department "Finance":

GET https://api.hrpartner.io/positions?department=Finance

To find all position records which started in 2020 where the remuneration amount was between $50,000 and $60,000:

GET https://api.hrpartner.io/positions?commence_date_from=2020-01-01&commence_date_to=2020-12-31&remuneration_from=50000&remuneration_to=60000

To find all positions for "Delivery Truck Driver" then finished in March 2020:

GET https://api.hrpartner.io/positions?position=Delivery Truck Driver&completion_date_from=2020-03-01&completion_date_to=2020-03-31

Attachments

If a position record includes attachments, they will be returned as an object array underneath the main position record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Renewables

require 'rest-client'

endpoint = 'https://api.hrpartner.io/renewables'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/renewables"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/renewables";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 3844,
    "renewable_type": "Class A Truck Licence",
    "description": "Multi segment lorry licence",
    "issue_date": "2015-10-01",
    "renewal_due": "2016-10-24",
    "comments": "New licence for a lorry. I mean a truck.",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 3869,
    "renewable_type": "Drivers Licence",
    "description": "NT Drivers Licence",
    "issue_date": "2010-05-13",
    "renewal_due": "2016-05-13",
    "comments": "",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge",
      "full_name": "Burridge, Stacey",
      "department": "Warehouse"
    }
    "attachments": [
      {
        "description": "S Burridge Licence.JPG",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/cNh0JliuSEvD4zoMGOsQxA/S Burridge Licence.JPG",
        "size": 457352
      }
    ]
  },
  {
    "id": 3902,
    "renewable_type": "Forklift Licence",
    "description": "Class B Industrial Licence",
    "issue_date": "2015-11-01",
    "renewal_due": "2016-05-31",
    "comments": "",
    "employee": {
      "code": "HARVK",
      "first_names": "Kylie",
      "last_name": "Harvey",
      "full_name": "Harvey, Kylie",
      "department": "Customer Support"
    }
  }
]

The Renewables module contains the records for any renewable documents that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/renewables

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the renewable records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee renewable records within that department.
renewable_type text Specify the renewable type to list only records matching this type.
description text Return only renewable records with this partial text within the description field.
comments text Return only renewable records with this partial text within the comments field.
issue_date_from, issue_date_to date (yyyy-mm-dd) Return only renewable records which were issued between these two dates (inclusive).
renewal_date_from, renewal_date_to date (yyyy-mm-dd) Return only renewable records which are due to be renewed between these two dates (inclusive).

Examples

To get a list all renewable records of the type "Drivers Licence" and department "Sales":

GET https://api.hrpartner.io/renewables?renewable_type=Drivers Licence&department=Sales

To find all renewable records that contain the word "forklift" in the description and due for renewal in March 2020:

GET https://api.hrpartner.io/renewables?description=forklift&renewal_date_from=2020-03-01&renewal_date_to=2020-03-31

Attachments

If a renewable record includes attachments, they will be returned as an object array underneath the main renewable record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Reviews

require 'rest-client'

endpoint = 'https://api.hrpartner.io/reviews'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/reviews"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/reviews";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 5590,
    "review_type": "Three Month Review",
    "description": "3 month performance review",
    "review_date": "2015-10-23",
    "reviewer": "Judy Trant",
    "score": 6.0,
    "review_status": "Passed",
    "comments": "Arthur passed his 3 month review with flying colours.",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 6030,
    "review_type": "One Month Review",
    "description": "Initial monthly review for Stacey",
    "review_date": "2015-07-29",
    "reviewer": "Dennis Burns",
    "score": 1.0,
    "review_status": "Failed",
    "comments": "",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge",
      "full_name": "Burridge, Stacey",
      "department": "Warehouse"
    }
  },
  {
    "id": 6229,
    "review_type": "Annual Review",
    "description": "2015 Annual Review for Katrina",
    "review_date": "2015-10-01",
    "reviewer": "Tony Prentice",
    "score": 10.0,
    "review_status": "Passed",
    "comments": "Great review.  Katrina has met all her targets and is doing exceptionally well.",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    }
  },
  {
    "id": 6241,
    "review_type": "Three Month Review",
    "description": "Quarterly Goal Review",
    "review_date": "2015-11-07",
    "reviewer": "Stan Hullthorpe",
    "score": 9.5,
    "review_status": "Passed",
    "comments": "Kylie passed her 3 month review with flying colours.  She is quite positive about the upcoming training courses she has planned.",
    "employee": {
      "code": "HARVK",
      "first_names": "Kylie",
      "last_name": "Harvey",
      "full_name": "Harvey, Kylie",
      "department": "Customer Support"
    }
  }
]

The Reviews module contains the records for any performance reviews that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/reviews

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the reviews for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee reviews within that department.
review_type text Specify the review type to list only reviews matching this type.
review_status text Specify the review status to list only reviews matching this status.
description text Return only review records with this partial text within the description field.
comments text Return only review records with this partial text within the comments field.
reviewer text Return only reviews with this partial text within the reviewer name field.
score_from, score_to number Return reviews where the score is between these two figures (inclusive).
review_date_from, review_date_to date (yyyy-mm-dd) Return only review records which fall between these two dates (inclusive).

Examples

To get a list all reviews in department "Finance" for March 2020:

GET https://api.hrpartner.io/reviews?department=Finance&review_date_from=2020-03-01&review_date_to=2020-03-31

To find all "Monthly" reviews that scored between 5 and 10 points score:

GET https://api.hrpartner.io/reviews?review_type=Monthly Review&score_from=5&score_to=10

To find all reviews with a status of "Failed" in 2019 that were run by Mary Jones:

GET https://api.hrpartner.io/reviews?review_status=Failed&reviewer=Mary Jones&review_date_from=2019-01-01&review_date_to=2019-12-31

Attachments

If a review record includes attachments, they will be returned as an object array underneath the main review record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Skills

require 'rest-client'

endpoint = 'https://api.hrpartner.io/skills'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/skills"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/skills";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 2125,
    "skill_name": "Word Processing",
    "skill_rating": "Very Good",
    "comments": "Knows how to do macros and other advanced stuff in Word. Can handle setting up a mail merge from an external database.",
    "employee": {
      "code": "BLENA",
      "first_names": "Arthur",
      "last_name": "Blenkinshop",
      "full_name": "Blenkinshop, Arthur",
      "department": "Sales"
    }
  },
  {
    "id": 2241,
    "skill_name": "Phone Manner",
    "skill_rating": "Excellent",
    "comments": "",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge",
      "full_name": "Burridge, Stacey",
      "department": "Warehouse"
    }
  },
  {
    "id": 2275,
    "skill_name": "Word Processing",
    "skill_rating": "Good",
    "comments": "Stacey is pretty confident in creating and working in documents in Word.  Probably needs more instruction on how to use a large file system (on our server).",
    "employee": {
      "code": "BURRS",
      "first_names": "Stacey",
      "last_name": "Burridge",
      "full_name": "Burridge, Stacey",
      "department": "Warehouse"
    }
  },
  {
    "id": 2329,
    "skill_name": "Customer Relations",
    "skill_rating": "Excellent",
    "comments": "",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    }
  },
  {
    "id": 2388,
    "skill_name": "Operating Systems",
    "skill_rating": "Good",
    "comments": "",
    "employee": {
      "code": "BLACK",
      "first_names": "Katrina",
      "last_name": "Black",
      "full_name": "Black, Katrina",
      "department": "Warehouse"
    }
  }
]

The Skills module contains the records for any skills and abilities that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/skills

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the skill records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee skill records within that department.
skill_name text Return all skills which have this name.
skill_rating text Return all skills which have this rating.
skill_rating_from, skill_rating_to text Return all skills with a rating that falls between these two parameters.
comments text Return only skill records with this partial text within the comments field.

Examples

To get a list all skills of type "Word Processing in department "Finance":

GET https://api.hrpartner.io/skills?department=Finance&skill_name=Word Processing

To find all skills with the name "Javascript Programming" that have a rating of 5 to 10:

GET https://api.hrpartner.io/skills?skill_name=Javascript Programming&skill_rating_from=5&skill_rating_to=10

To find all skills for "French Language" with a skill rating of "Fluent":

GET https://api.hrpartner.io/skills?skill_name=French Language&skill_rating=Fluent

Attachments

(Please note that Skill ratings do not have attachments)

Training

require 'rest-client'

endpoint = 'https://api.hrpartner.io/training'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/training"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/training";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
  {
    "id": 3110,
    "training_type": "First Aid",
    "course_name": "First Aid Certificate training (Stage 1)",
    "institution": "St Johns Ambulance",
    "commence_date": "2015-10-01",
    "completion_date": "2015-10-03",
    "training_status": "Completed",
    "cost": 70.0,
    "reimbursement": 0.0,
    "comments": "",
    "employee": {
      "code": "KENNA",
      "first_names": "Arlene",
      "last_name": "Kennedy",
      "full_name": "Kennedy, Arlene",
      "department": "Administration"
    }
  },
  {
    "id": 3212,
    "training_type": "First Aid",
    "course_name": "First Aid Certificate training (Grade 2)",
    "institution": "Internal",
    "commence_date": "2015-08-05",
    "completion_date": "2015-08-13",
    "training_status": "Completed",
    "cost": 100.0,
    "reimbursement": 50.0,
    "comments": "Bella did the internal training course.",
    "employee": {
      "code": "LANEB",
      "first_names": "Bella",
      "last_name": "Lane",
      "full_name": "Lane, Bella",
      "department": "Personnel"
    }
  },
  {
    "id": 3345,
    "training_type": "Induction",
    "course_name": "Company Induction 101",
    "institution": "Internal",
    "commence_date": "2015-10-01",
    "completion_date": "2015-10-02",
    "training_status": "Completed",
    "cost": 80.0,
    "reimbursement": 0.0,
    "comments": "Bella did really well with this course.",
    "employee": {
      "code": "LANEB",
      "first_names": "Bella",
      "last_name": "Lane",
      "full_name": "Lane, Bella",
      "department": "Personnel"
    },
    "attachments": [
      {
        "description": "PST.png",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/vcpkvR6aosbrUg2LhIljYA/PST.png",
        "size": 6020
      },
      {
        "description": "Certificate.png",
        "url": "_5jGmaQIuOL3uqyP6MU22Q/attachments/vcpkvR6aosbrUg2LhIljYA/Certificate.png",
        "size": 7611
      }
    ]
  },
  {
    "id": 3487,
    "training_type": "First Aid",
    "course_name": "First Aid Certificate",
    "institution": "St Johns Ambulance",
    "commence_date": "2015-11-05",
    "completion_date": "2015-11-09",
    "training_status": "Completed",
    "cost": 90.0,
    "reimbursement": 90.0,
    "comments": "",
    "employee": {
      "code": "HARVK",
      "first_names": "Kylie",
      "last_name": "Harvey",
      "full_name": "Harvey, Kylie",
      "department": "Customer Support"
    }
  },
]

The Training module contains the records for any internal or extra training courses that have been recorded against your employee.

HTTP Request

GET https://api.hrpartner.io/training

Query Parameters

Parameter Type Description
employee text Specify the employee code to only see the training records for that particular employee.
department text Specify one or more department names (separated by commas) to only show employee training records within that department.
training_type text Specify the training type to list only entries matching this type.
training_status text Specify the training status to list only entries matching this status.
course_name text Return only records with this partial text in the course name field.
institution text Return only records that has this partial text in the course intitution field.
comments text Return only training records with this partial text within the comments field.
cost_from, cost_to number Return training records where the cost was between these two figures (inclusive).
reimbursement_from, reimbursement_to number Return training records where the reimbursement to the employee was between these two figures (inclusive).
commence_date_from, commence_date_to date (yyyy-mm-dd) Return only training records which commenced between these two dates (inclusive).
completion_date_from, completion_date_to date (yyyy-mm-dd) Return only training records which completed between these two dates (inclusive).

Examples

To get a list all training type "First Aid" in department "Finance":

GET https://api.hrpartner.io/training?department=Finance&training_type=First Aid

To find all training that cost between $50 and $100 that was run in March 2020:

GET https://api.hrpartner.io/training?cost_from=50&cost_to=100&commence_date_from=2020-03-01&commence_date_to=2020-03-31

To find all training with a status of "Passed" in 2019 where the employees were reimbursed at least $100:

GET https://api.hrpartner.io/training?training_status=Passed&reimbursement_from=100&reimbursement_to=99999

Attachments

If a training record includes attachments, they will be returned as an object array underneath the main training record. The structure of this object is:

Parameter Type Description
description text The file name
url text The URL path to the file
size number The size of the file in bytes

Employee Birthdays & Anniversaries

The following section details how to generate a list of employee birthdays, as well as a list of employee anniversaries from our system.

Birthdays

require 'rest-client'

endpoint = 'https://api.hrpartner.io/birthdays'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/birthdays"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/birthdays";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
    {
        "code": "GREGL",
        "first_names": "Lesa",
        "last_name": "Gregory",
        "full_name": "Gregory, Lesa",
        "date_of_birth": "3rd Nov 1988",
        "age": "34 years",
        "gender_identity": "Female",
        "is_active": true,
        "is_terminated": false,
        "is_on_leave": false,
        "department": "Customer Support",
        "location": "Perth",
        "position": "Customer Service Rep",
    "group": "Middleton Branch",
        "employment_status": "Full Time",
        "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyjf7Y22Q%2Femployee%2F28%2FLesa%20Gregory.jpg",
        "email": "devan+lesa@blaze.com.au",
        "started_at": "2009-04-11",
        "finished_at": null
    },
    {
        "code": "FLETC",
        "first_names": "Curtis",
        "last_name": "Fletcher",
        "full_name": "Fletcher, Curtis",
        "date_of_birth": "5th Nov 1998",
        "age": "24 years",
        "gender_identity": "Male",
        "is_active": true,
        "is_terminated": false,
        "is_on_leave": false,
        "department": "Production",
        "location": "Main Office",
    "group": "Gotham Branch",
        "position": "Assembly Line Worker",
        "employment_status": "Casual",
        "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyjf7Y22Q%2Femployee%2F32%2FCurtis%20Fletcher.jpg",
        "email": "fletcher@mailinator.com",
        "started_at": "2015-09-11",
        "finished_at": null
    }
]

The Birthday request will return an abbreviated employee list with some core details, as well as their calculated age at the time of making the call.

Please note that this call will only return Active, Non-Terminated employees.

HTTP Request

GET https://api.hrpartner.io/birthdays

Query Parameters

Parameter Type Description
department text Specify one or more department names (separated by commas) to only show employees within those departments.
location text Specify one or more location names (separated by commas) to only show employees withi those locations.
position text Specify one or more position names (separated by commas) to only show employees withi those positions.
employment status text Specify one or more employment status names (separated by commas) to only show employees withi those employment statuses.
start_month number Specify the starting month of the year to get results for (1=Jan, 2=Feb ... 12=Dec).
end_month number Specify the ending month of the year to get results for (1=Jan, 2=Feb ... 12=Dec).
selected_year number Specify the 4 digit selected year to print the report for (future years will forecase the employee age).

Examples

To get a list of all employee birthdays for the 'Finance' and 'Warehouse' departments:

GET https://api.hrpartner.io/birthdays?department=Finance,Warehouse

To get all employee birthdays from January to March in the current year:

GET https://api.hrpartner.io/birthdays?start_month=1&end_month=3

To get all employee birthdays in October 2023:

Anniversaries

require 'rest-client'

endpoint = 'https://api.hrpartner.io/anniversaries'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/anniversaries"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/anniversaries";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response);
});

The above command returns JSON structured like this:

[
    {
        "code": "LANEB",
        "first_names": "Bella",
        "last_name": "Lane",
        "full_name": "Lane, Bella",
        "date_of_birth": "6th Mar 1989",
        "gender_identity": "Female",
        "is_active": true,
        "is_terminated": false,
        "is_on_leave": true,
        "department": "Personnel",
        "location": "Sydney",
    "group": "Middleton Branch"
        "position": "Intern",
        "employment_status": "Casual",
        "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6uyP9Q%2Femployee%2F9%2FBella%20Lane.jpg",
        "email": "bella@mailinator.com",
        "started_at": "2014-11-07",
        "finished_at": null,
        "years_worked": 8
    },
    {
        "code": "40100",
        "first_names": "Barry",
        "last_name": "Aardvark",
        "full_name": "Aardvark, Barry",
        "date_of_birth": "10th Aug 1990",
        "gender_identity": "Male",
        "is_active": true,
        "is_terminated": false,
        "is_on_leave": false,
        "department": "Administration",
        "location": "Main Office",
    "group": "Stanstead Branch",
        "position": "Storeperson",
        "employment_status": "Full Time",
        "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqy6uyP92Q%2Femployee%2FPpm%2Faardvark--barry.png",
        "email": "barry.aardvark@mailinator.com",
        "started_at": "2019-11-07",
        "finished_at": null,
        "years_worked": 3
    },
    {
        "code": "LAYMD",
        "first_names": "Daniel",
        "last_name": "Layman",
        "full_name": "Layman, Daniel",
        "date_of_birth": "",
        "gender_identity": "Male",
        "is_active": true,
        "is_terminated": false,
        "is_on_leave": false,
        "department": "Development",
        "location": "Remote Office",
    "group": "Stanstead Branch",
        "position": "Programmer",
        "employment_status": "Part Time",
        "avatar": "https://s3.amazonaws.com/hrpartner/_5jGmaQIuOL3uqyP6uyP9Q%2Femployee%2FQo5%2Flayman--daniel.png",
        "email": "daniellayman@mailinator.com",
        "started_at": "2017-11-14",
        "finished_at": null,
        "years_worked": 5
    }
]

The Anniversary request will return an abbreviated employee list with some core details, as well as their length of employment at the time of making the call.

Please note that this call will only return Active, Non-Terminated employees.

HTTP Request

GET https://api.hrpartner.io/anniversaries

Query Parameters

Parameter Type Description
department text Specify one or more department names (separated by commas) to only show employees within those departments.
location text Specify one or more location names (separated by commas) to only show employees within those locations.
position text Specify one or more position names (separated by commas) to only show employees within those positions.
group text Specify one or more group names (separated by commas) to only show eployees within those groups.
employment status text Specify one or more employment status names (separated by commas) to only show employees withi those employment statuses.
start_month number Specify the starting month of the year to get results for (1=Jan, 2=Feb ... 12=Dec).
end_month number Specify the ending month of the year to get results for (1=Jan, 2=Feb ... 12=Dec).
selected_year number Specify the 4 digit selected year to print the report for (future years will forecast the employee length of service).

Examples

To get a list of all employee anniversaries for 'Full Time' and 'Casual' employee positions:

GET https://api.hrpartner.io/anniversaries?position=Full Time,Casual

To get all employee anniversaries from July to December in the current year:

GET https://api.hrpartner.io/anniversaries?start_month=7&end_month=12

To get all employee anniversaries in March 2023 for the 'London' location:

GET https://api.hrpartner.io/anniversaries?location=London&start_month=3&end_month=3&selected_year=2023

Lookups

require 'rest-client'

endpoint = 'https://api.hrpartner.io/lookups/absence_reasons'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/lookups/absence_reasons"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/lookups/absence_reasons";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 2051,
    "name": "Annual Leave"
  },
  {
    "id": 2589,
    "name": "Bereavement Leave"
  },
  {
    "id": 2664,
    "name": "PTO"
  },
  {
    "id": 2878,
    "name": "Sick Leave"
  },
  {
    "id": 3012,
    "name": "Study Leave"
  }
]

This endpoint retrieves information from any of the lookup files that are used in the drop downs within HR Partner.

HTTP Request

GET https://api.hrpartner.io/lookups/{lookupName}

Lookup Names

Name Description
absence_reasons Leave/Time Off/Absence types
absence_statuses Leave/Time Off/Absence statuses
asset_types Asset types
benefit_types Benefit package type
benefit_statuses Benefit package statuses
departments Departments used within HR Partner
dependent_types Dependent/Next of Kin type
education_types Prior education types
education_statuses Prior education statuses
employment_statuses Employment Status (e.g. Full Time, Part Time etc.)
genders Gender list (if extended gender identities turned on in company options)
grievance_types Grievance/Complaints/Harrassment types
grievance_statuses Grievance/Complaints/Harrassment statuses
groups Groups (which can be renamed by you to Branches or Entities etc.) used HR Partner
interview_types Interview/Meeting types
locations Locations used within HR Partner
pay_levels Pay levels used in Position records
positions Position/Job descriptions within HR Partner
renewable_types Renewable document types
renewable_statuses Renewable document statuses
review_types Performance review types
review_statuses Performance review statuses
scorecards Application scorecards
skill_names Skill names
skill_ratings Skill ratings
stages Application stages
tags Tags used within HR Partner
termination_reasons List of termination reasons
training_types Training types
training_statuses Training statuses

Examples

To get a list of all asset types:

GET https://api.hrpartner.io/lookups/asset_types

To get a list of all position descriptions in HR Partner:

GET https://api.hrpartner.io/lookups/positions

To get a list of all tags used in HR Partner:

GET https://api.hrpartner.io/lookups/tags

Reminders

Get All Reminders

require 'rest-client'

endpoint = 'https://api.hrpartner.io/reminders'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/reminders"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/reminders";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 3701,
    "description": "iPhone 6",
    "module": "asset",
    "module_id": 17,
    "remind_at": "2015-10-31T22:45:00+00:00",
    "send_notification": false,
    "notification_sent": false,
    "active": true,
    "set_by": {
      "name": "Deanna Burwood",
      "email": "deanne@mailinator.com"
    },
    "employee": {
      "code": "LANDC",
      "first_names": "Clinton",
      "last_name": "Landry",
      "full_name": "Landry, Clinton",
      "department": "Production"
    }
  },
  {
    "id": 3752,
    "description": "iPhone 3GS",
    "module": "asset",
    "module_id": 16,
    "remind_at": "2015-11-01T22:45:00+00:00",
    "send_notification": true,
    "notification_sent": false,
    "active": false,
    "set_by": {
      "name": "Barbara McBain",
      "email": "barbara@mailinator.com"
    },
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  },
  {
    "id": 3796,
    "description": "Took a day off",
    "module": "absence",
    "module_id": 18,
    "remind_at": "2015-11-01T22:45:00+00:00",
    "send_notification": true,
    "notification_sent": false,
    "active": true,
    "set_by": {
      "name": "Deanne Burwood",
      "email": "deanna@mailinator.com"
    },
    "employee": {
      "code": "GARCH",
      "first_names": "Hilda",
      "last_name": "Garcia",
      "full_name": "Garcia, Hilda",
      "department": "Sales"
    }
  },
  {
    "id": 3822,
    "description": "Speak to James about his request for a promotion",
    "module": "note",
    "module_id": 36,
    "remind_at": "2015-11-01T22:45:00+00:00",
    "send_notification": true,
    "notification_sent": false,
    "active": false,
    "set_by": {
      "name": "Barbara McBain",
      "email": "barbara@mailinator.com"
    },
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  },
  {
    "id": 3847,
    "description": "Taken a day off!",
    "module": "absence",
    "module_id": 17,
    "remind_at": "2015-11-02T22:45:00+00:00",
    "send_notification": true,
    "notification_sent": false,
    "active": false,
    "set_by": {
      "name": "Barbara McBain",
      "email": "barbara@mailinator.com"
    },
    "employee": {
      "code": "BUTTJ",
      "first_names": "James",
      "last_name": "Butterworth",
      "full_name": "Butterworth, James",
      "department": "Production"
    }
  }
]

This endpoint retrieves all reminders that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/reminders

Query Parameters

Parameter Type Description
employee text Return only reminders for employees with this employee code.
department text Specify one or more department names (separated by commas) to only show reminders within that department.
user text (email) Return reminders where the admin user who is responsible for them has this email address.
module text Return reminders which belong to this particular module only.
send_notification true/false Return reminders that have the send_notification flag set this way (true or false).
notification_sent true/false Select reminders that have the notification_sent flag set this way (true or false).
active true/false Return reminders where the active flag is set this way (true or false).

Examples

To get a list of all reminders for employee code A12345:

GET https://api.hrpartner.io/reminders?employee=A12345

To get all reminders sent by joe@acme.com within the "Finance" department:

GET https://api.hrpartner.io/reminders?user=joe@acme.com&department=Finance

To get all reminders for the "training" module that have not been sent out yet:

GET https://api.hrpartner.io/reminders?module=training&notification_sent=false

Get A Specific Reminder

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/reminder/'
reminderid = '3804'

result = RestClient.get(endpoint + reminderid, header)

puts result
curl "https://api.hrpartner.io/reminder/3804"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/reminder/";
var reminderid = "3804"

client.get(endpoint + reminderid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": 3804,
  "description": "iPhone 6",
  "module": "asset",
  "module_id": 17,
  "remind_at": "2015-10-31T22:45:00+00:00",
  "send_notification": false,
  "notification_sent": false,
  "active": true,
  "set_by": {
    "name": "Deanna Burwood",
    "email": "deanna@mailinator.com"
  },
  "employee": {
    "code": "LANDC",
    "first_names": "Clinton",
    "last_name": "Landry",
    "full_name": "Landry, Clinton",
    "department": "Production"
  }
}

This endpoint retrieves a single reminder from the system using the Reminder ID.

HTTP Request

GET https://api.hrpartner.io/reminder/{reminderID}

This call will return a single reminder based on the unique reminder ID from HR Partner.

Update A Reminder

require 'rest-client'

# Update reminder description and notification
postbody = {
  "id": 3804,
  "description": "Return the iPhone 6 to Steve",
  "send_notification": true,
  "notification_sent": false,
  "active": true
}

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', :body => postbody}
endpoint = 'https://api.hrpartner.io/reminder/'
reminderid = '3804'

result = RestClient.post(endpoint + reminderid, header)

puts result
curl "https://api.hrpartner.io/reminder/3804"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -H "Content-Type: application/json"
  -X POST
  -d '{"id": 3804, "description": "Return the iPhone 6 to Steve", "send_notification": true, "notification_sent": false, "active": true}'
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var postbody = postbody = {
  "id": 3804,
  "description": "Return the iPhone 6 to Steve",
  "send_notification": true,
  "notification_sent": false,
  "active": true
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, body: postbody};
var endpoint = "https://api.hrpartner.io/reminder/";
var reminderid = "3804"

client.post(endpoint + reminderid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": 3804,
  "description": "Return the iPhone 6 to Steve",
  "module": "asset",
  "module_id": 17,
  "remind_at": "2015-10-31T22:45:00+00:00",
  "send_notification": true,
  "notification_sent": false,
  "active": true,
  "set_by": {
    "name": "Deanna Burwood",
    "email": "deanna@mailinator.com"
  },
  "employee": {
    "code": "LANDC",
    "first_names": "Clinton",
    "last_name": "Landry",
    "full_name": "Landry, Clinton",
    "department": "Production"
  }
}

This endpoint will update certain fields on a reminder.

HTTP Request

POST https://api.hrpartner.io/reminder/{reminderID}

A successful POST will return a reminder object (see the GET /reminder call above) upon successful modification.

POST Body

The JSON packet that can be POSTed to the endpoint is a subset of the JSON that you receive from the GET call to the /reminder endpoint.

Parameter Type Description
id* number The reminder id
description text The description of the reminder
send_notification true/false Flag whether to send a notification to the admin user
notification_sent true/false Flag whether the notification has been sent to the admin user
active true/false Flag whether the reminder is active in HR Partner

* - Mandatory (required) field

Please note that the reminder id is also required in the POST body as well as the URL for added verification and security.

Delete A Reminder

require 'rest-client'

# Update reminder description and notification
postbody = {
  "id": 3804,
  "description": "Return the iPhone 6 to Steve",
  "send_notification": true,
  "notification_sent": false,
  "active": true
}

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', :body => postbody}
endpoint = 'https://api.hrpartner.io/reminder/'
reminderid = '3804'

result = RestClient.delete(endpoint + reminderid, header)

puts result
curl "https://api.hrpartner.io/reminder/3804"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -H "Content-Type: application/json"
  -X DELETE
  -d '{"id": 3804, "description": "Return the iPhone 6 to Steve", "send_notification": true, "notification_sent": false, "active": true}'
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var postbody = postbody = {
  "id": 3804,
  "description": "Return the iPhone 6 to Steve",
  "send_notification": true,
  "notification_sent": false,
  "active": true
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, body: postbody};
var endpoint = "https://api.hrpartner.io/reminder/";
var reminderid = "3804"

client.delete(endpoint + reminderid, info, function(data, response) {
  console.log(response;
});

The above command returns HTTP 200 if the command completed successfully

This endpoint will delete a reminder completely from HR Partner.

HTTP Request

DELETE https://api.hrpartner.io/reminder/{reminderID}

A successful DELETE will return HTTP code '200' upon successful deletion.

Recruitment

Get All Job Listings

require 'rest-client'

endpoint = 'https://api.hrpartner.io/jobs'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/jobs"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/jobs";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": "forklift-driver-oz0H",
    "title": "Forklift Driver",
    "summary": "We need an enthusiastic person to drive the forklift in our warehouse.",
    "publish_at": "2020-01-01",
    "unpublish_at": "2020-02-15",
    "city": "Sydney",
    "state": "NSW",
    "country": "Australia",
    "postcode": "2040",
    "department": "Warehouse",
    "location": "Sydney Branch",
    "position": "Driver",
    "employment_status": "Casual",
    "is_active": true,
    "view_count": 2206
  },
  {
    "id": "warehouse-manager--distribution--2zGd",
    "title": "Warehouse Manager (Distribution)",
    "summary": "Your new company, a leading Australian retailer, is experiencing rapid growth and as a result requires an experienced Assistant Warehouse Manager to facilitate and support the Warehouse Operations in this extremely exciting time for the business. Based in South Melbourne, just a short journey from the city, this established organisation with a strong market reputation is extremely ambitious; this is reflected in their success, with nearly 200 stores nationwide.",
    "publish_at": "2019-10-26",
    "unpublish_at": "2020-02-15",
    "city": "Tokyo",
    "state": "",
    "country": "Japan",
    "postcode": "K405",
    "department": "Warehouse",
    "location": "Asia/Pacific",
    "position": "Warehouse Manager",
    "employment_status": "Full Time",
    "is_active": false,
    "view_count": 3511
  },
  {
    "id": "senior-javascript-developer-kj",
    "title": "Senior Javascript Developer",
    "summary": "As a Front-end Developer with Acme Software you will use your exceptional web development skills and experiences to develop responsive websites and web applications. As a member of our world-class agency you will work on innovative and inspired work across a variety of clients.",
    "publish_at": "2020-03-13",
    "unpublish_at": "2020-05-20",
    "city": "Sydney",
    "state": "NSW",
    "country": "Australia",
    "postcode": "2310",
    "department": "Production",
    "location": "Sydney Branch",
    "position": "Programmer",
    "employment_status": "Full Time",
    "is_active": true,
    "view_count": 14612
  },
  {
    "id": "warehouse-assistant-lk",
    "title": "Warehouse Assistant",
    "summary": "We need a warehouse assistant to help our supervisors to improve their loading and searching ability.  We are really looking for an enthusiastic, young person who doesn't mind a little bit of hard work.  This is a casual position with an 'on call' working time basis.",
    "publish_at": "2020-05-10",
    "unpublish_at": "2020-07-10",
    "city": "Singapore",
    "state": "N/A",
    "country": "Singapore",
    "postcode": "5000",
    "department": "Warehouse",
    "location": "Asica/Pacific",
    "position": "Packer",
    "employment_status": "Casual",
    "is_active": true,
    "view_count": 1918
  }
]

This endpoint retrieves all job listings that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/jobs

Query Parameters

Parameter Type Description
search text Return only jobs with this text string in either the title, summary or text/web content
department text Returns jobs that are allocated to this department name
location text Returns jobs that are in this location name
position text Returns jobs with this position title
employment_status text Returns jobs for this employment status name (e.g. Full Time, Part Time etc.)
publish_at_from, publish_at_to date (yyyy-mm-dd) Date range that the job listing was set to be published
unpublish_date_from, unpublish_date_to date (yyyy-mm-dd) Date range that the job listing was set to be un-published
is_active true/false Flag for whether job listings marked active will be returned
publish_on_internet true/false Flag whether to return job listings marked as being show on the internet
allow_online_applications true/false Flag whether to return jobs where candidates can make online applications
allow_uploads true/false Flag whether to return job listings that allow candidate to upload files to
notify_new_application true/false Flag whether to return listings that will notify the admin when a job applications is entered
response_email text Returns jobs with this email address set as the address that all responses will be sent to

Examples

To get a list of all job listings for the 'Warehouse' department:

GET https://api.hrpartner.io/jobs?department=Warehouse

To get a list of all job listings that contain the word 'driver' in the title, summary, text content or web content:

GET https://api.hrpartner.io/jobs?search=driver

To get all job listings published in the first quarter of 2020:

GET https://api.hrpartner.io/jobs?publish_at_from=2020-01-01&publish_at_to=2020-03-31

To get all job listings in the 'New York' and 'Boston' locations that are still active:

GET https://api.hrpartner.io/jobs?location=New York,Boston&is_active=true

To get all job listings that are published on the internet and that have 'hr@company.com' as the email to respond to:

GET https://api.hrpartner.io/jobs?publish_on_internet=true&response_email=hr@mycompany.com

Get A Specific Job Listing

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/job/'
jobid = 'forklift-driver-oz0H'

result = RestClient.get(endpoint + jobid, header)
puts result

curl "https://api.hrpartner.io/job/forklift-driver-oz0H"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"

var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/job/";
var jobid = "forklift-driver-oz0H"

client.get(endpoint + jobid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": "forklift-driver-oz0H",
  "title": "Forklift Driver",
  "summary": "We need an enthusiastic person to drive the forklift in our warehouse.",
  "publish_at": "2020-01-01",
  "unpublish_at": "2020-02-15",
  "department": "Warehouse",
  "location": "Sydney Branch",
  "position": "Driver",
  "employment_status": "Casual",
  "text_content": "...text content of job goes here (long)...",
  "web_content": "<p>... HTML content of job goes here (very long)...</p>",
  "city": "Sydney",
  "state": "NSW",
  "country": "Australia",
  "postcode": "2040",
  "is_active": true,
  "publish_on_internet": true,
  "allow_online_application": true,
  "notify_new_application": false,
  "allow_uploads": true,
  "mandatory_uploads": false,
  "view_count": 22,
  "response_email": "hr@mailinator.com",
  "selection_panel": [
    {
      "type": "user",
      "name": "Jane Smithson",
      "email": "janesmithson@mailinator.com"
    },
    {
      "type": "user",
      "name": "Jimmy Tango",
      "email": "thetango@mailinator.com"
    },
    {
      "type": "employee",
      "name": "Peter Stephenson",
      "email": "pstephenson@mailinator.com"
    },
    {
      "type": "employee",
      "name": "Michale Fuller",
      "email": "mfuller@mailinator.com"
    }
  ],
  "custom_form": {
    "name": "Driver Appplication Form",
    "layout": [
      {
        "type": "paragraph",
        "subtype": "p",
        "label": "We need to have at least two references from you before we can proceed with your application."
      },
      {
        "type": "text",
        "required": true,
        "label": "Reference #1 Name",
        "className": "form-control",
        "name": "reference-1-name",
        "subtype": "text"
      },
      {
        "type": "text",
        "required": true,
        "label": "Reference #1 Contact",
        "className": "form-control",
        "name": "reference-1-contact",
        "subtype": "text"
      },
      {
        "type": "text",
        "label": "Reference #2 Name",
        "className": "form-control",
        "name": "reference-2-name",
        "subtype": "text"
      },
      {
        "type": "text",
        "label": "Reference #2 Contact",
        "className": "form-control",
        "name": "reference-2-contact",
        "subtype": "text"
      },
      {
        "type": "checkbox-group",
        "label": "Drivers Licence",
        "name": "drivers-licence",
        "values": [
          {
            "label": "Car Licence",
            "value": "car",
            "selected": true
          },
          {
            "label": "Small Van Licence",
            "value": "van"
          },
          {
            "label": "Truck Licence",
            "value": "truck"
          },
          {
            "label": "Bus Licence",
            "value": "bus"
          },
          {
            "label": "Heavy Vehicle",
            "value": "heavy"
          }
        ]
      },
      {
        "type": "radio-group",
        "label": "Do you have an international licence?",
        "name": "international-licence",
        "values": [
          {
            "label": "Yes",
            "value": "yes",
            "selected": true
          },
          {
            "label": "No",
            "value": "no"
          },
          {
            "label": "Maybe",
            "value": "maybe"
          }
        ]
      },
      {
        "type": "date",
        "label": "Date Licence Issued",
        "className": "form-control",
        "name": "licence-issue-date"
      },
      {
        "type": "textarea",
        "label": "Reason for Applying",
        "placeholder": "Tell us why you want to apply (up to 1000 characters)",
        "className": "form-control",
        "name": "application-reason",
        "subtype": "textarea",
        "maxlength": "1000",
        "rows": "5"
      }
    ]
  },
  "scorecard": {
    "name": "Warehouse Worker Scoring",
    "items": [
      "Initiative",
      "Attitude",
      "Safety Awareness",
      "Leadership",
      "Motivation"
    ]
  },
  "stages": {
    "name": "Warehouse Job Stages",
    "items": [
      "Applied",
      "Phone Screening",
      "Interview",
      "Reference Check",
      "Job Offer",
      "Rejected"
    ]
  }
}

This endpoint retrieves a single job listing from the system using the Job ID.

HTTP Request

GET https://api.hrpartner.io/job/{jobID}

This call will return a single job listing based on the unique Job ID from HR Partner.

Get All Applicants

require 'rest-client'

endpoint = 'https://api.hrpartner.io/applicants'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/applicants"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/applicants";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": "waLHyCLupvwXKM2VfPy47g",
    "first_names": "Susan",
    "last_name": "Anthony",
    "full_name": "Anthony, Susan",
    "email": "susananthony@mailinator.com"
  },
  {
    "id": "P-vRRK51Cszbad7PVAlYog",
    "first_names": "Annie",
    "last_name": "Arbiter",
    "full_name": "Arbiter, Annie",
    "email": "annie@mailinator.com"
  },
  {
    "id": "1rno4l5p3ciTyGziZcqF8g",
    "first_names": "Felix",
    "last_name": "Baumgartner",
    "full_name": "Baumgartner, Felix",
    "email": "flyingfelix@mailinator.com"
  },
  {
    "id": "c_RNAxMend-iU02lrCbVgQ",
    "first_names": "John",
    "last_name": "Bollinger",
    "full_name": "Bollinger, John",
    "email": "jbollinger@mailinator.com"
  },
  {
    "id": "JXI026hdUl1K9LxG6_3JPQ",
    "first_names": "Geoff",
    "last_name": "Bouncer",
    "full_name": "Bouncer, Geoff",
    "email": "geoffbouncer@myemail.test"
  },
  {
    "id": "34XiVeAOJ-hz6agE15VvIQ",
    "first_names": "Jason",
    "last_name": "Bourne",
    "full_name": "Bourne, Jason",
    "email": "jasonbourne@mailinator.com"
  }
]

This endpoint retrieves all applicants (candidates for job listings) that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/applicants

Query Parameters

Parameter Type Description
search text Return only applicants with this text string in either their first name, last name or email.

Examples

To get a list of all applicants with 'Smith' in their name:

GET https://api.hrpartner.io/applicants?search=Smith

To get all applicants with a Gmail address:

GET https://api.hrpartner.io/applicants?search=@gmail.com

Get A Specific Applicant

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/applicant/'
applicantid = 'waLHyCLupvwXKM2VfPy47g'

result = RestClient.get(endpoint + applicantid, header)
puts result

# alternative - use email address for the ID

applicantid = 'susananthony@mailinator.com'

result = RestClient.get(endpoint + applicantid, header)
puts result

curl "https://api.hrpartner.io/applicant/waLHyCLupvwXKM2VfPy47g"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"

curl "https://api.hrpartner.io/applicant/susananthony@mailinator.com"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/applicant/";
var applicantid = "waLHyCLupvwXKM2VfPy47g"

client.get(endpoint + applicantid, info, function(data, response) {
  console.log(response;
});

// alternative - user email address for the ID
var applicantid = "susananthony@mailinator.com"

client.get(endpoint + applicantid, info, function(data, response) {
  console.log(response;
});


The above command returns JSON structured like this:

{
  "id": "waLHyCLupvwXKM2VfPy47g",
  "first_names": "Susan",
  "last_name": "Anthony",
  "full_name": "Anthony, Susan",
  "email": "susananthony@mailinator.com",
  "job_applications": [
    {
      "id": "forklift-driver-o0",
      "name": "Forklift Driver",
      "stage": "Job Offer",
      "submitted_at": "2017-05-28T09:17:02+00:00",
      "is_closed": true,
      "is_active": false,
      "is_flagged": false,
      "is_archived": false,
      "is_hired": true,
      "is_read": true,
      "source": "Entered by Andy Bernard",
      "total_score": 3.0
    },
    {
      "id": "senior-javascript-developer-kj",
      "name": "Senior Javascript Developer",
      "stage": "Applied",
      "submitted_at": "2017-06-08T23:54:32+00:00",
      "is_closed": false,
      "is_active": true,
      "is_flagged": false,
      "is_archived": false,
      "is_hired": false,
      "is_read": true,
      "source": "Added to Application by Steve Cooper",
      "total_score": 4.0
    }
  ]
}

This endpoint retrieves a single applicant from the system using the Applicant ID. It will also return any job applications (if any) that this applicant has created in the system.

HTTP Request

GET https://api.hrpartner.io/applicant/{applicantID}

This call will return a single applicant based on the unique Applicant ID from HR Partner.

Note: The Applicant ID can be either the unique ID string that you obtain from the applicants list above, or else you can use the applicant's email address. Email addresses are also treated as the unique identifier for applicants within HR Partner.

Add or Update An Applicant

require 'rest-client'

# Update applicant details and application
postbody = {
  "first_names": "Peter",
  "last_name": "Kensington",
  "email": "kensingtonpete@mailinator.com",
  "job_applications": [
    {
      "id": "another-test-job-pg",
      "stage": "First Interview"
    }
  ]
}

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', :body => postbody}
endpoint = 'https://api.hrpartner.io/applicant/'

result = RestClient.post(endpoint, header)

puts result
curl "https://api.hrpartner.io/applicant"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -H "Content-Type: application/json"
  -X POST
  -d '{"first_names": "Peter", "last_name": "Kensington", "email": "kensingtonpete@mailinator.com", "job_applications": [{"id": "another-test-job-pg", "stage": "First Interview"}]}'
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var postbody = postbody = {
  "first_names": "Peter",
  "last_name": "Kensington",
  "email": "kensingtonpete@mailinator.com",
  "job_applications": [
    {
      "id": "another-test-job-pg",
      "stage": "First Interview"
    }
  ]
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, body: postbody};
var endpoint = "https://api.hrpartner.io/applicant/";

client.post(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": "k0Gx8fvn1eBDDS3P8uqVXA",
  "first_names": "Peter",
  "last_name": "Kensington",
  "full_name": "Kensington, Peter",
  "email": "kensingtonpete@mailinator.com",
  "job_applications": [
    {
      "id": "another-test-job-pg",
      "name": "Another Test Job",
      "stage": "First Interview",
      "submitted_at": "2020-05-22T09:31:15+00:00",
      "is_closed": false,
      "is_active": true,
      "is_flagged": false,
      "is_archived": false,
      "is_hired": false,
      "is_read": false,
      "source": "Entered via API",
      "total_score": 0.0
    }
  ]
}

This endpoint will update certain fields for an applicant and/or their job application.

HTTP Request

POST https://api.hrpartner.io/applicant

A successful POST will return a applicant object (see the GET /applicant call above) upon successful modification.

POST Body

The JSON packet that can be POSTed to the endpoint is a subset of the JSON that you receive from the GET call to the /applicant endpoint.

Parameter Type Description
email* text The applicant email address
first_names text The applicants first name
last_name text The applicants last name
job_applications array An array of one or more jobs that the applicants is applying for

The following describes the fields in the job_applications array:

Parameter Type Description
id* text The job listing unique slug (see /job_listing endpoint)
stage text The stage of the job application pipeline that the candidate is in (must be an existing stage name)

* - Mandatory (required) field

Get All Applications

require 'rest-client'

endpoint = 'https://api.hrpartner.io/applications/'
jobid = 'delivery-truck-driver-oh6P'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint + jobid, header)

puts result
curl "https://api.hrpartner.io/applications/delivery-truck-driver-oh6P"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/applications";
var jobid = "delivery-truck-driver-oh6P";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint + jobid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 7344,
    "job_id": "delivery-truck-driver-oh6P",
    "title": "Warehouse Delivery Truck Driver Wanted",
    "applicant_id": "waLHyCLupvwXKM2VfPy47g",
    "first_names": "Susan",
    "last_name": "Anthony",
    "email": "susananthony@mailinator.com",
    "stage": "Applied",
    "custom_form": {
      "answers": {
        "why-work-for-us": "Because I am a great driver!",
        "biggest-achievements": "",
        "current-licence-number": "AAA12345",
        "years-held": "10",
        "vehicle-licences": [
          "truck-rigid",
          "truck-prime-mover"
        ],
        "licence-state": "OH",
        "last-currency-check": "",
        "licence-endorsements": [
          "class-a"
        ]
      }
    },
    "source": "Entered by Arthur Dent",
    "submitted_at": "2020-05-28T09:17:02+00:00",
    "is_flagged": false,
    "is_archived": false,
    "is_hired": false,
    "is_read": true
  },
  {
    "id": 7396,
    "job_id": "delivery-truck-driver-oh6P",
    "title": "Warehouse Delivery Truck Driver Wanted",
    "applicant_id": "qu0_94N0nd9pDtvfWuYWVQ",
    "first_names": "Johnny",
    "last_name": "Strange",
    "email": "johnnystrange@mailinator.com",
    "stage": "Interview",
    "custom_form": {
      "answers": {
        "why-work-for-us": "Highly experienced and motivated.",
        "biggest-achievements": "Worked for the biggest trucking firm in the UK.",
        "current-licence-number": "H83374-A",
        "years-held": "32",
        "vehicle-licences": [
          "truck-rigid",
          "truck-prime-mover",
          "truck-articulated"
        ],
        "licence-state": "AL",
        "last-currency-check": "2019-04-15",
        "licence-endorsements": [
          "class-b",
          "class-c"
        ]
      }
    },
    "source": "[Job Portal] http://mycompany.hrpartner.io/jobs",
    "submitted_at": "2020-05-28T09:18:00+00:00",
    "is_flagged": true,
    "is_archived": false,
    "is_hired": false,
    "is_read": true
  },
  {
    "id": 8029,
    "job_id": "delivery-truck-driver-oh6P",
    "title": "Warehouse Delivery Truck Driver Wanted",
    "applicant_id": "8ejwdwiytKm9SjqwZ2LJUg",
    "first_names": "Janine",
    "last_name": "Rogers",
    "email": "janinerogers@mailinator.com",
    "stage": "Interview",
    "custom_form": {
      "answers": {
        "why-work-for-us": "Been out of work for 2 years now.",
        "biggest-achievements": "",
        "current-licence-number": "38847663",
        "years-held": "5",
        "vehicle-licences": [
          "car-sedan",
          "small-van"
        ],
        "licence-state": "NY",
        "last-currency-check": "2020-04-13",
        "licence-endorsements": [
          "class-a"
        ]
      }
    },
    "source": "Entered by Arthur Dent",
    "submitted_at": "2020-05-28T09:29:25+00:00",
    "is_flagged": false,
    "is_archived": false,
    "is_hired": false,
    "is_read": false
  }
]

This endpoint retrieves all job applications (and the answers to the custom form questions, if any) for a particular job listing that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/applications/{jobID}

This call will retrieve all job applications for the job listing identified in the Job ID parameter. Please note that you will have to specify a job listing. It is not possible to get a common list of ALL job applications in the system via the API.

The Job ID can be retrieved by calling the GET /jobs endpoint as described elsewhere in this documentation.

Query Parameters

Parameter Type Description
source text Return only applications with this text string in the source field.
stage text Return only applications that are in this stage specified.
submitted_at_from, submitted_at_to date (yyyy-mm-dd) Fetch only applications submitted between these two dates.
is_flagged true/false Return only applications which have been flagged.
is_archived true/false Return applications which have been archived.
is_hired true/false Return applications only for candidates who have been hired within the system.
is_read true/false Useful for picking out applications that have or have not been opened in HR Partner yet.

Examples

Note: All these examples assume you are pulling applications from the delivery-truck-driver-oh6P job listing ID.

To get a list of all applications that have been sourced from Indeed.com:

GET https://api.hrpartner.io/applications/delivery-truck-driver-oh6P?source=Indeed

To get all applications which are in the 'Second Interview' stage:

GET https://api.hrpartner.io/applicants/delivery-truck-driver-oh6P?stage=Second Interview

To get all applications which were submitted in March 2020 and have not been read or viewed in HR Partner yet:

GET https://api.hrpartner.io/applicants/delivery-truck-driver-oh6P?submitted_at_from=2020-03-01&submitted_at_to=2020-03-31&is_read=false

Get A Specific Application

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/application/'
applicationid = 8031

result = RestClient.get(endpoint + applicationid, header)
puts result

curl "https://api.hrpartner.io/application/8031"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"

var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/application/";
var applicationid = 8031;

client.get(endpoint + applicationid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": 8031,
  "applicant": {
    "id": "yy8WXZNs1QLr8vpSNBICqA",
    "first_names": "Bernice",
    "last_name": "Flanders",
    "full_name": "Flanders, Bernice",
    "email": "bernice@mailinator.com"
  },
  "stage": {
    "name": "First Interview"
  },
  "job_listing": {
    "id": "senior-javascript-developer-k0jd",
    "title": "Senior Javascript Developer",
    "publish_at": "2020-03-23",
    "unpublish_at": "2020-04-15",
    "department": "Operations",
    "location": "Sydney Branch",
    "position": "Programmer",
    "employment_status": "Full Time",
    "city": "Sydney",
    "state": "NSW",
    "country": "Australia",
    "postcode": "2510",
    "is_active": true
  },
  "custom_form": {
    "name": "Developer Screening Questions",
    "answers": {
      "areas-of-expertise": [
        "javascript",
        "html",
        "ruby"
      ],
      "experience-years": "15",
      "level-of-study": "other",
      "public-projects": "https://github.com/bernice_dev",
      "os-contributions": "no",
      "date-finished-study": "2002-10-31",
      "start-option": "1-month"
    }
  },
  "scorecards": [
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Appearance",
      "score": 4.0,
      "comment": "Neat and tidy - nice to see."
    },
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Communication",
      "score": 2.5,
      "comment": "Clear speaker. Strong accent though"
    },
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Attitude",
      "score": 4.0,
      "comment": ""
    },
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Presentation Pitch",
      "score": 2.5,
      "comment": ""
    },
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Whiteboard Test",
      "score": 3.0,
      "comment": "Haven't done this yet - waiting for next interview"
    },
    {
      "type": "user",
      "by": "Tricia McMillian",
      "item": "Technical Review",
      "score": 3.0,
      "comment": "Pinged Carol to do this later"
    }
  ],
  "attachments": [
    {
      "description": "Resume.pdf",
      "url": "_5jGmaQIuOL3uqyP6MU22Q/recruitment/3yM/Resume.pdf",
      "size": 74921
    },
    {
      "description": "references.pdf",
      "url": "_5jGmaQIuOL3uqyP6MU22Q/recruitment/3yM/references.pdf",
      "size": 274975
    }
  ],
  "interviews": [
    {
      "details": "First interview to talk to Bernice.",
      "venue": "Room B",
      "interview_at": "2020-03-22T02:00:00+00:00",
      "interview_end": null
    },
    {
      "details": "Hands on testing",
      "venue": "Lab A",
      "interview_at": "2020-03-26T00:00:00+00:00",
      "interview_end": "2020-03-26T04:30:00+00:00"
    }
  ],
  "comments": [
    {
      "type": "user",
      "by": "Tricia McMillian",
      "comment": "What does everyone think of her application? I thought doing it via the web was quite good, myself.",
      "updated_at": "2020-03-28T11:51:51+00:00"
    },
    {
      "type": "user",
      "by": "Trevor Carson",
      "comment": "It was a fairly simple web page, but good on her for doing it a little different!",
      "updated_at": "2020-03-29T11:52:32+00:00"
    }
  ],
  "is_closed": false,
  "is_active": true,
  "is_flagged": false,
  "is_archived": false,
  "is_hired": false,
  "is_read": true,
  "submitted_at": "2020-03-13T23:58:06+00:00",
  "source": "Indeed Apply 0123456789 [Targeted] [Sponsored]",
  "total_score": 3.0
}

This endpoint retrieves a single job application from the system using the Application ID.

HTTP Request

GET https://api.hrpartner.io/application/{applicationID}

This call will return a single application based on the unique Application ID from HR Partner.

Add or Update An Application

require 'rest-client'

# Update applicant details and application
postbody = {
  "applicant": {
    "first_names": "Patricia",
    "last_name": "Williams",
    "email": "patwilliams@mailinator.com"
  },
  "stage": {
    "name": "Second Interview"
  },
  "job_listing": {
    "id": "senior-javascript-developer-kj"
  },
  "custom_form": {
    "answers": {
      "areas-of-expertise": [
        "javascript",
                "html"
      ],
      "experience-years": "7",
      "level-of-study": "degree",
      "public-projects": "https://github.com/treehouse",
      "os-contributions": "no",
      "date-finished-study": "2015-12-31",
      "start-option": "1-month"
    }
  }
}

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', :body => postbody}
endpoint = 'https://api.hrpartner.io/application/'

result = RestClient.post(endpoint, header)

puts result
curl "https://api.hrpartner.io/application"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -H "Content-Type: application/json"
  -X POST
  -d '{"applicant": {"first_names":"Patricia","last_name":"Williams","email":"patwilliams@mailinator.com"},"stage":{"name":"Second Interview"},"job_listing":{"id":"senior-javascript-developer-kj"},"custom_form":{"answers":{"areas-of-expertise":["javascript","html"],"experience-years":"7","level-of-study":"degree","public-projects":"https://github.com/treehouse","os-contributions":"no","date-finished-study":"2015-12-31","start-option":"1-month"}}}'
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var postbody = postbody = {
  "applicant": {
    "first_names": "Patricia",
    "last_name": "Williams",
    "email": "patwilliams@mailinator.com"
  },
  "stage": {
    "name": "Second Interview"
  },
  "job_listing": {
    "id": "senior-javascript-developer-kj"
  },
  "custom_form": {
    "answers": {
      "areas-of-expertise": [
        "javascript",
                "html"
      ],
      "experience-years": "7",
      "level-of-study": "degree",
      "public-projects": "https://github.com/treehouse",
      "os-contributions": "no",
      "date-finished-study": "2015-12-31",
      "start-option": "1-month"
    }
  }
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, body: postbody};
var endpoint = "https://api.hrpartner.io/application/";

client.post(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
  "id": 113,
  "applicant": {
    "id": "Us6iBUp30rl9fegVMBOlqA",
    "first_names": "Patricia",
    "last_name": "Williams",
    "full_name": "Williams, Patricia",
    "email": "patwilliams@mailinator.com"
  },
  "stage": {
    "name": "Second Interview"
  },
  "job_listing": {
    "id": "senior-javascript-developer-kj",
    "title": "Senior Javascript Developer",
    "publish_at": "2020-04-13",
    "unpublish_at": "2020-04-30",
    "department": "Production",
    "location": "Sydney Branch",
    "position": "Programmer",
    "employment_status": "Full Time",
    "city": "Sydney",
    "state": "NSW",
    "country": "Australia",
    "postcode": "2000",
    "is_active": true
  },
  "custom_form": {
    "name": "Developer Screening Questions",
    "answers": {
      "areas-of-expertise": [
        "javascript",
        "html"
      ],
      "experience-years": "7",
      "level-of-study": "degree",
      "public-projects": "https://github.com/treehouse",
      "os-contributions": "no",
      "date-finished-study": "2015-12-31",
      "start-option": "1-month"
    }
  },
  "scorecards": [],
  "attachments": [],
  "interviews": [],
  "comments": [],
  "is_closed": false,
  "is_active": true,
  "is_flagged": false,
  "is_archived": false,
  "is_hired": false,
  "is_read": true,
  "submitted_at": "2020-04-16T09:33:56+00:00",
  "source": "Entered via API [application]",
  "total_score": 0.0
}

This endpoint will either add a new application, or else update certain fields for an existing application.

HTTP Request

POST https://api.hrpartner.io/application

A successful POST will return a application object (see the GET /application call above) upon successful modification.

POST Body

The JSON packet that can be POSTed to the endpoint is a subset of the JSON that you receive from the GET call to the /application endpoint.

Parameter Type Description
id numeric (Optional) - Specify an existing id to update it. Leave this field off if you want to create a new application

The following describes the fields in the applicant tree:

Parameter Type Description
email* text The applicant email address
first_names text The applicants first name
last_name text The applicants last name

The following describes the fields in the job_listing tree:

Parameter Type Description
id* text The job listing unique slug (see /job_listing endpoint)

The following described the fields in the stage tree:

Parameter Type Description
name text The stage of the job application pipeline that the candidate is in (must be an existing stage name)

* - Mandatory (required) field

Custom Form Fields

You can also specify the custom form fields for the application in the POST body. There is a section called custom_form and a subsection called answers. You will need to specify the field names that you have defined in your custom form, and the answers to them in here.

For example, assuming you make a call to the job_listing endpoint, and within the returned data, you see it will look as per our sample (EX.1) on the right.

(EX.1) A sample of part of the JSON object returned by the GET job_listing API call which contains the custom form question data:

...
"custom_form": {
    "name": "Developer Questions",
    "fields": [
      {
        "type": "checkbox-group",
        "label": "Areas of expertise",
        "name": "areas-of-expertise",
        "values": [
          {
            "label": "Javascript",
            "value": "javascript"
          },
          {
            "label": "HTML",
            "value": "html"
          },
          {
            "label": "Ruby",
            "value": "ruby"
          },
          {
            "label": "PHP",
            "value": "php"
          }
        ]
      },
      {
        "type": "number",
        "label": "Years of programming experience",
        "className": "form-control",
        "name": "experience-years",
        "min": "0",
        "max": "99",
        "step": "1"
      },
      {
        "type": "select",
        "label": "Have you completed a tertiary level of study in programming?",
        "className": "form-control",
        "name": "level-of-study",
        "values": [
          {
            "label": "No",
            "value": "no",
            "selected": true
          },
          {
            "label": "High school level only",
            "value": "high-school"
          },
          {
            "label": "Certificate or Associate Diploma",
            "value": "certificate-diploma"
          },
          {
            "label": "Computer Science Degree",
            "value": "degree"
          },
          {
            "label": "Internship/Other",
            "value": "other"
          }
        ]
      },
      {
        "type": "text",
        "label": "Public Projects",
        "placeholder": "Links to your Github page  blog  web site or other evidence of your programming skills",
        "className": "form-control",
        "name": "public-projects",
        "subtype": "text"
      },
      {
        "type": "radio-group",
        "required": true,
        "label": "Do you contribute to open source software?",
        "inline": true,
        "name": "os-contributions",
        "values": [
          {
            "label": "Yes",
            "value": "yes",
            "selected": true
          },
          {
            "label": "No",
            "value": "no"
          }
        ]
      },
      {
        "type": "date",
        "label": "Year Finished Study",
        "className": "form-control",
        "name": "date-finished-study"
      },
      {
        "type": "radio-group",
        "label": "When Can You Start?",
        "name": "start-option",
        "values": [
          {
            "label": "Immediately",
            "value": "immediately",
            "selected": true
          },
          {
            "label": "Within1 Month",
            "value": "1-month"
          },
          {
            "label": "Within 3 Months",
            "value": "3-month"
          },
          {
            "label": "By End Of Year",
            "value": "year-end"
          }
        ]
      }
    ]
  },
 ...

You will need to look at the fields -> name definitions here, which will show you the field names of: areas-of-expertise, experience-years, level-of-study, public-projects, os-contributions, date-finished-study and start-option.

So to build the answer object, you will need to structure it as shown like (EX.2) on the right.

(EX.2) How you should structure the answers section in the POST body of the JSON data you send back to us:

...
  "custom_form": {
    "answers": {
      "areas-of-expertise": ["javascript","html"],
      "experience-years": "7",
      "level-of-study": "degree",
      "public-projects": "https://github.com/treehouse",
      "os-contributions": "no",
      "date-finished-study": "2015-12-31",
      "start-option": "1-month"
    }
  },
...

Get Application Stage Tracking

require 'rest-client'

endpoint = 'https://api.hrpartner.io/stage/track/'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/stage/track"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/stage/track";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 120458,
    "applicant_id": "u4GDSDaNxTED6hVzstyPMw",
    "applicant_email": "shaydefoye@mailinator.com",
    "applicant_first_names": "Shayde",
    "applicant_last_name": "Foye",
    "applicant_full_name": "Foye, Shayde",
    "job_id": "warehouse-assistant-lk",
    "job_title": "Warehouse Assistant",
    "changed_at": "2020-06-12T02:14:50+00:00",
    "from_stage": "Interview",
    "to_stage": "Job Offer"
  },
  {
    "id": 120613,
    "applicant_id": "u4GDSDaNxTED6hVzstyPMw",
    "applicant_email": "shaydefoye@mailinator.com",
    "applicant_first_names": "Shayde",
    "applicant_last_name": "Foye",
    "applicant_full_name": "Foye, Shayde",
    "job_id": "warehouse-assistant-lk",
    "job_title": "Warehouse Assistant",
    "changed_at": "2020-06-12T02:15:18+00:00",
    "from_stage": "Job Offer",
    "to_stage": "Rejected"
  },
  {
    "id": 120655,
    "applicant_id": "hnR8RHJZdSD6VrJUe0hEhw",
    "applicant_email": "nestakaisin@mailinator.com",
    "applicant_first_names": "Nesta",
    "applicant_last_name": "Kaisin",
    "applicant_full_name": "Kaisin, Nesta",
    "job_id": "warehouse-assistant-lk",
    "job_title": "Warehouse Assistant",
    "changed_at": "2020-06-12T02:15:42+00:00",
    "from_stage": "Applied",
    "to_stage": "Interview"
  },
  {
    "id": 120780,
    "applicant_id": "XjnGAvV2he8fHfm-PqilQQ",
    "applicant_email": "raydeleter@mailinator.com",
    "applicant_first_names": "Raymond",
    "applicant_last_name": "Deleter",
    "applicant_full_name": "Deleter, Raymond",
    "job_id": "senior-javascript-developer-kj",
    "job_title": "Senior Javascript Developer",
    "changed_at": "2020-06-12T02:19:23+00:00",
    "from_stage": "Second Interview",
    "to_stage": "Job Offer"
  },
  {
    "id": 120818,
    "applicant_id": "xU6ilFbi5Ix6qYbfneipiw",
    "applicant_email": "ianturpington@mailinator.com",
    "applicant_first_names": "Ian",
    "applicant_last_name": "Turpington",
    "applicant_full_name": "Turpington, Ian",
    "job_id": "warehouse-manager--distribution--zd",
    "job_title": "Warehouse Manager (Distribution)",
    "changed_at": "2020-06-12T02:21:26+00:00",
    "from_stage": "Applied",
    "to_stage": "Initial Contact"
  },
  {
    "id": 120943,
    "applicant_id": "xU6ilFbi5Ix6qYbfneipiw",
    "applicant_email": "ianturpington@mailinator.com",
    "applicant_first_names": "Ian",
    "applicant_last_name": "Turpington",
    "applicant_full_name": "Turpington, Ian",
    "job_id": "warehouse-manager--distribution--zd",
    "job_title": "Warehouse Manager (Distribution)",
    "changed_at": "2020-06-12T02:24:44+00:00",
    "from_stage": "Initial Contact",
    "to_stage": "First Interview"
  },
  {
    "id": 121011,
    "applicant_id": "Z4tDh4U7tYbkTIF2-DkSrg",
    "applicant_email": "suzein@mailinator.com",
    "applicant_first_names": "Susan",
    "applicant_last_name": "Norton",
    "applicant_full_name": "Norton, Susan",
    "job_id": "warehouse-manager--distribution--zd",
    "job_title": "Warehouse Manager (Distribution)",
    "changed_at": "2020-06-12T02:24:56+00:00",
    "from_stage": "(none)",
    "to_stage": "First Interview"
  },
  {
    "id": 121098,
    "applicant_id": "xFqp67fLgzUMCEP_l8wC9Q",
    "applicant_email": "stevecreole@mailinator.com",
    "applicant_first_names": "Steve",
    "applicant_last_name": "Creole",
    "applicant_full_name": "Creole, Steve",
    "job_id": "warehouse-manager--distribution--zd",
    "job_title": "Warehouse Manager (Distribution)",
    "changed_at": "2020-06-12T02:25:14+00:00",
    "from_stage": "(none)",
    "to_stage": "First Interview"
  },
  {
    "id": 121151,
    "applicant_id": "xFqp67fLgzUMCEP_l8wC9Q",
    "applicant_email": "stevecreole@mailinator.com",
    "applicant_first_names": "Steve",
    "applicant_last_name": "Creole",
    "applicant_full_name": "Creole, Steve",
    "job_id": "warehouse-manager--distribution--zd",
    "job_title": "Warehouse Manager (Distribution)",
    "changed_at": "2020-06-12T02:36:17+00:00",
    "from_stage": "First Interview",
    "to_stage": "Second Interview"
  }
]

This endpoint retrieves all job applications stage tracking information in the system.

HTTP Request

GET https://api.hrpartner.io/stage/track

This call will retrieve all job application tracking information in the system. This helps you to build a trail of the movement of job applications within your recruitment module over time, and can also help you to trigger certain actions when applicants reach a particular stage in a job application.

Query Parameters

Parameter Type Description
job text Return only application tracking for this job ID.
applicant text Return only application tracking for this applicant email or unique ID.
from_stage text Return tracking data that moved FROM this stage name.
to_stage text Return tracking data that moved TO this stage name.
changed_at_from, changed_at_to date (yyyy-mm-dd) Fetch only application tracking that happened between these two dates.

Examples

To get a list of all application tracking for from 1st to 30th June 2020:

GET https://api.hrpartner.io/stage/track?changed_at_from=2020-06-01&changed_at_to=2020-06-30

To get all application tracking for applicant steve@mycompany.com which moved to the 'Interview' stage:

GET https://api.hrpartner.io/stage/track?applicant=steve@mycompany.com&to_stage=Interview

To get all application tracking for the job delivery-truck-driver-oh6P where the applicants moved on from the 'Reference Check' stage:

GET https://api.hrpartner.io/stage/track?job=delivery-truck-driver-oh6P&from_stage=Reference Check

Timesheets

Get All Timesheets

require 'rest-client'

endpoint = 'https://api.hrpartner.io/timesheets'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/timesheets"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/timesheets";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
    {
        "id": 1,
        "template": "Weekly Full Time Staff (Single)",
        "frequency": "weekly",
        "entry_method": "single",
        "rounding": "none",
        "round_to": 0,
        "closing_date": "2017-02-26",
        "max_lines": 3,
        "start_date": "2017-01-23",
        "end_date": "2017-01-29",
        "is_locked": "Yes",
        "status": "processed",
        "is_approved": "Yes",
        "is_exported": "No",
        "total_time": 27.25,
        "approving_user": "Devan Sabaratnam",
        "employee": {
            "code": "BLENA",
            "first_names": "Arthur",
            "last_name": "Blenkinshop",
            "full_name": "Arthur Blenkinshop",
            "department": "Sales",
            "location": "Main Office",
            "group": ""
        },
        "details": [
            {
                "entry_date": "2017-01-23",
                "start_time": "2017-01-23T08:30:00.000+00:00",
                "end_time": "2017-01-23T12:45:00.000+00:00",
                "break_duration": 0.5,
                "total_time": 3.75,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-24",
                "start_time": "2017-01-24T10:00:00.000+00:00",
                "end_time": "2017-01-24T17:00:00.000+00:00",
                "break_duration": 1.0,
                "total_time": 6.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-25",
                "start_time": "2017-01-25T23:00:00.000+00:00",
                "end_time": "2017-01-26T02:00:00.000+00:00",
                "break_duration": 0.25,
                "total_time": 2.75,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-26",
                "start_time": "2017-01-26T02:00:00.000+00:00",
                "end_time": "2017-01-26T17:00:00.000+00:00",
                "break_duration": 1.25,
                "total_time": 13.75,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-27",
                "start_time": "2017-01-27T13:00:00.000+00:00",
                "end_time": "2017-01-27T14:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 1.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            }
        ]
    },
    {
        "id": 2,
        "template": "Weekly Full Time Staff (Single)",
        "frequency": "weekly",
        "entry_method": "single",
        "rounding": "none",
        "round_to": 0,
        "closing_date": "2017-02-26",
        "max_lines": 3,
        "start_date": "2017-01-23",
        "end_date": "2017-01-29",
        "is_locked": "Yes",
        "status": "processed",
        "is_approved": "Yes",
        "is_exported": "No",
        "total_time": 13.0,
        "approving_user": "Devan Sabaratnam",
        "employee": {
            "code": "BURRS",
            "first_names": "Stacey",
            "last_name": "Burridge",
            "full_name": "Stacey Burridge",
            "department": "Warehouse",
            "location": "India",
            "group": ""
        },
        "details": [
            {
                "entry_date": "2017-01-23",
                "start_time": "2017-01-23T02:00:00.000+00:00",
                "end_time": "2017-01-23T05:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 3.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-24",
                "start_time": "2017-01-24T02:00:00.000+00:00",
                "end_time": "2017-01-24T05:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 3.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-25",
                "start_time": "2017-01-25T02:00:00.000+00:00",
                "end_time": "2017-01-25T05:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 3.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-26",
                "start_time": "2017-01-26T03:00:00.000+00:00",
                "end_time": "2017-01-26T05:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 2.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "entry_date": "2017-01-27",
                "start_time": "2017-01-27T03:00:00.000+00:00",
                "end_time": "2017-01-27T05:00:00.000+00:00",
                "break_duration": 0.0,
                "total_time": 2.0,
                "notes": "",
                "project": "",
                "cost_code": "",
                "activity": "",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            }
        ]
    }
]

This endpoint retrieves all timesheets that are currently in the system.

Please note that the timesheets are grouped by Timesheet Template, then each sequence under that template, then the Employee, then the individual time entries for that employee.

HTTP Request

GET https://api.hrpartner.io/timesheets

Query Parameters

Parameter Type Description
employee text Return only timesheets for employee with this employee code.
department text Only return timesheets for employees with this department name.
location text Only return timesheets for employees with this location name.
group text Only return timesheets for employees within this group/branch.
timesheet_name text Return only timesheets which have this timesheet template name.
timesheet_date_from date Return only timesheets with entries after this date (in yyyy-mm-dd format).
timesheet_date_to date Return only timesheets with entries before this date (in yyyy-mm-dd format). NOTE: Both from AND to dates must be specified.
sequence_start_date date Return only timesheets where the sequence starts on this date (in yyyy-mm-dd format).
sequence_end_date date Return only timesheets where the sequence ends on this date (in yyyy-mm-dd format).
timesheet status text Return only timesheets which have one of the following status in the header - new, submitted, accepted, rejected or processed.
project text Return only timesheets which have this project name attached to the entries.
activity text Return only timesheets which have this project activity name attached to the entries.
is_approved true/false Only return approved timesheets.
is_exported true/false Only return timesheet entries which are marked 'exported'.
is_locked true/false Allows you to specify timesheet sequences which are locked or unlocked.

Examples

To get a list of all timesheets for employee code A12345:

GET https://api.hrpartner.io/timesheets?employee=A12345

To get all timesheets between 1st June and 30th June 2023:

GET https://api.hrpartner.io/timesheets?timesheet_date_from=2023-06-01&timesheet_date_to=2023-06-30

To get all timesheets for the "Main Office" location, that have been approved but are still unlocked:

GET https://api.hrpartner.io/timesheets?location=Main Office&status=approved&is_locked=false

To get all timesheets for the project "Office Rebuild", for all timesheet sequences starting on 1st July 2023:

GET https://api.hrpartner.io/timesheets?project=Office Rebuild&sequence_start_date=2023-07-01

Add A Timesheet/Timeclock Entry

require 'rest-client'

# Update Arthur's current (open) timesheet with an entry for 3 hours work on Project Acme
endpoint = 'https://api.hrpartner.io/employee/'
payload = {
  "employee_code": "BLENA",
  "start_time": "2023-08-20 08:15",
  "end_time": "2023-08-20 12:45",
  "project_name": "ACME Holdings",
  "notes": "Met with clients"
}

result = RestClient.execute(
    :method => :post,
    :url => endpoint,
    :payload => payload,
    :headers => {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d', content_type: "multipart/form-data"}
)

puts result
curl -v
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
  -F "employee_code=BLENA"
  -F "start_time=2023-08-20 08:15"
  -F "end_time=2023-08-20 12:45"
  -F "project_name=ACME Holdings"
  -F "notes=Met with clients"
  https://api.hrpartner.io/timesheet
var Client = require('node-rest-client').Client;

var client = new Client();

// Update Arthur's record with tax number, update custom fields with new salary and work times, add contractor tag, change mobile number and add new email
var payload = {
  "employee_code": "BLENA",
  "start_time": "2023-08-20 08:15",
  "end_time": "2023-08-20 12:45",
  "project_name": "ACME Holdings",
  "notes": "Met with clients"
}

var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}, formData: payload};
var endpoint = "https://api.hrpartner.io/timesheet";

client.post(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this upon successful save to the timesheet entry:

{
    "message": "Timesheet entry was successfully created."
}

If there is an error, then the specific error will be returned as a JSON message.

HTTP Request

POST https://api.hrpartner.io/timeclock

A successful POST will return a single JSON message notifying you of a successful save. Otherwise you will see an error message explaining why the timesheet entry was not saved.

POST Data

The timesheet endpoint can only accept multipart/form-data fields (similar to POSTing an HTML form). This is to ensure maximum compatibility with various systems that integrate with HR Partner.

Parameter Type Description
employee_code* text The employee code (Please note that this is different from other endpoints that just take employee as the parameter).
employee_email* text The employee email (as an alternative to the code if you don't have it). Either the code or the email MUST be specified.
start_time* datetime The starting time, in local time ISO-8601 format yyyy-mm-dd hh:mm.
end_time* datetime The ending time, in local time ISO-8601 format yyyy-mm-dd hh:mm.
duration number You can optionally specify the duration. If not specified, it will be calculated from the start and end time. If you specify a duration less than the calculated duration, then the difference will be assumed to be Break Time.
break number You can specify the break time which will be deducted from the duration. If not specified, the difference between the calculated duration and the duration passed to the API will be recorded as the break time.
notes text Notes to be recorded against the entry.
project_name text The name of an existing Project to record the time against.
activity_name text The name of an existing project Activity to record the time against.

* - Mandatory (required) field

Important considerations:

Expenses

Get All Expense Claims

require 'rest-client'

endpoint = 'https://api.hrpartner.io/expenses&report_type=detailed'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/expenses&report_type=detailed"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/expenses&report_type=detailed";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this (if a report_type of 'detailed' or 'summary' is selected):

[
    {
        "id": 2,
        "description": "Client meeting with Anderson",
        "comment": "Meeting across town for the Anderson housing project.",
        "status": "approved",
        "is_paid": true,
        "expense_date": "2022-11-19",
        "submitted_date": "2022-11-25",
        "approved_date": "2022-11-25",
        "reimbursement_required": "Yes",
        "total_amount": 43.20,
        "total_tax_amount": 0.0,
        "reimbursement_amount": 43.20,
        "currency": "Australia",
        "action_user": "Joe Smith",
        "data_type": "detailed",
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse",
            "location": "Sydney Branch"
        },
        "lines": [
            {
                "category": "Meals",
                "details": "Cafe lunch",
                "amount": 21.50,
                "tax_amount": 0.0,
                "project": "Anderson Project",
                "cost_code": "030-23",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "category": "Fuel",
                "details": "Filled up car",
                "amount": 21.70,
                "tax_amount": 0.0,
                "project": "Anderson Project",
                "cost_code": "031-22",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            }
        ]
    },
    {
        "id": 3,
        "description": "Overnight trip to Sydney",
        "comment": "This is my trip to Sydney for the conference.",
        "status": "approved",
        "is_paid": true,
        "expense_date": "2022-11-19",
        "submitted_date": "2022-11-25",
        "approved_date": null,
        "reimbursement_required": "Yes",
        "total_amount": 1106.9,
        "total_tax_amount": 0.0,
        "reimbursement_amount": 0.0,
        "currency": "Australia",
        "action_user": "Mary Stuart",
        "data_type": "detailed",
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse",
            "location": "Sydney Branch"
        },
        "attachments": [
            {
                "description": "expense_claim1.png",
                "url": "975C205D6F2E2CE7A8AE93441F038023/expenses/u3tyyAh0OUtUbnPni41lXA/expense_claim1.png",
                "size": 9624
            },
            {
                "description": "Recruitment-Best-Practices-833x554.png",
                "url": "975C205D6F2E2CE7A8AE93441F038023/expenses/4U5UCo6hNjjp44AIgw8Aig/qantas_invoice.png",
                "size": 412644
            }
        ],
        "lines": [
            {
                "category": "Flights",
                "details": "Qantas QF677",
                "amount": 679.2,
                "tax_amount": 0.0,
                "project": "",
                "cost_code": "031-74",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "category": "Car Hire",
                "details": "Hertz Corolla",
                "amount": 67.1,
                "tax_amount": 0.0,
                "project": "",
                "cost_code": "031-22",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            },
            {
                "category": "Hotels",
                "details": "Radison (1 night)",
                "amount": 360.6,
                "tax_amount": 0.0,
                "project": "",
                "cost_code": "030-45",
                "cost": 0.0,
                "charge": 0.0,
                "currency": "Australia"
            }
        ]
    }
]

The above command returns JSON structured like this (if a report_type of 'transaction' is selected):

[
    {
        "id": 26,
        "category": "Meals",
        "details": "Meal vouchers",
        "amount": 250.0,
        "tax_amount": 0.0,
        "description": "Melbourne Training Session",
        "status": "submitted",
        "expense_date": "2022-11-07",
        "submitted_date": "2022-11-25",
        "approved_date": "2022-12-16",
        "employee_code": "BLACK",
        "employee_name": "Black, Katrina",
        "project": "",
        "cost_code": "030-23",
        "cost": 0.0,
        "charge": 0.0,
        "currency": "Australia",
        "data_type": "transaction"
    },
    {
        "id": 27,
        "category": "Car Hire",
        "details": "Travan Hire",
        "amount": 145.6,
        "tax_amount": 0.0,
        "description": "Melbourne Training Session",
        "status": "submitted",
        "expense_date": "2022-11-07",
        "submitted_date": "2022-11-25",
        "approved_date": "2022-12-16",
        "employee_code": "BLACK",
        "employee_name": "Black, Katrina",
        "project": "",
        "cost_code": "031-22",
        "cost": 0.0,
        "charge": 0.0,
        "currency": "Australia",
        "data_type": "transaction"
    },
    {
        "id": 28,
        "category": "Hotels",
        "details": "Yates Motel",
        "amount": 325.9,
        "tax_amount": 0.0,
        "description": "Melbourne Training Session",
        "status": "submitted",
        "expense_date": "2022-11-07",
        "submitted_date": "2022-11-25",
        "approved_date": "2022-12-16",
        "employee_code": "BLACK",
        "employee_name": "Black, Katrina",
        "project": "",
        "cost_code": "030-45",
        "cost": 0.0,
        "charge": 0.0,
        "currency": "Australia",
        "data_type": "transaction"
    },
    {
        "id": 29,
        "category": "Meals",
        "details": "Seminar Dinner",
        "amount": 77.1,
        "tax_amount": 0.0,
        "description": "Melbourne Training Session",
        "status": "submitted",
        "expense_date": "2022-11-07",
        "submitted_date": "2022-11-25",
        "approved_date": "2022-11-29",
        "employee_code": "BLACK",
        "employee_name": "Black, Katrina",
        "project": "",
        "cost_code": "030-23",
        "cost": 0.0,
        "charge": 0.0,
        "currency": "Australia",
        "data_type": "transaction"
    }
]

This endpoint retrieves all expense claims that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/expenses?report_type={expenseReportType}

Expense Report Type Parameter

The expenseReportType parameter must be one of the following:

Value What it returns
detailed A list of expense claim headers along with the associated individual expense lines and attachments.
summary A list of only the expense claim headers (without individual expense lines or attachments).
transaction A list of expense detail lines only.

Query Parameters

Parameter Type Description
report_type text MANDATORY - must be one of detailed, summary, or transaction.
employee text The employee code to filter expense claims for.
department text Specify one or more department names (separated by commas) to only show expenses within that department.
location text Specify one or more location names (separated by commas) to only show expenses within those locations.
expense_date_from date Starting date of expense claims to report for.
expense_date_to date Ending date of expense claims to report for.
submitted_date_from date Starting date of expense claim submission dates to report for.
submitted_date_to date Ending date of expense claim submission dates to report for.
approved_date_from date Starting date of approval for expense claims to report for.
approved_date_to date Ending date of approval for expense claims to report for.
status text Expense claim status to filter for, must be one of submitted, approved, pending or rejected.
is_paid true/false Filter expense claims on whether they have been paid or not.
expense_category text The expense category name to filter expenses for.
project text The project name to filter expenses for.

Examples

To get a detailed list of all expenses for employee code 01985:

GET https://api.hrpartner.io/expenses?report_type=detailed&employee=A12345

To get a summary of all expenses for the 'Warehouse' department submitted in November 2022:

GET https://api.hrpartner.io/expenses?report_type=summary&department=Warehouse&submitted_date_from=2022-11-01&submitted_date_to=2022-11-30

To get a transaction list of all expense items that are paid for the project 'ACME Kitchen':

GET https://api.hrpartner.io/expenses?report_type=transaction&is_paid=true&project=ACME Kitchen

Projects

Get All Projects/Activities

require 'rest-client'

endpoint = 'https://api.hrpartner.io/projects'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/projects"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/projects";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
    {
        "project": {
            "description": "Acme Inc - New Website",
            "cost_code": "100-100"
        },
        "activity_category": {
            "description": "Development",
            "cost_code": "00020"
        },
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse",
            "location": "Sydney Branch"
        },
        "transaction_date": "2021-06-14",
        "transaction_value": 2.5,
        "cost": 35.0,
        "charge": 35.0,
        "transaction_type": "timesheet",
        "currency": "Australia",
        "notes": "Acme Development"
    },
    {
        "project": {
            "description": "Reynolds - New Kitchen",
            "cost_code": "100-200"
        },
        "activity_category": {
            "description": "Drafting",
            "cost_code": ""
        },
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse",
            "location": "Sydney Branch"
        },
        "transaction_date": "2021-06-14",
        "transaction_value": 0.5,
        "cost": 13.0,
        "charge": 26.0,
        "transaction_type": "timesheet",
        "currency": "United States",
        "notes": "Reynolds Drafting"
    },
    {
        "project": {
            "description": "Reynolds - New Kitchen",
            "cost_code": "100-200"
        },
        "activity_category": {
            "description": "Meeting",
            "cost_code": ""
        },
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse",
            "location": "Sydney Branch"
        },
        "transaction_date": "2021-06-15",
        "transaction_value": 3.5,
        "cost": 50.0,
        "charge": 50.0,
        "transaction_type": "timesheet",
        "currency": "Australia",
        "notes": ""
    }
]

This endpoint retrieves all projects and activities that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/projects

Query Parameters

Parameter Type Description
employee text Return only projects for employees with this employee code.
department text Specify one or more department names (separated by commas) to only show projects within that department.
location text Specify one or more location names (separated by commas) to only show projects within that location.
project text Specify the project name to only see activities that are against that particular project.
activity text Specify the activity name to see that activity across all projects.
expense_category text Specify the expense category code to only see projects/activities that are allocated to that expense category (only valid for expense project allocations)
currency text Specify the currency name to only see project costing amounts in that particular currency
transaction_date_from date Specify the starting date to see project costing entries for
transaction_date_to date Specify the ending date to see project costing entries for

Examples

To get a list of all projects/activities for employee code ASMITH1:

GET https://api.hrpartner.io/projects?employee=ASMITH1

To get all activity against a project called "Smith Website Design" in June 2022:

GET https://api.hrpartner.io/projects?project=Smith Website Design&transaction_date_from=2022-06-01&transaction_date_to=2022-06-30

To get all "Drafting" activities across all projects, using the US Dollar currency:

GET https://api.hrpartner.io/projects?activity=Drafting&currency=United States

Leave Requests

Get All Leave Requests

require 'rest-client'

endpoint = 'https://api.hrpartner.io/leave_requests'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/leave_requests"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/leave_requests";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
    {
        "id": 146,
        "leave_request_type": "added",
        "absence_reason": "Time off in Lieu",
        "status": "submitted",
        "description": "Need 5.5 hours credit",
        "reason": "I banked up 5.5 hours leave yesterday by working overtime",
        "leave_start_date": "2022-07-22",
        "leave_end_date": "2022-07-22",
        "duration": 5.5,
        "units": "Hours",
        "notes": null,
        "employee": {
            "code": "MOREL",
            "first_names": "Landon",
            "last_name": "Moreno",
            "full_name": "Moreno, Landon",
            "department": "Floor Service"
        }
    },
    {
        "id": 144,
        "leave_request_type": "taken",
        "absence_reason": "Sick Leave",
        "status": "pending",
        "description": "Two days off",
        "reason": "",
        "leave_start_date": "2022-06-08",
        "leave_end_date": "2022-06-09",
        "duration": 2.0,
        "units": "Days",
        "notes": "Fine",
        "employee": {
            "code": "BUTTJ",
            "first_names": "James",
            "last_name": "Butterworth",
            "full_name": "Butterworth, James",
            "department": "Production"
        }
    },
    {
        "id": 142,
        "leave_request_type": "taken",
        "absence_reason": "Personal Leave",
        "status": "approved",
        "description": "Going hiking",
        "reason": "",
        "leave_start_date": "2022-04-27",
        "leave_end_date": "2022-04-29",
        "duration": 24.0,
        "units": "Hours",
        "notes": "OK",
        "employee": {
            "code": "BLENA",
            "first_names": "Arthur",
            "last_name": "Blenkinshop",
            "full_name": "Blenkinshop, Arthur",
            "department": "Sales"
        }
    },
    {
        "id": 143,
        "leave_request_type": "taken",
        "absence_reason": "Annual Leave",
        "status": "submitted",
        "description": "Need a 3 day break",
        "reason": "Going on a 3 day holiday trip with family.",
        "leave_start_date": "2022-04-21",
        "leave_end_date": "2022-04-25",
        "duration": 3.0,
        "units": "Days",
        "notes": null,
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse"
        }
    },
    {
        "id": 141,
        "leave_request_type": "taken",
        "absence_reason": "Annual Leave",
        "status": "approved",
        "description": "Boxer April Time",
        "reason": "",
        "leave_start_date": "2022-04-19",
        "leave_end_date": "2022-04-22",
        "duration": 4.0,
        "units": "Days",
        "notes": "Ok to go!",
        "employee": {
            "code": "BLACK",
            "first_names": "Katrina",
            "last_name": "Black",
            "full_name": "Black, Katrina",
            "department": "Warehouse"
        }
    }
]

This endpoint retrieves all employee leave requests that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/leave_requests

Query Parameters

Parameter Type Description
employee text Return only leave requests for employees with this employee code.
department text Specify one or more department names (separated by commas) to only show leave requests within that department.
location text Specify one or more location names (separated by commas) to only show leave requests within that location.
leave_request_type text Specify whether you want to see leave requests for time off "taken" or TOIL/Flexi requests "added".
status text Specify the leave request status, which can be one of: submitted, pending, approved, rejected, revoked, withdrawn.
absence_reason text Specify the leave policy name to isolate only leave requests against this particular policy.
description text Looks for a keyword within the leave request description.
reason text Looks for a keyword within the leave request reason text.
notes text Looks for a keyword within the leave request response notes made by any approvers.
leave_start_date_from date Specify the starting range for the leave start date.
leave_start_date_to date Specify the ending range for the leave start date.
leave_end_date_from date Specify the ending range for the leave end date.
leave_end_date_to date Specify the ending range for the leave end date.

Examples

To get a list of all leave requests for employee code A12345:

GET https://api.hrpartner.io/leave_requests?employee=A12345

To get all requests for "Sick Leave" that started in July 2022:

GET https://api.hrpartner.io/leave_requests?absence_reason=Sick Leave&leave_start_date_from=2022-07-01&leave_start_date_to=2022-07-31

To get all requests for TOIL/Flexi additions in August 2022:

GET https://api.hrpartner.io/leave_requests?leave_request_type=added&leave_start_date_from=2022-08-01&leave_start_date_to=2022-08-31

To get all leave requests that contain the keyword "COVID" within the reason text:

GET https://api.hrpartner.io/leave_requests?reason=COVID

Get A Specific Leave Request

require 'rest-client'

header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}
endpoint = 'https://api.hrpartner.io/leave_request/'
leaverequestid = '144'

result = RestClient.get(endpoint + leaverequestid, header)

puts result
curl "https://api.hrpartner.io/leave_request/144"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};
var endpoint = "https://api.hrpartner.io/leave_request/";
var leaverequestid = "144"

client.get(endpoint + leaverequestid, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

{
    "id": 144,
    "leave_request_type": "taken",
    "absence_reason": "Personal Leave",
    "status": "pending",
    "description": "Two days off",
    "reason": "",
    "leave_start_date": "2022-06-08",
    "leave_end_date": "2022-06-09",
    "duration": 2.0,
    "units": "Hours",
    "notes": "Fine",
    "employee": {
        "code": "BUTTJ",
        "first_names": "James",
        "last_name": "Butterworth",
        "full_name": "Butterworth, James",
        "department": "Production",
        "location": "Perth Branch",
        "position": "Machinist",
        "employment_status": "Casual",
        "primary_email": "james@mailinator.com",
        "reports_to": {
            "code": "BLENA",
            "first_names": "Arthur",
            "last_name": "Blenkinshop",
            "full_name": "Blenkinshop, Arthur",
            "primary_email": "arthur@mailinator.com"
        }
    },
    "leave_approval_condition": "Local Sales Team",
    "leave_request_actions": [
        {
            "type": "user",
            "status": "none",
            "name": "Barbara McBain",
            "email": "barbara@mailinator.com",
            "actioned_at": null
        },
        {
            "type": "employee",
            "status": "approved",
            "name": "Blenkinshop, Arthur",
            "email": "arthur@mailinator.com",
            "actioned_at": "2022-06-07T04:15:57.000+00:00"
        },
        {
            "type": "user",
            "status": "none",
            "name": "John Snow",
            "email": "john@mailinator.com",
            "actioned_at": null
        }
    ],
    "attachments": []
}

This endpoint retrieves a single reminder from the system using the Leave Request ID.

HTTP Request

GET https://api.hrpartner.io/leave_request/{leaverequestID}

This call will return a single leave request based on the unique leave request ID from HR Partner.

The returned data contains a bit more information on the leave request, inlcluding any approver information, and any file attachments that may be linked to the original request.

Leave Balances

Get All Leave Balances

require 'rest-client'

endpoint = 'https://api.hrpartner.io/leave_balances'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/leave_balances"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/leave_balances";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
    {
        "absence_reason": "Annual Leave",
        "is_external": false,
        "entitlement": 20.0,
        "balance": 7.5,
        "carryover": 0.0,
        "units": "Days",
        "auto_accrual": true,
        "last_accrual_done_at": "2022-11-08",
        "reset_carry_over_at": null,
        "last_reset_at": "2022-01-01",
        "next_reset_at": "2023-01-01",
        "periods_since_last_reset": 11.0,
        "periods_until_next_reset": 1.0,
        "periodic_increment": 1.66666667,
        "employee": {
            "code": "JONESM",
            "first_names": "Mike",
            "last_name": "Jones",
            "full_name": "Jones, Mike",
            "department": "Sales"
        }
    },
    {
        "absence_reason": "Sick Leave",
        "is_external": false,
        "entitlement": 10.0,
        "balance": 8.0,
        "carryover": 0.0,
        "units": "Days",
        "auto_accrual": true,
        "last_accrual_done_at": "2022-11-08",
        "reset_carry_over_at": null,
        "last_reset_at": null,
        "next_reset_at": null,
        "periods_since_last_reset": 11.0,
        "periods_until_next_reset": 1.0,
        "periodic_increment": 0.83333333,
        "employee": {
            "code": "JONESM",
            "first_names": "Mike",
            "last_name": "Jones",
            "full_name": "Jones, Mike",
            "department": "Sales"
        }
    },
    {
        "absence_reason": "Annual Leave",
        "is_external": false,
        "entitlement": 24.0,
        "balance": 19.0,
        "carryover": 3.0,
        "units": "Days",
        "auto_accrual": true,
        "last_accrual_done_at": "2022-11-08",
        "reset_carry_over_at": "2022-12-31",
        "last_reset_at": "2022-01-01",
        "next_reset_at": "2023-01-01",
        "periods_since_last_reset": 11.0,
        "periods_until_next_reset": 1.0,
        "periodic_increment": 2.0,
        "employee": {
            "code": "SMITHJ",
            "first_names": "Jane",
            "last_name": "Smith",
            "full_name": "Smith, Jane",
            "department": "Finance"
        }
    },
    {
        "absence_reason": "Sick Leave",
        "is_external": false,
        "entitlement": 10.0,
        "balance": 6.5,
        "carryover": 0.0,
        "units": "Days",
        "auto_accrual": true,
        "last_accrual_done_at": "2022-11-08",
        "reset_carry_over_at": null,
        "last_reset_at": null,
        "next_reset_at": null,
        "periods_since_last_reset": 11.0,
        "periods_until_next_reset": 1.0,
        "periodic_increment": 0.83333333,
        "employee": {
            "code": "SMITHJ",
            "first_names": "Jane",
            "last_name": "Smith",
            "full_name": "Smith, Jane",
            "department": "Finance"
        }
    }
]

This endpoint retrieves all employee leave balances that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/leave_balances

Query Parameters

Parameter Type Description
absence_reason text Specify the leave policy name to isolate only leave balances against this particular policy.
employee text Return only leave balances for employees with this employee code.
department text Specify one or more department names (separated by commas) to only show leave balances within that department.
location text Specify one or more location names (separated by commas) to only show leave balances within that location.
employment_status text Specify one or more employment statuses (separated by commas) to only show leave balances for those positions.
position text Specify one or more position names (separated by commas) to only show leave balances for those positions.
is_active true/false Specify whether to include active employees in returned data. (default: true)
is_terminated true/false Specify whether to include terminated employees in returned data. (default: true)

Examples

To get a list of all leave balances for employee code A12345:

GET https://api.hrpartner.io/leave_balances?employee=A12345

To get all balances for "Annual Leave":

GET https://api.hrpartner.io/leave_balances?absence_reason=Annual Leave

To get all balances for non-terminated employees in the Finance department:

GET https://api.hrpartner.io/leave_balances?department=Finance&is_terminated=false

Returned Data

The below table gives some extra information on the data returned from this call, which may not be self explanatory.

Field Type Description
absence_reason text The name of the leave policy that this balance applies to.
is_external true/false Denotes whether this policy has come from an external payroll system (i.e not maintained within HR Partner).
entitlement number The annual allowance or entitlement that the employee is allocated for this policy.
balance number The employee's current balance for the policy as at the time of running the query.
carryover number The amount of carried forward balance when the last reset happened.
units text The units that the above numbers represent (Days or Hours).
auto_accrual true/false Whether the employee has auto accruals turned on for this policy.
last_accrual_done_at date The date that the last accrual calculation was done in HR Partner.
reset_carryover_at date The date that any carried forward balance will be reset.
last_reset_at date The date this leave policy was last reset.
next_reset_at date The date that this leave policy will next reset.
periods_since_last_reset number The number of calculation periods since the last reset was done (depending on whether the policy is set for days/weeks/quarters/months for the calculation period).
priods_until_next_reset number As above, but shows the periods until the next reset is due.
periodic_increment number The number of Days/Hours to increment each day/week/month/quarter as per the leave policy setup.

Performance Management

Get All Performance Reviews

require 'rest-client'

endpoint = 'https://api.hrpartner.io/performances'
header = {'x-api-key' => 'ee095c2f58da4f36d087ca7794384f4d'}

result = RestClient.get(endpoint, header)

puts result
curl "https://api.hrpartner.io/performances"
  -H "x-api-key:ee095c2f58da4f36d087ca7794384f4d"
var Client = require('node-rest-client').Client;

var client = new Client();
var endpoint = "https://api.hrpartner.io/performances";
var info = {headers: {"x-api-key":"ee095c2f58da4f36d087ca7794384f4d"}};

client.get(endpoint, info, function(data, response) {
  console.log(response;
});

The above command returns JSON structured like this:

[
  {
    "id": 103600,
    "status": "Pending",
    "template": "6 Monthly Review",
    "responses": [],
    "assigned_at": "2022-04-04T01:53:01.000+00:00",
    "review_date": "2022-04-04",
    "completed_at": null,
    "employee": {
      "code": "COLLG",
      "first_names": "Gracie",
      "last_name": "Collins",
      "full_name": "Gracie Collins",
      "department": "Flight Operations"
    }
  },
  {
    "id": 103615,
    "status": "Pending",
    "template": "6 Monthly Review",
    "responses": [],
    "assigned_at": "2022-04-05T11:53:22.000+00:00",
    "review_date": "2022-04-21",
    "completed_at": null,
    "employee": {
      "code": "CRANT",
      "first_names": "Troy",
      "last_name": "Crandon",
      "full_name": "Troy Crandon",
      "department": "Administration"
    }
  },
  {
    "id": 103622,
    "status": "Pending",
    "template": "6 Monthly Review",
    "responses": [],
    "assigned_at": "2022-04-06T10:58:32.000+00:00",
    "review_date": "2022-04-28",
    "completed_at": null,
    "employee": {
      "code": "DARBS1",
      "first_names": "Susan",
      "last_name": "Darby",
      "full_name": "Susan Darby",
      "department": "Administration"
    }
  },
  {
    "id": 103623,
    "status": "Planned",
    "template": "Annual Performance Review",
    "responses": [],
    "assigned_at": "2022-04-07T03:42:32.000+00:00",
    "review_date": "2023-04-06",
    "completed_at": null,
    "employee": {
      "code": "BOGLT",
      "first_names": "Tucker",
      "last_name": "Bogle",
      "full_name": "Tucker Bogle",
      "department": "Engineering"
    }
  }
]

This endpoint retrieves all performance management reviews that are currently in the system.

HTTP Request

GET https://api.hrpartner.io/performances

Query Parameters

Parameter Type Description
employee text Return only reviews for employees with this employee code.
department text Specify one or more department names (separated by commas) to only show reviews within that department.
location text Specify one or more location names (separated by commas) to only show reviews within that location.
position text Specify one or more position names (separated by commas) to only show reviews where the employee has that position.
employment_status text Specify one or more employment status names (separated by commas) to only show reviews for employees with that employment status.
review_status text Can be ONE of planned, pending, complete or cancelled or leave blank for all.
assigned_date_from date Specify the starting date that the reviews were assigned out (yyyy-mm-dd).
assigned_date_to date Specify the ending date that the reviews were assigned out (yyyy-mm-dd).
review_date_from date Specify the starting date that the reviews were due at (yyyy-mm-dd).
review_date_to date Specify the ending date that the reviews were due at (yyyy-mm-dd).
completed_date_from date Specify the starting date that the reviews were completed (yyyy-mm-dd).
completed_date_to date Specify the ending date that the reviews were completed (yyyy-mm-dd).
form_data text Can be any of employee, manager, peer or user to retrieve the individual form statuses, or leave blank for all.
include_answers true/false Specify true if you wish to see all the questions/answers for the above forms.

Please note that the form data and questions/answers are NOT included in the JSON response by default unless the flags above are specified to return that information. Be aware that including this information can significantly increase the response time of your queries, so be sure to specify other filters to reduce the number of reviews being returned.

Examples

To get a list of all performance reviews for employees in the Location "London":

GET https://api.hrpartner.io/performances?location=London

To get all pending reviews that were assigned out in April 2024:

GET https://api.hrpartner.io/performances?review_status=pending&assigned_date_from=2024-04-01&assigned_date_to=2024-04-31

To get all reviews due in December 2024, and see the employee and manager form questions and answers:

GET https://api.hrpartner.io/performances?review_date_from=2024-12-01&review_date_to=2024-12-31&form_data=employee,manager&include_answers=true

The below example shows the response with the employee and manager form_data specified, and with the include_answers parameter set to true

[
  {
    "id": 103600,
    "status": "Pending",
    "template": "6 Monthly Review",
    "responses": [
      {
        "type": "Employee",
        "reviewer": "Gracie Collins",
        "status": "Complete",
        "form": "Employee Self Review",
        "answers": [
          {
            "question": "I feel clear about my role and responsibilities:",
            "type": "radio-group",
            "answer": "Yes, No further information required"
          },
          {
            "question": "I feel like I'm making an important contribution in my role",
            "type": "radio-group",
            "answer": "Significant Contribution"
          },
          {
            "question": "I feel a sense of connection and camaraderie with my team",
            "type": "radio-group",
            "answer": "Superficial Connection Only"
          },
          {
            "question": "What are you most proud of achieving since your last review?",
            "type": "textarea",
            "answer": "I think I did quite well with the new CRM system that was rolled out in January. I enjoyed teaching others how to use this new tool.\r\nMy customer satisfaction ratings for support tickets have also improved since last time."
          },
          {
            "question": "What areas have been the most challenging for you?",
            "type": "textarea",
            "answer": "I struggle with technical support queries and feel I don't have enough knowledge to answer these properly."
          },
          {
            "question": "What would you like to focus on for the next period?",
            "type": "textarea",
            "answer": "I'd like to stay involved in the continued rollout of the CRM and put my hand up for any similar projects.\r\nI'd also like to spend some time increasing my technical knowledge."
          },
          {
            "question": "How can management best support you in achieving this?",
            "type": "textarea",
            "answer": "Time and guidance as to how to increase technical knowledge."
          },
          {
            "question": "How would you rate your overall satisfaction and motivation towards your role at the moment?",
            "type": "starRating",
            "answer": "7"
          },
          {
            "question": "What would help to improve that rating?",
            "type": "textarea",
            "answer": "Feeling more competent. Plus, "
          },
          {
            "question": "Date of Completion",
            "type": "date",
            "answer": "2022-04-03"
          }
        ]
      },
      {
        "type": "Manager",
        "reviewer": "Troy Crandon",
        "status": "Complete",
        "form": "Manager Review",
        "answers": [
          {
            "question": "How often does this employee embrace and live the company values?",
            "type": "radio-group",
            "answer": "Quite Often"
          },
          {
            "question": "What are this employee's most significant achievements since their last review?",
            "type": "textarea",
            "answer": "Gracie has been instrumental in the rollout of our new CRM system. She has managed to achieve this while keeping up with support tickets and achieving a very high customer satisfaction area."
          },
          {
            "question": "What areas do they have the most opportunity to improve?",
            "type": "textarea",
            "answer": "Gracie seems to lack some confidence with trouble-shooting technical problems."
          },
          {
            "question": "What areas would you like them to focus on for the next period?",
            "type": "textarea",
            "answer": "Would recommend she takes on another project to grow further with project management. We are looking for a new chat system and I'd like Gracie to lead this."
          },
          {
            "question": "How do you plan to support the employee in achieving this?",
            "type": "textarea",
            "answer": "Weekly checkins to mentor and troubleshoot problems as they arise."
          },
          {
            "question": "Overall, how did this employee perform since their last review?",
            "type": "starRating",
            "answer": "9.5"
          },
          {
            "question": "Date of Completion",
            "type": "date",
            "answer": "2022-04-04"
          }
        ]
      }
    ],
    "assigned_at": "2022-04-04T01:53:01.000+00:00",
    "review_date": "2022-04-04",
    "completed_at": null,
    "employee": {
      "code": "COLLG",
      "first_names": "Gracie",
      "last_name": "Collins",
      "full_name": "Gracie Collins",
      "department": "Flight Operations"
    }
  }
]

Modules

Some calls to the API require you to specify a Module that the data belongs to. Here are the current modules in HR Partner for your reference, and the string you can use to specify a particular module during a call:

Name Refers To
employee Employee masterfile
reminder Reminders module
timesheet Timesheet sequences
singletimesheet A particular timesheet
expense Expenses module
Employee Submodules
absence Leave/Time Off/Absences module
asset Company assets module
attachment File attachments in system
benefit Benefits & packages module
dependent Employee dependents module
education Prior Education module
grievance Grievances module
interview Interview/Meetings module
note General employee notes module
position Position & Salary module
renewable Renewable documents module
review Performance Review module
skill Skills matrix module
training Training module

Errors

The HR Partner API may return the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The resource requested is not available to you.
404 Not Found -- The specified resource or path could not be found.
405 Method Not Allowed -- You tried to access a resource with an invalid method.
406 Not Acceptable -- You requested a format that isn't JSON.
410 Gone -- The resource you requested has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're requesting too many things at once! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.