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

Мастерские

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

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

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

Назначение

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

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

Публичное поле Формат и смысл Доступ
id id только чтение
name обязательная строка чтение и запись
primary_process repair / installation / maintenance, при создании по умолчанию repair чтение и запись
city обязательная при создании строка, максимум 255 символов чтение и запись
address обязательная при создании строка, максимум 255 символов чтение и запись
phone обязательная при создании строка, максимум 255 символов чтение и запись
hourly_rate null либо объект amount/currency, ставка нормочаса чтение и запись

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

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

Чтение требует workshops:read и «Системные настройки → Базовый доступ к системе»; изменение — workshops:write и «Системные настройки → Информация о компании» для выбранной мастерской. Выборка пересекает текущие области ролей и workshop_ids подключения. Фильтры: q по названию, primary_process.

Создание требует workshops:write и организационного «Системные настройки → Информация о компании»: право настройки отдельной мастерской не разрешает создавать новые подразделения. В одной транзакции с созданием новый ID добавляется в workshop_ids текущего подключения. Остальные мастерские этим не открываются; повтор команды возвращает прежнюю карточку и не расширяет область повторно. Смена направления на installation/maintenance дополнительно проверяет доступность соответствующей возможности тарифа.

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

  • При создании проверяется лимит мастерских тарифа.
  • name, city, address и phone обязательны, не пусты и ограничены 255 символами. Обновление принимает только переданные публичные поля; null для этих строк не допускается.
  • hourly_rate.amount — строка с точным числом дробных разрядов валюты организации; currency совпадает с валютой организации. Ставка должна помещаться в существующее хранение decimal(18,2) без округления.
  • Основное направление мастерской и тип документа — отдельные настройки.
  • Смена направления проходит штатное обеспечение модулей и справочников.
  • При заполнении профиля могут создаваться статусы, работы, сценарии ТО, пункты чек-листа и дополнительные поля. Их изменения отражаются в событиях. В meta.affected_resources входят только доступные сотруднику объекты. Создание мастерской не требует отдельных разрешений чтения всех начальных записей.

Созданные при заполнении профиля работы, сценарии и дополнительные поля доступны через соответствующие ресурсы API. События доставляются только при наличии прав чтения этих ресурсов.

Операции

Метод Путь Назначение
GET /workshops Список с фильтрами и пагинацией
POST /workshops Создание
GET /workshops/{id} Карточка
POST /workshops/{id}/update Изменение разрешённых полей

GET /workshops

Список с фильтрами и пагинацией.

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

Параметры

Имя Где Тип Обязательно null Ограничения
Authorization заголовок строка да нет Bearer <SERVICEAPP_TOKEN>
sort параметр запроса строка нет нет Допустимо: "id", "-id"
page[size] параметр запроса целое число нет нет ≥ 1; ≤ 100
page[cursor] параметр запроса строка нет нет не более 8192 символов
filter[q] параметр запроса строка нет нет не более 200 символов
filter[primary_process] параметр запроса строка нет нет Допустимо: "repair", "installation", "maintenance"

Ответы

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

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

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

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

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

POST /workshops

Создание.

Доступ. Разрешения подключения: workshops:write. Права сотрудника: «Системные настройки → Информация о компании». Дополнительно действуют доступ к записям, мастерским, модулям и условия полей из описания ресурса выше.

Параметры

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

Тело запроса

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

Поле Тип Обязательно null Ограничения и смысл
name строка да нет не менее 1 символов; не более 255 символов
city строка да нет не менее 1 символов; не более 255 символов
address строка да нет не менее 1 символов; не более 255 символов
phone строка да нет не менее 1 символов; не более 255 символов
primary_process строка нет нет Допустимо: "repair", "maintenance", "installation"; Основное направление мастерской: ремонт, обслуживание или монтаж.
hourly_rate объект / null нет да Только перечисленные ключи; Ставка или null. amount содержит точное число дробных разрядов валюты организации, currency совпадает с GET /context.
hourly_rate.amount строка да нет Шаблон: ^(?:0|[1-9][0-9]{0,15})(?:\.[0-9]{1,4})?$; Условие: required_with:hourly_rate
hourly_rate.currency строка да нет не менее 3 символов; не более 3 символов; Условие: required_with:hourly_rate

Ответы

HTTP Назначение и схема
201 Создано. Полная схема и пример
400 Некорректный запрос. Коды и формат ошибки
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
415 Неподдерживаемый Content-Type. Коды и формат ошибки
422 Ошибка входных данных. Коды и формат ошибки
428 Нужно предусловие версии. Коды и формат ошибки
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/workshops" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-workshops-store:001" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.workshops.store.json'

GET /workshops/{id}

Карточка.

Доступ. Разрешения подключения: workshops: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/workshops/101" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json"

POST /workshops/{id}/update

Изменение разрешённых полей.

Доступ. Разрешения подключения: workshops: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 строка нет нет не менее 1 символов; не более 255 символов
city строка нет нет не менее 1 символов; не более 255 символов
address строка нет нет не менее 1 символов; не более 255 символов
phone строка нет нет не менее 1 символов; не более 255 символов
primary_process строка нет нет Допустимо: "repair", "maintenance", "installation"; Основное направление мастерской: ремонт, обслуживание или монтаж.
hourly_rate объект / null нет да Только перечисленные ключи; Ставка или null. amount содержит точное число дробных разрядов валюты организации, currency совпадает с GET /context.
hourly_rate.amount строка да нет Шаблон: ^(?:0|[1-9][0-9]{0,15})(?:\.[0-9]{1,4})?$; Условие: required_with:hourly_rate
hourly_rate.currency строка да нет не менее 3 символов; не более 3 символов; Условие: required_with:hourly_rate

Ответы

HTTP Назначение и схема
200 Успех. Полная схема и пример
400 Некорректный запрос. Коды и формат ошибки
401 Требуется действующий Bearer. Коды и формат ошибки
403 Недостаточно допуска. Коды и формат ошибки
404 Не найдено или недоступно. Коды и формат ошибки
409 Конфликт состояния или повтора. Коды и формат ошибки
412 Версия устарела. Коды и формат ошибки
415 Неподдерживаемый Content-Type. Коды и формат ошибки
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/workshops/101/update" \
  --header "Authorization: Bearer $SERVICEAPP_TOKEN" \
  --header "Accept: application/json" \
  --header "Idempotency-Key: example:v1-workshops-update:001" \
  --header "If-Resource-Version: $RESOURCE_VERSION" \
  --header "Content-Type: application/json" \
  --data-binary '@examples/requests/v1.workshops.update.json'