Members
Manage team members and their roles.
Access levels
Membership roles are integers passed as accessLevel:
| Level | Role |
|---|---|
| 1 | Member |
| 2 | Member Plus |
| 3 | Designer |
| 4 | Data Wizard |
| 5 | Publisher |
| 6 | Admin |
GET /api/teams/{id}/members
Get all team members.
Response:
A paginated HAL collection under _embedded["inf:member"], each membership embedding its user. aggs.all is the total member count.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/teams/order-desk/members?limit=10&start=0"
}
},
"start": 0,
"count": 1,
"total": 1,
"aggs": {
"all": 1
},
"_embedded": {
"inf:member": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/teams/order-desk/members/annie.larson"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"userId": "annie.larson",
"teamId": "order-desk",
"accessLevel": 4,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"_embedded": {
"inf:user": {
"_links": {
"self": {
"href": "https://informer.example.com/api/users/annie.larson"
},
"inf:memberships": {
"href": "https://informer.example.com/api/users/annie.larson/memberships"
},
"inf:avatar-upload": {
"href": "https://informer.example.com/api/users/annie.larson/_upload/{uploadId}/avatar-upload",
"templated": true
},
"inf:password": {
"href": "https://informer.example.com/api/users/annie.larson/password"
},
"inf:feed": {
"href": "https://informer.example.com/api/users/annie.larson/feed"
},
"inf:viewed-feed": {
"href": "https://informer.example.com/api/users/annie.larson/_markFeedViewed"
},
"inf:superuser": {
"href": "https://informer.example.com/api/users/annie.larson/superuser"
}
},
"permissions": {
"changeDomain": true,
"changeProfile": true,
"changePassword": true,
"delete": true,
"edit": true,
"reassign": true,
"superuser": true,
"enable": true,
"changeTheme": true,
"lock": true,
"setGlobalPermissions": true,
"manageLogin": true
},
"domain": "local",
"username": "annie.larson",
"displayName": "annie.larson",
"familyName": null,
"givenName": null,
"middleName": null,
"email": "annie.larson@example.com",
"data": null,
"superuser": false,
"timezone": "America/New_York",
"settings": {
"log": {
"log": false,
"info": false,
"warn": false,
"debug": false,
"error": true,
"remote": false
}
},
"enabled": true,
"source": null,
"sourceId": null,
"lastViewedFeed": null,
"tenant": "acme",
"globalPermissions": {
"ai": false,
"jobCreation": false,
"viewAllTeams": false,
"viewAllUsers": false,
"painlessScriptCreation": false
},
"userFields": {},
"locked": false,
"lockedAt": null,
"loginAttempts": 0,
"passwordSetAt": "2026-01-15T16:20:00.000Z",
"passwordExpiresAt": "2026-01-15T16:20:00.000Z",
"forgotPasswordRequestTime": null,
"mfa": null,
"mfaConfig": {},
"aiMessage": null,
"aiConsent": false,
"hasSharedDatasources": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"memberships": [
{
"id": "00000000-0000-4000-8000-000000000001",
"userId": "annie.larson",
"teamId": "order-desk",
"accessLevel": 4,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
],
"initials": "AN",
"colorIndex": 4,
"avatarColor": {
"background": "#81C784",
"text": "#1B5E20"
},
"managesPassword": true
}
}
}
]
}
}
GET /api/teams/{id}/members/{username}
Get a specific member: the membership row (its accessLevel) with the embedded user.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/teams/order-desk/members/annie.larson"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"userId": "annie.larson",
"teamId": "order-desk",
"accessLevel": 4,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"_embedded": {
"inf:user": {
"_links": {
"self": {
"href": "https://informer.example.com/api/users/annie.larson"
},
"inf:memberships": {
"href": "https://informer.example.com/api/users/annie.larson/memberships"
},
"inf:avatar-upload": {
"href": "https://informer.example.com/api/users/annie.larson/_upload/{uploadId}/avatar-upload",
"templated": true
},
"inf:password": {
"href": "https://informer.example.com/api/users/annie.larson/password"
},
"inf:feed": {
"href": "https://informer.example.com/api/users/annie.larson/feed"
},
"inf:viewed-feed": {
"href": "https://informer.example.com/api/users/annie.larson/_markFeedViewed"
},
"inf:superuser": {
"href": "https://informer.example.com/api/users/annie.larson/superuser"
}
},
"permissions": {
"changeDomain": true,
"changeProfile": true,
"changePassword": true,
"delete": true,
"edit": true,
"reassign": true,
"superuser": true,
"enable": true,
"changeTheme": true,
"lock": true,
"setGlobalPermissions": true,
"manageLogin": true
},
"domain": "local",
"username": "annie.larson",
"displayName": "annie.larson",
"familyName": null,
"givenName": null,
"middleName": null,
"email": "annie.larson@example.com",
"data": null,
"superuser": false,
"timezone": "America/New_York",
"settings": {
"log": {
"log": false,
"info": false,
"warn": false,
"debug": false,
"error": true,
"remote": false
}
},
"enabled": true,
"source": null,
"sourceId": null,
"lastViewedFeed": null,
"tenant": "acme",
"globalPermissions": {
"ai": false,
"jobCreation": false,
"viewAllTeams": false,
"viewAllUsers": false,
"painlessScriptCreation": false
},
"userFields": {},
"locked": false,
"lockedAt": null,
"loginAttempts": 0,
"passwordSetAt": "2026-01-15T16:20:00.000Z",
"passwordExpiresAt": "2026-01-15T16:20:00.000Z",
"forgotPasswordRequestTime": null,
"mfa": null,
"mfaConfig": {},
"aiMessage": null,
"aiConsent": false,
"hasSharedDatasources": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"initials": "AN",
"colorIndex": 4,
"avatarColor": {
"background": "#81C784",
"text": "#1B5E20"
},
"managesPassword": true
}
}
}
PUT /api/teams/{id}/members/{username}
Add or update a team member. Upserts the membership at the given access level.
Permissions: Team add-member (Admin)
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
accessLevel | integer | Yes | Role level 1–6 (see table above) |
{
"accessLevel": 4
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/teams/order-desk/members/annie.larson"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"teamId": "order-desk",
"userId": "annie.larson",
"accessLevel": 4,
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"_altid": null,
"_embedded": {
"inf:user": {
"_links": {
"self": {
"href": "https://informer.example.com/api/users/annie.larson"
}
},
"permissions": {
"changeDomain": true,
"changeProfile": true,
"changePassword": true,
"delete": true,
"edit": true,
"reassign": true,
"superuser": true,
"enable": true,
"changeTheme": true,
"lock": true,
"setGlobalPermissions": true,
"manageLogin": true
},
"domain": "local",
"username": "annie.larson",
"displayName": "annie.larson",
"familyName": null,
"givenName": null,
"middleName": null,
"email": "annie.larson@example.com",
"data": null,
"superuser": false,
"timezone": "America/New_York",
"settings": {
"log": {
"log": false,
"info": false,
"warn": false,
"debug": false,
"error": true,
"remote": false
}
},
"enabled": true,
"source": null,
"sourceId": null,
"lastViewedFeed": null,
"tenant": "acme",
"globalPermissions": {
"ai": false,
"jobCreation": false,
"viewAllTeams": false,
"viewAllUsers": false,
"painlessScriptCreation": false
},
"userFields": {},
"locked": false,
"lockedAt": null,
"loginAttempts": 0,
"passwordSetAt": "2026-01-15T16:20:00.000Z",
"passwordExpiresAt": "2026-01-15T16:20:00.000Z",
"forgotPasswordRequestTime": null,
"mfa": null,
"mfaConfig": {},
"aiMessage": null,
"aiConsent": false,
"hasSharedDatasources": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"teams": []
}
}
}
DELETE /api/teams/{id}/members/{username}
Remove a member from the team. The user account itself is unaffected.
Permissions: Team remove-member (Admin)
Response:
Responds 200 on success.
PATCH /api/memberships
Bulk-edit memberships across teams in one request, as a JSON Patch document.
Request Body:
A JSON Patch array. Each path is /{teamId}/{username}; value is the access level.
op | Effect |
|---|---|
add | Grant membership at value |
replace | Change the member's access level to value |
remove | Revoke membership |
Each operation is permission-checked independently (a forbidden op fails the whole request).
[
{
"op": "add",
"path": "/order-desk/evan.cho",
"value": 1
}
]
Use Case:
Efficiently apply multiple membership changes in one transaction.