Every call needs a service key. Create one in Proof under Settings, Service keys, then send it as Authorization: Bearer sk_.... Without the scope for the call you get a 403.
Workplace groups bundle workplaces so access can be granted per group rather than per site. A group has a name, an optional description, an optional internal code of your own, a set of workplaces, and a set of users who may reach them.
Every call needs a service key with the matching scope, sent as Authorization: Bearer sk_.... A key belongs to one environment, so the environment is never a parameter. A key that authenticates but lacks the scope for the call gets 403, not 401.
Errors come back in two shapes. A plain problem document carries title, status and traceId. A validation problem adds an errors object keyed by field. Which one you get for an unknown group id depends on the call: reading gives 404, updating and deleting give 400 with general.notFound in errors, and setting the workplaces or users gives 404. Handle both rather than switching on the status code alone.
Replaces the name, description and internal code of a group, and returns its id.
Workplaces and users are not touched, set those with their own calls.
This is a full-state replace of the three fields. Leaving out description or
internalCode clears the stored value, it does not keep it. Send the fields you
want the group to end up with.
Path parameters
Name
Type
Required
Example
idId of the group.
string
required
00000000-0000-0000-0000-000000000000
Request body (required)
object
Field
Type
Required
nameDisplay name of the group.
string
required
descriptionFree-text description. Omitting it clears the stored one.
string
optional
internalCodeYour own code. Omitting it clears the stored one.
string
optional
{
"name": "Site North and East",
"description": "Merged northern and eastern sites",
"internalCode": "GRP-NORTH-01"
}
Responses
200OK
Field
Type
idId of the updated group.
string
{
"id": "00000000-0000-0000-0000-000000000000"
}
400Validation failed. An unknown group id also lands here, as `general.notFound`, rather than as a 404. That differs from the read call on the same path, which does answer 404.
Field
Type
title
string
status
integer
errorsField name to list of error messages.
object
traceId
string
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/public/v1/workplacegroup/00000000-0000-0000-0000-000000000000",
"errors": {
"general.notFound": [
"A 'Not Found' error has occurred."
]
},
"traceId": "00-0000000000000000-0000000000-00"
}
Replaces the full set of workplaces in the group. Send every workplace the group
should contain, not just the additions. An empty list clears the group.
Workplaces are addressed by identification, the same value
/v1/workplace/list returns, not by id.
The call is atomic. If any identification does not resolve in the key's
environment, nothing is written and the response is a 400 carrying
WorkplacesNotInEnvironment under workplaceIdentifications, with the
identifications that failed listed under unresolvedIdentifications.
Path parameters
Name
Type
Required
Example
idId of the group.
string
required
00000000-0000-0000-0000-000000000000
Request body (required)
object
Field
Type
Required
workplaceIdentificationsComplete set of workplace identifications for this group. An empty list or a missing field clears the group.