Reckon One API v2
API change historyThis is version 2 of the Reckon One API.
Gets the payroll leave balances and accrual value report.
Get the payroll leave balances and accrual value report.
This report is grouped by payroll leave item.
GET /5af6572c-9771-4b86-995d-3374d3bc683c/reports/payrollLeaveBalancesAndAccrualValue
Get the report as, for example, a PDF using a query string parameter.
GET /5af6572c-9771-4b86-995d-3374d3bc683c/reports/payrollLeaveBalancesAndAccrualValue?format=PDF
The following formats can be used:
JSON
PDF
XLSX
RTF
CSV
HTML
Get the report as, for example, a PDF using a header instead of the query string parameter: Accept: application/pdf
GET /5af6572c-9771-4b86-995d-3374d3bc683c/reports/payrollLeaveBalancesAndAccrualValue
The following Accept
header values can be used:
application/json
application/pdf
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/rtf
text/csv
text/html
Request
Request URL
Request parameters
-
string
Format - guid. The book's id.
-
(optional)string
The format to use, e.g. pdf.
-
(optional)boolean
Whether the result is for download. If true, a ContentDisposition header will be added.
Request headers
Request body
The report parameters.
Responses
200 OK
The report.
Representations
{
"data": {
"groups": [
{
"list": [
{
"leaveBalance": 123.45,
"leaveLoadingValue": 3254.54,
"oteValue": 2376.43,
"totalValue": 5630.97,
"employee": {
"id": "f757807e-a294-494e-81c9-2b2bb9fa1d37",
"name": "Joe Bloggs"
}
}
],
"groupTotals": {
"leaveBalance": 123.45,
"leaveLoadingValue": 3254.54,
"oteValue": 2376.43,
"totalValue": 5630.97
},
"payItem": {
"id": "9c9456f7-c74c-4bd6-907d-7ffd9ad4acd9",
"name": "Annual leave"
}
}
],
"reportTotals": {
"leaveBalance": 123.45,
"leaveLoadingValue": 3254.54,
"oteValue": 2376.43,
"totalValue": 5630.97
}
},
"metaData": {
"id": "b5dd1bd6-18f7-45ec-92a7-d32aa9d8724e",
"reportName": "Report",
"bookName": "My book.",
"companyName": "My company.",
"period": "AsAtDate",
"asAtDate": "2021-01-31T12:00:00Z",
"groupBy": {},
"columns": [
"OteValue",
"LeaveLoadingValue"
]
},
"message": "Additional information."
}
{
"type": "object",
"properties": {
"data": {
"oneOf": [
{
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"leaveBalance": {
"type": "number",
"description": "The leave balance.",
"format": "decimal",
"example": 123.45
},
"leaveLoadingValue": {
"type": "number",
"description": "The leave loading currency value.",
"format": "decimal",
"example": 3254.54
},
"oteValue": {
"type": "number",
"description": "The ordinary time earnings value.",
"format": "decimal",
"example": 2376.43
},
"totalValue": {
"type": "number",
"description": "The total value.",
"format": "decimal",
"example": 5630.97
},
"employee": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique id.",
"format": "guid",
"nullable": true
},
"name": {
"type": "string",
"description": "The unique name.",
"nullable": true
},
"incompleteData": {
"type": "boolean",
"description": "The incomplete data flag.",
"example": "false"
}
},
"additionalProperties": false,
"description": "Reference to an employee.",
"example": {
"id": "f757807e-a294-494e-81c9-2b2bb9fa1d37",
"name": "Joe Bloggs"
}
}
],
"description": "Details of the employee."
}
},
"additionalProperties": false,
"description": "Payroll Leave Balances and Accrual report employee transaction."
},
"description": "Group details."
},
"groupTotals": {
"oneOf": [
{
"type": "object",
"properties": {
"leaveBalance": {
"type": "number",
"description": "The leave balance.",
"format": "decimal",
"example": 123.45
},
"leaveLoadingValue": {
"type": "number",
"description": "The leave loading currency value.",
"format": "decimal",
"example": 3254.54
},
"oteValue": {
"type": "number",
"description": "The ordinary time earnings value.",
"format": "decimal",
"example": 2376.43
},
"totalValue": {
"type": "number",
"description": "The total value.",
"format": "decimal",
"example": 5630.97
}
},
"additionalProperties": false,
"description": "Leave balance totals."
}
],
"description": "Totals for the group."
},
"payItem": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique id.",
"format": "guid",
"nullable": true
},
"name": {
"type": "string",
"description": "The unique name.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Reference to a payroll pay item.",
"example": {
"id": "9c9456f7-c74c-4bd6-907d-7ffd9ad4acd9",
"name": "Annual leave"
}
}
],
"description": "The pay item."
}
},
"additionalProperties": false,
"description": "Payroll Leave Balances and Accrual report pay item group."
},
"description": "Report groups.",
"nullable": true
},
"reportTotals": {
"oneOf": [
{
"type": "object",
"properties": {
"leaveBalance": {
"type": "number",
"description": "The leave balance.",
"format": "decimal",
"example": 123.45
},
"leaveLoadingValue": {
"type": "number",
"description": "The leave loading currency value.",
"format": "decimal",
"example": 3254.54
},
"oteValue": {
"type": "number",
"description": "The ordinary time earnings value.",
"format": "decimal",
"example": 2376.43
},
"totalValue": {
"type": "number",
"description": "The total value.",
"format": "decimal",
"example": 5630.97
}
},
"additionalProperties": false,
"description": "Leave balance totals."
}
],
"description": "Totals for the report.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Payroll Leave Balances and Accrual report details. "
}
],
"description": "The report's data.",
"nullable": true
},
"metaData": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The report's unique id.",
"format": "guid",
"example": "b5dd1bd6-18f7-45ec-92a7-d32aa9d8724e"
},
"reportName": {
"type": "string",
"description": "The report's name.",
"example": "Report"
},
"bookName": {
"type": "string",
"description": "The book's name.",
"example": "My book."
},
"companyName": {
"type": "string",
"description": "The company's name.",
"nullable": true,
"example": "My company."
},
"period": {
"oneOf": [
{
"enum": [
"AsAtDate"
],
"type": "string",
"description": "Periods that can be used for the Payroll Leave Balances And Accrual Value report.",
"x-enumNames": [
"AsAtDate"
]
}
],
"description": "The period.",
"nullable": true,
"example": "AsAtDate"
},
"asAtDate": {
"type": "string",
"description": "When using AsAtDate, the date that was used.",
"format": "date-time",
"nullable": true,
"example": "2021-01-31T12:00:00Z"
},
"groupBy": {
"oneOf": [
{
"enum": [
"PayItem"
],
"type": "string",
"description": "Groupings that can be used for the Payroll Leave Balances And Accrual Value report.",
"x-enumNames": [
"PayItem"
]
}
],
"description": "How the report data is grouped."
},
"columns": {
"type": "array",
"items": {
"enum": [
"OteValue",
"LeaveLoadingValue",
"TotalValue"
],
"type": "string",
"description": "Leave Balances and Accrual Value Report columns.",
"x-enumNames": [
"OteValue",
"LeaveLoadingValue",
"TotalValue"
]
},
"description": "The list of requested report columns.",
"nullable": true,
"example": [
"OteValue",
"LeaveLoadingValue"
]
}
},
"additionalProperties": false,
"description": "Meta data for the Payroll Leave Balances and Accrual report."
}
],
"description": "Data about the report.",
"nullable": true
},
"message": {
"type": "string",
"description": "A message that might contain warnings or additional information about the report contents.",
"nullable": true,
"example": "Additional information."
}
},
"additionalProperties": false,
"description": "The Payroll Leave Balances and Accrual report grouped by pay item."
}
401 Unauthorized
The authentication token is missing, expired or invalid.
Representations
{
"message": "Authorization has been denied for this request.",
"code": 401
}
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The description of the error.",
"nullable": true,
"example": "Authorization has been denied for this request."
},
"code": {
"type": "integer",
"description": "The HTTP status code of the error.",
"format": "int32",
"example": 401
}
},
"additionalProperties": false,
"description": "Response sent when a 401 Unauthorized error occurs."
}
403 Forbidden
The user does not have permission to view the report.
Representations
{
"message": "User does not have permission to access this resource.",
"code": 403
}
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The description of the error.",
"nullable": true,
"example": "User does not have permission to access this resource."
},
"code": {
"type": "integer",
"description": "The HTTP status code of the error.",
"format": "int32",
"example": 403
}
},
"additionalProperties": false,
"description": "Response sent when a 403 Forbidden error occurs."
}
404 Not Found
The specified book does not exist.
Representations
{
"message": "Resource not found.",
"code": 404
}
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The description of the error.",
"nullable": true,
"example": "Resource not found."
},
"code": {
"type": "integer",
"description": "The HTTP status code of the error.",
"format": "int32",
"example": 404
}
},
"additionalProperties": false,
"description": "Response sent when a 404 Forbidden error occurs."
}
Code samples
@ECHO OFF
curl -v -X GET "https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue?format={string}&download=true"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "{body}"
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");
// Request parameters
queryString["format"] = "{string}";
queryString["download"] = "true";
var uri = "https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue?" + queryString;
var response = await client.GetAsync(uri);
}
}
}
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class JavaSample
{
public static void main(String[] args)
{
HttpClient httpclient = HttpClients.createDefault();
try
{
URIBuilder builder = new URIBuilder("https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue");
builder.setParameter("format", "{string}");
builder.setParameter("download", "true");
URI uri = builder.build();
HttpGet request = new HttpGet(uri);
request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");
// Request body
StringEntity reqEntity = new StringEntity("{body}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null)
{
System.out.println(EntityUtils.toString(entity));
}
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JSSample</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var params = {
// Request parameters
"format": "{string}",
"download": "true",
};
$.ajax({
url: "https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue?" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
},
type: "GET",
// Request body
data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function() {
alert("error");
});
});
</script>
</body>
</html>
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString* path = @"https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue";
NSArray* array = @[
// Request parameters
@"entities=true",
@"format={string}",
@"download=true",
];
NSString* string = [array componentsJoinedByString:@"&"];
path = [path stringByAppendingFormat:@"?%@", string];
NSLog(@"%@", path);
NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
[_request setHTTPMethod:@"GET"];
// Request headers
[_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
// Request body
[_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response = nil;
NSError *error = nil;
NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];
if (nil != error)
{
NSLog(@"Error: %@", error);
}
else
{
NSError* error = nil;
NSMutableDictionary* json = nil;
NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
NSLog(@"%@", dataString);
if (nil != _connectionData)
{
json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
}
if (error || !json)
{
NSLog(@"Could not parse loaded json with error:%@", error);
}
NSLog(@"%@", json);
_connectionData = nil;
}
[pool drain];
return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';
$request = new Http_Request2('https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue');
$url = $request->getUrl();
$headers = array(
// Request headers
'Ocp-Apim-Subscription-Key' => '{subscription key}',
);
$request->setHeader($headers);
$parameters = array(
// Request parameters
'format' => '{string}',
'download' => 'true',
);
$url->setQueryVariables($parameters);
$request->setMethod(HTTP_Request2::METHOD_GET);
// Request body
$request->setBody("{body}");
try
{
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex)
{
echo $ex;
}
?>
########### Python 2.7 #############
import httplib, urllib, base64
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.urlencode({
# Request parameters
'format': '{string}',
'download': 'true',
})
try:
conn = httplib.HTTPSConnection('api.reckon.com')
conn.request("GET", "/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Ocp-Apim-Subscription-Key': '{subscription key}',
}
params = urllib.parse.urlencode({
# Request parameters
'format': '{string}',
'download': 'true',
})
try:
conn = http.client.HTTPSConnection('api.reckon.com')
conn.request("GET", "/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue?%s" % params, "{body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
require 'net/http'
uri = URI('https://api.reckon.com/r1/v2/{bookId}/reports/payrollLeaveBalancesAndAccrualValue')
query = URI.encode_www_form({
# Request parameters
'format' => '{string}',
'download' => 'true'
})
if uri.query && uri.query.length > 0
uri.query += '&' + query
else
uri.query = query
end
request = Net::HTTP::Get.new(uri.request_uri)
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"
response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
http.request(request)
end
puts response.body