GET /v1/firm-control/users/entitlements?user_id={uuid}
operationId: getFirmUserEntitlements
Lists active and historical product entitlements for a firm user.
Query parameters
| Param | Required | Notes |
|---|---|---|
user_id | yes | Target user UUID. |
firm_id | no | Firm UUID. Only required when X-Firm-ID is absent. |
Headers
| Header | Notes |
|---|---|
X-Firm-ID | Firm UUID. Auto-injected for firm API keys. |
X-Firm-Entity-Slug | Optional RBAC entity slug. |
Example
curl -sS "$TRADARA_BASE_URL/v1/firm-control/users/entitlements?user_id=8e9ad12c-2b1c-4e9a-9d3b-5e6c7a0d1f23" \
-H "X-Tradara-Api-Key: $TRADARA_API_KEY"
Response — 200 OK
{
"active": [
{
"entitlement_id": "ent_01HW...",
"user_id": "8e9ad12c-2b1c-4e9a-9d3b-5e6c7a0d1f23",
"product_code": "futures.cme.non_pro",
"source": "firm_grant",
"access_level": "full",
"granted_at": "2026-06-01T00:00:00Z",
"expires_at": null,
"revoked_at": null,
"revoke_reason": null
}
],
"history": [
{
"entitlement_id": "ent_01HV...",
"user_id": "8e9ad12c-2b1c-4e9a-9d3b-5e6c7a0d1f23",
"product_code": "futures.cme.non_pro",
"source": "trial",
"access_level": "preview",
"granted_at": "2026-05-01T00:00:00Z",
"expires_at": "2026-05-31T23:59:59Z",
"revoked_at": "2026-05-31T23:59:59Z",
"revoke_reason": "trial_expired"
}
]
}
Errors
| HTTP | Meaning |
|---|---|
400 | Missing/invalid user_id. |
403 | Caller not permitted to read entitlements for this firm. |
404 | User not found in this firm. |
502 | Downstream entitlements service unreachable. |

