Skip to content

Devices

Concept: Devices. Base path: /api/org/{slug}/devices (authenticated). The current device is identified by the session’s device_id claim (= TPM credentialId).

Every route below requires an org-scoped permission in addition to authentication. The organization Owner and Admin bypass these checks; any other member must hold the listed scope. Missing permission returns 403 with errorCode = "PERMISSION_DENIED" and the required scope in required.

Method · RoutePurposeRequired scope
GET /List devices (?ownership=asset), with IsCurrent per roworg.device_identity.list
POST /registerRegister a deviceorg.device_identity.create
PUT /{deviceId}/statusChange status (block/activate/…)org.device_identity.update
DELETE /{deviceId}Delete a deviceorg.device_identity.delete
POST /{deviceId}/notify-tpmSend TPM-match notificationorg.device_identity.update
PUT /{deviceId}/geofenceSet allowed countries (CSV)org.device_identity.device_binding.update
POST /{deviceId}/assignAssign device to a member by emailorg.device_identity.device_binding.update
POST /assign-by-keyAssign by DeviceKey (= credentialId; body, not URL)org.device_identity.device_binding.update
POST /check-assignableCheck whether a DeviceKey can be assigned (no side effect)org.device_identity.device_binding.read

Status-change and delete enforce anti-lockout: you cannot block/delete your own current or last device. Such attempts return 409 Conflict (ErrorCode = "lockout"); a precondition failure (e.g. delete requires prior block) returns 400.

Restricting logins to pre-registered devices is a paid capability, gated at the org security-settings save (OrgSettingsEndpoints.cs):

  • Fortress (only pre-registered devices may log in) — requires the Advanced Device Trust add-on (addon.device_trust); otherwise 402 ADDON_REQUIRED. Plan-independent.
  • Hybrid (pre-register / distinguish corporate devices) — requires the Pro+ plan feature feature.device.hybrid or the Device Trust add-on; otherwise 403.

The same entitlement is also enforced at the pre-registration entrances themselves (DeviceManagementService.cs), so it cannot be bypassed by calling the API directly:

  • POST /register with Ownership = "Asset" (admin pre-registration) → 403 without the entitlement. Registering your own device (BYOD / owner auto-registration) stays free.
  • POST /{deviceId}/assign, /assign-by-key, and /check-assignable (company-device assignment, including the device picked in a member invite) → rejected with the same upgrade message.

Registering a personal seal (passkey) on any device is always free. There is currently no per-organization device-count limit or per-device charge — the Device Trust add-on is billed per user, not per device.