Как получить список сотрудников через API?
GET /v1/employees возвращает страницу сотрудников. Если query-параметры не переданы, API применяет значения по умолчанию: page = 0 и size = 50.
Endpoint
| Параметр | Значение |
|---|---|
| Method | GET |
| Path | /api/v1/employees |
| Base URL | https://smartway.pro |
| Auth | Bearer token |
| Required scope | employees.read |
Назначение
Endpoint используется для получения постраничного списка сотрудников в рамках компании из Bearer token.
Endpoint поддерживает пагинацию, поиск по ФИО и фильтры по департаменту и должности.
Предусловия
Клиент должен передать валидный Bearer token.
Token должен содержать company context.
Token должен содержать scope employees.read.
idCompany не передаётся внешним клиентом. API определяет 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,
"manager": 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 | Признак активности. |
manager |
boolean | Признак роли руководителя подразделения. true означает, что сотрудник имеет эту роль на сервере авторизации. |
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 - вторая страница.
API определяет companyId только из Bearer token.
idCompany не передаётся внешним клиентом.
Поиск q работает по ФИО с частичным совпадением.
Поиск по email не поддерживается.
Параметры q, department и jobTitle поддерживают UTF-8.
Параметры можно комбинировать. Совокупность параметров применяется через логику AND.
Для доступа нужен scope employees.read.
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 |
Неожиданная ошибка API. |
503 Service Unavailable |
Сбой внутренней серверной интеграции. |
Использование
Без query-параметров.
Получение следующей страницы через page.
Изменение размера страницы через size.
Поиск сотрудника по ФИО через q.
Фильтрация сотрудников по department или jobTitle.
Комбинирование поиска и фильтров для узкой выборки.
Типичные ошибки
Typical integration mistakes
| Типичная ошибка | Как правильно |
|---|---|
Считать, что page = 1 - первая страница |
Используйте page = 0 для первой страницы. |
Искать сотрудника по email через q |
q поддерживает поиск по ФИО, а не по email. |
Передавать idCompany в query string |
Не передавайте idCompany; API определяет 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?
Нет. API определяет companyId из Bearer token.