curl --request POST \
--url https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"valid_from": "2023-12-25",
"core": {
"title": "Mr",
"first_name": "Sarah",
"middle_name": "Anne",
"last_name": "van der Vaart",
"maiden_name": "<string>",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"is_primary": true
}
]
},
"external_ref": "<string>"
}
]
'import requests
url = "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list"
payload = [
{
"valid_from": "2023-12-25",
"core": {
"title": "Mr",
"first_name": "Sarah",
"middle_name": "Anne",
"last_name": "van der Vaart",
"maiden_name": "<string>",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"is_primary": True
}
]
},
"external_ref": "<string>"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
valid_from: '2023-12-25',
core: {
title: 'Mr',
first_name: 'Sarah',
middle_name: 'Anne',
last_name: 'van der Vaart',
maiden_name: '<string>',
birth_date: '2023-12-25',
personal_email: 'jsmith@example.com',
work_email: 'jsmith@example.com',
phone_numbers: [{phone_number: '<string>', is_primary: true}]
},
external_ref: '<string>'
}
])
};
fetch('https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'valid_from' => '2023-12-25',
'core' => [
'title' => 'Mr',
'first_name' => 'Sarah',
'middle_name' => 'Anne',
'last_name' => 'van der Vaart',
'maiden_name' => '<string>',
'birth_date' => '2023-12-25',
'personal_email' => 'jsmith@example.com',
'work_email' => 'jsmith@example.com',
'phone_numbers' => [
[
'phone_number' => '<string>',
'is_primary' => true
]
]
],
'external_ref' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list"
payload := strings.NewReader("[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body{
"total": 123,
"succeeded": 123,
"failed": 123,
"unprocessed": 123,
"data": [
{
"id": "<string>",
"external_ref": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"organization_id": "<string>",
"status": {},
"core": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"title": "<string>",
"first_name": "",
"middle_name": "<string>",
"last_name": "",
"maiden_name": "<string>",
"gender": "M",
"marital_status": "SINGLE",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"phone_type": "MOBILE",
"is_primary": false
}
]
},
"address": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"address": "<string>"
},
"job": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"start_date": "2023-12-25",
"contracted_weekly_hours": 40,
"department": "<string>",
"pay_group_id": "<string>",
"contracted_weekdays": [
"MONDAY"
],
"worker_type": "EMPLOYEE",
"director_since": "2023-12-25",
"pay_basis": "SALARIED",
"apprenticeship": {
"start_date": "2023-12-25",
"expected_end_date": "2023-12-25",
"level": 4
},
"p45_issued": false,
"irregular_payment_pattern": false,
"ordinarily_works_in_uk": true,
"uk_work_exclusion_reason": "NOT_APPLICABLE",
"proration_basis": {
"mode": "CALENDAR_DAY",
"business_days_per_year": "<string>"
},
"end_date": "2023-12-25"
},
"tax": {
"starter_details": {
"basis": "DECLARATION",
"declaration": "A"
},
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"rti_id": "<string>",
"tax_code": "<string>",
"student_loan_type": "PLAN_1",
"postgraduate_loan": false,
"p45_gross_pay": "0.00",
"p45_tax_amount": "0.00"
},
"insurance": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"national_insurance_number": "<string>",
"nic_category": "A",
"overseas_national_awaiting_nino": true
},
"compensation": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"earnings": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>",
"earning_type": "AMOUNT",
"earning_frequency": "MONTH",
"is_lumpsum": false,
"sacrificed_amount": "<string>"
}
],
"benefits": [
{
"wage_type_code": "<string>",
"external_ref": "<string>",
"amount": "0.00",
"make_good_amount": "0.00",
"foregone_amount": "0.00",
"cash_alternative_amount": "0.00"
}
],
"deductions": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>",
"sacrificed_amount": "<string>"
}
],
"reimbursements": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>"
}
]
},
"bank": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"accounts": [
{
"account_number": "<string>",
"sort_code": "<string>",
"financial_institution_name": "<string>",
"is_primary": false,
"is_active": true,
"allocation_percentage": "<string>"
}
]
}
}
],
"errors": [
{
"input_index": 123,
"errors": [
{
"code": "HUB_DUPLICATE_EXTERNAL_REF",
"message": "<string>",
"field": "<string>",
"params": {}
}
]
}
]
}{
"errors": [
{
"code": "ORG_BELONGS_TO_A_DIFFERENT_COUNTRY",
"message": "Raised when an organization belongs to a different country than the one in the path."
}
]
}{
"errors": [
{
"code": "ORG_NOT_FOUND",
"message": "Raised when an organization is not found."
}
]
}{
"errors": [
{
"code": "FIELD_REQUIRED",
"message": "<string>",
"field": "<string>",
"params": {}
}
]
}Create Employees
Each item is validated and created on its own: an item that fails is reported in errors with its index, and the others are still created. The response is 200 however many items fail. Item errors carry the validation codes of the single create, with field relative to the item, and its codes: HUB_DUPLICATE_EXTERNAL_REF, GB_RTI_ID_DUPLICATE, ONE_OR_MORE_PAY_GROUP_NOT_FOUND, PAY_GROUP_IS_IN_RUNNING_PAYROLL, WAGE_TYPE_NOT_FOUND, SACRIFICE_NOT_ALLOWED, GB_STARTER_EXISTING_EMPLOYMENT_RTI_ID_MISSING. A body that is not an array, is empty or holds more than 100 items is rejected with 422 and nothing is created.
curl --request POST \
--url https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
[
{
"valid_from": "2023-12-25",
"core": {
"title": "Mr",
"first_name": "Sarah",
"middle_name": "Anne",
"last_name": "van der Vaart",
"maiden_name": "<string>",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"is_primary": true
}
]
},
"external_ref": "<string>"
}
]
'import requests
url = "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list"
payload = [
{
"valid_from": "2023-12-25",
"core": {
"title": "Mr",
"first_name": "Sarah",
"middle_name": "Anne",
"last_name": "van der Vaart",
"maiden_name": "<string>",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"is_primary": True
}
]
},
"external_ref": "<string>"
}
]
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
valid_from: '2023-12-25',
core: {
title: 'Mr',
first_name: 'Sarah',
middle_name: 'Anne',
last_name: 'van der Vaart',
maiden_name: '<string>',
birth_date: '2023-12-25',
personal_email: 'jsmith@example.com',
work_email: 'jsmith@example.com',
phone_numbers: [{phone_number: '<string>', is_primary: true}]
},
external_ref: '<string>'
}
])
};
fetch('https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
[
'valid_from' => '2023-12-25',
'core' => [
'title' => 'Mr',
'first_name' => 'Sarah',
'middle_name' => 'Anne',
'last_name' => 'van der Vaart',
'maiden_name' => '<string>',
'birth_date' => '2023-12-25',
'personal_email' => 'jsmith@example.com',
'work_email' => 'jsmith@example.com',
'phone_numbers' => [
[
'phone_number' => '<string>',
'is_primary' => true
]
]
],
'external_ref' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list"
payload := strings.NewReader("[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://dev.intermezzo.ai/gb/organizations/{organization_id}/employees/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"valid_from\": \"2023-12-25\",\n \"core\": {\n \"title\": \"Mr\",\n \"first_name\": \"Sarah\",\n \"middle_name\": \"Anne\",\n \"last_name\": \"van der Vaart\",\n \"maiden_name\": \"<string>\",\n \"birth_date\": \"2023-12-25\",\n \"personal_email\": \"jsmith@example.com\",\n \"work_email\": \"jsmith@example.com\",\n \"phone_numbers\": [\n {\n \"phone_number\": \"<string>\",\n \"is_primary\": true\n }\n ]\n },\n \"external_ref\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body{
"total": 123,
"succeeded": 123,
"failed": 123,
"unprocessed": 123,
"data": [
{
"id": "<string>",
"external_ref": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"organization_id": "<string>",
"status": {},
"core": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"title": "<string>",
"first_name": "",
"middle_name": "<string>",
"last_name": "",
"maiden_name": "<string>",
"gender": "M",
"marital_status": "SINGLE",
"birth_date": "2023-12-25",
"personal_email": "jsmith@example.com",
"work_email": "jsmith@example.com",
"phone_numbers": [
{
"phone_number": "<string>",
"phone_type": "MOBILE",
"is_primary": false
}
]
},
"address": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"address": "<string>"
},
"job": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"start_date": "2023-12-25",
"contracted_weekly_hours": 40,
"department": "<string>",
"pay_group_id": "<string>",
"contracted_weekdays": [
"MONDAY"
],
"worker_type": "EMPLOYEE",
"director_since": "2023-12-25",
"pay_basis": "SALARIED",
"apprenticeship": {
"start_date": "2023-12-25",
"expected_end_date": "2023-12-25",
"level": 4
},
"p45_issued": false,
"irregular_payment_pattern": false,
"ordinarily_works_in_uk": true,
"uk_work_exclusion_reason": "NOT_APPLICABLE",
"proration_basis": {
"mode": "CALENDAR_DAY",
"business_days_per_year": "<string>"
},
"end_date": "2023-12-25"
},
"tax": {
"starter_details": {
"basis": "DECLARATION",
"declaration": "A"
},
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"rti_id": "<string>",
"tax_code": "<string>",
"student_loan_type": "PLAN_1",
"postgraduate_loan": false,
"p45_gross_pay": "0.00",
"p45_tax_amount": "0.00"
},
"insurance": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"national_insurance_number": "<string>",
"nic_category": "A",
"overseas_national_awaiting_nino": true
},
"compensation": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"earnings": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>",
"earning_type": "AMOUNT",
"earning_frequency": "MONTH",
"is_lumpsum": false,
"sacrificed_amount": "<string>"
}
],
"benefits": [
{
"wage_type_code": "<string>",
"external_ref": "<string>",
"amount": "0.00",
"make_good_amount": "0.00",
"foregone_amount": "0.00",
"cash_alternative_amount": "0.00"
}
],
"deductions": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>",
"sacrificed_amount": "<string>"
}
],
"reimbursements": [
{
"wage_type_code": "<string>",
"amount": "<string>",
"external_ref": "<string>"
}
]
},
"bank": {
"edition": 123,
"valid_from": "2023-12-25",
"valid_to": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"accounts": [
{
"account_number": "<string>",
"sort_code": "<string>",
"financial_institution_name": "<string>",
"is_primary": false,
"is_active": true,
"allocation_percentage": "<string>"
}
]
}
}
],
"errors": [
{
"input_index": 123,
"errors": [
{
"code": "HUB_DUPLICATE_EXTERNAL_REF",
"message": "<string>",
"field": "<string>",
"params": {}
}
]
}
]
}{
"errors": [
{
"code": "ORG_BELONGS_TO_A_DIFFERENT_COUNTRY",
"message": "Raised when an organization belongs to a different country than the one in the path."
}
]
}{
"errors": [
{
"code": "ORG_NOT_FOUND",
"message": "Raised when an organization is not found."
}
]
}{
"errors": [
{
"code": "FIELD_REQUIRED",
"message": "<string>",
"field": "<string>",
"params": {}
}
]
}Authorizations
Get token from Auth0 and paste it here
Headers
The person acting through the access credential, recorded as created_by of what the request writes. Audit only: access is checked on the credential.
1 - 255Path Parameters
Body
1 - 100 elementsThe first day every satellite's data is valid at
Identity of the person, as payroll and filing need it.
Each name field holds one name: a person with several middle names sends the one that
should appear on HMRC returns. If only initials are known, they go one per field
(first_name "J", middle_name "M"). An optional name the person does not have is
null.
Show child attributes
Show child attributes
The integrator's own stable key, unique within the organization. Generated when absent.
1 - 255The person's residence address, as filed to HMRC.
Show child attributes
Show child attributes
The terms of the employment as a client writes them.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Standing pay elements.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Response
Successful Response
Total number of records in the request
Number of successfully processed records
Number of failed records
Number of records that passed validation but were not processed
Successfully processed records
Show child attributes
Show child attributes
Failed records with error details
Show child attributes
Show child attributes