Employees

Staff records for the shifts, attendance and treatments modules. An employee may be linked to a company user — which is what gives them a login — or exist as a record only.

Use cases: Use this to sync a staff roster, invite people to the app, and say which services each therapist may be booked for.
GET/employees

List employees.

`inviteStatus` is "accepted" once the employee is linked to a user, "pending" while an invite is outstanding, and "not_invited" otherwise. `linkedUser` is null for a record with no login.

Query Parameters

NameTypeDescription
search
stringFree-text search across name, email and phone.
role
string"owner", "manager", "shift_manager" or "employee".
groupId
numberOnly employees in this employee group.
isActive
booleanFilter by whether the employee is active.
sortBy
stringColumn to sort by.
sortOrder
string"asc" or "desc".
limit
numberItems per page. Default 50, clamped to 1-200.
offset
numberRow offset to start from (default 0).
page
number1-based page number (default 1). Converted to an offset; an explicit `offset` wins over it.
pageSize
numberAlias of `limit`. Wins over `limit` when both are sent.

Request

curl -X GET "https://api.glance.co.il/employees" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "data": [
    {
      "id": 331,
      "visibleId": "8d7c6b5a-4e3f-4210-9876-54321fedcba0",
      "userId": 12,
      "firstName": "מיכל",
      "lastName": "לוי",
      "email": "michal@example.co.il",
      "phoneNumber": "050-1234567",
      "role": "employee",
      "isActive": true,
      "creationDate": "2026-01-12T08:00:00.000Z",
      "inviteStatus": "accepted",
      "inviteToken": null,
      "inviteExpiresAt": null,
      "linkedUser": {
        "firstName": "מיכל",
        "lastName": "לוי",
        "email": "michal@example.co.il"
      }
    }
  ],
  "total": 14,
  "limit": 50,
  "offset": 0,
  "pagination": {
    "total": 14,
    "limit": 50,
    "offset": 0,
    "hasMore": false,
    "page": 1,
    "pageSize": 50,
    "totalPages": 1
  }
}
GET/employees/id/:visibleId

Get a single employee.

Path Parameters

NameTypeDescription
visibleId
stringrequiredThe employee's `visibleId`.

Request

curl -X GET "https://api.glance.co.il/employees/id/:visibleId" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "data": {
    "id": 331,
    "visibleId": "8d7c6b5a-4e3f-4210-9876-54321fedcba0",
    "userId": 12,
    "firstName": "מיכל",
    "lastName": "לוי",
    "email": "michal@example.co.il",
    "role": "employee",
    "isActive": true,
    "groups": [
      {
        "id": 4,
        "name": "מטפלות"
      }
    ],
    "inviteStatus": "accepted",
    "inviteToken": null
  }
}
POST/employees/create

Create an employee — either inviting a new person by email, or attaching a record to an existing company user.

Two different responses, depending on the path taken: with `userId` you get `linked: true` and no invite fields; without it you get `inviteId` and `inviteToken`. Read `visibleId` and `employeeId`, which are present either way.

Body Parameters

NameTypeDescription
firstName
stringrequiredGiven name.
email
stringrequiredEmail address. Required even for a linked record — it is the invite address and the key an existing invite is matched on.
lastName
stringFamily name.
phoneNumber
stringPhone number.
role
string"employee" (the default), "shift_manager", "manager" or "owner".
groupIds
number[]Employee groups to put them in.
userId
numberAttach the record to this existing company user instead of sending an invite. No email goes out, and the shift permissions are granted straight away.

Request

curl -X POST "https://api.glance.co.il/employees/create" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "example_firstName",
  "email": "example_email",
  "lastName": "example_lastName",
  "phoneNumber": "example_phoneNumber",
  "role": "example_role",
  "groupIds": "example_groupIds",
  "userId": 0
}'

Response

Response
{
  "success": true,
  "visibleId": "8d7c6b5a-4e3f-4210-9876-54321fedcba0",
  "employeeId": 331,
  "inviteId": 55,
  "inviteToken": "9f3c…"
}
PUT/employees/edit/:visibleId

Update an employee. All fields are optional.

Path Parameters

NameTypeDescription
visibleId
stringrequiredThe employee's `visibleId`.

Body Parameters

NameTypeDescription
firstName
stringGiven name.
lastName
stringFamily name.
email
stringEmail address.
phoneNumber
stringPhone number.
role
string"owner", "manager", "shift_manager" or "employee".
groupIds
number[]Replacement list of employee groups. Sending it replaces the whole membership.

Request

curl -X PUT "https://api.glance.co.il/employees/edit/:visibleId" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "firstName": "example_firstName",
  "lastName": "example_lastName",
  "email": "example_email",
  "phoneNumber": "example_phoneNumber",
  "role": "example_role",
  "groupIds": "example_groupIds"
}'

Response

Response
{
  "success": true,
  "visibleId": "8d7c6b5a-4e3f-4210-9876-54321fedcba0"
}
DELETE/employees/:visibleId

Deactivate an employee, or delete an already-inactive one.

Like retainers, this takes two calls: the first deactivates, the second deletes. The message tells you which happened, and deleting is a soft delete. `POST /employees/reactivate/:visibleId` brings a deactivated employee back.

Path Parameters

NameTypeDescription
visibleId
stringrequiredThe employee's `visibleId`.

Request

curl -X DELETE "https://api.glance.co.il/employees/:visibleId" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "message": "Employee deactivated successfully"
}
GET/employees/id/:visibleId/services

The services this employee may be booked for, with their commission terms.

`GET /employees/id/:visibleId/eligible-services` lists every service they could be assigned to, each flagged with `isLinked`.

Path Parameters

NameTypeDescription
visibleId
stringrequiredThe employee's `visibleId`.

Request

curl -X GET "https://api.glance.co.il/employees/id/:visibleId/services" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response

Response
{
  "success": true,
  "data": [
    {
      "serviceId": 21,
      "serviceName": "עיסוי רקמות עמוק",
      "isExternal": false,
      "commissionType": "PERCENT",
      "commissionPercent": 40,
      "commissionFixedAmount": null
    }
  ]
}

Last updated