HW agent API 2.28.0

Раздел API

СКУД и турникеты

Модуль «СКУД и турникеты»: открыть проход (реле Modbus, USB-реле, контроллер по HTTP), пропуска после продажи — коды билетов с числом проходов и сроком, проверка кода по списку агента или на сервере программы, журнал проходов. Коды со сканеров и карты со считывателей, привязанных к проходу, проверяются сами; событие access.passage. Нужен модуль access-control в ключе (кроме эмулятора).

GET/api/v1/access/passesПропуска
POST/api/v1/access/passesДобавить пропуска
DELETE/api/v1/access/passesУдалить пропуска
POST/api/v1/access/gates/{number}/openОткрыть проход
POST/api/v1/access/checkПроверить код и открыть
GET/api/v1/access/gatesПроходы
GET/api/v1/access/eventsЖурнал проходов
DELETE/api/v1/access/passes/{code}Удалить пропуск

Пропуска#

GET/api/v1/access/passes

Последние добавленные; code — один пропуск

Параметры

ИмяГдеТипОписание
codequerystring
limitqueryinteger int32

Ответ 200 application/json

Поля · PassList
  • passesмассив Pass
    10 полей · Pass
    • codestring
    • labelstring
    • usesinteger int32
    • usedinteger int32
    • validFromstring date-time
    • validUntilstring date-time
    • gatesмассив integer int32
    • orderstring
    • createdAtstring date-time
    • lastUsedAtstring date-time

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl 'http://localhost:7790/api/v1/access/passes'
curl
curl 'https://cloud.hw-connector.ru/agent/api/v1/access/passes' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42'

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

POST/api/v1/access/passes

После продажи — коды билетов: {"passes":[{"code":"…","label":"Ряд 5 место 12","uses":1, "validUntil":"2026-11-05T21:00:00Z","gates":[1,2],"order":"A-1001"}]}. Тот же код заменяет прежний. До 10 000 за раз

Тело запроса application/json обязательное

Поля · PassList
  • passesмассив Pass
    10 полей · Pass
    • codestring
    • labelstring
    • usesinteger int32
    • usedinteger int32
    • validFromstring date-time
    • validUntilstring date-time
    • gatesмассив integer int32
    • orderstring
    • createdAtstring date-time
    • lastUsedAtstring date-time
JSON
{
  "passes": [
    {
      "code": "string",
      "label": "string",
      "uses": 1,
      "used": 1,
      "validFrom": "2026-11-01T19:00:00+03:00",
      "validUntil": "2026-11-01T19:00:00+03:00",
      "gates": [
        1
      ],
      "order": "string",
      "createdAt": "2026-11-01T19:00:00+03:00",
      "lastUsedAt": "2026-11-01T19:00:00+03:00"
    }
  ]
}

Ответ 200 application/json

Поля · Saved
  • savedinteger int32
  • totalinteger int32

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl -X POST 'http://localhost:7790/api/v1/access/passes' \
  -H 'Content-Type: application/json' \
  --data '{"passes":[{"code":"string","label":"string","uses":1,"used":1,"validFrom":"2026-11-01T19:00:00+03:00","validUntil":"2026-11-01T19:00:00+03:00","gates":[1],"order":"string","createdAt":"2026-11-01T19:00:00+03:00","lastUsedAt":"2026-11-01T19:00:00+03:00"}]}'
curl
curl -X POST 'https://cloud.hw-connector.ru/agent/api/v1/access/passes' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42' \
  -H 'Content-Type: application/json' \
  --data '{"passes":[{"code":"string","label":"string","uses":1,"used":1,"validFrom":"2026-11-01T19:00:00+03:00","validUntil":"2026-11-01T19:00:00+03:00","gates":[1],"order":"string","createdAt":"2026-11-01T19:00:00+03:00","lastUsedAt":"2026-11-01T19:00:00+03:00"}]}'

Удалить пропуска#

DELETE/api/v1/access/passes

order — все пропуска заказа (возврат заказа); без него — все

Параметры

ИмяГдеТипОписание
orderquerystring

Ответ 200 application/json

Поля · Deleted
  • deletedinteger int32

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl -X DELETE 'http://localhost:7790/api/v1/access/passes'
curl
curl -X DELETE 'https://cloud.hw-connector.ru/agent/api/v1/access/passes' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42'

Открыть проход#

POST/api/v1/access/gates/{number}/open

Без проверки кода: «открыть после продажи», кнопка охранника. Ответ — запись журнала; событие access.passage. Без ключа модуля — 402 LICENSE_REQUIRED (кроме эмулятора)

Параметры

ИмяГдеТипОписание
numberобязательныйpathinteger int32

Тело запроса application/json

Поля · OpenRequest
  • directionstring
  • pulseMsinteger int32
  • reasonstring
JSON
{
  "direction": "string",
  "pulseMs": 1,
  "reason": "string"
}

Ответ 200 application/json

Поля · Passage
  • atstring date-time
  • gateinteger int32
  • gateNamestring
  • directionstring
  • codestring
  • grantedboolean
  • reasonstring
  • messagestring
  • sourcestring
  • labelstring
  • orderstring
  • remaininginteger int32

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl -X POST 'http://localhost:7790/api/v1/access/gates/1/open' \
  -H 'Content-Type: application/json' \
  --data '{"direction":"string","pulseMs":1,"reason":"string"}'
curl
curl -X POST 'https://cloud.hw-connector.ru/agent/api/v1/access/gates/1/open' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42' \
  -H 'Content-Type: application/json' \
  --data '{"direction":"string","pulseMs":1,"reason":"string"}'

Проверить код и открыть#

POST/api/v1/access/check

Код, который программа прочитала сама (камера киоска, свой сканер). Проверка — как у считывателей прохода: по списку агента или на сервере программы. granted: false и reason — почему нет (UNKNOWN, USED, EXPIRED…)

Тело запроса application/json обязательное

Поля · CheckRequest
  • typestring
    значения: SELL SELL_RETURN BUY BUY_RETURN
  • registerIdinteger int32
  • codesмассив CodeRequestобязательное
    от 1
    3 поля · CodeRequest
    • codestringобязательное
      от 1
    • priceinteger int64
    • fractionstring
JSON
{
  "type": "SELL",
  "registerId": 1,
  "codes": [
    {
      "code": "string",
      "price": 1,
      "fraction": "string"
    }
  ]
}

Ответ 200 application/json

Поля · Passage
  • atstring date-time
  • gateinteger int32
  • gateNamestring
  • directionstring
  • codestring
  • grantedboolean
  • reasonstring
  • messagestring
  • sourcestring
  • labelstring
  • orderstring
  • remaininginteger int32

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl -X POST 'http://localhost:7790/api/v1/access/check' \
  -H 'Content-Type: application/json' \
  --data '{"type":"SELL","registerId":1,"codes":[{"code":"string","price":1,"fraction":"string"}]}'
curl
curl -X POST 'https://cloud.hw-connector.ru/agent/api/v1/access/check' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42' \
  -H 'Content-Type: application/json' \
  --data '{"type":"SELL","registerId":1,"codes":[{"code":"string","price":1,"fraction":"string"}]}'

Проходы#

GET/api/v1/access/gates

Турникеты, калитки и замки рабочего места со считывателями и способом проверки кодов

Ответ 200 application/json

Поля · GateList
  • licensedboolean
  • passesinteger int32
  • gatesмассив GateInfo
    8 полей · GateInfo
    • numberinteger int32
    • namestring
    • typestring
    • activeboolean
    • directionsмассив string
    • readersмассив string
    • checkstring
    • infoсловарь → любое значение

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl 'http://localhost:7790/api/v1/access/gates'
curl
curl 'https://cloud.hw-connector.ru/agent/api/v1/access/gates' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42'

Журнал проходов#

GET/api/v1/access/events

Последние попытки, новые первыми, до 1000; с перезапуском агента журнал очищается

Параметры

ИмяГдеТипОписание
limitqueryinteger int32

Ответ 200 application/json

Массив · Passage
  • atstring date-time
  • gateinteger int32
  • gateNamestring
  • directionstring
  • codestring
  • grantedboolean
  • reasonstring
  • messagestring
  • sourcestring
  • labelstring
  • orderstring
  • remaininginteger int32

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl 'http://localhost:7790/api/v1/access/events'
curl
curl 'https://cloud.hw-connector.ru/agent/api/v1/access/events' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42'

Удалить пропуск#

DELETE/api/v1/access/passes/{code}

Возврат билета

Параметры

ИмяГдеТипОписание
codeобязательныйpathstring

Ответ 200

Без тела.

Ошибки — problem+json с полем code, см. коды ошибок.

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

curl
curl -X DELETE 'http://localhost:7790/api/v1/access/passes/3f6c1d9e-1b2a-4c55-9e0d-6a1f0c2b7d11'
curl
curl -X DELETE 'https://cloud.hw-connector.ru/agent/api/v1/access/passes/3f6c1d9e-1b2a-4c55-9e0d-6a1f0c2b7d11' \
  -H 'X-Api-Key: hwk_…' \
  -H 'X-Device-Id: 42'