❮  Интеграции

API для компаний

Ваш клиент выдаёт доступ вашей компании, а в вашем приложении появляется кнопка «Открыть». Ключи не ходят по чатам, и каждое открытие подписано именем сотрудника, который нажал.

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

Как это работает

  1. В вашем интерфейсе клиент говорит, что нужно заехать. Сначала вы уточняете две вещи: шлагбаум открывается звонком с его номера и его телефон остаётся в сети. Если на шлагбауме стоит контроллер Entrixy, телефон не нужен вовсе.
  2. Вы создаёте обращение и показываете его QR-код. Клиент сканирует, ставит приложение, добавляет шлагбаум и выдаёт доступ — ваша компания уже ждёт в списке.
  3. Вы открываете через API, называя исполнителя. Клиент видит открытие в журнале с этим именем и в любой момент забирает доступ одним нажатием.
Ключа в виде ссылки не существует. Компания получает ссылку на него, а не сам ключ, — копировать и пересылать нечего; ключ привязан к вашему аккаунту и работает только через этот API. Передать доступ дальше сотруднику нельзя, и это сделано намеренно: именно поэтому клиент спокойно его выдаёт.

Аутентификация

There are two ways in, and the difference is what the client sees.

Signature bound to your domain

You publish a public key on your own domain and sign every call with the private one. We take the key from the domain itself, so the right to call and the right to be shown under that domain are the same thing: the file disappears, the domain moves or changes hands — the calls stop within a day. There is no one-off "verified" tick to outlive reality.

https://<your domain>/.well-known/entrixy.json

{ "key": "<Ed25519 public key, 32 bytes, base64>" }

Then each request carries four headers:

X-Entrixy-Org:   your-domain.com
X-Entrixy-Ts:    1750000000          // unix seconds, ±300 s
X-Entrixy-Nonce: 0011…ff             // 32 hex, used once
X-Entrixy-Sig:   <base64>            // Ed25519 over the base string

base = "<domain>.<ts>.<nonce>." + sha256(raw request body)

A repeated nonce is refused, and so is a body that does not match the signature. This is the mode where the client sees your domain and your logo.

A domain written in national characters goes into the header and into the base string in its punycode form — xn--… — the same form it takes in the address of the key file. The client is still shown the readable spelling.

A secret, if you have no domain

Register, issue a secret in the cabinet and put it in the body. Your calls work the same, but the client is shown only the name you wrote for yourself, with a note that the domain is not confirmed — no logo, no domain. A company that has set a domain can no longer use a secret: otherwise a leaked secret would speak in the name of a confirmed one.

POST https://entrixy.com/api/company.php?a=<action>
Content-Type: application/json

{ "org_id": 17, "secret": "…", … }

Создание обращения

POST /api/company.php?a=request
{ "org_id": 17, "secret": "…", "ref": "order-517", "ttl_hours": 72 }

→ { "code": "rrGzNweV31rkHV6Q",
    "url":  "https://entrixy.com/c/rrGzNweV31rkHV6Q",
    "expires_in_hours": 72 }

ref — ваш номер заявки, он возвращается в состоянии. Положите url в QR-код и покажите клиенту.

Состояние обращения

POST /api/company.php?a=status
{ "org_id": 17, "secret": "…", "code": "rrGzNweV31rkHV6Q" }

→ { "state": "issued", "key_ref": 4821, "ref": "order-517",
    "claimed_at": "2026-09-09 12:20:11", "issued_at": "2026-09-09 12:24:03" }
СостояниеMeaning
newQR-код создан, клиент ещё не пришёл
claimedклиент открыл приложение — он в пути
issuedдоступ выдан; key_ref — им и открываете
revokedклиент забрал доступ
expiredсрок обращения истёк раньше, чем клиент пришёл

Открытие

POST /api/company.php?a=open
{ "org_id": 17, "secret": "…", "key_ref": 4821,
  "number_id": 93, "actor": "Ivan P., shift 12" }

→ { "ok": 1 }

actor обязателен: именно его клиент видит в журнале. Годится всё, что опознаёт сотрудника у вас — имя, табельный номер, смена. Без него вызов отклоняется.

ОтветMeaning
403 forbiddenключ не ваш или объекта в нём нет
403 revokedклиент забрал доступ
403 expiredсрок жизни ключа истёк
400 actor_requiredисполнитель не назван
429 rate_limitслишком много открытий по одному ключу в минуту

Ваша карточка в приложении

При регистрации компании пришлите название и квадратный логотип. Клиент видит их на странице, куда попадает по QR, на экране согласия и рядом с каждой строкой журнала — так понятно, кого он пускает. Логотип отдаём мы сами; картинки с чужих серверов не подтягиваем.

Как начать

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

Кабинет компании