Global Kullanıcı İşlemleri
Global kullanıcı uç noktaları, sistem genelinde kullanıcı yönetimi yetenekleri sağlar. Bu uç noktalar Global API Anahtarı gerektirir ve tüm kiracılardaki kullanıcılara erişim sağlar.
Kimlik Doğrulama
Bu sayfadaki tüm uç noktalar Global API Anahtarı gerektirir. Kiracıya özel API anahtarları 401 Yetkisiz hatası alacaktır.
Tüm Kullanıcıları Listele
GET /api/user
Tüm kiracılardaki kullanıcıların sayfalanmış listesini döner.
Sorgu Parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
page |
integer | 1 | Sayfalama için sayfa numarası |
pageSize |
integer | 50 | Sayfa başına öğe sayısı (maks: 1000) |
includeDisabled |
boolean | false | Devre dışı bırakılmış kullanıcılar dahil edilsin mi |
role |
string | null | Rol adına göre filtrele |
search |
string | null | E-posta veya görüntüleme adına göre arama |
Yanıt (200 OK)
{
"users": [
{
"userId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "john.smith@example.com",
"displayName": "John Smith",
"firstName": "John",
"lastName": "Smith",
"roleName": "Analyst",
"disabled": false,
"isServiceAccount": false,
"homeTenantId": null,
"homeTenantName": null,
"lastLogin": "2024-01-15T10:30:00Z",
"tenantCount": 2,
"tenantNames": "acme-corp, globex-inc",
"dateCreated": "2024-01-01T00:00:00Z"
}
],
"totalCount": 150,
"page": 1,
"pageSize": 50
}
Kullanıcı Nesnesi Alanları
| Alan | Tür | Açıklama |
|---|---|---|
userId |
GUID | Kullanıcının benzersiz tanımlayıcısı |
email |
string | Kullanıcının e-posta adresi (benzersiz) |
displayName |
string | Kullanıcının görüntüleme adı |
firstName |
string | Kullanıcının adı |
lastName |
string | Kullanıcının soyadı |
roleName |
string | Kullanıcının rolü (Administrator, TenantAdmin, Analyst, vb.) |
disabled |
boolean | Kullanıcı hesabının devre dışı olup olmadığı |
isServiceAccount |
boolean | Bunun bir servis hesabı olup olmadığı |
homeTenantId |
GUID | Servis hesapları için ana kiracı |
homeTenantName |
string | Servis hesapları için ana kiracı adı |
lastLogin |
datetime | Son giriş zaman damgası |
tenantCount |
integer | Kullanıcının atandığı kiracı sayısı |
tenantNames |
string | Virgülle ayrılmış kiracı adları listesi |
dateCreated |
datetime | Hesap oluşturulma tarihi |
Hata Yanıtları
Yetkisiz (401):
{
"error": "Bu uç nokta bir Global API anahtarı gerektirir. Kiracıya özel API anahtarları tüm kullanıcıları listeleyemez.",
"hint": "/api/tenant/{tenantId}/user kullanarak belirli bir kiracının kullanıcılarını listeleyin veya /admin/global-api-keys adresinden Global API anahtarı oluşturun"
}
Kullanıcı Oluştur
POST /api/user
Sistemde yeni bir kullanıcı oluşturur. Bu işlem kullanıcıyı herhangi bir kiracıya atamaz.
İstek Gövdesi
{
"email": "john.smith@example.com",
"displayName": "John Smith",
"firstName": "John",
"lastName": "Smith",
"roleName": "Analyst"
}
İstek Alanları
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email |
string | Evet | Kullanıcının e-postası (benzersiz olmalı) |
displayName |
string | Evet | Görüntüleme adı (2-100 karakter) |
firstName |
string | Hayır | Adı (maksimum 50 karakter) |
lastName |
string | Hayır | Soyadı (maksimum 50 karakter) |
roleName |
string | Evet | Rol adı (Roller ve İzinler sayfasına bakınız) |
Yanıt (201 Created)
{
"userId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "john.smith@example.com",
"displayName": "John Smith",
"message": "Kullanıcı başarıyla oluşturuldu"
}
Hata Yanıtları
Çakışma (409):
{
"error": "'john.smith@example.com' e-posta adresine sahip bir kullanıcı zaten mevcut"
}
ID ile Kullanıcıyı Getir
GET /api/user/{userId}
Belirli bir kullanıcının detaylı bilgilerini getirir.
Yol Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
userId |
GUID | Kullanıcı kimliği |
Yanıt (200 OK)
Kiracı atamalarıyla birlikte tam kullanıcı nesnesi döner.
Hata Yanıtları
Bulunamadı (404):
{
"error": "'a1b2c3d4-e5f6-7890-abcd-ef1234567890' ID'li kullanıcı bulunamadı",
"userId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
Kullanıcı Güncelle
PUT /api/user/{userId}
Kullanıcı özelliklerini günceller. Sadece sağlanan alanlar güncellenecektir.
Yol Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
userId |
GUID | Kullanıcı kimliği |
İstek Gövdesi
{
"displayName": "Jane Smith",
"roleName": "TenantAdmin",
"disabled": false,
"isServiceAccount": true,
"homeTenantId": "12345678-1234-1234-1234-123456789012"
}
İstek Alanları
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
displayName |
string | Hayır | Yeni görüntüleme adı |
roleName |
string | Hayır | Yeni rol adı |
disabled |
boolean | Hayır | Hesabı etkinleştir/devre dışı bırak |
isServiceAccount |
boolean | Hayır | Servis hesabı işaretçisi |
homeTenantId |
GUID | Koşullu | Servis hesabı yapılırken zorunlu |
Servis Hesabı Kuralları
- Sadece Administrator ve TenantAdmin rolleri servis hesabı olabilir
- Servis hesabı yapılırken
homeTenantIdzorunludur - Servis hesabı kaldırılırken
homeTenantIdotomatik olarak temizlenir
Yanıt (200 OK)
{
"message": "Kullanıcı başarıyla güncellendi"
}
E-posta ile Kullanıcıyı Getir
GET /api/user/by-email/{email}
Email adresine göre kullanıcıyı getirir.
Yol Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
email |
string | Kullanıcının e-posta adresi (URL kodlu) |
Yanıt (200 OK)
Tam kullanıcı nesnesi döner.
Kullanıcının Kiracılarını Getir
GET /api/user/{userId}/tenants
Kullanıcının atandığı tüm kiracıları getirir.
Yol Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
userId |
GUID | Kullanıcı kimliği |
Yanıt (200 OK)
{
"userId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "john.smith@example.com",
"displayName": "John Smith",
"tenants": [
{
"tenantId": "12345678-1234-1234-1234-123456789012",
"tenantName": "acme-corp",
"displayName": "Acme Corporation",
"dateAssigned": "2024-01-15T10:30:00Z"
}
]
}
Uygulama Örnekleri
cURL
# Tüm kullanıcıları listele (Global API anahtarı gerekir)
curl -X GET "https://your-mindzie-instance.com/api/user?page=1&pageSize=50" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
# İsimle kullanıcı arama
curl -X GET "https://your-mindzie-instance.com/api/user?search=john" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
# Role göre filtrele
curl -X GET "https://your-mindzie-instance.com/api/user?role=Analyst" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
# Yeni kullanıcı oluştur
curl -X POST "https://your-mindzie-instance.com/api/user" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "john.smith@example.com",
"displayName": "John Smith",
"roleName": "Analyst"
}'
# ID ile kullanıcıyı getir
curl -X GET "https://your-mindzie-instance.com/api/user/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
# E-posta ile kullanıcıyı getir
curl -X GET "https://your-mindzie-instance.com/api/user/by-email/john.smith%40example.com" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
# Kullanıcının kiracılarını getir
curl -X GET "https://your-mindzie-instance.com/api/user/a1b2c3d4-e5f6-7890-abcd-ef1234567890/tenants" \
-H "Authorization: Bearer YOUR_GLOBAL_API_KEY"
Python
import requests
BASE_URL = 'https://your-mindzie-instance.com'
class GlobalUserManager:
def __init__(self, global_api_key):
"""GLOBAL API anahtarı ile başlatılır (kiracıya özel değil)."""
self.headers = {
'Authorization': f'Bearer {global_api_key}',
'Content-Type': 'application/json'
}
def list_users(self, page=1, page_size=50, include_disabled=False,
role=None, search=None):
"""Tüm kiracılardaki kullanıcıları listele."""
url = f'{BASE_URL}/api/user'
params = {
'page': page,
'pageSize': page_size,
'includeDisabled': include_disabled
}
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):
"""Yeni kullanıcı oluştur (herhangi bir kiracıya atanmamış)."""
url = f'{BASE_URL}/api/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 get_user(self, user_id):
"""ID ile kullanıcıyı getir."""
url = f'{BASE_URL}/api/user/{user_id}'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def get_user_by_email(self, email):
"""E-posta adresi ile kullanıcıyı getir."""
from urllib.parse import quote
url = f'{BASE_URL}/api/user/by-email/{quote(email, safe="")}'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
def update_user(self, user_id, display_name=None, role_name=None,
disabled=None, is_service_account=None, home_tenant_id=None):
"""Kullanıcı özelliklerini güncelle."""
url = f'{BASE_URL}/api/user/{user_id}'
payload = {}
if display_name is not None:
payload['displayName'] = display_name
if role_name is not None:
payload['roleName'] = role_name
if disabled is not None:
payload['disabled'] = disabled
if is_service_account is not None:
payload['isServiceAccount'] = is_service_account
if home_tenant_id is not None:
payload['homeTenantId'] = home_tenant_id
response = requests.put(url, json=payload, headers=self.headers)
response.raise_for_status()
return response.json()
def get_user_tenants(self, user_id):
"""Kullanıcının tüm kiracı atamalarını getir."""
url = f'{BASE_URL}/api/user/{user_id}/tenants'
response = requests.get(url, headers=self.headers)
response.raise_for_status()
return response.json()
# Kullanım
manager = GlobalUserManager('your-global-api-key')
# Tüm analistleri listele
analysts = manager.list_users(role='Analyst')
print(f"Toplam analist: {analysts['totalCount']}")
# Yeni kullanıcı oluştur
new_user = manager.create_user(
email='new.analyst@example.com',
display_name='New Analyst',
role_name='Analyst',
first_name='New',
last_name='Analyst'
)
print(f"Oluşturulan kullanıcı: {new_user['userId']}")
# Kullanıcının kiracı atamalarını al
user_id = new_user['userId']
tenants = manager.get_user_tenants(user_id)
print(f"Kullanıcı {len(tenants['tenants'])} kiracıya atanmış")
JavaScript/Node.js
const BASE_URL = 'https://your-mindzie-instance.com';
class GlobalUserManager {
constructor(globalApiKey) {
this.headers = {
'Authorization': `Bearer ${globalApiKey}`,
'Content-Type': 'application/json'
};
}
async listUsers(options = {}) {
const params = new URLSearchParams({
page: options.page || 1,
pageSize: options.pageSize || 50,
includeDisabled: options.includeDisabled || false
});
if (options.role) params.append('role', options.role);
if (options.search) params.append('search', options.search);
const url = `${BASE_URL}/api/user?${params}`;
const response = await fetch(url, { headers: this.headers });
if (!response.ok) throw new Error(`Hata: ${response.status}`);
return await response.json();
}
async createUser(email, displayName, roleName) {
const url = `${BASE_URL}/api/user`;
const response = await fetch(url, {
method: 'POST',
headers: this.headers,
body: JSON.stringify({ email, displayName, roleName })
});
if (!response.ok) throw new Error(`Hata: ${response.status}`);
return await response.json();
}
async getUser(userId) {
const url = `${BASE_URL}/api/user/${userId}`;
const response = await fetch(url, { headers: this.headers });
if (!response.ok) throw new Error(`Hata: ${response.status}`);
return await response.json();
}
async getUserTenants(userId) {
const url = `${BASE_URL}/api/user/${userId}/tenants`;
const response = await fetch(url, { headers: this.headers });
if (!response.ok) throw new Error(`Hata: ${response.status}`);
return await response.json();
}
}
// Kullanım
const manager = new GlobalUserManager('your-global-api-key');
// Tüm kullanıcıları listele
const users = await manager.listUsers();
console.log(`Toplam kullanıcılar: ${users.totalCount}`);
// Yeni kullanıcı oluştur ve kiracı atamalarını kontrol et
const newUser = await manager.createUser(
'new@example.com',
'New User',
'Analyst'
);
const tenants = await manager.getUserTenants(newUser.userId);
console.log(`${tenants.tenants.length} kiracıya atanmış`);