❮  Intégrations

API pour les entreprises

Votre client accorde l'accès à votre entreprise et votre application obtient un bouton Ouvrir. Aucune clé ne circule dans les messageries, et chaque ouverture porte le nom de l'employé qui a appuyé.

Pour qui : les services dont l'employé doit entrer dans une cour fermée — nounous et professeurs, ménage, pneumatique et lavage mobiles, coursiers et livraison, soins et prélèvements à domicile. Le client garde la barrière qu'il a déjà ; vous gagnez un bouton au lieu d'un appel au client devant le portail.

Comment ça marche

  1. Dans votre interface, le client indique qu'il faut entrer. Vous vérifiez d'abord deux choses : la barrière s'ouvre sur un appel depuis son numéro et son téléphone reste en ligne. Si la barrière a un contrôleur Entrixy, le téléphone est inutile.
  2. Vous créez une demande et affichez son QR code. Le client le scanne, installe l'application, ajoute la barrière et accorde l'accès — votre entreprise attend déjà dans la liste.
  3. Vous ouvrez par API en nommant l'employé. Le client voit l'ouverture dans le journal avec ce nom et retire l'accès d'une pression quand il veut.
La clé n'existe pas sous forme de lien. Votre entreprise reçoit une référence, pas la clé elle-même : rien à copier ni à transférer ; la clé est liée à votre compte et ne fonctionne que par cette API. Transmettre l'accès à un employé est impossible — c'est voulu, et c'est ce qui rassure le client.

Authentification

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": "…", … }

Créer une demande

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 est votre numéro de commande, il revient dans l'état. Mettez url dans un QR code et montrez-le au client.

État de la demande

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" }
ÉtatMeaning
newle QR code est créé, le client n'est pas encore venu
claimedle client a ouvert l'application — il est en route
issuedaccès accordé ; key_ref c'est avec cela que vous ouvrez
revokedle client a retiré l'accès
expiredla demande a expiré avant la venue du client

Ouverture

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

→ { "ok": 1 }

actor est obligatoire : c'est ce que le client voit dans le journal. Tout ce qui identifie l'employé chez vous convient — nom, matricule, équipe. Sans lui, l'appel est refusé.

RéponseMeaning
403 forbiddenla clé n'est pas la vôtre ou l'objet n'y figure pas
403 revokedle client a retiré l'accès
403 expiredla durée de vie de la clé est écoulée
400 actor_requiredl'employé n'a pas été nommé
429 rate_limittrop d'ouvertures avec une clé par minute

Votre fiche dans l'application

À l'enregistrement, envoyez-nous le nom et un logo carré. Le client les voit sur la page scannée, sur l'écran de consentement et à côté de chaque ligne du journal — il sait ainsi qui il laisse entrer. Le logo est servi par nous ; nous ne chargeons pas d'images depuis d'autres serveurs.

Pour commencer

Enregistrez l'entreprise dans votre compte : la demande, puis le secret, l'adresse de rappel, le logo et la liste des demandes — tout est dans l'espace entreprise. Nous examinons les demandes à la main : le client fait confiance à l'entreprise que nous laissons entrer dans la liste.

Espace entreprise