Получение пользователя
Поиск пользователя Заездо по внешнему идентификатору (например 1С), получение назначенных ролей и их распределения по площадкам. По запросу дополнительно проверяется возможность назначения сотрудника ответственным за визит – наличие у него права работать с определенной площадкой.
https://app.zaezdo.pro/api/v1/users/{source_id}На этой странице
Параметры запроса#
Можно получить полную информацию о правах пользователя или добавить проверку конкретной площадки.
Здесь "AfoninGA" — идентификатор сотрудника в 1С (или внешней системе учёта).
| Параметр | Обяз. | Описание |
|---|---|---|
| source_id | Да | Идентификатор сотрудника в 1С, передаётся в URL; максимум 80 символов. |
| site_source_id | Нет | Идентификатор площадки в 1С, передаётся в query-параметре для проверки права назначения ответственным. |
Примеры запроса#
GET /api/v1/users/AfoninGA?site_source_id=WH-SEVER HTTP/1.1
Host: app.zaezdo.pro
Authorization: Bearer ВАШ_API_ТОКЕН
Accept: application/jsonGET /api/v1/users/AfoninGA HTTP/1.1
Host: app.zaezdo.pro
Authorization: Bearer ВАШ_API_ТОКЕН
Accept: application/jsoncurl --request GET \
--url "https://app.zaezdo.pro/api/v1/users/AfoninGA?site_source_id=WH-SEVER" \
--header "Authorization: Bearer ВАШ_API_ТОКЕН"Успешный ответ и права пользователя#
{
"source_id": "AfoninGA",
"full_name": "Анна Соколова",
"is_active": true,
"has_account": true,
"roles": [
{
"code": "MANAGER",
"name": "Менеджер",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
},
{
"source_id": "WH-YUG",
"name": "Склад Юг"
}
]
},
{
"code": "DISPATCHER",
"name": "Диспетчер",
"scope": "ALL_SITES",
"sites": []
},
{
"code": "CHECKPOINT",
"name": "Сотрудник КПП / охрана",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
}
]
}
],
"can_be_responsible_for_site": {
"site_source_id": "WH-SEVER",
"allowed": true
}
}{
"source_id": "AfoninGA",
"full_name": "Анна Соколова",
"is_active": true,
"has_account": true,
"roles": [
{
"code": "MANAGER",
"name": "Менеджер",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
},
{
"source_id": "WH-YUG",
"name": "Склад Юг"
}
]
},
{
"code": "DISPATCHER",
"name": "Диспетчер",
"scope": "ALL_SITES",
"sites": []
},
{
"code": "CHECKPOINT",
"name": "Сотрудник КПП / охрана",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
}
]
}
]
}{
"source_id": "AfoninGA",
"full_name": "Анна Соколова",
"is_active": true,
"has_account": true,
"roles": [
{
"code": "MANAGER",
"name": "Менеджер",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
},
{
"source_id": "WH-YUG",
"name": "Склад Юг"
}
]
},
{
"code": "DISPATCHER",
"name": "Диспетчер",
"scope": "ALL_SITES",
"sites": []
},
{
"code": "CHECKPOINT",
"name": "Сотрудник КПП / охрана",
"scope": "SELECTED_SITES",
"sites": [
{
"source_id": "WH-SEVER",
"name": "Склад Север"
}
]
}
],
"can_be_responsible_for_site": {
"site_source_id": "WH-SEVER",
"allowed": false,
"reason": "MANAGER_NO_SITE_ACCESS"
}
}В обоих режимах метод возвращает данные пользователя и все его роли. Если передан site_source_id, в ответ дополнительно включается can_be_responsible_for_site.
Если site_source_id не передан, ответ содержит все те же данные и роли, но объект can_be_responsible_for_site полностью отсутствует.
Поля ответа
| Поле ответа | Назначение |
|---|---|
source_id | Идентификатор сотрудника в 1С, указанный для синхронизации в Заездо. |
full_name | ФИО сотрудника в Заездо. |
is_active | Признак активности сотрудника (true / false). |
has_account | Наличие действующей учётной записи для входа в Заездо. |
| roles[] | Массив назначенных сотруднику ролей. |
roles[].code / name | Код роли и её наименование. |
roles[].scope | Область действия роли: ALL_SITES или SELECTED_SITES. |
roles[].sites[] | Список площадок, на которых действует роль, если scope = SELECTED_SITES. |
can_be_responsible_for_site | Необязательный результат проверки конкретной площадки: site_source_id, allowed и, при отказе, reason. |
Роли и область действия
Роль и доступные ей площадки описываются вместе — это позволяет внешней системе понять фактическое распределение прав.
| Значение scope | Как интерпретировать |
|---|---|
ALL_SITES | Роль действует на всех площадках компании. При этом sites = [] — это не отсутствие доступа. |
SELECTED_SITES | Роль действует только на площадках из массива sites[]. |
Поддерживаемые коды ролей:
| Код роли | Наименование |
|---|---|
CLIENT_ADMIN | Администратор клиента |
| MANAGER | Менеджер |
| DISPATCHER | Диспетчер |
| CHECKPOINT | Сотрудник КПП / охрана |
WAREHOUSE_OPERATOR | Оператор склада |
LOGISTICS_MANAGER | Руководитель склада / логистики |
Возможность назначения ответственным
Проверка выполняется только при наличии параметра site_source_id. Заездо проверяет одновременно:
- сотрудник активен (
is_active=true); - имеет действующую учётную запись (
has_account=true); - ему назначена роль MANAGER;
- роль MANAGER действует на указанной активной площадке.
РЕЗУЛЬТАТ УСПЕШНОЙ ПРОВЕРКИ · ФРАГМЕНТ ОТВЕТА
{
"can_be_responsible_for_site": {
"site_source_id": "WH-SEVER",
"allowed": true
}
}ОТКАЗ В НАЗНАЧЕНИИ · ФРАГМЕНТ ОТВЕТА
{
"can_be_responsible_for_site": {
"site_source_id": "WH-SEVER",
"allowed": false,
"reason": "MANAGER_NO_SITE_ACCESS"
}
}Отказ в назначении не является ошибкой HTTP: метод возвращает 200 OK с данными сотрудника и allowed = false.
| Код причины | Что означает |
|---|---|
MANAGER_INACTIVE | Сотрудник неактивен. |
MANAGER_NO_ACCOUNT | Нет действующей учётной записи. |
MANAGER_NOT_MANAGER | Нет роли менеджера. |
MANAGER_NO_SITE_ACCESS | Нет роли менеджера на указанной площадке. |
SITE_INACTIVE | Площадка отключена. |
Порядок проверки запроса#
Проверки выполняются по этапам. При ошибке метод возвращает результат текущего этапа и не переходит к следующему.
| Этап | Результат при ошибке |
|---|---|
| 1. Авторизация | 401 — нет действующего токена или интеграция отключена. 403 — компания отключена. |
| 2. Проверка параметров | 422 — source_id или переданный site_source_id некорректен. Все ошибки параметров перечисляются в errors[]. |
| 3. Поиск записей | 404 — по корректным идентификаторам не найден пользователь и/или площадка. Все ненайденные записи перечисляются в errors[]. |
| 4. Проверка назначения | 200 — возвращаются данные пользователя и, если передан site_source_id, результат allowed: true или false. |
Без site_source_id поиск площадки и проверка назначения не выполняются. Пустой переданный site_source_id — это некорректный параметр, а не отсутствие параметра.
Если идентификатор пользователя некорректен, а площадка не существует, сначала возвращается 422. Поиск площадки начнётся только после исправления параметров.
Коды и описания ошибок#
| HTTP · код / поле | Точный текст сообщения |
|---|---|
| 401HTTPUNAUTHORIZED | Требуется действующий Bearer-токен интеграции. |
| 403HTTPTENANT_INACTIVE | Компания отключена в Заездо. |
| 404HTTPRESOURCE_NOT_FOUND | Не найдены записи по переданным идентификаторам. |
| 422HTTPVALIDATION_ERROR | Ошибка проверки параметров запроса. |
| 429HTTPRATE_LIMITED | Превышено допустимое количество запросов. Повторите запрос позже. |
| 500HTTPINTERNAL_ERROR | Внутренняя ошибка Заездо. |
| 503HTTPSERVICE_UNAVAILABLE | Сервис Заездо временно недоступен. |
| 404ПолеUSER_NOT_FOUNDsource_id | Пользователь с указанным source_id не найден. |
| 404ПолеSITE_NOT_FOUNDsite_source_id | Площадка с указанным site_source_id не найдена. |
| 422ПолеINVALID_SOURCE_IDsource_id | Некорректный идентификатор сотрудника. |
| 422ПолеINVALID_SITE_SOURCE_IDsite_source_id | Некорректный идентификатор площадки. |
Для HTTP 404 поиск выполнен, но запись не найдена. Для HTTP 422 поиск ещё не выполнялся: сначала нужно исправить параметры.
Пользователь, у которого не заполнен source_id, не может быть найден по идентификатору из 1С. Неактивный пользователь или отключённая площадка считаются найденными: это не основание для 404.
Формат ошибки и примеры
| Поле | Как использовать |
|---|---|
| code | Общая категория ошибки для программной обработки. |
| message | Точный общий текст ошибки. |
| errors[] | Для 404 и 422: все ошибки остановившего этапа. Каждый элемент содержит field, code и message. |
request_id | Идентификатор запроса. Передайте его поддержке при обращении. |
HTTP 404 · НЕ НАЙДЕНЫ ПОЛЬЗОВАТЕЛЬ И ПЛОЩАДКА
{
"code": "RESOURCE_NOT_FOUND",
"message": "Не найдены записи по переданным идентификаторам.",
"errors": [
{
"field": "source_id",
"code": "USER_NOT_FOUND",
"message": "Пользователь с указанным source_id не найден."
},
{
"field": "site_source_id",
"code": "SITE_NOT_FOUND",
"message": "Площадка с указанным site_source_id не найдена."
}
],
"request_id": "req-123456"
}Если не найдена только одна запись, errors[] содержит один элемент. Верхнеуровневый code остаётся RESOURCE_NOT_FOUND.
HTTP 422 · НЕКОРРЕКТНЫ ОБА ИДЕНТИФИКАТОРА
{
"code": "VALIDATION_ERROR",
"message": "Ошибка проверки параметров запроса.",
"errors": [
{
"field": "source_id",
"code": "INVALID_SOURCE_ID",
"message": "Некорректный идентификатор сотрудника."
},
{
"field": "site_source_id",
"code": "INVALID_SITE_SOURCE_ID",
"message": "Некорректный идентификатор площадки."
}
],
"request_id": "req-123457"
}Что делать при получении ответа
Для программной обработки используйте HTTP-статус и поля code, errors[].field, errors[].code. Покажите пользователю все errors[].message; если массива нет — общий message. Не определяйте тип ошибки по тексту сообщения.
| Ответ | Что делать интегратору |
|---|---|
| 401 / 403 | Проверьте токен, активность интеграции и компании. Не повторяйте запрос без устранения причины. |
| 422 | Исправьте все параметры, перечисленные в errors[], и отправьте запрос повторно. |
| 404 | Проверьте source_id пользователя и площадки, а также их сопоставление в Заездо. После исправления повторите запрос. |
200, allowed: false | Запрос выполнен. Причина отказа указана в reason; исправьте её до создания визита. |
| 429 | Выдержите паузу, указанную в заголовке Retry-After. |
| 500 / 503 | Повторите GET после паузы; при повторяющейся ошибке передайте request_id поддержке. |
Проверка users не закрепляет права на будущее. При создании визита Заездо проверяет возможность назначения ответственного повторно.
Использование при создании визита#
Например, в 1С (или в другой внешней системе) у контрагента ответственным менеджером указан пользователь с кодом "AfoninGA". Перед созданием визита можно проверить его права на площадке "WH-SEVER".
ПРОВЕРКА ПОЛЬЗОВАТЕЛЯ И ПЛОЩАДКИ
GET /api/v1/users/AfoninGA?site_source_id=WH-SEVERЕсли сервер вернул 200 OK и allowed = true, при создании визита передаётся:
ФРАГМЕНТ ЗАПРОСА POST /api/v1/visits
{
"responsible_user_source_id": "AfoninGA"
}Заездо назначает указанного сотрудника ответственным за визит. Если сотрудник не может быть назначен, визит не создаётся.