Assets
The Assets endpoints expose the governed asset inventory: each asset, its custody, and its readiness state.
This is a read-only surface in v1. Creating, updating, and decommissioning assets happens in the Novantra UI (see the Assets user guide).
For shared conventions (auth, errors, pagination, ID format), read v1 conventions first.
Scope required
| Endpoint | Scope |
|---|---|
| All read endpoints below | assets:read |
Endpoints
List assets
GET /api/v1/assets
Authorization: Bearer <access-token>Query parameters:
| Parameter | Type | Notes |
|---|---|---|
status | string | Optional. Filter by status. |
assetKind | string | Optional. Filter by kind. |
Response:
{
"assets": [
{
"id": "asset_01HXY...",
"assetKey": "torque-wrench-038",
"assetKind": "calibrated-tool",
"displayName": "Torque wrench, 50–200 Nm, serial 038",
"description": "Calibrated torque wrench, primary toolbox A.",
"sourceKind": "cmms-import",
"status": "active",
"custodianResponsibilityId": "ra_01HXY...",
"commissionedAt": "2024-03-15T00:00:00.000Z",
"decommissionedAt": null,
"createdAt": "2024-03-15T08:21:43.000Z",
"updatedAt": "2026-05-25T14:08:33.000Z"
}
],
"pagination": {}
}Get one asset
GET /api/v1/assets/:assetId
Authorization: Bearer <access-token>Returns the single-asset shape from the list above.
List custody assignments
GET /api/v1/assets/custody-assignments
Authorization: Bearer <access-token>Query parameters:
| Parameter | Type | Notes |
|---|---|---|
assetId | string | Optional. Filter to assignments for one asset. |
status | string | Optional. |
Response:
{
"custodyAssignments": [
{
"id": "ascust_01HXY...",
"assetId": "asset_01HXY...",
"assignmentKey": "torque-wrench-038-tech-jdoe-2026-04",
"assignmentKind": "primary",
"subjectModuleKey": "membership",
"subjectResourceType": "member-user",
"subjectResourceId": "user_01HXY...",
"status": "active",
"startedAt": "2026-04-01T00:00:00.000Z",
"endedAt": null,
"createdAt": "2026-04-01T08:21:43.000Z",
"updatedAt": "2026-04-01T08:21:43.000Z"
}
],
"pagination": {}
}List readiness assessments
GET /api/v1/assets/readiness-assessments
Authorization: Bearer <access-token>Query parameters:
| Parameter | Type | Notes |
|---|---|---|
assetId | string | Optional. Filter to assessments for one asset. |
readinessState | string | Optional. Filter by state. |
Response:
{
"readinessAssessments": [
{
"id": "asrdy_01HXY...",
"assetId": "asset_01HXY...",
"readinessAssessmentKey": "torque-wrench-038-cal-2026",
"assessmentKind": "calibration",
"readinessState": "ready",
"status": "completed",
"performedAt": "2026-03-12T10:00:00.000Z",
"performedByResponsibilityId": "ra_01HXY...",
"createdAt": "2026-03-12T10:30:00.000Z",
"updatedAt": "2026-03-12T10:30:00.000Z"
}
],
"pagination": {}
}Field notes
assetKind
Free text. The product does not impose a fixed list; your organization picks values that match your domain (e.g., calibrated-tool, medical-device, it-system, vehicle, cloud-service).
sourceKind
Where the asset record originated. Common values: manual, cmms-import, procurement-import, discovery-scan, external-system. Free text.
custodianResponsibilityId
Points at the responsibility assignment naming the custodian. The responsibility record itself is not a v1 endpoint.
Snapshots
In the in-product UI, assets carry assetSnapshot, classificationSnapshot, and sourceRefSnapshot containing rich structured detail. Custody assignments carry assignment snapshots; readiness assessments carry posture and evidence snapshots. In v1 these structured snapshots are not exposed in the API surface; reads return the durable identifying fields.
Real-case integration: feeding CMMS asset updates into the governance register
An aviation maintenance organization runs a CMMS as its operational source of truth for tools, equipment, and inventory. The CMMS owns runtime updates: new assets, calibration completions, custody handoffs. The compliance team wants the governance register kept in sync without manual rekeying.
Today, the synchronization is one-way (CMMS → Novantra) and runs as a nightly batch in the in-product UI’s import path. v1’s read-only API supports the read side of validation: an integration can pull the current Novantra register and compare it against the CMMS for drift detection.
A typical drift check:
- Calls
GET /api/v1/assetsto pull the current register. - Compares against the CMMS’s current inventory using
assetKeyas the join. - Surfaces assets in the CMMS that aren’t in Novantra (and vice versa) for the compliance team to investigate.
- Surfaces custody mismatches by joining custody assignments to the CMMS custody records.
The integration’s service account holds exactly assets:read. Cursor pagination handles large registers. Daily polling is sufficient for compliance discipline and is the supported pattern for the asset register.
Related
- Assets user guide - what the assets module does and when to reach for it.
- v1 conventions - shared request and response patterns.
- Authentication - service accounts and scopes.