--:--WIFI ▂▄▆█⚡86%
TranxitLane
This terminal is not signed in. Sign in once with its provisioned credentials.
Seeded terminals (dev)
Loading…
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
- 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.
- 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.
- 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.
- 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.

