Перейти к содержимому
СервисАпп API
На этой странице

Выезды

Все операции. Авторизация. Запросы и повторы.

Все пути в этом файле дополняют /api/v1 на домене организации.

Описание и ограничения

Назначение

Создание и ведение выездов по актам ремонта, монтажа и ТО: расписание, адрес, клиентское окно, состав бригады и связь с заявками обслуживания.

Доступные возможности и ограничения

Открыты все восемь методов таблицы ниже: чтение списка/карточки, создание, изменение, назначение времени, замена бригады, снятие назначения и допустимое удаление. Команды используют общую сохранённую запись об операции API; повтор возвращает исходный результат до повторного выполнения. Доступ к API — «Энтерпрайз», «Энтерпрайз Про» или действующий пробный период; «Энтерпрайз Лайт» не включает API.

Запись требует visits:write, «Акты приёма оборудования → Просмотр» и «Акты приёма оборудования → Изменение»; удаление — visits:delete, «Акты приёма оборудования → Просмотр» и «Акты приёма оборудования → Удаление». Под блокировками перепроверяются текущий акт, его мастерская и направление, версия, окно и участники. Сохранённый ответ требует текущих прав, в том числе на исходный акт после переноса выезда между актами. Удаление запрещено при вложениях, заявках ТО, истории прогресса или GPS-точках.

Требуются visits:read и текущее «Акты приёма оборудования → Просмотр». Доступ проверяется через связанный акт, условия ролей, мастерские подключения и доступность направления ремонта/монтажа/ТО. state — проекция planned, en_route, arrived или completed по акту и последнему событию; отдельное состояние выезд не сохраняется. GET не геокодирует адрес, не рассчитывает маршрут и не отправляет уведомления.

data.version — строка Unix-секунд из updated_at. Два изменения в одну секунду могут иметь одинаковую версию. Для проверки изменений используйте правила синхронизации. Карточка также возвращает отдельный ETag своего представления.

Время расписания и клиентского окна хранится как локальное время организации и явно преобразуется в UTC ISO 8601. duration_minutes — полная разность начала и окончания в минутах. Несуществующее или двусмысленное время при переходе DST даёт 409 VISIT_TIME_AMBIGUOUS; граница фильтра в повторяющемся локальном часе даёт 422.

API не запускает автоматическое платное определение координат по адресу. При смене адреса без новых координат прежняя точка очищается. Назначение или перенос времени создаёт задания на уведомление через подключённые клиентские боты Telegram и MAX. Успешный ответ подтверждает сохранение задания, но не доставку. Повтор запроса не создаёт второе уведомление. Создание черновика, изменение адреса или примечания и замена бригады без смены времени не создают клиентское уведомление.

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

Уведомления сотрудникам о замене бригады и переносе времени сохраняются в панели вместе с результатом команды. При ошибке они не создаются; повтор запроса не создаёт второе уведомление.

Поля и назначение

Публичное поле Формат и смысл Доступ
id, number id и номер только чтение
act_id обязательный доступный акт при создании
act_version предусловие создания выезда входное поле
customer_id, workshop_id производные связи только чтение
customer_site_id объект клиента акта/null чтение и запись
starts_at, ends_at дата и время/null; обе границы согласованы отдельная команда
crew_user_ids список сотрудников отдельная команда
client_window_start_at, client_window_end_at дата и время/null, только парой чтение и запись
planning_duration_minutes положительное целое число чтение и запись
duration_minutes полная длительность в минутах; legacy durations наружу не выдаётся только чтение
address, latitude, longitude, note адрес, координаты и заметка чтение и запись
state серверное состояние только чтение
custom_fields типизированные значения по схеме custom-fields чтение и запись

Обязательность и null указаны в схемах каждой операции ниже.

Доступ и выборка

visits:read/write/delete и «Акты приёма оборудования → Просмотр, Изменение, Удаление»; мастерская определяется через акт; исполнители — через сервер.

Фильтры: act_id, act_type, workshop_id, customer_id, customer_site_id, crew_user_id, starts_from/to, scheduled, completed.

Запросы команд

Для создания требуются act_id и act_version. Создаётся черновик без времени/бригады; planning_duration_minutes по умолчанию 60 (целое 15–10080). customer_site_id, address, координаты, note и клиентское окно необязательны, custom_fields по умолчанию []. Если адрес не указан, берётся адрес выбранного объекта, иначе адрес акта; источник фиксируется при принятии. Нельзя передать starts_at/ends_at/crew_user_ids через create/update. Создание — 201 с карточкой; устаревшая act_version — 412.

Команда JSON Результат
schedule обязательные starts_at, ends_at и crew_user_ids (1–100 уникальных ID) 200, новое расписание и полный состав бригады
assign обязательный crew_user_ids (1–100) 200, замена всей бригады, время сохраняется
unschedule {} 200, starts_at/ends_at=null, crew_user_ids=[]
delete {} 200 запись с признаком удаления; зависимая история — 409

Каждая команда существующего выезда требует If-Resource-Version выезда. starts_at < ends_at, длительность 15–10080 минут; интервалы событий — с поясом. Клиентское окно задаётся обеими границами или обеими null; вся работа помещается в него. Изменения custom_fields, адреса и окна проходят одну транзакцию. Конфликт клиентского окна — 422 CLIENT_WINDOW_MISMATCH; закрытый акт — 409 ACT_COMPLETED.

Ручные schedule/assign сохраняют действующую мягкую политику пересечений и рабочих часов: назначение разрешено с meta.warnings CREW_OVERLAP/CREW_UNAVAILABLE, после проверки всех участников. Чужой/недоступный сотрудник — жёсткий отказ. Сведения о скрытых выездах в предупреждение не раскрываются. Автоматический apply маршрута не допускает конфликтующих назначений. Актуальное состояние перепроверяется под блокировками бригады/выезда; повтор возвращает исходные warnings.

Правила и связи

  • Мастерская выезда определяется связанным актом.
  • Создание разрешает черновой выезд без времени/бригады; назначение проверяет длительность, обе границы и сотрудников.
  • Объект должен принадлежать клиенту связанного акта.
  • schedule и assign сравнивают актуальную версию под блокировкой, учитывают бригадные пересечения и клиентские окна.
  • unschedule снимает время/назначение, сохраняет акт, заявки ТО и аудит; это не отмена ремонта/обслуживания.
  • Завершённый акт не перепланируется без штатного повторного открытия.

Пример входных данных

{
  "act_id": 301,
  "act_version": "1793782800",
  "customer_site_id": 8,
  "address": "Тестовый адрес объекта",
  "client_window_start_at": "2026-11-02T09:00:00+03:00",
  "client_window_end_at": "2026-11-02T13:00:00+03:00",
  "planning_duration_minutes": 60
}

Операции

Метод Путь Назначение
GET /visits Список и календарная выборка
POST /visits Создание для доступного act_id
GET /visits/{id} Карточка выезда
POST /visits/{id}/update Изменение адреса, примечаний и клиентского окна
POST /visits/{id}/schedule Назначение или перенос времени и бригады
POST /visits/{id}/assign Изменение состава бригады
POST /visits/{id}/unschedule Снятие назначения с сохранением акта и заявок
POST /visits/{id}/delete Удаление только допустимого выезда без уничтожения истории актов

GET /visits

Выезды доступных актов; чтение не запускает расчёт маршрута или уведомления.

Доступ. Разрешения подключения: visits:read. Права сотрудника: «Акты приёма оборудования → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
filter[act_id] параметр запроса целое число нет нет ≥ 1
filter[workshop_id] параметр запроса целое число нет нет ≥ 1
filter[customer_id] параметр запроса целое число нет нет ≥ 1
filter[customer_site_id] параметр запроса целое число нет нет ≥ 1
filter[crew_user_id] параметр запроса целое число нет нет ≥ 1
filter[act_type] параметр запроса строка нет нет Допустимо: "repair", "installation", "maintenance"; Тип акта: ремонт (по умолчанию) / выездной монтаж / плановое ТО. На уровне БД хранится строковой колонкой acts.type, здесь — типизированный фасад.
filter[starts_from] параметр запроса строка (дата и время) нет нет не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2})$
filter[starts_to] параметр запроса строка (дата и время) нет нет не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2})$
filter[scheduled] параметр запроса строка нет нет Допустимо: "true", "false"
filter[completed] параметр запроса строка нет нет Допустимо: "true", "false"
sort параметр запроса строка нет нет Допустимо: "id", "-id"
page[size] параметр запроса целое число нет нет ≥ 1; ≤ 100
page[cursor] параметр запроса строка нет нет не более 8192 символов

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Cache-Control строка
401 Cache-Control строка
403 Cache-Control строка
409 Cache-Control строка
422 Cache-Control строка
429 Cache-Control строка
503 Cache-Control строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff \
  "$API/visits" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json"

POST /visits

Создание для доступного act_id.

Доступ. Разрешения подключения: visits:write. Права сотрудника: «Акты приёма оборудования → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Поле Тип Обязательно null Ограничения и смысл
customer_site_id целое число / null нет да ≥ 1
planning_duration_minutes целое число нет нет ≥ 15; ≤ 10080
address строка / null нет да не более 2000 символов
note строка / null нет да не более 10000 символов
latitude число / null нет да ≥ -90.0; ≤ 90.0
longitude число / null нет да ≥ -180.0; ≤ 180.0
client_window_start_at строка / null (дата и время) нет да не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$
client_window_end_at строка / null (дата и время) нет да не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$
custom_fields массив нет нет не более 100 элементов; Без повторов
custom_fields[] объект да нет Только перечисленные ключи
custom_fields[].field_id целое число да нет ≥ 1
custom_fields[].value строка / логическое значение / массив / объект / null да да —
custom_fields[].value (вариант 3) массив нет нет —
custom_fields[].value (вариант 3)[] строка да нет —
custom_fields[].value (вариант 4) объект нет нет —
custom_fields[].value (вариант 4).amount строка да нет —
custom_fields[].value (вариант 4).currency строка да нет —
act_id целое число да нет ≥ 1
act_version строка да нет не более 128 символов; Шаблон: ^[0-9]+$

Ответы

HTTP Назначение и схема
201 Создано. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
201 Location строка
201 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-store:001" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.store.json'

GET /visits/{id}

Карточка выезда с расписанием, бригадой и проекцией состояния акта.

Доступ. Разрешения подключения: visits:read. Права сотрудника: «Акты приёма оборудования → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
If-None-Match заголовок строка нет нет —

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
304 Представление не изменилось, без тела. Условный GET
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Cache-Control строка
200 ETag строка
304 Cache-Control строка
304 ETag строка
401 Cache-Control строка
403 Cache-Control строка
404 Cache-Control строка
409 Cache-Control строка
422 Cache-Control строка
429 Cache-Control строка
503 Cache-Control строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff \
  "$API/visits/101" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json"

POST /visits/{id}/update

Изменение адреса, примечаний и клиентского окна.

Доступ. Разрешения подключения: visits:write. Права сотрудника: «Акты приёма оборудования → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$
If-Resource-Version заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Поле Тип Обязательно null Ограничения и смысл
customer_site_id целое число / null нет да ≥ 1
planning_duration_minutes целое число нет нет ≥ 15; ≤ 10080
address строка / null нет да не более 2000 символов
note строка / null нет да не более 10000 символов
latitude число / null нет да ≥ -90.0; ≤ 90.0
longitude число / null нет да ≥ -180.0; ≤ 180.0
client_window_start_at строка / null (дата и время) нет да не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$
client_window_end_at строка / null (дата и время) нет да не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$
custom_fields массив нет нет не более 100 элементов; Без повторов
custom_fields[] объект да нет Только перечисленные ключи
custom_fields[].field_id целое число да нет ≥ 1
custom_fields[].value строка / логическое значение / массив / объект / null да да —
custom_fields[].value (вариант 3) массив нет нет —
custom_fields[].value (вариант 3)[] строка да нет —
custom_fields[].value (вариант 4) объект нет нет —
custom_fields[].value (вариант 4).amount строка да нет —
custom_fields[].value (вариант 4).currency строка да нет —

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Location строка
200 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits/101/update" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-update:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.update.json'

POST /visits/{id}/schedule

Назначение или перенос времени и бригады.

Доступ. Разрешения подключения: visits:write. Права сотрудника: «Акты приёма оборудования → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$
If-Resource-Version заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Поле Тип Обязательно null Ограничения и смысл
crew_user_ids массив да нет не менее 1 элементов; не более 100 элементов; Без повторов
crew_user_ids[] целое число да нет ≥ 1
starts_at строка (дата и время) да нет не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$
ends_at строка (дата и время) да нет не более 64 символов; Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|[+-]\d{2}:\d{2})$

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Location строка
200 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits/101/schedule" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-schedule:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.schedule.json'

POST /visits/{id}/assign

Изменение состава бригады.

Доступ. Разрешения подключения: visits:write. Права сотрудника: «Акты приёма оборудования → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$
If-Resource-Version заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Поле Тип Обязательно null Ограничения и смысл
crew_user_ids массив да нет не менее 1 элементов; не более 100 элементов; Без повторов
crew_user_ids[] целое число да нет ≥ 1

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Location строка
200 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits/101/assign" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-assign:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.assign.json'

POST /visits/{id}/unschedule

Снятие назначения с сохранением акта и заявок.

Доступ. Разрешения подключения: visits:write. Права сотрудника: «Акты приёма оборудования → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$
If-Resource-Version заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Тело — пустой JSON-объект {}. Другие ключи не принимаются.

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Location строка
200 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits/101/unschedule" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-unschedule:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.unschedule.json'

POST /visits/{id}/delete

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

Доступ. Разрешения подключения: visits:delete. Права сотрудника: «Акты приёма оборудования → Удаление». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
id путь строка да нет Шаблон: ^(?:[0-9]+)$
Idempotency-Key заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$
If-Resource-Version заголовок строка да нет не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$

Тело запроса

Content-Type: application/json. Тело обязательно.

Тело — пустой JSON-объект {}. Другие ключи не принимаются.

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
429 Лимит запросов, Retry-After. Коды и формат ошибки
503 Временно недоступно. Коды и формат ошибки
HTTP Заголовок ответа Тип Описание
200 Location строка
200 Idempotency-Replayed строка

Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.

У принятого POST Location и meta.operation_id указывают на журнал операции; ETag отсутствует. При повторе запроса сохраняются исходные data/meta, добавляется Idempotency-Replayed: true. Версии передавайте по назначению, указанному в описании ресурса.

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

Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.

curl --silent --show-error --globoff --request POST \
  "$API/visits/101/delete" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-visits-destroy:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.visits.destroy.json'