Skip to content

Update a site

PUT
/v1/clients/{clientId}/sites/{id}
curl --request PUT \
--url https://api2.recruso.co.uk/v1/clients/1/sites/1 \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: application/json' \
--data '{ "siteName": "Trafford Park DC", "memo": "Gatehouse sign-in required; ask for the shift supervisor.", "gre": 1, "grn": 1, "invoiceMethodId": 1, "useSiteAddressForInvoice": true, "useSiteEmailForInvoice": false, "address1": "Northgate House", "address2": "22 Ashburton Road West", "town": "Trafford Park", "county": "Greater Manchester", "country": "United Kingdom", "postCode": "M17 1RU", "telephone1": "0161 872 4410", "telephone2": "0161 872 4411", "fax": "0161 872 4412", "email": "trafford@example-northgate.co.uk", "timesheetEmail": "timesheets@example-northgate.co.uk" }'

Updates one site belonging to one of your own agency’s clients.

This is a full replacement, not a partial merge: every mutable field is written from the request, so a field you omit is set to null. Send the complete record, not just the fields you are changing.

A site’s branch and client cannot be changed here — neither is part of the request. A site stays with the client it was created under.

The renamed site must not collide with another of the client’s active sites (400) or with an archived one (409, carrying the archived siteId, exactly as in CreateSite).

The site must belong to the client named in the route; otherwise 404. modifiedBy and modifiedOn are set from your credentials and the current UK local time.

Access. Requires a client-credentials access token. Tokens issued through the interactive user login are rejected.

clientId
required
integer format: int32

The clientId path parameter

id
required
integer format: int32

The id path parameter

Media typeapplication/json

The replacement values for a site. Every mutable field is written, so an omitted field is set to null. The site’s client and branch cannot be changed.

object
siteName

The site’s name. Required, up to 70 characters, and unique among the client’s active sites.

string
Example
Trafford Park DC
memo

Free-text notes about the site. Up to 550 characters.

string
nullable
Example
Gatehouse sign-in required; ask for the shift supervisor.
gre
number format: float
nullable
grn
number format: float
nullable
invoiceMethodId

How invoices for this site are delivered, as an id from the invoice methods vocabulary.

integer format: int16
nullable
Example
1
useSiteAddressForInvoice

Whether invoices for this site use the site address rather than the client’s invoice address.

boolean
nullable
Example
true
useSiteEmailForInvoice

Whether invoices for this site are sent to the site email rather than the client’s invoice email.

boolean
nullable
Example
false
address1

First line of the site address. Up to 150 characters.

string
nullable
Example
Northgate House
address2

Second line of the site address. Up to 50 characters.

string
nullable
Example
22 Ashburton Road West
town

Town or city of the site address.

string
nullable
Example
Trafford Park
county

County of the site address.

string
nullable
Example
Greater Manchester
country

Country of the site address.

string
nullable
Example
United Kingdom
postCode

Postcode of the site address.

string
nullable
Example
M17 1RU
telephone1

The site’s main telephone number.

string
nullable
Example
0161 872 4410
telephone2

A second telephone number for the site.

string
nullable
Example
0161 872 4411
fax

The site’s fax number.

string
nullable
Example
0161 872 4412
email

The site’s main email address.

string
nullable
Example
trafford@example-northgate.co.uk
timesheetEmail

The address timesheets for this site are sent to.

string
nullable
Example
timesheets@example-northgate.co.uk

OK

Media typeapplication/json

A site as it stands after the update.

object
siteId

The site’s unique identifier, assigned by Recruso.

integer format: int32
clientId

The client this site belongs to.

integer format: int32
siteName

The site’s name. Required, up to 70 characters, and unique among the client’s active sites.

string
memo

Free-text notes about the site. Up to 550 characters.

string
nullable
gre
number format: float
nullable
grn
number format: float
nullable
createdBy

The Recruso user who created the site.

integer format: int16
nullable
createdOn

When the site was created, in UK local time (GMT/BST) — not UTC.

string format: date-time
nullable
modifiedBy

The Recruso user who last updated the site. Null until the site is first updated.

integer format: int16
nullable
modifiedOn

When the site was last updated, in UK local time (GMT/BST) — not UTC. Null until the site is first updated.

string format: date-time
nullable
address1

First line of the site address. Up to 150 characters.

string
nullable
address2

Second line of the site address. Up to 50 characters.

string
nullable
town

Town or city of the site address.

string
nullable
county

County of the site address.

string
nullable
country

Country of the site address.

string
nullable
postCode

Postcode of the site address.

string
nullable
telephone1

The site’s main telephone number.

string
nullable
telephone2

A second telephone number for the site.

string
nullable
fax

The site’s fax number.

string
nullable
email

The site’s main email address.

string
nullable
invoiceMethodId

How invoices for this site are delivered, as an id from the invoice methods vocabulary.

integer format: int16
nullable
useSiteAddressForInvoice

Whether invoices for this site use the site address rather than the client’s invoice address.

boolean
nullable
useSiteEmailForInvoice

Whether invoices for this site are sent to the site email rather than the client’s invoice email.

boolean
nullable
branchId

The branch this site is managed under.

integer format: int16
nullable
timesheetEmail

The address timesheets for this site are sent to.

string
nullable
siteArchivedBy

The Recruso user who archived the site. Null while the site is active.

integer format: int16
nullable
siteArchivedOn

When the site was archived, in UK local time (GMT/BST). Null while the site is active.

string format: date-time
nullable
siteRestoredBy

The Recruso user who last restored the site. Null if the site has never been archived.

integer format: int16
nullable
siteRestoredOn

When the site was last restored, in UK local time (GMT/BST). Null if the site has never been archived.

string format: date-time
nullable
Example
{
"siteId": 512,
"clientId": 137,
"siteName": "Trafford Park DC",
"memo": "Gatehouse sign-in required; ask for the shift supervisor.",
"createdBy": 12,
"createdOn": "2026-03-06T10:41:12",
"modifiedBy": 12,
"modifiedOn": "2026-06-11T14:02:09",
"address1": "Northgate House",
"address2": "22 Ashburton Road West",
"town": "Trafford Park",
"county": "Greater Manchester",
"country": "United Kingdom",
"postCode": "M17 1RU",
"telephone1": "0161 872 4410",
"telephone2": "0161 872 4411",
"fax": "0161 872 4412",
"email": "trafford@example-northgate.co.uk",
"invoiceMethodId": 1,
"useSiteAddressForInvoice": true,
"useSiteEmailForInvoice": false,
"branchId": 4,
"timesheetEmail": "timesheets@example-northgate.co.uk",
"siteArchivedBy": 12,
"siteArchivedOn": "2026-07-01T16:20:00",
"siteRestoredBy": 12,
"siteRestoredOn": "2026-07-14T09:05:00"
}

Bad Request

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Unauthorized

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Forbidden

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Not Found

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Conflict

Media typeapplication/json

Returned with 409 when a site name is already held by an archived site of the same client. Not an RFC 7807 problem document.

object
siteId

The archived site already holding this name. Restore it with RestoreSite, or choose a different name.

integer format: int32
message

An explanation of the conflict, and what to do about it.

string
Example
{
"siteId": 512,
"message": "A site with this name was previously archived for this client. To restore it, use the restore endpoint or choose a different name."
}