Employees
Manage employee records for your tenant. Employees are assigned to locations and use 6-digit access codes to identify themselves on devices.
Note: The SSN is hashed server-side and never stored in plain text. The accessCode is only shown in the POST response and cannot be retrieved again.
/api/v1/employeesList all employees for your tenant. Supports filtering, sorting, and pagination.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:read scope |
AuthorizationstringRequiredBearer <access_token> — requires employees:read scope
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| locationId | string | Optional | Filter employees assigned to a specific location |
| name | string | Optional | Filter by employee name (substring match) |
| externalId | string | Optional | Filter by your own external identifier |
| sortBy | string | Optional | "name" | "createdAt" | "updatedAt" |
| sortOrder | string | Optional | "asc" | "desc" |
| limit | number | Optional | Page size. When provided, the response includes nextCursor and hasMore |
| cursor | string | Optional | Pagination cursor from a previous response |
locationIdstringOptionalFilter employees assigned to a specific location
namestringOptionalFilter by employee name (substring match)
externalIdstringOptionalFilter by your own external identifier
sortBystringOptional"name" | "createdAt" | "updatedAt"
sortOrderstringOptional"asc" | "desc"
limitnumberOptionalPage size. When provided, the response includes nextCursor and hasMore
cursorstringOptionalPagination cursor from a previous response
Response
{
"data": [
{
"id": "emp_abc123",
"name": "Jón Jónsson",
"phoneNumber": "7771234",
"locationIds": ["loc_xyz"],
"createdAt": "2024-01-15T10:00:00.000Z"
}
]
}/api/v1/employees/:idRetrieve a single employee by ID.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:read scope |
AuthorizationstringRequiredBearer <access_token> — requires employees:read scope
Response
{
"data": {
"id": "emp_abc123",
"name": "Jón Jónsson",
"phoneNumber": "7771234",
"locationIds": ["loc_xyz"],
"createdAt": "2024-01-15T10:00:00.000Z"
}
}/api/v1/employees/codeResolve an employee by their 6-digit access code. Used before recording a manual verification.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:read scope |
AuthorizationstringRequiredBearer <access_token> — requires employees:read scope
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| code | string | Required | Employee's 6-digit access code |
codestringRequiredEmployee's 6-digit access code
Response
{
"data": {
"id": "emp_abc123",
"name": "Jón Jónsson",
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T10:00:00.000Z"
}
}/api/v1/employeesCreate a new employee. Returns the generated employee ID and access code. The access code is shown only once — store it securely before responding to the customer.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:write scope |
| Content-Type | string | Required | application/json |
AuthorizationstringRequiredBearer <access_token> — requires employees:write scope
Content-TypestringRequiredapplication/json
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Employee's full name |
| ssn | string | Required | Employee's Icelandic social security number (kennitala). Hashed server-side — never stored in plain text. |
| phoneNumber | string | Required | Employee's phone number |
| accessCode | string | Optional | 6-digit access code. If omitted, one is generated automatically. |
| locationIds | string[] | Optional | List of location IDs to assign the employee to |
namestringRequiredEmployee's full name
ssnstringRequiredEmployee's Icelandic social security number (kennitala). Hashed server-side — never stored in plain text.
phoneNumberstringRequiredEmployee's phone number
accessCodestringOptional6-digit access code. If omitted, one is generated automatically.
locationIdsstring[]OptionalList of location IDs to assign the employee to
Response
// 201 Created
{
"employeeId": "emp_abc123",
"accessCode": "483920"
}/api/v1/employees/:idUpdate an existing employee. All fields are optional.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:write scope |
| Content-Type | string | Required | application/json |
AuthorizationstringRequiredBearer <access_token> — requires employees:write scope
Content-TypestringRequiredapplication/json
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Optional | Employee's full name |
| phoneNumber | string | Optional | Employee's phone number |
| externalId | string | Optional | Your own identifier for this employee |
namestringOptionalEmployee's full name
phoneNumberstringOptionalEmployee's phone number
externalIdstringOptionalYour own identifier for this employee
Response
{
"data": {
"id": "emp_abc123",
"name": "Jón Jónsson",
"phoneNumber": "7771234",
"locationIds": ["loc_xyz"],
"createdAt": "2024-01-15T10:00:00.000Z"
}
}/api/v1/employees/:idDelete an employee. Also removes all location assignments for that employee.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer <access_token> — requires employees:write scope |
AuthorizationstringRequiredBearer <access_token> — requires employees:write scope
Response
{ "deleted": true }