Enterprise RBAC API Reference
🔐 RBAC API Overview
The RecoAgent Enterprise RBAC API provides comprehensive role-based access control with fine-grained permissions, hierarchical roles, and audit logging for enterprise security.
🚀 Authentication
API Key Authentication
Authorization: Bearer sk-enterprise-123
RBAC Token Authentication
Authorization: Bearer <rbac_token>
📚 API Endpoints
1. Role Management
Create Role
POST /api/v2/rbac/roles
Request Body:
{
"name": "analyst",
"description": "Data analyst role with read access",
"permissions": [
"data:read",
"analytics:read",
"models:read"
],
"inherits_from": ["viewer"],
"tenant_id": "tenant_abc"
}
Response:
{
"status": "success",
"role": {
"id": "role_123",
"name": "analyst",
"description": "Data analyst role with read access",
"permissions": [
"data:read",
"analytics:read",
"models:read"
],
"inherits_from": ["viewer"],
"tenant_id": "tenant_abc",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
}
Get Role
GET /api/v2/rbac/roles/{role_id}
Response:
{
"status": "success",
"role": {
"id": "role_123",
"name": "analyst",
"description": "Data analyst role with read access",
"permissions": [
"data:read",
"analytics:read",
"models:read"
],
"inherits_from": ["viewer"],
"tenant_id": "tenant_abc",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
}
Update Role
PUT /api/v2/rbac/roles/{role_id}
Request Body:
{
"description": "Updated analyst role with enhanced permissions",
"permissions": [
"data:read",
"data:write",
"analytics:read",
"analytics:write",
"models:read"
]
}
Response:
{
"status": "success",
"role": {
"id": "role_123",
"name": "analyst",
"description": "Updated analyst role with enhanced permissions",
"permissions": [
"data:read",
"data:write",
"analytics:read",
"analytics:write",
"models:read"
],
"inherits_from": ["viewer"],
"tenant_id": "tenant_abc",
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T12:00:00Z"
}
}
Delete Role
DELETE /api/v2/rbac/roles/{role_id}
Response:
{
"status": "success",
"message": "Role deleted successfully"
}
2. Permission Management
Create Permission
POST /api/v2/rbac/permissions
Request Body:
{
"name": "data:write",
"description": "Write access to data resources",
"resource": "data",
"action": "write",
"conditions": {
"tenant_id": "tenant_abc"
}
}
Response:
{
"status": "success",
"permission": {
"id": "perm_123",
"name": "data:write",
"description": "Write access to data resources",
"resource": "data",
"action": "write",
"conditions": {
"tenant_id": "tenant_abc"
},
"created_at": "2024-01-01T00:00:00Z"
}
}
List Permissions
GET /api/v2/rbac/permissions
Query Parameters:
resource: Filter by resource typeaction: Filter by action typetenant_id: Filter by tenant
Response:
{
"status": "success",
"permissions": [
{
"id": "perm_123",
"name": "data:write",
"description": "Write access to data resources",
"resource": "data",
"action": "write",
"conditions": {
"tenant_id": "tenant_abc"
}
}
],
"total": 1,
"page": 1,
"per_page": 20
}
3. User Role Assignment
Assign Role to User
POST /api/v2/rbac/users/{user_id}/roles
Request Body:
{
"role_id": "role_123",
"tenant_id": "tenant_abc",
"assigned_by": "admin_user_123",
"expires_at": "2024-12-31T23:59:59Z"
}
Response:
{
"status": "success",
"assignment": {
"id": "assign_123",
"user_id": "user_123",
"role_id": "role_123",
"tenant_id": "tenant_abc",
"assigned_by": "admin_user_123",
"expires_at": "2024-12-31T23:59:59Z",
"created_at": "2024-01-01T00:00:00Z"
}
}
Get User Roles
GET /api/v2/rbac/users/{user_id}/roles
Response:
{
"status": "success",
"roles": [
{
"id": "role_123",
"name": "analyst",
"description": "Data analyst role with read access",
"permissions": [
"data:read",
"analytics:read",
"models:read"
],
"assigned_at": "2024-01-01T00:00:00Z",
"expires_at": "2024-12-31T23:59:59Z"
}
]
}
Remove Role from User
DELETE /api/v2/rbac/users/{user_id}/roles/{role_id}
Response:
{
"status": "success",
"message": "Role removed from user successfully"
}
4. Permission Checking
Check User Permission
POST /api/v2/rbac/check-permission
Request Body:
{
"user_id": "user_123",
"permission": "data:read",
"resource_id": "data_456",
"tenant_id": "tenant_abc"
}
Response:
{
"status": "success",
"has_permission": true,
"permission_source": "role:analyst",
"conditions_met": true
}
Get User Permissions
GET /api/v2/rbac/users/{user_id}/permissions
Query Parameters:
tenant_id: Filter by tenantresource: Filter by resource typeaction: Filter by action type
Response:
{
"status": "success",
"permissions": [
{
"name": "data:read",
"resource": "data",
"action": "read",
"source": "role:analyst",
"conditions": {
"tenant_id": "tenant_abc"
}
}
],
"total": 1
}
5. Audit Logging
Get Audit Logs
GET /api/v2/rbac/audit-logs
Query Parameters:
user_id: Filter by useraction: Filter by action typeresource: Filter by resourcestart_date: Start date filterend_date: End date filterpage: Page numberper_page: Items per page
Response:
{
"status": "success",
"audit_logs": [
{
"id": "audit_123",
"user_id": "user_123",
"action": "role_assigned",
"resource": "role:analyst",
"details": {
"role_id": "role_123",
"assigned_by": "admin_user_123"
},
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0...",
"timestamp": "2024-01-01T00:00:00Z"
}
],
"total": 1,
"page": 1,
"per_page": 20
}
🔧 Configuration
RBAC Engine Setup
from recoagent.packages.security.rbac import RoleManager
# Initialize role manager
role_manager = RoleManager(
audit_logging=True,
permission_caching=True,
cache_ttl=300 # 5 minutes
)
# Create roles
role_manager.create_role(
name="admin",
permissions=["*"], # All permissions
description="Administrator role"
)
role_manager.create_role(
name="analyst",
permissions=["data:read", "analytics:read", "models:read"],
description="Data analyst role"
)
role_manager.create_role(
name="viewer",
permissions=["data:read"],
description="Read-only viewer role"
)
Permission Definition
# Define permissions
permissions = [
{
"name": "data:read",
"description": "Read access to data",
"resource": "data",
"action": "read"
},
{
"name": "data:write",
"description": "Write access to data",
"resource": "data",
"action": "write"
},
{
"name": "models:create",
"description": "Create new models",
"resource": "models",
"action": "create"
}
]
# Register permissions
for perm in permissions:
role_manager.create_permission(**perm)
📊 Permission Matrix
| Resource | Create | Read | Update | Delete | Admin |
|---|---|---|---|---|---|
| Users | ✅ | ✅ | ✅ | ✅ | ✅ |
| Data | ✅ | ✅ | ✅ | ✅ | ✅ |
| Models | ✅ | ✅ | ✅ | ✅ | ✅ |
| Analytics | ✅ | ✅ | ✅ | ❌ | ✅ |
| Settings | ❌ | ✅ | ✅ | ❌ | ✅ |