Online check made by DeviceRegistrationViewModel.checkExistingDeviceSessions when DeviceRegistrationActivity starts (after work-node selection, and again from Home in release builds when device binding is on). A null/empty body means no binding exists, so the app registers this device (POST user-device-session); deviceMatchStatus=true lets the user proceed; false shows the Blocked screen with the other device's details and a 'remove binding' option. Offline shows the no-internet state; errors show a retryable error message.
Headers
Header
Value
Notes
X-SESSIONID
<session token>
Added by AuthInterceptor (data/net/AuthInterceptor.kt) when the call does not set it; on HTTP 401 or 400 the interceptor invalidates the token, fetches a new one and retries the request once.
Parameters
Param
In
Required
Example
Notes
userId
query
Yes
12345
Bridge user id from tenant data.
deviceId
query
Yes
<android id>
DeviceInfoProvider.getDeviceId().
deviceManufacture
query
Yes
Manufacturer A
Build.MANUFACTURER.
deviceModel
query
Yes
Model A
Build.MODEL.
Request
No body. userId, deviceId, deviceManufacture, deviceModel