curl --request PUT \
--url https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "New title"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}"
payload = { "title": "New title" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: 'New title'})
};
fetch('https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}', 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://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'New title'
]),
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://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}"
payload := strings.NewReader("{\n \"title\": \"New title\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"New title\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"New title\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "work_assignment",
"data": {
"title": "New title",
"title_translations": null,
"title_translated": "New title",
"employee": {
"id": "<id>",
"object": "employee",
"links": {
"self": "/employees/<id>"
}
},
"pay_schedule": {
"id": "<id>",
"object": "pay_schedule",
"links": {
"self": "/pay_schedules/<id>"
}
},
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"current_tax_jurisdiction": "ca_on",
"is_primary": true,
"accrued_vacation_pay": 0,
"paid_vacation_pay": 0,
"first_non_draft_period_start": null,
"last_non_draft_period_end": null,
"available_tax_properties": [
"ca::province_of_employment",
"ca::province_of_work",
"ca::federal_oc_surtax_exempt",
"ca::cpp_exempt",
"ca::ei_exempt",
"ca::qc::qpp_exempt",
"ca::qc::qpip_exempt",
"ca::nt::territorial_payroll_tax",
"ca::nu::territorial_payroll_tax",
"ca::federal::additional_tax",
"ca::federal::claim_amount",
"ca::federal::total_income_less_than_total_claim_amount",
"ca::federal::annual_deduction_at_source",
"ca::statutory_holiday_pay",
"ca::first_nation_exemptions",
"ca::ab::workers_compensation_class",
"ca::bc::workers_compensation_class",
"ca::mb::workers_compensation_class",
"ca::nb::workers_compensation_class",
"ca::nl::workers_compensation_class",
"ca::ns::workers_compensation_class",
"ca::nt::workers_compensation_class",
"ca::nu::workers_compensation_class",
"ca::on::workers_compensation_class",
"ca::pe::workers_compensation_class",
"ca::qc::workers_compensation_class",
"ca::sk::workers_compensation_class",
"ca::yt::workers_compensation_class",
"ca::on::claim_amount",
"ca::on::dependent_children_credit",
"ca::on::impaired_dependants_credit"
],
"external_ref": null,
"archived_at": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/work_assignments/<id>"
}
}Update a work assignment
curl --request PUT \
--url https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "New title"
}
'import requests
url = "https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}"
payload = { "title": "New title" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: 'New title'})
};
fetch('https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}', 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://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'New title'
]),
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://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}"
payload := strings.NewReader("{\n \"title\": \"New title\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"New title\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/work_assignments/{work_assignment}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"New title\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "work_assignment",
"data": {
"title": "New title",
"title_translations": null,
"title_translated": "New title",
"employee": {
"id": "<id>",
"object": "employee",
"links": {
"self": "/employees/<id>"
}
},
"pay_schedule": {
"id": "<id>",
"object": "pay_schedule",
"links": {
"self": "/pay_schedules/<id>"
}
},
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"current_tax_jurisdiction": "ca_on",
"is_primary": true,
"accrued_vacation_pay": 0,
"paid_vacation_pay": 0,
"first_non_draft_period_start": null,
"last_non_draft_period_end": null,
"available_tax_properties": [
"ca::province_of_employment",
"ca::province_of_work",
"ca::federal_oc_surtax_exempt",
"ca::cpp_exempt",
"ca::ei_exempt",
"ca::qc::qpp_exempt",
"ca::qc::qpip_exempt",
"ca::nt::territorial_payroll_tax",
"ca::nu::territorial_payroll_tax",
"ca::federal::additional_tax",
"ca::federal::claim_amount",
"ca::federal::total_income_less_than_total_claim_amount",
"ca::federal::annual_deduction_at_source",
"ca::statutory_holiday_pay",
"ca::first_nation_exemptions",
"ca::ab::workers_compensation_class",
"ca::bc::workers_compensation_class",
"ca::mb::workers_compensation_class",
"ca::nb::workers_compensation_class",
"ca::nl::workers_compensation_class",
"ca::ns::workers_compensation_class",
"ca::nt::workers_compensation_class",
"ca::nu::workers_compensation_class",
"ca::on::workers_compensation_class",
"ca::pe::workers_compensation_class",
"ca::qc::workers_compensation_class",
"ca::sk::workers_compensation_class",
"ca::yt::workers_compensation_class",
"ca::on::claim_amount",
"ca::on::dependent_children_credit",
"ca::on::impaired_dependants_credit"
],
"external_ref": null,
"archived_at": null,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/work_assignments/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
When true, standard tax credits are applied to this work assignment's Pay Stubs. Only one work assignment per Employee per Business Entity may be primary. If none is explicitly set to primary, the earliest work assignment is treated as primary.
An optional label for this work assignment, used to distinguish between multiple work assignments for the same Employee or Contractor.
255The date the work assignment was archived. Archiving ends the work assignment's participation in future Payrolls. The archive date must not fall before any active Pay Rate's effective period.
255Hide child attributes
Hide child attributes
Additive changes to the existing tag assignment, as an alternative to replacing it with tag_assignment. The two keys are mutually exclusive.
tag_assignment_patch.add_tags — Tag IDs to add to every existing allocation. Adding a tag replaces any other tag from the same tag group on that allocation.
tag_assignment_patch.remove_tags — Tag IDs to remove from every existing allocation. An allocation left with no tags is deleted; the distribution strategy decides what happens to its value.
tag_assignment_patch.distribution_strategy (optional) — Governs the value of allocations deleted by remove_tags. Defaults to reallocate when omitted. Accepted values: reallocate (spread the deleted value proportionally across the remaining allocations), unallocated (drop the value; the assignment's allocations will sum to less than before), error (refuse the patch if any allocation would be deleted).
Response
OK
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("work_assignment").
Hide child attributes
Hide child attributes
An optional label for this work assignment, used to distinguish between multiple work assignments for the same Employee or Contractor.
255The translation of the title property for the request locale. Computed using the values in title and title_translations and the value of the request's Accept-Language header.
The current Province of Employment (POE) for the work assignment, derived from the ca::province_of_employment Tax Property on the work assignment or, if none is set, from the Business Entity.
When true, standard tax credits are applied to this work assignment's Pay Stubs. Only one work assignment per Employee per Business Entity may be primary. If none is explicitly set to primary, the earliest work assignment is treated as primary.
This attribute is deprecated and will be removed.
This attribute is deprecated and will be removed.
The start of the first pay period for which this work assignment has a non-draft Payroll. null if the work assignment has never appeared on an approved or paid Payroll.
The end of the most recent pay period for which this work assignment has a non-draft Payroll. null if the work assignment has never appeared on an approved or paid Payroll.
A list of Tax Property template identifiers supported for this work assignment, based on its jurisdiction.
A reference to the object in an external system, e.g. the primary key of the object in your application's database. Nmbr doesn't use, validate, parse, or require this value to be unique - it simply stores it for your reference.
255The date the work assignment was archived. Archiving ends the work assignment's participation in future Payrolls. The archive date must not fall before any active Pay Rate's effective period.
The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

