Выезды
Все операции. Авторизация. Запросы и повторы.
Все пути в этом файле дополняют /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'