Asset API
Create and group inventory, read coverage, and retire unused identities.
Assets represent inventory, not automatically active protection. See resource ownership. Asset mutation requires Administrator authority for the full target scope.
Use the shared API contract for authentication, pagination, request headers, idempotency, and error responses.
List assets
/organizations/{organization_id}/assetsLists inventory records with kind, name, owner, tags, criticality, and coverage summary. Standard limit and cursor apply. Unknown filters return 422.
kindstringoptionalReturn only the selected kind.
group_idstringoptionalFilter by a visible asset group.
Returns a data array and pagination.next_cursor. Entries include stable IDs and the resource fields described for this collection.
Create an asset
/organizations/{organization_id}/assetsCreates inventory only. It does not verify ownership or enroll an executor.
namestringrequiredDisplay name; does not change resource identity.
kindstringrequiredImmutable asset category.
locatorstringrequiredHostname, address, or device inventory reference appropriate to the kind.
owner_idstringrequiredExisting organization member or team.
tagsstring[]optionalUnique labels; omitted means no tags.
[]The response is similar to the following:
{
"data": {
"id": "ast_web01",
"kind": "service",
"name": "Store",
"coverage": {
"edge": "not_connected"
}
},
"request_id": "req_asset01"
}Read an asset
/organizations/{organization_id}/assets/{asset_id}Returns ownership, identity observations, coverage freshness, and dependent resource IDs. Unknown coverage is explicit.
Returns data and request_id.
Update asset metadata
/organizations/{organization_id}/assets/{asset_id}Updates asset metadata. Requires If-Match; kind and ID cannot change. Omitted fields preserve their values.
namestringoptionalNew display name; null and empty are invalid.
owner_idstringoptionalReplacement organization member or team; null is invalid.
tagsstring[]optionalReplaces the entire list; an empty list removes tags. Tags do not grant access.
Returns updated data and a new ETag.
Create a group
/organizations/{organization_id}/asset-groupsCreates an explicit-membership selector. Group selection does not grant user authorization.
namestringrequiredDisplay name; does not change resource identity.
asset_idsstring[]requiredExisting assets visible to the caller; duplicates reject the request.
Returns the group ID, membership, and revision. Policy assignment requires a separate publication.
Replace group membership
/organizations/{organization_id}/asset-groups/{group_id}Replaces group membership. Requires If-Match; the resolved target set must be within the caller's authority. Preview policy effects before submission.
asset_idsstring[]requiredExisting assets visible to the caller; duplicates reject the request.
Returns the new group revision. Policy reconciliation is observed separately.
Delete an asset
/organizations/{organization_id}/assets/{asset_id}Deletes an unused asset. Requires If-Match; active service routes, endpoint identities, access applications, or assignments return 409 dependency_exists. Historical references remain governed by retention.
No response body.