Improved
Data Product User Access Metadata
4 months ago
Data product user access responses now include richer access-management metadata. API consumers can identify who granted direct data-product access, distinguish skipped removals from successful updates, and render more precise admin workflows without making extra lookup calls.
What's New
- Data product user records include
role.grantedByEmailwhen the grant source is known. - Update responses include
changes.skippedRemovalsso clients can count removal attempts that did not change access. - Update responses may include
skippedRemovalsentries with theuserId,email, and reason for each skipped removal.
Modified Endpoints
GET /api/v1/accounts/{accountId}/data-products/{dataProductId}/usersPATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/users
Response Format
List responses now include grant attribution on each returned user role:
{
"ok": true,
"users": [
{
"id": "6ccf6419-2f54-4f0d-9877-69c87f9e7254",
"email": "[email protected]",
"firstName": "Viewer",
"lastName": "User",
"status": "active",
"role": {
"id": "3a68f8b5-04a0-4e13-82cb-481e9d4f50af",
"scope": "workspace:123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2026-05-03T12:00:00.000Z",
"updatedAt": "2026-05-03T12:00:00.000Z",
"grantedByEmail": "[email protected]"
}
}
],
"count": 1,
"dataProductId": "123e4567-e89b-12d3-a456-426614174000",
"dataProductName": "Customer Success Share",
"pagination": {
"limit": 100,
"offset": 0,
"total": 1
}
}Update responses now expose skipped removal counts and details when a requested removal could not be applied:
{
"ok": true,
"users": [],
"count": 0,
"dataProductId": "123e4567-e89b-12d3-a456-426614174000",
"dataProductName": "Customer Success Share",
"changes": {
"added": 0,
"removed": 1,
"skipped": 0,
"reactivated": 0,
"skippedRemovals": 1
},
"skippedRemovals": [
{
"userId": "6ccf6419-2f54-4f0d-9877-69c87f9e7254",
"email": "[email protected]",
"reason": "already_deleted"
}
]
}Migration Notes
Existing integrations can continue reading the previous response fields. Treat role.grantedByEmail and skippedRemovals as optional metadata because older grants or no-op update requests may not have attribution or skipped-removal details.