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.

GET/api/v1/employees

List all employees for your tenant. Supports filtering, sorting, and pagination.

Headers

AuthorizationstringRequired

Bearer <access_token> — requires employees:read scope

Query Parameters

locationIdstringOptional

Filter employees assigned to a specific location

namestringOptional

Filter by employee name (substring match)

externalIdstringOptional

Filter by your own external identifier

sortBystringOptional

"name" | "createdAt" | "updatedAt"

sortOrderstringOptional

"asc" | "desc"

limitnumberOptional

Page size. When provided, the response includes nextCursor and hasMore

cursorstringOptional

Pagination 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"
    }
  ]
}
GET/api/v1/employees/:id

Retrieve a single employee by ID.

Headers

AuthorizationstringRequired

Bearer <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"
  }
}
GET/api/v1/employees/code

Resolve an employee by their 6-digit access code. Used before recording a manual verification.

Headers

AuthorizationstringRequired

Bearer <access_token> — requires employees:read scope

Query Parameters

codestringRequired

Employee'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"
  }
}
POST/api/v1/employees

Create 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

AuthorizationstringRequired

Bearer <access_token> — requires employees:write scope

Content-TypestringRequired

application/json

Request Body

namestringRequired

Employee's full name

ssnstringRequired

Employee's Icelandic social security number (kennitala). Hashed server-side — never stored in plain text.

phoneNumberstringRequired

Employee's phone number

accessCodestringOptional

6-digit access code. If omitted, one is generated automatically.

locationIdsstring[]Optional

List of location IDs to assign the employee to

Response

// 201 Created
{
  "employeeId": "emp_abc123",
  "accessCode": "483920"
}
PATCH/api/v1/employees/:id

Update an existing employee. All fields are optional.

Headers

AuthorizationstringRequired

Bearer <access_token> — requires employees:write scope

Content-TypestringRequired

application/json

Request Body

namestringOptional

Employee's full name

phoneNumberstringOptional

Employee's phone number

externalIdstringOptional

Your 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"
  }
}
DELETE/api/v1/employees/:id

Delete an employee. Also removes all location assignments for that employee.

Headers

AuthorizationstringRequired

Bearer <access_token> — requires employees:write scope

Response

{ "deleted": true }