TRANXIT×CAVITEXClient simulators · dev
--:--WIFI ▂▄▆█⚡86%
TranxitLane
This terminal is not signed in. Sign in once with its provisioned credentials.

Seeded terminals (dev)

Loading…

Manual entry

NEXGO N86 · lane terminal
Lane POS · device sign-in · how this screen works

Device sign-in

The terminal is not signed in yet. It signs in as a device, not as a person. A real N86 gets its device code, serial number and secret when it is installed: an operator adds it on the dashboard (Devices → Add), the secret is shown once, and the technician enters it so it is kept in the Android keystore.

Workflow

  1. Pick a seeded terminal (dev only: read from backend/.data/device-secrets.json by GET /dev/device-secrets on this Next server, not the API), or type code + serial + secret.
  2. Sign in → POST /pos/auth/login. The app stores the device token and the credentials. When the token expires (401), the app signs in again with the stored credentials and retries the call once.
  3. Straight after sign-in the app caches GET /pos/config (assignment, plaza, rates) and GET /pos/qr-public-key (the JWKS). Offline mode needs both.
  4. Then the heartbeat loop starts and the Lane screen opens.

API calls

  • POST/api/v1/pos/auth/login{deviceCode, serialNo, deviceSecret} → {accessToken, expiresIn, device:{id, code, assignment}, heartbeatIntervalSec}. 401 = wrong credentials; 403 = device retired or disabled (the message says which).
  • GET/api/v1/pos/configCached for the header and for pricing passes offline.
  • GET/api/v1/pos/qr-public-keyNo auth. Ed25519 JWKS used to check QR signatures offline.

Data notes

  • The secret is never shown again after provisioning. If it is lost, the dashboard issues a new one and the old one stops working.
  • Here the token and credentials live in this browser's localStorage. The real app keeps them in secure storage.

Live API log

No calls yet. Use the app on the left; each request shows up here.