Role Membership and Mapping APIs
Role Membership and Mapping APIs
The Role Membership and Mapping APIs provide endpoints to view, assign, and remove role memberships in IQ Server. These APIs let administrators manage which users and groups belong to specific roles across global and non-global scopes. They extend access control functionality by enabling programmatic management of role-to-member relationships.
Permissions Required
| Scope | Operation | Required Permission |
|---|---|---|
| Non-global | View memberships | View IQ Elements |
| Non-global | Assign/unassign members | Edit Access Control |
| Global | All operations | Edit System Configuration and Users |
Set Members for a Role (Non-Global)
Replaces the entire list of members for a given role within a specific context.
PUT /api/v2/roleMemberships/{ownerType}/{ownerId}/role/{roleId}/members
Example:
curl -u admin:admin123 -X PUT \
-H "Content-Type: application/json" \
-d '[{"type":"USER","internalName":"user1","displayName":"User One","email":"user1@example.com","realm":"IQ Server"}]' \
http://localhost:8070/api/v2/roleMemberships/application/myApp/role/abcd123/members
- ownerType:
application,organization,repository, orrepository_manager - ownerId: Application public ID or internal organization/repository ID
Note
This operation replaces the existing member list for the role. Any members not included in the request will be removed.
Set Members for a Role (Global)
PUT /api/v2/roleMemberships/{ownerType}/role/{roleId}/members
Example:
curl -u admin:admin123 -X PUT \
-H "Content-Type: application/json" \
-d '[{"type":"USER","internalName":"admin","displayName":"Administrator","realm":"IQ Server"}]' \
http://localhost:8070/api/v2/roleMemberships/global/role/{roleId}/members
- ownerType:
globalorrepository_container
Note
Returns 400 Bad Request if assigning application-level roles at the global level.
Get All Roles with Members (Non-Global)
Retrieves all roles and their associated members for a specific context.
GET /api/v2/roleMemberships/{ownerType}/{ownerId}/roles
Example:
curl -u admin:admin123 -X GET \
http://localhost:8070/api/v2/roleMemberships/application/myApp/roles
Get All Roles with Members (Global)
Retrieves all global roles and their associated members.
GET /api/v2/roleMemberships/{ownerType}/roles
Example:
curl -u admin:admin123 -X GET \
http://localhost:8070/api/v2/roleMemberships/global/roles
Assign a Single User or Group to a Role
Assigns a single user or group to a role without replacing existing members.
Non-Global
PUT /api/v2/roleMemberships/{ownerType}/{ownerId}/role/{roleId}/{memberType}/{memberName}
Global
PUT /api/v2/roleMemberships/{ownerType}/role/{roleId}/{memberType}/{memberName}
Example:
curl -u admin:admin123 -X PUT \
http://localhost:8070/api/v2/roleMemberships/application/myApp/role/1da70fae1fd54d6cb7999871ebdb9a36/user/developer1
- memberType:
userorgroup - memberName: Username or group name
Note
This is an additive operation. Existing members remain assigned.
Unassign a User or Group from a Role
Removes a single user or group from a specified role.
Non-Global
DELETE /api/v2/roleMemberships/{ownerType}/{ownerId}/role/{roleId}/{memberType}/{memberName}
Global
DELETE /api/v2/roleMemberships/{ownerType}/role/{roleId}/{memberType}/{memberName}
Example:
curl -u admin:admin123 -X DELETE \
http://localhost:8070/api/v2/roleMemberships/global/role/1b92fae3e55a411793a091fb821c422d/user/testuser
Note
Returns 404 Not Found if the role or member cannot be found.
Get Simplified Role Memberships
Retrieves a compact view of all role memberships for a given scope.
Non-Global
GET /api/v2/roleMemberships/{ownerType}/{ownerId}
Global
GET /api/v2/roleMemberships/{ownerType}
Example:
curl -u admin:admin123 -X GET \
http://localhost:8070/api/v2/roleMemberships/global
Note
Use this for summary information. For detailed role and membership data, use the Get All Roles with Members endpoints.
Request Body Example
When setting members for a role, include an array of member objects.
[\
{\
"type": "USER",\
"internalName": "user1",\
"displayName": "User One",\
"email": "user1@example.com",\
"realm": "IQ Server"\
},\
{\
"type": "GROUP",\
"internalName": "dev-team",\
"displayName": "Development Team",\
"realm": "LDAP"\
}\
]
Role Membership Behavior
The following rules apply when managing role memberships:
memberNamemust exactly match theinternalNamefield from theGETresponse.- Each member must include both
typeandinternalName. - The
realmfield is required for each member (for example, "IQ Server", "LDAP", or "SAML"). - At least one user must always remain in the System Administrator role.
- Global-level roles (e.g., System Administrator, Policy Administrator) can only be assigned globally.
- Application-level roles cannot be assigned globally.
- Role and member entries must exist before assignment.
- Bulk operations (
PUT /members) replace all members; single-member operations (PUT /user/{memberName}) are additive. - Role assignments are inherited down the organizational hierarchy (for example, organization → application).
Example Use Case
Assign a user to a role:
curl -u admin:admin123 -X PUT \
http://localhost:8070/api/v2/roleMemberships/application/myApp/role/1da70fae1fd54d6cb7999871ebdb9a36/user/developer1
Remove that user from the role:
curl -u admin:admin123 -X DELETE \
http://localhost:8070/api/v2/roleMemberships/application/myApp/role/1da70fae1fd54d6cb7999871ebdb9a36/user/developer1