Главная API Как получить список сотрудников через API?

Как получить список сотрудников через API?

Обновлено Apr 25, 2026

GET /v1/employees возвращает страницу сотрудников. Если query-параметры не переданы, API применяет значения по умолчанию: page = 0 и size = 50.

Endpoint

Параметр Значение
Method GET
Path /v1/employees
Base URL https://smartway.pro/api
Auth Bearer token
Required scope employees.read

Назначение

Endpoint используется для получения постраничного списка сотрудников в рамках компании из Bearer token.

Endpoint поддерживает пагинацию, поиск по ФИО и фильтры по департаменту и должности.

Предусловия

  • Клиент должен передать валидный Bearer token.

  • Token должен содержать company context.

  • Token должен содержать scope employees.read.

  • idCompany не передаётся внешним клиентом. BFF берёт companyId только из Bearer token.

  • Текстовые query-параметры поддерживают UTF-8 и должны передаваться как стандартный URL-encoded query string.

Запрос

Query parameters

Параметр Тип Обязательный Описание
page int32 нет Номер страницы. Значение по умолчанию: 0.
size int32 нет Размер страницы. Значение по умолчанию: 50.
q string нет Поиск по ФИО с частичным совпадением. Поиск по email не поддерживается.
department string нет Фильтр по департаменту.
jobTitle string нет Фильтр по должности.

curl пример

Вызов без параметров

curl -X GET 'https://smartway.pro/api/v1/employees' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json'

Вызов с параметрами

curl -X GET 'https://smartway.pro/api/v1/employees?page=0&size=20&q=Иван' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json'

Вызов с несколькими UTF-8 параметрами

curl -G 'https://smartway.pro/api/v1/employees' \
  --data-urlencode 'page=0' \
  --data-urlencode 'size=20' \
  --data-urlencode 'q=Иван' \
  --data-urlencode 'department=Управление' \
  --data-urlencode 'jobTitle=Менеджер' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json'

Ответ

Успешный ответ: 200 OK. Возвращает EmployeeListResponse.

{
  "data": [
    {
      "employeeId": 4329,
      "candidateId": 10602,
      "email": "employee@example.com",
      "fullName": "Имя Фамилия",
      "name": "Имя",
      "surname": "Фамилия",
      "gender": "Female",
      "department": "КЛ",
      "departments": [
        "КЛ"
      ],
      "jobTitle": "Менеджер",
      "jobTitles": [
        "Менеджер"
      ],
      "phone": "+380000000000",
      "active": true
    }
  ],
  "meta": {
    "page": 0,
    "size": 50,
    "totalElements": 385,
    "totalPages": 8,
    "hasNext": true
  }
}

Поля ответа

EmployeeListResponse

Поле Тип Описание
data Employee[] Список сотрудников на текущей странице.
meta object Метаданные пагинации.

Employee

Поле Тип Описание
employeeId int64 ID сотрудника.
candidateId int64 ID связанного кандидата.
email string Email сотрудника.
fullName string Полное имя, которое сервер формирует из name + surname.
name string Имя.
surname string Фамилия.
gender string Пол.
department string Основной департамент.
departments string[] Набор департаментов.
jobTitle string Основная должность.
jobTitles string[] Набор должностей.
phone string Телефон.
active boolean Признак активности.

Pagination meta

Поле Тип Описание
page int32 Номер текущей страницы. Нумерация 0-based.
size int32 Размер страницы.
totalElements int64 Общее количество найденных элементов.
totalPages int32 Общее количество страниц.
hasNext boolean Признак наличия следующей страницы.

Бизнес-логика

  • Все query-параметры необязательные.

  • Если endpoint вызвать без параметров, API возвращает первую страницу сотрудников: page = 0, size = 50.

  • Параметр page является 0-based: page = 0 — первая страница, page = 1 — вторая страница.

  • BFF берёт companyId только из Bearer token.

  • idCompany не передаётся внешним клиентом.

  • Поиск q работает по ФИО с частичным совпадением.

  • Поиск по email не поддерживается.

  • Параметры q, department и jobTitle поддерживают UTF-8.

  • Параметры можно комбинировать. Совокупность параметров применяется через логику AND.

  • Для доступа нужен scope employees.read.

Edge cases

Edge cases

Сценарий Поведение API
Query-параметры не переданы API применяет page = 0 и size = 50.
page = 0 Возвращается первая страница.
page = 1 Возвращается вторая страница.
Передан q API ищет по ФИО с частичным совпадением.
Передан email в q Поиск по email не поддерживается.
Переданы department и jobTitle Фильтры комбинируются через AND.
Передано UTF-8 значение, например department=Управление Значение валидно, если передано как URL-encoded query string.
Token без company context API возвращает 403 Forbidden.

Ошибки

Error responses

HTTP status Когда возникает
400 Bad Request Некорректные query-параметры.
401 Unauthorized Bearer token отсутствует или невалиден.
403 Forbidden Недостаточно прав или token без company context.
500 Internal Server Error Неожиданная ошибка BFF.
503 Service Unavailable Сбой внутренней интеграции BFF -> back2.

Использование

  • Первый тест интеграции без query-параметров.

  • Получение следующей страницы через page.

  • Изменение размера страницы через size.

  • Поиск сотрудника по ФИО через q.

  • Фильтрация сотрудников по department или jobTitle.

  • Комбинирование поиска и фильтров для узкой выборки.

Типичные ошибки

Typical integration mistakes

Типичная ошибка Как правильно
Считать, что page = 1 — первая страница Используйте page = 0 для первой страницы.
Искать сотрудника по email через q q поддерживает поиск по ФИО, а не по email.
Передавать idCompany в query string Не передавайте idCompany; companyId берётся из Bearer token.
Не кодировать UTF-8 значения в URL Передавайте текстовые параметры как URL-encoded query string.
Использовать token без employees.read Для endpoint-а нужен scope employees.read.

FAQ

Можно ли вызвать endpoint без query-параметров?

Да. API применит page = 0 и size = 50.

С какой страницы начинается пагинация?

С page = 0.

Поддерживается ли поиск по email?

Нет. Параметр q ищет по ФИО с частичным совпадением.

Можно ли комбинировать фильтры?

Да. Параметры комбинируются через логику AND.

Нужно ли передавать idCompany?

Нет. BFF берёт companyId из Bearer token.