Шаблоны работ и сценарии ТО
Все операции. Авторизация. Запросы и повторы.
Все пути в этом файле дополняют /api/v1 на домене организации.
Описание и ограничения
Назначение
Шаблон чек-листа, полей мастера и правил расчёта/обновления параметров оборудования.
Доступные возможности и ограничения
Реализованы список и карточка, создание, изменение, архивация, симуляция, экспорт и импорт. Доступ к API — «Энтерпрайз», «Энтерпрайз Про» или действующий пробный период; «Энтерпрайз Лайт» не включает API.
Для GET нужны maintenance_scenarios:read, «ТОиР — Обслуживание → Просмотр» и текущий доступ к ТОИР. Для POST нужны maintenance_scenarios:write, права просмотра/изменения ТО и обязательный Idempotency-Key. Изменение, архивация и симуляция требуют If-Resource-Version сценария. Создание и импорт создают новую запись и не принимают условную версию.
data.version — строка Unix-секунд из updated_at. Два изменения в одну секунду могут иметь одинаковую версию. Для проверки изменений используйте правила синхронизации. Карточка также возвращает отдельный ETag своего представления. Изменения типов оборудования, пунктов и определений полей обновляют также версию сценария.
Поля и назначение
| Публичное поле | Формат и смысл | Доступ |
|---|---|---|
id, name, key |
id, название, стабильный код |
только чтение / чтение и запись |
description, is_active |
описание и доступность | чтение и запись |
equipment_state_key |
разрешённый ключ состояния | чтение и запись |
calculation_rules |
структура правил по схеме движка | чтение и запись |
device_type_ids |
разрешённые типы оборудования | чтение и запись |
custom_fields |
ссылки на определения полей | только чтение |
Обязательность и null указаны в схемах каждой операции ниже.
Доступ и выборка
maintenance_scenarios:read/write, «ТОиР — Обслуживание → Просмотр, Изменение» и тариф; права создания полей учитываются отдельно.
Фильтры: q, key, is_active, device_type_id.
Правила и связи
- Допустимы только действия и поля, перечисленные в схеме правил. Произвольный программный код не выполняется.
- Изменение шаблона не переписывает сохранённый снимок сценария и результаты начатой заявки.
- Зарезервированные коды полей не могут быть переопределены.
Форматы команд
Создание принимает name, key и необязательные description, is_active, equipment_state_key, calculation_rules, device_type_ids. Имя ограничено 255 символами; код и ключ состояния — 191 символом, содержат строчные латинские буквы, цифры, дефис или подчёркивание и начинаются с буквы. Ключ состояния по умолчанию равен коду. Новый сценарий активен, без правил и привязанных типов. /update принимает тот же явный набор полей частично. Неизвестные поля, строковые ID и строковые boolean отклоняются. Создание возвращает 201, изменение — 200; конфликт кода — 409.
/archive принимает {} и устанавливает is_active=false. Сценарий, его поля, сохранённые снимки и результаты не удаляются. При первом переходе в архив публикуется maintenance_scenario.archived; прочее фактическое изменение — maintenance_scenario.updated. Запрос без изменений не меняет маркер и не создаёт событий.
calculation_rules — список не более 100 правил. Правило содержит when и/или визуальное when_json, а также do: одно действие или список до 20 действий. Используются только зарегистрированные действия штатного движка: set_today, set_relative_date, set_value, increment, compute. Выражения проверяются движком, ограничены 500 символами; неизвестные действия и поля структуры отклоняются. target — ключ карты состояния, а не путь записи в модель. JSON-условия принимают ограниченные группы and/or и поддерживаемые движком операторы; глубина ограничена восемью уровнями.
Симуляция
POST /maintenance-scenarios/{id}/simulate принимает необязательные fields, state, equipment, customer (плоские JSON-объекты со скалярными значениями), today (Y-m-d) и days_since_last_maintenance. Это демонстрационный контекст: реальные записи оборудования и клиентов не загружаются. Можно проверить правила над переданными примерами без доступа к приватным данным других ресурсов.
Экспорт и импорт
- Имена типов и работ должны однозначно определять доступную запись. Отсутствующие, недоступные и неоднозначные ссылки отклоняют весь импорт. Каталог автоматически не пополняется.
- Если пакет создаёт определения полей, дополнительно нужны
custom_fields:writeи «Системные настройки → Информация о компании»; без них импорт полностью отклоняется. Зарезервированные и повторяющиеся коды полей запрещены. - Допускается не более 100 полей, 100 вариантов на поле и 100 пунктов чек-листа. Значение варианта
"0"сохраняется. Ручной пункт требует непустого описания. - Если необязательная контрольная сумма пакета
fingerprintне совпадает, после проверки схемы и ссылок возвращается предупреждениеSCENARIO_IMPORT_WARNING. Это поле не является версией ресурса. - Сценарий, определения полей, варианты и пункты чек-листа создаются вместе с результатом операции и событиями. Ошибка любого элемента отменяет весь импорт.
Операции
| Метод | Путь | Назначение |
|---|---|---|
| GET | /maintenance-scenarios |
Список с фильтрами и пагинацией |
| POST | /maintenance-scenarios |
Создание |
| GET | /maintenance-scenarios/{id} |
Карточка |
| POST | /maintenance-scenarios/import |
Проверяемый импорт шаблона |
| POST | /maintenance-scenarios/{id}/update |
Изменение разрешённых полей |
| POST | /maintenance-scenarios/{id}/archive |
Архивация или удаление с проверкой зависимостей |
| POST | /maintenance-scenarios/{id}/simulate |
Проверка расчётных правил без изменения оборудования |
| GET | /maintenance-scenarios/{id}/export |
Экспорт схемы шаблона |
GET /maintenance-scenarios
Список с фильтрами и пагинацией.
Доступ. Разрешения подключения: maintenance_scenarios:read. Права сотрудника: «ТОиР — Обслуживание → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
sort |
параметр запроса | строка | нет | нет | Допустимо: "id", "-id" |
page[size] |
параметр запроса | целое число | нет | нет | ≥ 1; ≤ 100 |
page[cursor] |
параметр запроса | строка | нет | нет | не более 8192 символов |
filter[q] |
параметр запроса | строка | нет | нет | не более 200 символов |
filter[key] |
параметр запроса | строка | нет | нет | не более 255 символов |
filter[is_active] |
параметр запроса | строка | нет | нет | Допустимо: "true", "false" |
filter[device_type_id] |
параметр запроса | целое число | нет | нет | ≥ 1 |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.
Пример запроса
Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.
curl --silent --show-error --globoff \
"$API/maintenance-scenarios" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"
POST /maintenance-scenarios
Создание.
Доступ. Разрешения подключения: maintenance_scenarios:write. Права сотрудника: «ТОиР — Обслуживание → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
name |
строка | да | нет | не более 255 символов |
key |
строка | да | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
description |
строка / null | нет | да | не более 10000 символов |
is_active |
логическое значение | нет | нет | — |
equipment_state_key |
строка | нет | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
calculation_rules |
массив / null | нет | да | не более 100 элементов |
calculation_rules[] |
объект | да | нет | — |
device_type_ids |
массив | нет | нет | не более 100 элементов; Без повторов |
device_type_ids[] |
целое число | да | нет | ≥ 1 |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 201 | Создано. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 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-scenarios" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-scenarios-create:001" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-scenarios.create.json'
GET /maintenance-scenarios/{id}
Карточка.
Доступ. Разрешения подключения: maintenance_scenarios:read. Права сотрудника: «ТОиР — Обслуживание → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
If-None-Match |
заголовок | строка | нет | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 304 | Представление не изменилось, без тела. Условный GET |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 200 | ETag |
строка | |
| 304 | ETag |
строка |
Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.
Пример запроса
Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.
curl --silent --show-error --globoff \
"$API/maintenance-scenarios/101" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"
POST /maintenance-scenarios/import
Проверяемый импорт шаблона.
Доступ. Разрешения подключения: maintenance_scenarios:write. Права сотрудника: «ТОиР — Обслуживание → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
format_version |
целое число | да | нет | Допустимо: 1 |
exported_at |
строка | нет | нет | не более 100 символов |
fingerprint |
строка | нет | нет | не более 100 символов |
scenario |
объект | да | нет | Только перечисленные ключи |
scenario.name |
строка | да | нет | не более 255 символов |
scenario.key |
строка | да | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
scenario.description |
строка / null | нет | да | не более 10000 символов |
scenario.is_active |
логическое значение | нет | нет | — |
scenario.equipment_state_key |
строка | нет | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
scenario.calculation_rules |
массив / null | нет | да | не более 100 элементов |
scenario.calculation_rules[] |
объект | да | нет | — |
scenario.device_type_names |
массив | нет | нет | не более 100 элементов; Без повторов |
scenario.device_type_names[] |
строка | да | нет | не более 255 символов |
scenario.custom_fields |
массив | нет | нет | не более 100 элементов |
scenario.custom_fields[] |
объект | да | нет | Только перечисленные ключи |
scenario.custom_fields[].name |
строка | да | нет | не более 255 символов |
scenario.custom_fields[].code |
строка | да | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_]*$; Запрещено: {"enum": ["today", "state", "equipment", "customer", "days_since_last_maintenance"]} |
scenario.custom_fields[].type |
строка | да | нет | Допустимо: "text", "textarea", "richtext", "number", "money", "phone", "select", "multiselect", "date", "datetime", "toggle", "url", "email", "radio", "checkbox_list" |
scenario.custom_fields[].is_required |
логическое значение | нет | нет | — |
scenario.custom_fields[].is_active |
логическое значение | нет | нет | — |
scenario.custom_fields[].sort_order |
целое число | нет | нет | ≥ 0; ≤ 2147483647 |
scenario.custom_fields[].options |
массив / null | нет | да | не более 100 элементов |
scenario.custom_fields[].field_options |
массив | нет | нет | не более 100 элементов |
scenario.custom_fields[].field_options[] |
объект | да | нет | Только перечисленные ключи |
scenario.custom_fields[].field_options[].value |
строка | да | нет | не более 255 символов |
scenario.custom_fields[].field_options[].label |
строка | да | нет | не более 255 символов |
scenario.custom_fields[].field_options[].sort_order |
целое число | нет | нет | ≥ 0; ≤ 2147483647 |
scenario.checklist_items |
массив | нет | нет | не более 100 элементов |
scenario.checklist_items[] |
объект | да | нет | Только перечисленные ключи |
scenario.checklist_items[].operation_name |
строка / null | нет | да | не более 255 символов |
scenario.checklist_items[].description |
строка / null | нет | да | не более 10000 символов |
scenario.checklist_items[].sort_order |
целое число | нет | нет | ≥ 0; ≤ 4294967295 |
scenario.checklist_items[].is_required |
логическое значение | нет | нет | — |
scenario.checklist_items[].is_active |
логическое значение | нет | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 201 | Создано. Полная схема и пример |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 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-scenarios/import" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-scenarios-import:001" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-scenarios.import.json'
POST /maintenance-scenarios/{id}/update
Изменение разрешённых полей.
Доступ. Разрешения подключения: maintenance_scenarios: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 | Ограничения и смысл |
|---|---|---|---|---|
name |
строка | нет | нет | не более 255 символов |
key |
строка | нет | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
description |
строка / null | нет | да | не более 10000 символов |
is_active |
логическое значение | нет | нет | — |
equipment_state_key |
строка | нет | нет | не более 191 символов; Шаблон: ^[a-z][a-z0-9_-]*$ |
calculation_rules |
массив / null | нет | да | не более 100 элементов |
calculation_rules[] |
объект | да | нет | — |
device_type_ids |
массив | нет | нет | не более 100 элементов; Без повторов |
device_type_ids[] |
целое число | да | нет | ≥ 1 |
Ответы
| 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-scenarios/101/update" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-scenarios-update:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-scenarios.update.json'
POST /maintenance-scenarios/{id}/archive
Архивация или удаление с проверкой зависимостей.
Доступ. Разрешения подключения: maintenance_scenarios: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 |
строка |
Каждый ответ содержит новый 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-scenarios/101/archive" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-scenarios-archive:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-scenarios.archive.json'
POST /maintenance-scenarios/{id}/simulate
Проверка расчётных правил без изменения оборудования.
Доступ. Разрешения подключения: maintenance_scenarios: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 | Ограничения и смысл |
|---|---|---|---|---|
fields |
объект | нет | нет | Демонстрационные данные для проверки правил. Допустимые поля equipment и customer перечислены в описании сценариев. |
fields.{ключ} |
строка / число / логическое значение / null | нет | да | — |
state |
объект | нет | нет | Демонстрационные данные для проверки правил. Допустимые поля equipment и customer перечислены в описании сценариев. |
state.{ключ} |
строка / число / логическое значение / null | нет | да | — |
equipment |
объект | нет | нет | Демонстрационные данные для проверки правил. Допустимые поля equipment и customer перечислены в описании сценариев. |
equipment.{ключ} |
строка / число / логическое значение / null | нет | да | — |
customer |
объект | нет | нет | Демонстрационные данные для проверки правил. Допустимые поля equipment и customer перечислены в описании сценариев. |
customer.{ключ} |
строка / число / логическое значение / null | нет | да | — |
today |
строка (дата) | нет | нет | — |
days_since_last_maintenance |
целое число / null | нет | да | ≥ 0; ≤ 365000 |
Ответы
| 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-scenarios/101/simulate" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-maintenance-scenarios-simulate:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.maintenance-scenarios.simulate.json'
GET /maintenance-scenarios/{id}/export
Экспорт схемы шаблона.
Доступ. Разрешения подключения: maintenance_scenarios:read. Права сотрудника: «ТОиР — Обслуживание → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
If-None-Match |
заголовок | строка | нет | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 304 | Представление не изменилось, без тела. Условный GET |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 200 | ETag |
строка | |
| 304 | ETag |
строка |
Каждый ответ содержит новый X-Request-Id в заголовке. Общие транспортные отказы и правила повтора действуют также при отказе до контроллера; см. ошибки.
Пример запроса
Запускается из каталога комплекта после настройки переменных в быстром старте. Замените демонстрационные идентификаторы 101 и UUID идентификаторами доступных записей. $RESOURCE_VERSION берётся из GET владельца версии, описанного выше. Для нового действия сохраните новый ключ; для повтора используйте прежний.
curl --silent --show-error --globoff \
"$API/maintenance-scenarios/101/export" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"