Оборудование клиентов
Все операции. Авторизация. Запросы и повторы.
Все пути в этом файле дополняют /api/v1 на домене организации.
Описание и ограничения
Назначение
Карточки оборудования с клиентом, объектом, паспортом, гарантией и эксплуатационными параметрами.
Доступные возможности и ограничения
Нужны equipment:read, «ТОиР — Оборудование → Просмотр» и доступ к ТОиР. GET не создаёт историю, чек-листы или заявки. Для GET /equipment/{id}/history используйте filter[kind]=maintenance-schedules или acts; по умолчанию возвращаются заявки ТО. Каждый вид использует пагинацию по идентификатору и требует разрешения на чтение соответствующего ресурса и прав сотрудника. Календарные даты возвращаются как Y-m-d без перевода часового пояса. Дополнительные поля следуют правилам типов. technical_specs принимает JSON-объект или null: до 32 КиБ, не более восьми уровней вложенности. Типы значений сохраняются. GET возвращает объект, а для старых текстовых паспортов — прежнюю строку или null.
data.version — строка Unix-секунд из updated_at. Два изменения в одну секунду могут иметь одинаковую версию. Для проверки изменений используйте правила синхронизации. Карточка также возвращает отдельный ETag своего представления. Изменение установленного оснащения обновляет также версию оборудования.
updated_since и updated_before выбирают записи по updated_at: нижняя граница включается (>=), верхняя исключается (<). Эти фильтры не гарантируют обнаружение всех изменений наработки, обслуживания и связанных данных. Используйте события и полную сверку по правилам синхронизации.
Поля и назначение
| Публичное поле | Формат и смысл | Доступ |
|---|---|---|
id, name |
id и название |
только чтение / чтение и запись |
customer_id, customer_site_id |
обязательный клиент и необязательный объект | чтение и запись |
equipment_model_id |
UUID/null модели оборудования | чтение и запись |
manufacturer_id, device_type_id |
доступные справочники | чтение и запись |
model_name, serial_number, inventory_number |
строки/null | чтение и запись |
manufacture_date, installation_date, warranty_expires_at |
календарные даты/null | чтение и запись |
catalog_product_id, location, technical_specs |
товар, местоположение и структурированный паспорт | чтение и запись |
status |
active / inactive / decommissioned / repair / pending_install |
отдельная команда |
last_maintenance_date, next_maintenance_date |
календарные даты, вычисляются жизненным циклом ТО | только чтение |
usage_reading |
целое число, запись через equipment-usage | только чтение |
usage_unit_id |
id единицы/null; первичная настройка счётчика |
чтение и запись |
maintenance_interval |
положительное целое число/null; интервал по умолчанию ТО без индивидуальных планов | чтение и запись |
links |
edit/portal/public, строка либо null; GET не выпускает новый токен | только чтение |
note, custom_fields, external_id |
явные значения | чтение и запись |
Обязательность и null указаны в схемах каждой операции ниже.
Доступ и выборка
Карточка содержит ссылки только для чтения: links.edit, links.portal, links.public: редактирование в панели, карточку клиентского кабинета и существующий QR-паспорт. У старой записи без public_token публичная ссылка равна null; GET не генерирует токен. Для pending_install ссылки в портал и на публичный паспорт равны null. Отключённый раздел портала возвращает links.portal=null.
equipment:read/write и «ТОиР — Оборудование → Просмотр, Изменение»; тариф модуля; для истории актов также право их чтения.
Фильтры: customer_id, customer_site_id, equipment_model_id, manufacturer_id, device_type_id, status, serial_number, external_id, updated_since, updated_before.
Настройка счётчика
usage_unit_id можно задать при создании и при первом изменении. При создании обязательны customer_id и name. По умолчанию status=active, usage_reading=0; usage_unit_id и maintenance_interval равны null, если не настроены. Для ненулевого maintenance_interval нужна единица наработки. После создания показания записываются отдельной командой наработки. Поле usage_reading не принимается при создании и обычном изменении.
Смена или очистка единицы разрешена только пока usage_current=0, usage_at_last_service=0 и нет связанных usage/hybrid-планов, регламентов или истории выполнения с наработкой. Иначе 409 USAGE_UNIT_IN_USE; API не меняет смысл прежние показания. Возврат той же единицы допустим. maintenance_interval относится к существующему механизму обслуживания по умолчанию; интервалы индивидуальных планов настраиваются через maintenance-plans, и ответ usage показывает их отдельно.
POST /equipment/{id}/status принимает { "status": "inactive" } с If-Resource-Version. Допустимы active/inactive/decommissioned/repair с доменными проверками; pending_install доступен только через монтаж. Ответ 200 — актуальная карточка. При конфликте открытых процессов — 409 EQUIPMENT_STATE_CONFLICT.
Правила и связи
- Объект принадлежит клиенту; новое назначение проверяет актуальную неархивированную запись под блокировкой. Прежняя связь с архивным объектом сохраняется при изменении других полей. Каталожная модель и экземпляр оборудования остаются разными сущностями.
- Смена клиента/объекта оборудования не может нарушить уже согласованный состав договора обслуживания: конфликт возвращает 422 с полем
customer_idилиcustomer_site_id. Штатная запись проверяет то же правило. Перенос самой площадки к другому клиенту разрешён только без оборудования и остальных зависимостей, с текущей блокировкой площадки; правила описаны в customer-sites.md. - pending_install создаётся доменным путём монтажа, а не произвольным изменением status.
- Списание/деактивация оборудования не удаляет планы и историю обслуживания.
- scenario_state,
act_product_id, производные даты и сохранённый снимок не принимаются командой изменения. - Запись показаний и дата завершения ТО проходят свои операции; нельзя обойти их через technical_specs.
Операции
| Метод | Путь | Назначение |
|---|---|---|
| GET | /equipment/{id}/history |
История обслуживания и связанных актов |
| POST | /equipment |
Создание |
| GET | /equipment |
Список с фильтрами и пагинацией |
| POST | /equipment/{id}/update |
Изменение разрешённых полей |
| POST | /equipment/{id}/status |
Смена эксплуатационного состояния |
| GET | /equipment/{id} |
Карточка |
GET /equipment/{id}/history
История обслуживания и связанных актов.
Доступ. Разрешения подключения: equipment:read. Права сотрудника: «ТОиР — Оборудование → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
filter[kind] |
параметр запроса | строка | нет | нет | Допустимо: "maintenance-schedules", "acts"; По умолчанию: "maintenance-schedules" |
sort |
параметр запроса | строка | нет | нет | Допустимо: "id", "-id" |
page[size] |
параметр запроса | целое число | нет | нет | ≥ 1.0; ≤ 100.0 |
page[cursor] |
параметр запроса | строка | нет | нет | не более 4096 символов |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 400 | Некорректный запрос. Коды и формат ошибки |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 406 | Недопустимое кодирование ответа. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 500 | Внутренняя ошибка, исход нужно уточнить. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 200 | Cache-Control |
строка | |
| 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/history" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"
POST /equipment
Создание.
Доступ. Разрешения подключения: equipment:write. Права сотрудника: «ТОиР — Оборудование → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
customer_id |
целое число | да | нет | ≥ 1 |
name |
строка | да | нет | не более 255 символов |
customer_site_id |
целое число / null | нет | да | ≥ 1 |
equipment_model_id |
строка / null (uuid) | нет | да | — |
manufacturer_id |
целое число / null | нет | да | ≥ 1 |
device_type_id |
целое число / null | нет | да | ≥ 1 |
model_name |
строка / null | нет | да | не более 255 символов |
serial_number |
строка / null | нет | да | не более 255 символов |
inventory_number |
строка / null | нет | да | не более 255 символов |
manufacture_date |
строка / null (дата) | нет | да | — |
installation_date |
строка / null (дата) | нет | да | — |
warranty_expires_at |
строка / null (дата) | нет | да | — |
catalog_product_id |
целое число / null | нет | да | ≥ 1 |
location |
строка / null | нет | да | не более 2000 символов |
technical_specs |
массив / null | нет | да | — |
technical_specs[] |
строка | да | нет | — |
usage_unit_id |
целое число / null | нет | да | ≥ 1 |
maintenance_interval |
целое число / null | нет | да | ≥ 1; ≤ 4294967295 |
note |
строка / null | нет | да | не более 10000 символов |
external_id |
строка / null | нет | да | не менее 1 символов; не более 255 символов |
custom_fields |
массив | нет | нет | не более 100 элементов |
custom_fields[] |
строка | да | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 201 | Создано. Полная схема и пример |
| 400 | Некорректный запрос. Коды и формат ошибки |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 406 | Недопустимое кодирование ответа. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 413 | Превышен размер. Коды и формат ошибки |
| 415 | Неподдерживаемый Content-Type. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 429 | Лимит запросов, Retry-After. Коды и формат ошибки |
| 500 | Внутренняя ошибка, исход нужно уточнить. Коды и формат ошибки |
| 503 | Временно недоступно. Коды и формат ошибки |
| HTTP | Заголовок ответа | Тип | Описание |
|---|---|---|---|
| 201 | Cache-Control |
строка | |
| 201 | Location |
строка | |
| 201 | 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" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-equipment-store:001" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.equipment.store.json'
GET /equipment
Список с фильтрами и пагинацией.
Доступ. Разрешения подключения: equipment:read. Права сотрудника: «ТОиР — Оборудование → Просмотр». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
sort |
параметр запроса | строка | нет | нет | Допустимо: "id", "-id", "updated_at,id", "-updated_at,-id" |
page[size] |
параметр запроса | целое число | нет | нет | ≥ 1; ≤ 100 |
page[cursor] |
параметр запроса | строка | нет | нет | не более 8192 символов |
filter[customer_id] |
параметр запроса | целое число | нет | нет | ≥ 1 |
filter[customer_site_id] |
параметр запроса | целое число | нет | нет | ≥ 1 |
filter[equipment_model_id] |
параметр запроса | строка (uuid) | нет | нет | — |
filter[manufacturer_id] |
параметр запроса | целое число | нет | нет | ≥ 1 |
filter[device_type_id] |
параметр запроса | целое число | нет | нет | ≥ 1 |
filter[status] |
параметр запроса | строка | нет | нет | Допустимо: "active", "inactive", "decommissioned", "repair", "pending_install" |
filter[serial_number] |
параметр запроса | строка | нет | нет | не более 255 символов |
filter[external_id] |
параметр запроса | строка | нет | нет | не более 255 символов |
filter[updated_since] |
параметр запроса | строка (дата и время) | нет | нет | Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2})$ |
filter[updated_before] |
параметр запроса | строка (дата и время) | нет | нет | Шаблон: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2})$ |
Ответы
| 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/equipment" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"
POST /equipment/{id}/update
Изменение разрешённых полей.
Доступ. Разрешения подключения: equipment:write. Права сотрудника: «ТОиР — Оборудование → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
If-Resource-Version |
заголовок | строка | да | нет | Unix-секунды updated_at выбранного ресурса.; не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
customer_id |
целое число | нет | нет | ≥ 1 |
name |
строка | нет | нет | не более 255 символов |
customer_site_id |
целое число / null | нет | да | ≥ 1 |
equipment_model_id |
строка / null (uuid) | нет | да | — |
manufacturer_id |
целое число / null | нет | да | ≥ 1 |
device_type_id |
целое число / null | нет | да | ≥ 1 |
model_name |
строка / null | нет | да | не более 255 символов |
serial_number |
строка / null | нет | да | не более 255 символов |
inventory_number |
строка / null | нет | да | не более 255 символов |
manufacture_date |
строка / null (дата) | нет | да | — |
installation_date |
строка / null (дата) | нет | да | — |
warranty_expires_at |
строка / null (дата) | нет | да | — |
catalog_product_id |
целое число / null | нет | да | ≥ 1 |
location |
строка / null | нет | да | не более 2000 символов |
technical_specs |
массив / null | нет | да | — |
technical_specs[] |
строка | да | нет | — |
usage_unit_id |
целое число / null | нет | да | ≥ 1 |
maintenance_interval |
целое число / null | нет | да | ≥ 1; ≤ 4294967295 |
note |
строка / null | нет | да | не более 10000 символов |
external_id |
строка / null | нет | да | не менее 1 символов; не более 255 символов |
custom_fields |
массив | нет | нет | не более 100 элементов |
custom_fields[] |
строка | да | нет | — |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 400 | Некорректный запрос. Коды и формат ошибки |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 406 | Недопустимое кодирование ответа. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 412 | Версия устарела. Коды и формат ошибки |
| 413 | Превышен размер. Коды и формат ошибки |
| 415 | Неподдерживаемый Content-Type. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 428 | Нужно предусловие версии. Коды и формат ошибки |
| 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 |
строка | |
| 412 | Cache-Control |
строка | |
| 413 | Cache-Control |
строка | |
| 415 | Cache-Control |
строка | |
| 422 | Cache-Control |
строка | |
| 428 | 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/update" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-equipment-update:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.equipment.update.json'
POST /equipment/{id}/status
Смена эксплуатационного состояния.
Доступ. Разрешения подключения: equipment:write. Права сотрудника: «ТОиР — Оборудование → Изменение». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.
Параметры
| Имя | Где | Тип | Обязательно | null | Ограничения |
|---|---|---|---|---|---|
Authorization |
заголовок | строка | да | нет | Bearer <SERVICEAPP_TOKEN> |
id |
путь | строка | да | нет | Шаблон: ^(?:[0-9]+)$ |
Idempotency-Key |
заголовок | строка | да | нет | не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._:-]+$ |
If-Resource-Version |
заголовок | строка | да | нет | Unix-секунды updated_at выбранного ресурса.; не менее 1 символов; не более 128 символов; Шаблон: ^[A-Za-z0-9._~-]+$ |
Тело запроса
Content-Type: application/json. Тело обязательно.
| Поле | Тип | Обязательно | null | Ограничения и смысл |
|---|---|---|---|---|
status |
строка | да | нет | Допустимо: "active", "inactive", "decommissioned", "repair" |
Ответы
| HTTP | Назначение и схема |
|---|---|
| 200 | Успех. Полная схема и пример |
| 400 | Некорректный запрос. Коды и формат ошибки |
| 401 | Требуется действующий Bearer. Коды и формат ошибки |
| 403 | Недостаточно допуска. Коды и формат ошибки |
| 404 | Не найдено или недоступно. Коды и формат ошибки |
| 406 | Недопустимое кодирование ответа. Коды и формат ошибки |
| 409 | Конфликт состояния или повтора. Коды и формат ошибки |
| 412 | Версия устарела. Коды и формат ошибки |
| 413 | Превышен размер. Коды и формат ошибки |
| 415 | Неподдерживаемый Content-Type. Коды и формат ошибки |
| 422 | Ошибка входных данных. Коды и формат ошибки |
| 428 | Нужно предусловие версии. Коды и формат ошибки |
| 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 |
строка | |
| 412 | Cache-Control |
строка | |
| 413 | Cache-Control |
строка | |
| 415 | Cache-Control |
строка | |
| 422 | Cache-Control |
строка | |
| 428 | 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/status" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: example:v1-equipment-status:001" \
--header "If-Resource-Version: $RESOURCE_VERSION" \
--header "Content-Type: application/json" \
--data-binary '@examples/requests/v1.equipment.status.json'
GET /equipment/{id}
Карточка.
Доступ. Разрешения подключения: equipment: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/equipment/101" \
--header "Authorization: Bearer $SERVICEAPP_TOKEN" \
--header "Accept: application/json"