Выполнение чек-листа ТО
Все операции. Авторизация. Запросы и повторы.
Все пути в этом файле дополняют /api/v1 на домене организации.
Описание и ограничения
Назначение
Зафиксированные пункты и результаты конкретной заявки, включая обязательность, исполнителя, примечание и версию.
Поля и назначение
| Публичное поле | Формат и смысл | Доступ |
|---|---|---|
id |
id результата |
только чтение |
title, description, is_required |
текст и обязательность ручного пункта; после создания неизменяемы | при создании / только чтение |
is_completed, note |
логическое значение и примечание/null | чтение и запись |
completed_by, completed_at |
исполнитель и время от сервера | только чтение |
version |
целое число версии | только чтение / ожидаемая версия |
operation_id, equipment_checklist_id, scenario_checklist_item_id |
источник пункта | только чтение |
Обязательность и null указаны в схемах каждой операции ниже.
Доступ и выборка
maintenance_checklists:read/write и «ТОиР — Обслуживание → Просмотр, Изменение»; изменение закрытой заявки или заявки закрытого родительского акта запрещено до возврата в работу. Право изменения паспорта оборудования, отдельные разрешения на чтение заявки и актов для команд не требуются. Проверяются текущая мастерская, неудалённое оборудование и клиент. Сохранённая запись об операции и событие учитывают исходную мастерскую и текущего родителя пункта; удалённый или перенесённый в другую заявку пункт не авторизуется по историческому снимку.
Запросы и результаты команд
- GET возвращает
data.itemsиdata.schedule_version, читает только сохранённые строки и не инициализирует сохранённый снимок. Query-параметры не поддерживаются. initialize:{},If-Resource-Versionзаявки; 200,data.items— сохранённые результаты,data.schedule_version— версия заявки после команды. Существующие результаты не пересоздаются и сохраняют зафиксированные текст и обязательность. При отсутствии изменений версия и списокaffected_resourcesсохраняются.- Создание ручного пункта: обязательный
title(непустая строка до 255), необязательныеdescription(строка до 10000 или null, default null) иis_required(boolean, default false).If-Resource-Versionзаявки; 201 с карточкой пункта. Сервер задаётsource=manual,is_completed=false и порядок. Передачаsource,completed_by,operation_idилиis_completedпри создании — 422. update: обязательная целаяversion >= 1и хотя бы одно из полейis_completed(логическое значение) илиnote(строка до 10000 символов или null). Версия пункта передаётся в теле;If-Resource-Versionне принимается. Успех — 200 с обновлённым пунктом. Отсутствующее поле сохраняется. Снятие отметки выполнения очищаетcompleted_byиcompleted_at, сохраняя примечание, еслиnoteне передано. Оба поля изменяются вместе после одной проверки версии.title,descriptionиis_requiredне принимаются. Пробелы по краям примечания удаляются, пустое значение сохраняется как null. Запрос с текущими значениями и актуальной версией не меняет запись и не создаёт событие; устаревшая версия возвращает 412 даже при совпадающемis_completed.- Несовпадение версии пункта — 412; закрытая заявка — 409
MAINTENANCE_NOT_MUTABLE. Ошибка не сохраняет частичный результат. Версия заявки меняется вместе с пунктом и возвращается вmeta.affected_resources.
Правила и связи
- Команда устанавливает
is_completed=true/false, а не toggle: повтор никогда не инвертирует результат. - Ожидаемая версия проверяется под блокировкой; повтор с тем же ключом возвращает старую запись об операции до новой проверки перехода.
- Сервер назначает
completed_byиcompleted_at; клиент не подделывает подпись другого мастера. - Новые шаблонные изменения не переписывают сохранённый снимок выполнения.
- При инициализации шаблоны и работы читаются текущими чтениями. Пункты без
operation_idразличаются по собственному ID; несколько ручных пунктов оборудования и сценария не схлопываются в один. - События
maintenance_checklist.createdиmaintenance_checklist.updatedсодержат ссылку на пункт и его версию. Изменение пункта также обновляет версию заявки. Если сохранить результат целиком не удалось, изменения не применяются.
Операции
| Метод | Путь | Назначение |
|---|---|---|
| GET | /maintenance-schedules/{schedule_id}/checklist-results |
Сохранённые результаты |
| POST | /maintenance-schedules/{schedule_id}/checklist-results |
Добавление ручного пункта |
| POST | /maintenance-schedules/{schedule_id}/checklist-results/initialize |
Подготовка сохранённого чек-листа заявки |
| POST | /maintenance-schedules/{schedule_id}/checklist-results/{id}/update |
Сохранение отметки выполнения и примечания с проверкой версии |
GET /maintenance-schedules/{schedule_id}/checklist-results
Сохранённые результаты.
Доступ. Разрешения подключения: maintenance_checklists:read. Права сотрудника: «ТОиР — Обслуживание → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
schedule_id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.
Пример запроса
Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.
curl --silent --show-error --globoff \
"$API/maintenance-schedules/101/checklist-results" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"
POST /maintenance-schedules/{schedule_id}/checklist-results
Добавление ручного пункта.
Доступ. Разрешения подключения: maintenance_checklists:write. Права сотрудника: «ТОиР — Обслуживание → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
schedule_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 | Ограничения и смысл |
|---|---|---|---|---|
title |
строка | да | нет | не более 255 символов |
description |
строка / null | нет | да | не более 10000 символов |
is_required |
логическое значение | нет | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 201 | Создано. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 412 | Версия устарела. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 428 | Нужно предусловие версии. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 201 | Location |
строка |
Каждый ответ содержит новый 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/maintenance-schedules/101/checklist-results" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-checklists-store:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-checklists.store.json'
POST /maintenance-schedules/{schedule_id}/checklist-results/initialize
Подготовка сохранённого чек-листа заявки.
Доступ. Разрешения подключения: maintenance_checklists:write. Права сотрудника: «ТОиР — Обслуживание → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
schedule_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 |
строка |
Каждый ответ содержит новый 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/maintenance-schedules/101/checklist-results/initialize" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-checklists-initialize:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-checklists.initialize.json'
POST /maintenance-schedules/{schedule_id}/checklist-results/{id}/update
Сохранение отметки выполнения и примечания с проверкой версии.
Доступ. Разрешения подключения: maintenance_checklists:write. Права сотрудника: «ТОиР — Обслуживание → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
schedule_id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
version |
целое число | да | нет | ≥ 1 |
is_completed |
логическое значение | нет | нет | — |
note |
строка / null | нет | да | не более 10000 символов |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 412 | Версия устарела. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 428 | Нужно предусловие версии. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 200 | Location |
строка |
Каждый ответ содержит новый 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/maintenance-schedules/101/checklist-results/101/update" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-checklists-update:001" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-checklists.update.json'