Files
atahango/belgeler/API_QUICK_REFERENCE.md
Beyhan Oğur bbbf76b184 first commit
2026-04-26 21:35:24 +03:00

261 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# API Quick Reference - Hard Delete
## 🎯 En Hızlı Yöntem (Copy-Paste)
### Email ile Kullanıcı Sil
```bash
# 1. Bu değişkenleri değiştir
EMAIL_TO_DELETE="test@example.com"
# 2. Komutu çalıştır (tek satır)
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login -H "Content-Type: application/json" -d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token') && USER_ID=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=$EMAIL_TO_DELETE" -H "Authorization: Bearer $TOKEN" | jq -r '.users[0].id') && curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" -H "Authorization: Bearer $TOKEN" | jq '.'
```
### User ID ile Kullanıcı Sil
```bash
# 1. Bu değişkenleri değiştir
USER_ID_TO_DELETE="6df5465d-b8e6-44d2-970a-f682cb428e80"
# 2. Komutu çalıştır (tek satır)
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login -H "Content-Type: application/json" -d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token') && curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID_TO_DELETE?hard=true" -H "Authorization: Bearer $TOKEN" | jq '.'
```
## 📋 API Endpoints Tablosu
| Endpoint | Method | Auth | Body/Params | Açıklama |
|----------|--------|------|-------------|----------|
| `/v1/auth/login` | POST | ❌ | `{"email":"admin@gauth.local","password":"Admin@123"}` | Admin login |
| `/v1/admin/users/search` | GET | ✅ | `?q=email@test.com` | Email ile kullanıcı ara |
| `/v1/admin/users` | GET | ✅ | `?page=1&limit=10` | Kullanıcıları listele |
| `/v1/admin/users/{id}` | GET | ✅ | - | Kullanıcı detayı |
| `/v1/admin/users/{id}` | DELETE | ✅ | - | Soft delete |
| `/v1/admin/users/{id}?hard=true` | DELETE | ✅ | - | **Hard delete** |
## 📝 POST/PUT İçin Gerekli Veriler
### Yeni Kullanıcı Oluştur
```bash
curl -X POST http://localhost:8080/v1/admin/users \
-H "Authorization: Bearer $TOKEN" \
-F "email=newuser@test.com" \
-F "password=password123" \
-F "user_name=New User" \
-F "email_verified=false" \
-F "roles=user"
```
**Gerekli Alanlar:**
- `email` (string, required) - Email adresi
- `password` (string, required) - Şifre (min 6 karakter)
- `user_name` (string, required) - Kullanıcı adı (min 3 karakter)
- `email_verified` (boolean, optional) - Email doğrulandı mı? (default: false)
- `roles` (string, optional) - Roller (virgülle ayrılmış: "admin,user")
- `avatar` (file, optional) - Profil resmi
### Kullanıcı Güncelle
```bash
curl -X PUT http://localhost:8080/v1/admin/users/{user_id} \
-H "Authorization: Bearer $TOKEN" \
-F "email=updated@test.com" \
-F "user_name=Updated Name" \
-F "email_verified=true" \
-F "is_active=true" \
-F "roles=admin,user"
```
**Güncellenebilir Alanlar:**
- `email` (string, optional)
- `user_name` (string, optional)
- `email_verified` (boolean, optional)
- `is_active` (boolean, optional)
- `roles` (string, optional)
- `avatar` (file, optional)
### Rol Ata/Kaldır
```bash
# Rol ata
curl -X POST http://localhost:8080/v1/admin/users/{user_id}/roles \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"roles": ["admin", "user"]}'
# Rol kaldır
curl -X DELETE http://localhost:8080/v1/admin/users/{user_id}/roles/admin \
-H "Authorization: Bearer $TOKEN"
```
## 🔄 Tam İş Akışı Örnekleri
### Örnek 1: Kullanıcı Oluştur → Kontrol Et → Hard Delete
```bash
#!/bin/bash
set -e
echo "📝 Step 1: Admin Login"
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token')
echo "✅ Token: ${TOKEN:0:30}..."
echo ""
echo "📝 Step 2: Create Test User"
CREATE_RESULT=$(curl -s -X POST http://localhost:8080/v1/admin/users \
-H "Authorization: Bearer $TOKEN" \
-F "email=temp@test.com" \
-F "password=temp123" \
-F "user_name=Temp User" \
-F "email_verified=false" \
-F "roles=user")
USER_ID=$(echo $CREATE_RESULT | jq -r '.id')
echo "✅ Created User ID: $USER_ID"
echo ""
echo "📝 Step 3: Verify User Exists"
GET_RESULT=$(curl -s -X GET "http://localhost:8080/v1/admin/users/$USER_ID" \
-H "Authorization: Bearer $TOKEN")
echo "✅ User: $(echo $GET_RESULT | jq -r '.email')"
echo ""
echo "📝 Step 4: Hard Delete User"
DELETE_RESULT=$(curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
-H "Authorization: Bearer $TOKEN")
echo "$DELETE_RESULT"
echo ""
echo "📝 Step 5: Verify User Deleted"
VERIFY=$(curl -s -X GET "http://localhost:8080/v1/admin/users/$USER_ID" \
-H "Authorization: Bearer $TOKEN")
if echo $VERIFY | grep -q "error"; then
echo "✅ User successfully deleted (not found)"
else
echo "❌ User still exists!"
fi
```
### Örnek 2: Toplu Test Kullanıcıları Temizleme
```bash
#!/bin/bash
echo "🧹 Cleaning test users..."
TOKEN=$(curl -s -X POST http://localhost:8080/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@gauth.local","password":"Admin@123"}' | jq -r '.access_token')
# "test" içeren tüm kullanıcıları bul
USERS=$(curl -s -X GET "http://localhost:8080/v1/admin/users/search?q=test" \
-H "Authorization: Bearer $TOKEN")
# Her kullanıcıyı hard delete yap
echo "$USERS" | jq -r '.users[] | .id' | while read USER_ID; do
EMAIL=$(echo "$USERS" | jq -r ".users[] | select(.id==\"$USER_ID\") | .email")
echo "Deleting: $EMAIL ($USER_ID)"
curl -s -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
-H "Authorization: Bearer $TOKEN" | jq '.'
sleep 0.2 # Rate limiting
done
echo "✅ Cleanup completed!"
```
## 💾 JSON Response Örnekleri
### Başarılı Hard Delete
```json
{
"message": "User deleted permanently successfully"
}
```
### Başarılı Soft Delete
```json
{
"message": "User deleted soft successfully"
}
```
### Kullanıcı Arama Sonucu
```json
{
"users": [
{
"id": "abc-123",
"username": "testuser",
"email": "test@example.com",
"email_verified": false,
"created_at": "2026-02-04T20:00:00Z"
}
]
}
```
### Kullanıcı Detay
```json
{
"id": "abc-123",
"username": "testuser",
"email": "test@example.com",
"avatar": "",
"email_verified": false,
"created_at": "2026-02-04T20:00:00Z",
"updated_at": "2026-02-04T20:00:00Z",
"roles": [
{
"id": 2,
"name": "user",
"description": "Default user role",
"permissions": [
{
"name": "user:read"
}
]
}
]
}
```
## ⚠️ Önemli Hatırlatmalar
| ❌ YAPMAYIN | ✅ YAPIN |
|------------|---------|
| Üretimde hard delete kullanmadan test etmeden | Önce test ortamında deneyin |
| Token'ı kodda hard-code etmeyin | Environment variable kullanın |
| Kendi admin hesabınızı silmeye çalışmayın | Başka admin oluşturun |
| Yedek almadan toplu silme | Önce yedek alın |
## 🔧 Troubleshooting
### Token hatası alıyorsam?
```bash
# Token'ı kontrol et
curl -X GET http://localhost:8080/v1/auth/validate \
-H "Authorization: Bearer $TOKEN"
```
### Kullanıcı bulunamıyor?
```bash
# Search ile kontrol et
curl -X GET "http://localhost:8080/v1/admin/users/search?q=email@test.com" \
-H "Authorization: Bearer $TOKEN" | jq '.'
```
### Hard delete çalışmıyor?
```bash
# Önce soft delete dene
curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID" \
-H "Authorization: Bearer $TOKEN"
# Sonra hard=true ile tekrar dene
curl -X DELETE "http://localhost:8080/v1/admin/users/$USER_ID?hard=true" \
-H "Authorization: Bearer $TOKEN"
```