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

Показания наработки

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

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

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

Назначение

Получение текущих показаний и регистрация новой наработки с проверкой единицы и генерацией обслуживания при достижении порога.

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

Публичное поле Формат и смысл Доступ
reading неотрицательное целое число чтение и запись
usage_unit_id id действующей единицы; при записи обязателен и должен совпасть; настройка через equipment входное поле / только чтение
last_service_reading целое число только чтение
maintenance_interval целое число/null только чтение
remaining_until_maintenance целое число/null, без подмены отсутствующих данных нулём только чтение
plans массив id, next_due_usage и remaining; отдельные пороги планов только чтение
changed логическое значение, только в ответе POST только чтение

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

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

equipment_usage:read/write и «ТОиР — Оборудование → Просмотр, Изменение»; автоматическое создание ТО сохраняет тарифные ограничения.

Запрос и ответ

POST принимает ровно reading (целое число JSON >= 0) и usage_unit_id (целое число JSON > 0), оба обязательны. If-Resource-Version не требуется. Если единица не настроена — 409 USAGE_UNIT_NOT_CONFIGURED; несовпадение — 422 USAGE_UNIT_MISMATCH, без записи. Ответ 200 содержит текущее состояние usage, changed и meta.affected_resources с созданными заявками. Не превышающее максимум показание успешно возвращает changed=false.

maintenance_interval и верхнеуровневый remaining_until_maintenance описывают интервал по умолчанию карточки. При наличии активных usage/hybrid-планов верхнеуровневый remaining_until_maintenance=null, а фактические пороги передаются в plans: { "id": 3, "next_due_usage": 1500, "remaining": 120 }. Отрицательный remaining означает превышение; отсутствие настроенного порога — null. Справочник единиц сам по себе не назначает единицу оборудованию.

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

  • Показание reading, которое не превышает текущее, не меняет наработку. Ответ содержит changed=false и действующее показание.
  • Единицы не конвертируются молча; замена/сброс счётчика не маскируется под обычное показание.
  • Порог порождает заявку по действующим планам без дублей одного цикла.
  • GET возвращает текущее состояние наработки. История всех показаний через этот ресурс недоступна.

Операции

Метод Путь Назначение
GET /equipment/{id}/usage Текущие показания, единица и порог обслуживания
POST /equipment/{id}/usage Регистрация показания

GET /equipment/{id}/usage

Текущие показания, единица и порог обслуживания.

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

Параметры

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

Ответы

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

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

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

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

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

POST /equipment/{id}/usage

Регистрация показания.

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

Параметры

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

Тело запроса

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

Поле Тип Обязательно null Ограничения и смысл
reading целое число да нет ≥ 0; ≤ 9223372036854775807
usage_unit_id целое число да нет ≥ 1

Ответы

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

Каждый ответ содержит новый 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/equipment/101/usage" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-equipment-usage-store:001" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.equipment.usage.store.json'