Members & Users API
Base paths: /api/orgs/{organizationId}/users, /api/admin/users
All endpoints require Authorization: Bearer <token>.
Organisation Users
List Members
GET /api/orgs/{organizationId}/users
Authorization: Bearer <adminToken>
Query Parameters:
| Param | Type | Description |
|---|---|---|
status | string | Filter by status: ACTIVE, PENDING, SUSPENDED |
search | string | Search by name or email |
page | int | Page number (0-based) |
size | int | Page size (default 20) |
sort | string | Sort field (e.g. lastName,asc) |
Response 200:
{
"content": [
{
"id": "user-uuid",
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Doe",
"status": "ACTIVE",
"roles": ["MEMBER"],
"joinedAt": "2024-01-15T10:00:00Z"
}
],
"totalElements": 42,
"totalPages": 3,
"page": 0,
"size": 20
}
Create User in Organisation
POST /api/orgs/{organizationId}/users
Authorization: Bearer <adminToken>
{
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"roleId": "role-uuid",
"sendInvitationEmail": true
}
Update User
PUT /api/orgs/{organizationId}/users/{userId}
Authorization: Bearer <adminToken>
{
"firstName": "John",
"lastName": "Smith",
"roleId": "new-role-uuid",
"status": "SUSPENDED"
}
Delete User from Organisation
DELETE /api/orgs/{organizationId}/users/{userId}
Authorization: Bearer <adminToken>
Removes the user from the organisation (sets status to INACTIVE). Does not delete the user account.
Admin — All Users
These endpoints are restricted to system admins (SYSTEM user type, SUPER_ADMIN or PLATFORM_ADMIN role).
List All Users
GET /api/admin/users
Authorization: Bearer <systemAdminToken>
Query Parameters: Same pagination/filter params as above, plus:
| Param | Type | Description |
|---|---|---|
organizationId | UUID | Filter by organisation |
accountStatus | string | Filter by account status |
Get User Details
GET /api/admin/users/{userId}
Authorization: Bearer <systemAdminToken>
Returns full user profile including all organisation memberships, roles, and audit history.
Membership Types
List Membership Types
GET /api/orgs/{organizationId}/membership-types
Authorization: Bearer <token>
Create Membership Type
POST /api/orgs/{organizationId}/membership-types
Authorization: Bearer <adminToken>
{
"name": "Student",
"description": "For current students",
"price": 25.00,
"currency": "CAD",
"durationMonths": 12,
"benefits": ["Discounted events", "Newsletter access"]
}
Update Membership Type
PUT /api/orgs/{organizationId}/membership-types/{typeId}
Authorization: Bearer <adminToken>
Delete Membership Type
DELETE /api/orgs/{organizationId}/membership-types/{typeId}
Authorization: Bearer <adminToken>
User Memberships
Get User's Membership
GET /api/orgs/{organizationId}/users/{userId}/membership
Authorization: Bearer <adminToken>
Assign Membership
POST /api/orgs/{organizationId}/users/{userId}/membership
Authorization: Bearer <adminToken>
{
"membershipTypeId": "type-uuid",
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}
Renew Membership
POST /api/orgs/{organizationId}/users/{userId}/membership/renew
Authorization: Bearer <adminToken>