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 связанного кандидата. |
| 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.