API и webhooks

Публичный REST API поверх тех же данных, что видит кабинет: заявки, оборудование, склад и журнал ТО. Читайте по ключу, создавайте заявки из своей системы и получайте события, как только они происходят.

Ключи и доступ

Ключ выпускается в кабинете и показывается один раз — мы храним только его хэш и восстановить секрет не сможем. Потерялся — выпустите новый и отзовите старый.

# Все запросы — с ключом в заголовке
curl https://api.insysit.com/api/public/v1/tickets?limit=50 \
  -H "Authorization: Bearer sk_live_a1b2c3d4.секрет"
Что нужно знать заранее

Ключ можно выпустить и отозвать — ротации по расписанию, срока жизни, ограничения по IP и персональных квот нет. Тестовых ключей и песочницы тоже нет: ключ один и сразу боевой. Ограничение частоты — около 5 запросов в секунду, всплеск до 40, и считается оно по IP-адресу, а не по ключу: несколько интеграций с одного сервера делят лимит.

tickets:readtickets:writeassets:readwarehouse:readwarehouse:writemaintenance:readcontracts:read

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

Чтение

Постраничный обход — курсором по идентификатору, до 200 записей за запрос. Смещения нет: список не «съезжает», пока вы его листаете.

GET/ticketsЗаявки
GET/assetsОборудование и объекты
GET/warehouse/itemsПозиции склада
GET/maintenance/journalЖурнал техобслуживания
GET/1c/actsАкты выполненного ТО
GET/1c/service-actsФинансовые акты по договорам

Запись

Заявку можно создать с ключом идемпотентности: повторный запрос с тем же ключом не создаст дубль — это безопасно при ретраях. Заявку из внешней системы можно завести как предложенную, чтобы диспетчер подтвердил ее перед работой.

POST/ticketsСоздать заявку
PATCH/tickets/{id}Сменить статус или исполнителя
POST/warehouse/itemsДобавить позицию склада
Что нужно знать заранее

Писать можно в заявки и склад. Оборудование, журнал ТО и акты 1С доступны только на чтение. Действия внешней системы записываются от системного пользователя — в журнале аудита видно, что заявку завел не человек.

События

Укажите адрес обработчика — и платформа сама постучится в него. Событий ровно шесть.

ticket.createdПоявилась новая заявка
ticket.status_changedСтатус заявки изменился
ticket.assignedУ заявки сменился исполнитель
maintenance.completedТехобслуживание завершено
asset.createdДобавлено оборудование
warehouse.stock_lowОстаток на складе ниже порога

Подпись доставки

Каждая доставка подписана. Проверяйте подпись до того, как доверитесь телу запроса.

# Заголовки доставки
X-Insys-Signature: sha256=hex
X-Insys-Timestamp: 1763040000

# Тело
{ "event": "ticket.created",
  "tenant": "acme",
  "data": { … } }
# Подписывается "<timestamp>.<тело>",
# а не тело само по себе.

signed = f"{ts}.{body}"

expected = hmac.new(
  secret.encode(), # whsec_…
  signed.encode(),
  hashlib.sha256
).hexdigest()
Что нужно знать заранее

Секрет обработчика, как и ключ, показывается один раз. Если ваш сервер ответил ошибкой 5xx или попросил притормозить — доставка повторится автоматически; ответ 4xx считается окончательным отказом и повтора не будет. На ответ дается 10 секунд: отвечайте сразу, а тяжелую работу уводите в фон. Переотправить доставку вручную из кабинета нельзя.

Подключить

API — отдельный модуль: он включается по запросу и не входит в базовую поставку. Ключи и обработчики после подключения выпускаются в кабинете, в разделе «Интеграции».