API Reference
Access Management
List Access Requests
- API Name: List Access Requests
- API Route:
GET /api/v1/access-management/requests - Request:
- Query Params:
page(number, default: 1),pageSize(number, default: 10),status(pending | approved | rejected, optional) - Auth: Session required. Admins with
access.managementpermission see all requests; regular users see only their own.
- Query Params:
- What it does: Returns a paginated list of access requests. Admins see all requests system-wide; non-admins see only their own submitted requests.
- Returns: Paginated result
{ data: [...], total, page, pageSize }
Create Access Request
- API Name: Create Access Request
- API Route:
POST /api/v1/access-management/requests - Request:
- Body:
json
{
"targetUserId": "string (required)",
"type": "project_access | workspace_access | permission (required)",
"resourceId": "string (required)",
"message": "string (optional)"
}- What it does: Creates a new access request for a specific resource (project, workspace, or permission). The request is submitted by the authenticated user and targeted at an admin user.
- Returns:
201with the created request object.400if required fields are missing or type is invalid.
Update Access Request
- API Name: Approve or Reject Access Request
- API Route:
PATCH /api/v1/access-management/requests/[requestId] - Request:
- Params:
requestId(string) — Request ID - Body:
- Params:
json
{
"status": "approved | rejected (required)"
}- What it does: Approves or rejects a pending access request. Records the reviewing admin's user ID.
- Returns: The updated request object.
400if status is invalid.
List Users
- API Name: List Users
- API Route:
GET /api/v1/access-management/users - Request:
- Query Params:
page(number, default: 1),pageSize(number, default: 10),search(string, optional),status(pending, optional) - Auth: Session required, permission:
access.management
- Query Params:
- What it does: Returns a paginated list of all users. If
status=pendingis provided, returns only users with pending approval status. - Returns: Paginated user list
{ data: [...], total, page, pageSize }
Delete User
- API Name: Delete User
- API Route:
DELETE /api/v1/access-management/users/[userId] - Request:
- Params:
userId(string) — User ID - Auth: Session required, permission:
access.management
- Params:
- What it does: Permanently deletes a user account. Prevents self-deletion (a user cannot delete their own account).
- Returns:
{ "message": "User deleted successfully" }.400if attempting self-deletion.404if user not found.
Get User Permissions
- API Name: Get User Permissions
- API Route:
GET /api/v1/access-management/users/[userId]/permissions - Request:
- Params:
userId(string) — User ID - Auth: Session required, permission:
access.management
- Params:
- What it does: Fetches the complete permission data for a user: their extra (directly granted) permissions, all system permissions, and the permission codes assigned by their role.
- Returns:
json
{
"allPermissions": [...],
"rolePermissionCodes": [...],
"extraPermissions": [...]
}Grant User Permission
- API Name: Grant Permission to User
- API Route:
POST /api/v1/access-management/users/[userId]/permissions - Request:
- Params:
userId(string) — User ID - Body:
- Params:
json
{
"permissionId": "string (required)"
}- What it does: Grants a specific extra permission to a user, beyond what their role already provides.
- Returns:
201with the newly granted permission record.
Revoke User Permission
- API Name: Revoke Permission from User
- API Route:
DELETE /api/v1/access-management/users/[userId]/permissions/[permissionId] - Request:
- Params:
userId(string) — User ID,permissionId(string) — Permission ID - Auth: Session required, permission:
access.management
- Params:
- What it does: Revokes a specific extra permission previously granted to a user.
- Returns:
{ "success": true }
Update User Role
- API Name: Update User Role
- API Route:
PATCH /api/v1/access-management/users/[userId]/role - Request:
- Params:
userId(string) — User ID - Body:
- Params:
json
{
"roleId": "string (required)"
}- What it does: Updates a user's global role and syncs the new role into all group memberships for that user.
- Returns: The updated user-role record.
List Roles
- API Name: List Roles
- API Route:
GET /api/v1/access-management/roles - Request:
- Auth: Session required, permission:
access.management
- Auth: Session required, permission:
- What it does: Returns all available roles in the system, excluding
super_admin. - Returns: Array of role objects
[ { "id", "name", "description" } ]
List Roles with Permissions
- API Name: List All Roles with Their Permissions
- API Route:
GET /api/v1/access-management/roles/permissions - Request:
- Auth: Session required, permission:
access.management
- Auth: Session required, permission:
- What it does: Returns all roles along with their associated permissions, and also returns the full list of all system permissions. Used for the role-permission matrix UI.
- Returns:
json
{
"roles": [ { "id", "name", "permissions": [...] } ],
"permissions": [ { "id", "code", "description" } ]
}Update Role Permissions
- API Name: Update Permissions for a Role
- API Route:
PUT /api/v1/access-management/roles/[roleId]/permissions - Request:
- Params:
roleId(string) — Role ID - Body:
- Params:
json
{
"permissionIds": ["string", ...]
}- What it does: Replaces all permissions for the specified role with the provided set of permission IDs.
- Returns: The updated role with its new permissions.