Заездо Developers
Метод API · v1

Создание визита

Создание визита транспорта на площадке Заездо с использованием ранее синхронизированных справочников и ответственного менеджера. Метод не создаёт площадки, контрагентов, автомобили или водителей.

POSThttps://app.zaezdo.pro/api/v1/visits
Bearer Token Тело запроса: JSONHTTPS
На этой странице

Подготовка к созданию визита#

  • Справочники предварительно синхронизируются отдельными PUT-методами. Создание визита не создаёт и не обновляет вложенные сущности.
  • Площадка и контрагент должны существовать и быть активными. Автомобиль и водитель необязательны, но если переданы — тоже должны быть найдены и активны.
  • Ответственный обязателен: пользователь активен, имеет действующую учётную запись, роль MANAGER и доступ менеджера к указанной площадке.
  • Метод проверяет, может ли указанный пользователь быть ответственным за визит на выбранной площадке.
  • Отсутствие настроенных мест обслуживания, зон ожидания, сотрудников КПП и табло само по себе не блокирует создание визита.
  • Если запрос отклонён при проверке, визит не создаётся. Ранее созданные справочники остаются без изменений.
  • Начальный статус — PLANNED («Запланирован»); допуск определяется правилами площадки.

Параметры запроса#

Передайте внешние идентификаторы заранее подготовленных площадки, контрагента и, если используются, автомобиля и водителя. Ответственного сопоставьте в карточке пользователя через поле «Идентификатор для синхронизации с 1С».

Тело запроса передается в формате JSON. В *_source_id передаются идентификаторы из внешней системы.

ПараметрОбяз.Описание
external_idstring · bodyДаПостоянный ID визита во внешней системе, до 80 символов.
site_source_idstring · bodyДаID площадки во внешней системе.
planned_arrival_atstring · bodyДаДата и время прибытия в формате ГГГГ-ММ-ДД ЧЧ:ММ.
purposestring · bodyДаЦель визита: LOADING — «Погрузка»; UNLOADING — «Разгрузка»; SERVICE — «Служебный визит»; OTHER — «Другое».
counterparty_source_idstring · bodyДаID ранее зарегистрированного контрагента.
responsible_user_source_idstring · bodyДаID пользователя в 1С, сопоставленного с пользователем Заездо. Назначается ответственным за визит после проверки его прав.
vehicle_source_idstring · bodyНетID автомобиля, если он известен на этапе планирования.
driver_source_idstring · bodyНетID водителя, если он известен на этапе планирования.
basisstring · bodyНетОснование визита, не более 500 символов.

Пример запроса#

HTTP
POST /api/v1/visits HTTP/1.1
Host: app.zaezdo.pro
Authorization: Bearer ВАШ_API_ТОКЕН
Content-Type: application/json

{
  "external_id": "ТД00-000015",
  "site_source_id": "WH-SEVER",
  "planned_arrival_at": "2026-11-03 10:30",
  "purpose": "UNLOADING",
  "counterparty_source_id": "CP-0042",
  "responsible_user_source_id": "AfoninGA",
  "vehicle_source_id": "VEH-0085",
  "driver_source_id": "DRV-0017",
  "basis": "Поставка по заявке №123"
}

vehicle_source_id и driver_source_id можно не передавать. Если они указаны, соответствующие автомобиль и водитель должны существовать и быть активны.

Успешные ответы#

HTTP 201 · JSON
{
  "id": "VST-EXAMPLE001",
  "external_id": "ТД00-000015",
  "created": true,
  "status": "PLANNED",
  "admission_status": "UNDEFINED"
}

При первом создании визита status = PLANNED («Запланирован»). Значение admission_status зависит от поля «Допуск на площадку» в карточке площадки: UNDEFINED («Не определён») при режиме «Требует ручной проверки»; ALLOWED («Разрешён») при режиме «Разрешен при наличии сведений».

Поля ответа и допуск

ПолеЗначение
idВнутренний идентификатор созданного визита в Заездо.
external_idИдентификатор визита во внешней системе, полученный в запросе.
createdtrue — создан новый; false — возвращён уже существующий.
statusСтатус визита. При первом создании — PLANNED («Запланирован»); при повторе — актуальное значение.
admission_statusСтатус допуска. При создании — UNDEFINED («Не определён») или ALLOWED («Разрешён»); в дальнейшем возможны DENIED («Запрещён») и REVOKED («Отозван»).

ДОПУСТИМЫЕ ЗНАЧЕНИЯ ADMISSION_STATUS

ЗначениеОписаниеПри создании
UNDEFINEDДопуск не определён; требуется решение по допуску.Устанавливается, если в карточке площадки поле «Допуск на площадку» имеет значение «Требует ручной проверки».
ALLOWEDДопуск разрешён.Устанавливается, если в карточке площадки поле «Допуск на площадку» имеет значение «Разрешен при наличии сведений».
DENIEDДопуск запрещён.Нет
REVOKEDРанее выданный допуск отозван.Нет

После создания визита статус допуска может изменяться по действующим правилам Заездо; повторный запрос возвращает актуальный статус существующего визита.

Повторная отправка визита#

Один external_id обозначает один визит вашей внешней системы. При потере ответа повторяйте исходный запрос без изменения external_id и его данных.

СитуацияРезультат
Визит ещё не создан.Выполняются поиск и проверки. При успехе — 201, created: true.
Визит создан по тому же исходному запросу.200, created: false. Возвращается тот же id; новый визит не создаётся.
Визит создан, но исходные данные запроса отличаются.409, VISIT_ALREADY_EXISTS. Существующий визит не изменяется.

Для повтора сравниваются первоначально переданные данные, а не текущая карточка визита после ручного редактирования. Успешный повтор возвращает актуальные статусы существующего визита.

Проверка повтора выполняется до поиска справочников и проверки возможности нового создания. Поэтому запрос, по которому визит уже создан, не становится ошибочным только из-за наступившего планового времени или последующего изменения справочников.

HTTP 409 · EXTERNAL_ID УЖЕ ИСПОЛЬЗОВАН С ДРУГИМИ ДАННЫМИ

JSON
{
  "code": "VISIT_ALREADY_EXISTS",
  "message": "Визит с указанным external_id уже существует с другими исходными данными.",
  "request_id": "req-example-conflict"
}

Порядок проверки запроса#

Метод использует внешний идентификатор площадки, контрагента и ответственного пользователя, а также автомобиля и водителя, если они указаны. Проверка наличия этих записей выполняется отдельно от проверки параметров и возможности создания визита.

Запрос проходит этапы в порядке, указанном ниже. При ошибке возвращается HTTP-статус соответствующего этапа; последующие этапы не выполняются.

ЭтапРезультат
1. Авторизация401 — нет действующего токена или интеграция отключена. 403 — компания отключена.
2. Чтение тела запроса415 — неверный Content-Type. 400 — JSON не удалось прочитать.
3. Проверка параметров422 — отсутствуют обязательные параметры, неверны тип, длина, формат даты или значение purpose. Поиск справочников ещё не выполняется.
4. Проверка повтора200 — этот визит уже создан по тому же исходному запросу. 409 — external_id уже использован с другими исходными данными.
5. Поиск записей справочников404 — не найдена площадка, контрагент, ответственный пользователь, указанный автомобиль или водитель. Возвращаются все ошибки поиска.
6. Проверка возможности создания422 — все записи найдены, но одна из них отключена, ответственного нельзя назначить или время прибытия прошло. Возвращаются все независимые нарушения этого этапа.
7. Создание визита201 — визит создан. Дальнейшая обработка визита выполняется в Заездо.

Обработка прекращается на первом этапе с ошибками. В errors[] перечисляются все обнаруженные ошибки только этого этапа. Ошибки поиска и проверки возможности создания не смешиваются в одном ответе.

Когда возвращается 404, а когда 422

404 — идентификатор передан корректно, но запись по нему не найдена. 422 — нужно исправить данные запроса либо условия, при которых допускается создание визита.

СитуацияОтвет
Не передан обязательный site_source_id.422 · REQUIRED
site_source_id передан с неверным типом или превышает допустимую длину.422 · INVALID_SITE_SOURCE_ID
site_source_id корректен, но площадки с таким идентификатором нет.404 · SITE_NOT_FOUND
Площадка найдена, но отключена; все остальные переданные записи тоже найдены.422 · SITE_INACTIVE
Площадка не найдена, а менеджер неактивен.Сначала 404 · SITE_NOT_FOUND. Активность менеджера проверяется после успешного поиска всех записей.
purpose некорректен, а контрагент не найден.Сначала 422 · INVALID_PURPOSE. Поиск контрагента начнётся после исправления параметров.
Дата корректна по формату, но уже прошла; площадка не найдена.Сначала 404 · SITE_NOT_FOUND. Проверка прошедшего времени выполняется после поиска.
Не найдены площадка и контрагент.Один ответ 404 с двумя элементами errors[].
Все записи найдены; площадка отключена и время прибытия прошло.Один ответ 422 с двумя элементами errors[].

Коды и описания ошибок#

Поле ответаЗначение
codeОбщая категория ошибки.
messageОбщее описание ошибки.
errors[]Конкретные ошибки: field — параметр запроса; code — код причины; message — точный текст.
request_idИдентификатор запроса для обращения в поддержку.

Конкретные причины HTTP 404 и 422 перечисляются в errors[]. Возвращаются все независимые ошибки того этапа, на котором остановилась проверка.

HTTP · код / полеТочный текст сообщения
400HTTPINVALID_JSONНе удалось прочитать JSON тела запроса.
401HTTPUNAUTHORIZEDТребуется действующий Bearer-токен интеграции.
403HTTPTENANT_INACTIVEКомпания отключена в Заездо.
404HTTPRESOURCE_NOT_FOUNDНе найдены записи по переданным идентификаторам.
409HTTPVISIT_ALREADY_EXISTSВизит с указанным external_id уже существует с другими исходными данными.
415HTTPUNSUPPORTED_MEDIA_TYPEПередайте тело запроса с Content-Type: application/json.
422HTTPVALIDATION_ERRORОшибка проверки данных визита.
429HTTPRATE_LIMITEDПревышено допустимое количество запросов. Повторите запрос позже.
500HTTPINTERNAL_ERRORВнутренняя ошибка Заездо.
503HTTPSERVICE_UNAVAILABLEСервис Заездо временно недоступен.
422ПолеREQUIREDexternal_idУкажите идентификатор визита во внешней системе.
422ПолеINVALID_EXTERNAL_IDexternal_idexternal_id должен быть строкой длиной от 1 до 80 символов.
422ПолеREQUIREDsite_source_idУкажите идентификатор площадки.
422ПолеINVALID_SITE_SOURCE_IDsite_source_idИдентификатор площадки должен быть строкой длиной от 1 до 80 символов.
422ПолеREQUIREDcounterparty_source_idУкажите идентификатор контрагента.
422ПолеINVALID_COUNTERPARTY_SOURCE_IDcounterparty_source_idИдентификатор контрагента должен быть строкой длиной от 1 до 80 символов.
422ПолеREQUIREDresponsible_user_source_idУкажите идентификатор ответственного менеджера.
422ПолеINVALID_RESPONSIBLE_USER_SOURCE_IDresponsible_user_source_idИдентификатор ответственного должен быть строкой длиной от 1 до 80 символов.
422ПолеINVALID_VEHICLE_SOURCE_IDvehicle_source_idИдентификатор автомобиля должен быть строкой длиной от 1 до 80 символов.
422ПолеINVALID_DRIVER_SOURCE_IDdriver_source_idИдентификатор водителя должен быть строкой длиной от 1 до 80 символов.
422ПолеREQUIREDplanned_arrival_atУкажите плановую дату и время прибытия.
422ПолеINVALID_DATETIMEplanned_arrival_atПередайте плановую дату и время в формате ГГГГ-ММ-ДД ЧЧ:ММ.
422ПолеREQUIREDpurposeУкажите цель визита.
422ПолеINVALID_PURPOSEpurposeДопустимые значения цели визита: LOADING, UNLOADING, SERVICE, OTHER.
422ПолеINVALID_BASISbasisОснование визита должно быть строкой.
422ПолеMAX_LENGTH_EXCEEDEDbasisОснование визита не должно превышать 500 символов.
404ПолеSITE_NOT_FOUNDsite_source_idПлощадка с указанным site_source_id не найдена.
404ПолеCOUNTERPARTY_NOT_FOUNDcounterparty_source_idКонтрагент с указанным counterparty_source_id не найден.
404ПолеMANAGER_NOT_FOUNDresponsible_user_source_idПользователь с указанным responsible_user_source_id не найден.
404ПолеVEHICLE_NOT_FOUNDvehicle_source_idАвтомобиль с указанным vehicle_source_id не найден.
404ПолеDRIVER_NOT_FOUNDdriver_source_idВодитель с указанным driver_source_id не найден.
422ПолеSITE_INACTIVEsite_source_idПлощадка отключена.
422ПолеCOUNTERPARTY_INACTIVEcounterparty_source_idКонтрагент отключён.
422ПолеMANAGER_INACTIVEresponsible_user_source_idОтветственный сотрудник отключён.
422ПолеMANAGER_NO_ACCOUNTresponsible_user_source_idУ ответственного сотрудника нет действующей учётной записи в Заездо.
422ПолеMANAGER_NOT_MANAGERresponsible_user_source_idОтветственному сотруднику не назначена роль «Менеджер».
422ПолеMANAGER_NO_SITE_ACCESSresponsible_user_source_idОтветственный менеджер не имеет доступа к указанной площадке.
422ПолеVEHICLE_INACTIVEvehicle_source_idАвтомобиль отключён.
422ПолеDRIVER_INACTIVEdriver_source_idВодитель отключён.
422ПолеARRIVAL_IN_PASTplanned_arrival_atПлановое время прибытия не может быть в прошлом.

Ниже приведены точные значения code и message. Подробности ошибок 404 и 422 находятся в массиве errors[].

RESOURCE_NOT_FOUND относится к площадке, контрагенту, ответственному пользователю, автомобилю или водителю, указанным в запросе. Он не означает отсутствие создаваемого визита.

Условия возникновения ошибок

Каждая строка задаёт одну ошибку: field — параметр запроса; code — её машинный код; message — точный текст. Если на этапе найдено несколько независимых ошибок, они возвращаются отдельными элементами errors[].

Параметры запроса · HTTP 422

На этом этапе не выполняются поиск записей, проверка их активности и прав менеджера. Для planned_arrival_at проверяются наличие и корректность даты и времени в формате ГГГГ-ММ-ДД ЧЧ:ММ, но не наступление указанного времени.

Необязательные параметры vehicle_source_id, driver_source_id и basis можно не передавать. Для переданных значений действуют ограничения из таблицы.

Поиск записей справочников · HTTP 404

Поиск начинается после успешной проверки параметров и отсутствия ранее выполненного запроса с тем же external_id. Все переданные идентификаторы проверяются независимо.

Автомобиль и водитель ищутся только при наличии vehicle_source_id и driver_source_id. Отключённая запись считается найденной. Если хотя бы одна запись не найдена, возвращается 404; проверка возможности создания в этом запросе не выполняется.

Возможность создания визита · HTTP 422

Этот этап выполняется, только когда все указанные площадка, контрагент, ответственный пользователь, автомобиль и водитель найдены. В ответ включаются все независимые нарушения этого этапа.

Если у сотрудника вообще нет роли MANAGER, возвращается MANAGER_NOT_MANAGER; MANAGER_NO_SITE_ACCESS применяется, когда роль менеджера есть, но не действует на площадке визита.

Примеры ответов при ошибке

В HTTP 404 и 422 возвращается один ответ с непустым массивом errors[]. Один ненайденный объект или одна ошибка — один элемент; несколько — несколько элементов. Верхнеуровневый код при этом не меняется.

HTTP 404 · НЕ НАЙДЕНЫ ПЛОЩАДКА И КОНТРАГЕНТ

JSON
{
  "code": "RESOURCE_NOT_FOUND",
  "message": "Не найдены записи по переданным идентификаторам.",
  "errors": [
    {
      "field": "site_source_id",
      "code": "SITE_NOT_FOUND",
      "message": "Площадка с указанным site_source_id не найдена."
    },
    {
      "field": "counterparty_source_id",
      "code": "COUNTERPARTY_NOT_FOUND",
      "message": "Контрагент с указанным counterparty_source_id не найден."
    }
  ],
  "request_id": "req-example-404"
}

Примеры HTTP 422

ЭТАП ПАРАМЕТРОВ · НЕ УКАЗАНА ПЛОЩАДКА И НЕВЕРНАЯ ЦЕЛЬ

JSON
{
  "code": "VALIDATION_ERROR",
  "message": "Ошибка проверки данных визита.",
  "errors": [
    {
      "field": "site_source_id",
      "code": "REQUIRED",
      "message": "Укажите идентификатор площадки."
    },
    {
      "field": "purpose",
      "code": "INVALID_PURPOSE",
      "message": "Допустимые значения цели визита: LOADING, UNLOADING, SERVICE, OTHER."
    }
  ],
  "request_id": "req-example-format"
}

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

ЭТАП ВОЗМОЖНОСТИ СОЗДАНИЯ · ПЛОЩАДКА ОТКЛЮЧЕНА И ВРЕМЯ ПРОШЛО

JSON
{
  "code": "VALIDATION_ERROR",
  "message": "Ошибка проверки данных визита.",
  "errors": [
    {
      "field": "site_source_id",
      "code": "SITE_INACTIVE",
      "message": "Площадка отключена."
    },
    {
      "field": "planned_arrival_at",
      "code": "ARRIVAL_IN_PAST",
      "message": "Плановое время прибытия не может быть в прошлом."
    }
  ],
  "request_id": "req-example-rules"
}

Все переданные записи найдены. Визит не создан из-за перечисленных ограничений.

Что делать во внешней системе

Проверяйте HTTP-статус и code. Если ответ содержит errors[], обрабатывайте каждый элемент по field и code и показывайте пользователю все errors[].message. Если errors[] отсутствует, показывайте общий message.

ОтветЧто делать
400 / 415Исправьте JSON или заголовок Content-Type.
401 / 403Проверьте токен, активность интеграции и компании.
422Исправьте указанные данные или устраните ограничения в Заездо. Повторите запрос с тем же external_id.
404Передайте отсутствующие справочники соответствующими PUT-методами. Для пользователя проверьте ручное сопоставление source_id. Затем повторите запрос с тем же external_id.
409Визит уже создан с другими исходными данными. Не меняйте external_id только ради обхода ошибки: это может создать лишний визит.
429Выдержите паузу из заголовка Retry-After и повторите запрос без изменения external_id и данных.
500 / 503 или обрыв связиРезультат записи может быть неизвестен. После паузы повторите исходный запрос с тем же external_id и теми же данными. При повторяющемся сбое передайте request_id поддержке.

Пример использования для 1С#

Задача: передать из 1С заявку на разгрузку на складе "WH-SEVER" на 3 ноября 2026 года, 10:30. У контрагента "CP-0042" ответственным назначен менеджер "AfoninGA". Идентификатор заявки — "ТД00-000015".

Шаг 1. Подготовьте доступ и данные

Получите API-токен в настройках интеграции Заездо. Во всех запросах ниже замените ВАШ_API_ТОКЕН его значением. Запросы отправляются по HTTPS на app.zaezdo.pro.

До создания визита передайте справочники отдельными методами. Для примера используются следующие идентификаторы:

Справочник и идентификаторПодготовительный запрос
Площадка "WH-SEVER"PUT /api/v1/sites/WH-SEVER
Контрагент "CP-0042"PUT /api/v1/counterparties/CP-0042
Автомобиль "VEH-0085"PUT /api/v1/vehicles/VEH-0085
Водитель "DRV-0017"PUT /api/v1/drivers/DRV-0017

В теле каждого PUT-запроса передаются данные соответствующего справочника. Дождитесь успешного ответа 201 или 200. Если автомобиль или водитель пока неизвестен, пропустите их подготовку и не включайте их идентификаторы в запрос визита.

В карточке нужного пользователя Заездо вручную укажите "AfoninGA" в поле «Идентификатор для синхронизации с 1С». Пользователь должен быть активен, иметь действующую учётную запись и роль «Менеджер» на площадке "WH-SEVER".

В 1С закрепите external_id = "ТД00-000015" за этой заявкой до отправки визита. При повторной отправке той же заявки идентификатор не меняйте.

Шаг 2. Проверьте ответственного

HTTP
GET /api/v1/users/AfoninGA?site_source_id=WH-SEVER HTTP/1.1
Host: app.zaezdo.pro
Authorization: Bearer ВАШ_API_ТОКЕН
Accept: application/json

Тело запроса не передаётся. В ответе HTTP 200 проверьте поле can_be_responsible_for_site.allowed. Для продолжения его значение должно быть true.

Шаг 3. Отправьте запрос создания визита

Сформируйте JSON из данных заявки 1С. Дата передаётся в формате ГГГГ-ММ-ДД ЧЧ:ММ.

HTTP
POST /api/v1/visits HTTP/1.1
Host: app.zaezdo.pro
Authorization: Bearer ВАШ_API_ТОКЕН
Content-Type: application/json

{
  "external_id": "ТД00-000015",
  "site_source_id": "WH-SEVER",
  "planned_arrival_at": "2026-11-03 10:30",
  "purpose": "UNLOADING",
  "counterparty_source_id": "CP-0042",
  "responsible_user_source_id": "AfoninGA",
  "vehicle_source_id": "VEH-0085",
  "driver_source_id": "DRV-0017",
  "basis": "Поставка по заявке №123"
}

Шаг 4. Сохраните результат в 1С

УСПЕШНОЕ СОЗДАНИЕ · HTTP 201 CREATED

JSON
{
  "id": "VST-EXAMPLE001",
  "external_id": "ТД00-000015",
  "created": true,
  "status": "PLANNED",
  "admission_status": "UNDEFINED"
}

Найдите в 1С заявку по external_id = "ТД00-000015". При необходимости сохраните для неё id = "VST-EXAMPLE001" и отметьте успешную передачу. PLANNED означает «Запланирован», UNDEFINED — «Не определён»: визит создан, но допуск на площадку ещё не разрешён. Дальнейшее управление допуском предполагается на стороне Заездо.

Если запрос не завершился успешно

Если users вернул allowed: false, устраните причину из reason до отправки визита. При ошибке POST обработайте все элементы errors[] согласно блоку «Что делать во внешней системе» на этой странице; не отмечайте заявку как успешно переданную.

Если ответ POST потерян, повторите тот же запрос с тем же external_id и теми же данными. Ответ 200 с created: false означает, что визит уже создан: сохраните возвращённый id без создания новой заявки.

← К соответствующему шагу «Быстрого старта»

↑ ↓ выбрать · Enter открытьПоиск работает локально