Tenant Gebruiker Operaties
Tenant-gebonden gebruikersendpoints beheren gebruikers binnen een specifieke tenant. Deze endpoints kunnen worden benaderd met een Global API Key of een Tenant API Key.
Authenticatie
| API Key Type | Toegang |
|---|---|
| Global API Key | Kan toegang krijgen tot elke tenant |
| Tenant API Key | Kan alleen toegang krijgen tot de eigen tenant |
Lijst Gebruikers voor Tenant
GET /api/tenant/{tenantId}/user
Haalt gebruikers op die aan een specifieke tenant zijn toegewezen.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
Query Parameters
| Parameter | Type | Standaard | Beschrijving |
|---|---|---|---|
page |
integer | 1 | Paginanummer voor paginering |
pageSize |
integer | 50 | Aantal items per pagina (max: 1000) |
includeDisabled |
boolean | false | Inclusief uitgeschakelde gebruikers |
role |
string | null | Filter op rolename |
search |
string | null | Zoek op e-mail of weergavenaam |
Antwoord (200 OK)
Zelfde structuur als de globale Lijst Alle Gebruikers, maar gefilterd op de opgegeven tenant.
Maak Gebruiker aan in Tenant
POST /api/tenant/{tenantId}/user
Maakt een nieuwe gebruiker aan EN wijst deze toe aan de tenant, of wijst een bestaande gebruiker toe aan de tenant.
Let op: Als een gebruiker met het opgegeven e-mailadres al bestaat, wordt deze toegewezen aan de tenant in plaats van een duplicaat te creëren.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
Request Body
{
"email": "john.smith@example.com",
"displayName": "John Smith",
"firstName": "John",
"lastName": "Smith",
"roleName": "Analyst"
}
Request Velden
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
email |
string | Ja | E-mailadres van de gebruiker |
displayName |
string | Ja | Weergavenaam (2-100 tekens) |
firstName |
string | Nee | Voornaam (max 50 tekens) |
lastName |
string | Nee | Achternaam (max 50 tekens) |
roleName |
string | Ja | Rolnaam (zie Roles & Permissions) |
Capaciteitscontrole
De operatie valideert tenant capaciteitslimieten:
- MaxUsers limiet wordt gecontroleerd voor alle rollen
- MaxAnalyst limiet wordt gecontroleerd voor Analyst-rollen
Antwoord (201 Created)
{
"userId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "john.smith@example.com",
"displayName": "John Smith",
"message": "Gebruiker succesvol aangemaakt en toegewezen aan tenant"
}
Foutantwoorden
Conflict (409):
{
"error": "Gebruiker is al toegewezen aan deze tenant"
}
Capaciteit Overschreden (400):
{
"error": "Kan gebruiker niet toevoegen: tenant heeft zijn maximale gebruikerslimiet bereikt (100)",
"hint": "Verhoog de gebruikers- of analystlimiet van de tenant om meer gebruikers toe te voegen"
}
Haal Gebruiker op in Tenant
GET /api/tenant/{tenantId}/user/{userId}
Haalt een specifieke gebruiker op binnen de tenant context.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
userId |
GUID | Ja | De gebruiker identificatie |
Antwoord (200 OK)
Retourneert het gebruikersobject als deze is toegewezen aan de tenant.
Haal Gebruiker op via E-mail in Tenant
GET /api/tenant/{tenantId}/user/by-email/{email}
Haalt een gebruiker op via e-mail binnen de tenant context.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
email |
string | Ja | Het e-mailadres van de gebruiker (URL gecodeerd) |
Antwoord (200 OK)
Retourneert het gebruikersobject als deze is toegewezen aan de tenant.
Wijs Bestaande Gebruiker Toe aan Tenant
POST /api/tenant/{tenantId}/user/{userId}
Wijst een bestaande gebruiker toe aan een tenant.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
userId |
GUID | Ja | De gebruiker identificatie |
Request Body (Optioneel)
{
"roleName": "Analyst"
}
Antwoord (200 OK)
{
"message": "Gebruiker succesvol toegewezen aan tenant"
}
Update Gebruiker in Tenant
PUT /api/tenant/{tenantId}/user/{userId}
Wijzigt de eigenschappen van een gebruiker binnen de tenant context.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
userId |
GUID | Ja | De gebruiker identificatie |
Request Body
{
"displayName": "Bijgewerkte Naam",
"roleName": "TenantAdmin"
}
Antwoord (200 OK)
{
"message": "Gebruiker succesvol bijgewerkt"
}
Verwijder Gebruiker uit Tenant
DELETE /api/tenant/{tenantId}/user/{userId}
Verwijdert de toewijzing van een gebruiker aan een tenant. Dit verwijdert de gebruiker NIET uit het systeem.
Padparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
tenantId |
GUID | Ja | De tenant-identificatie |
userId |
GUID | Ja | De gebruiker identificatie |
Antwoord (200 OK)
{
"message": "Gebruiker succesvol verwijderd uit tenant"
}
Foutantwoorden
Niet Gevonden (404):
{
"error": "Gebruiker is niet toegewezen aan deze tenant"
}
Implementatie Voorbeelden
cURL
# Lijst gebruikers voor een tenant (Tenant API key werkt)
curl -X GET "https://your-mindzie-instance.com/api/tenant/12345678-1234-1234-1234-123456789012/user" \
-H "Authorization: Bearer YOUR_TENANT_API_KEY"
# Zoek gebruikers in tenant
curl -X GET "https://your-mindzie-instance.com/api/tenant/12345678-1234-1234-1234-123456789012/user?search=john" \
-H "Authorization: Bearer YOUR_TENANT_API_KEY"
# Maak gebruiker aan in tenant (maakt gebruiker AAN en wijst toe)
curl -X POST "https://your-mindzie-instance.com/api/tenant/12345678-1234-1234-1234-123456789012/user" \
-H "Authorization: Bearer YOUR_TENANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "new.user@example.com",
"displayName": "Nieuwe Gebruiker",
"roleName": "Analyst"
}'
# Wijs bestaande gebruiker toe aan tenant
curl -X POST "https://your-mindzie-instance.com/api/tenant/12345678-1234-1234-1234-123456789012/user/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_TENANT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"roleName": "Analyst"}'
# Verwijder gebruiker uit tenant
curl -X DELETE "https://your-mindzie-instance.com/api/tenant/12345678-1234-1234-1234-123456789012/user/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_TENANT_API_KEY"
Python
import requests
BASE_URL = 'https://your-mindzie-instance.com'
class TenantUserManager:
def __init__(self, api_key, tenant_id):
"""
Initialiseer met een API key en tenant ID.
Werkt met zowel Global als Tenant API keys.
"""
self.headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
self.tenant_id = tenant_id
def list_users(self, page=1, page_size=50, role=None, search=None):
"""Lijst gebruikers die aan deze tenant zijn toegewezen."""
url = f'{BASE_URL}/api/tenant/{self.tenant_id}/user'
params = {'page': page, 'pageSize': page_size}
if role:
params['role'] = role
if search:
params['search'] = search
response = requests.get(url, headers=self.headers, params=params)
response.raise_for_status()
return response.json()
def create_user(self, email, display_name, role_name,
first_name=None, last_name=None):
"""Maak een gebruiker aan en wijs toe aan tenant (of wijs bestaande gebruiker toe)."""
url = f'{BASE_URL}/api/tenant/{self.tenant_id}/user'
payload = {
'email': email,
'displayName': display_name,
'roleName': role_name
}
if first_name:
payload['firstName'] = first_name
if last_name:
payload['lastName'] = last_name
response = requests.post(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def assign_user(self, user_id, role_name=None):
"""Wijs een bestaande gebruiker toe aan deze tenant."""
url = f'{BASE_URL}/api/tenant/{self.tenant_id}/user/{user_id}'
payload = {}
if role_name:
payload['roleName'] = role_name
response = requests.post(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def remove_user(self, user_id):
"""Verwijder een gebruiker uit deze tenant (verwijdert de gebruiker niet)."""
url = f'{BASE_URL}/api/tenant/{self.tenant_id}/user/{user_id}'
response = requests.delete(url, headers=self.headers)
response.raise_for_status()
return response.json()
def get_user(self, user_id):
"""Haalt een specifieke gebruiker op in deze tenant."""
url = f'{BASE_URL}/api/tenant/{self.tenant_id}/user/{user_id}'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
# Gebruik met Tenant API key
tenant_id = '12345678-1234-1234-1234-123456789012'
manager = TenantUserManager('your-tenant-api-key', tenant_id)
# Lijst alle analisten in tenant
analysts = manager.list_users(role='Analyst')
print(f"Tenant heeft {analysts['totalCount']} analisten")
for user in analysts['users']:
print(f" - {user['displayName']} ({user['email']})")
# Voeg een nieuwe analist toe
new_user = manager.create_user(
email='new.analyst@example.com',
display_name='Nieuwe Analist',
role_name='Analyst'
)
print(f"Toegevoegde gebruiker: {new_user['userId']}")
# Verwijder gebruiker uit tenant (gebruiker blijft in systeem)
manager.remove_user(new_user['userId'])
print("Gebruiker verwijderd uit tenant")
JavaScript/Node.js
const BASE_URL = 'https://your-mindzie-instance.com';
class TenantUserManager {
constructor(apiKey, tenantId) {
this.headers = {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
};
this.tenantId = tenantId;
}
async listUsers(options = {}) {
const params = new URLSearchParams({
page: options.page || 1,
pageSize: options.pageSize || 50
});
if (options.role) params.append('role', options.role);
if (options.search) params.append('search', options.search);
const url = `${BASE_URL}/api/tenant/${this.tenantId}/user?${params}`;
const response = await fetch(url, { headers: this.headers });
if (!response.ok) throw new Error(`Mislukt: ${response.status}`);
return await response.json();
}
async createUser(email, displayName, roleName) {
const url = `${BASE_URL}/api/tenant/${this.tenantId}/user`;
const response = await fetch(url, {
method: 'POST',
headers: this.headers,
body: JSON.stringify({ email, displayName, roleName })
});
if (!response.ok) throw new Error(`Mislukt: ${response.status}`);
return await response.json();
}
async assignUser(userId, roleName = null) {
const url = `${BASE_URL}/api/tenant/${this.tenantId}/user/${userId}`;
const body = roleName ? { roleName } : {};
const response = await fetch(url, {
method: 'POST',
headers: this.headers,
body: JSON.stringify(body)
});
if (!response.ok) throw new Error(`Mislukt: ${response.status}`);
return await response.json();
}
async removeUser(userId) {
const url = `${BASE_URL}/api/tenant/${this.tenantId}/user/${userId}`;
const response = await fetch(url, {
method: 'DELETE',
headers: this.headers
});
if (!response.ok) throw new Error(`Mislukt: ${response.status}`);
return await response.json();
}
}
// Gebruik
const tenantId = '12345678-1234-1234-1234-123456789012';
const manager = new TenantUserManager('your-tenant-api-key', tenantId);
// Lijst gebruikers
const users = await manager.listUsers();
console.log(`Tenant heeft ${users.totalCount} gebruikers`);
// Voeg nieuwe gebruiker toe
const newUser = await manager.createUser(
'new@example.com',
'Nieuwe Gebruiker',
'Analyst'
);
console.log(`Toegevoegd: ${newUser.userId}`);
Beste Praktijken
- Gebruik Tenant API Keys: Tenant-gebonden keys zijn voor de meeste operaties veiliger
- Controleer Capaciteit: Verifieer tenantlimieten voor bulk gebruikersaanmaak
- Verwijderen vs Verwijderen: Verwijderen uit tenant houdt gebruiker in systeem voor andere tenants
- Zoek vóór aanmaak: Controleer of gebruiker bestaat voordat je nieuwe aanmaakt om duplicaten te vermijden