🚀 EIB API

Ege İhracatçı Birlikleri - Duyuru Yönetim API'si

✅ Aktif

📋 API Endpoint'leri

GET Duyuruları Listele

/api/announcements
Query Parameters:
sectorIds[]: Sektör ID filtreleri (örn: sector_tekstil)
unionIds[]: Birlik ID filtreleri (örn: union_tekstil)
category: Kategori filtresi (örn: Genel, Eğitim, Etkinlik)
limit: Sayfa başına kayıt sayısı (varsayılan: 20)
offset: Atlanan kayıt sayısı (varsayılan: 0)
Örnek:
/api/announcements?sectorIds=sector_tekstil&unionIds=union_tekstil&limit=10

GET Sektörleri Listele

/api/sectors
Örnek Response:
{"sectors": [{"id": "sector_tekstil", "name": "Tekstil", "description": "..."}]}

GET Birlikleri Listele

/api/unions
Örnek Response:
{"unions": [{"id": "union_tekstil", "name": "EİB Tekstil", "description": "..."}]}

GET Kategorileri Listele

/api/categories
Örnek Response:
{"categories": ["Genel", "Eğitim", "Etkinlik"]}

👤 Kullanıcı Yönetimi

GET Kullanıcı Detayı

/api/getUserById?userId={userId}
Query Parameters:
userId: Kullanıcı ID'si (zorunlu)
Örnek:
/api/getUserById?userId=user_001
Response:
{"id": "user_001", "name": "Onur", "email": "onur@test.com", "birthday": "1990-05-15T00:00:00Z", "sectorIds": ["sector_tekstil"], ...}

POST Kullanıcı Oluştur

/api/createUser
Request Body (JSON):
id/uid: Kullanıcı ID'si (opsiyonel, Firebase Auth UID için)
name: Ad (zorunlu)
surname: Soyad (zorunlu)
email: E-posta (zorunlu, benzersiz)
phone: Telefon (opsiyonel)
company: Şirket (opsiyonel)
birthday: Doğum tarihi (opsiyonel, ISO 8601)
sectorIds: Sektör ID'leri array (opsiyonel)
savedAnnouncements: Kaydedilen duyurular (opsiyonel)
Firebase Auth UID ile:
{"uid": "firebase_auth_uid_here", "name": "Ahmet", "surname": "Yılmaz", "email": "ahmet@test.com", "sectorIds": ["sector_tekstil"]}
Otomatik ID ile:
{"name": "Mehmet", "surname": "Demir", "email": "mehmet@test.com"}

PUT Kullanıcı Güncelle

/api/updateUser?userId={userId}
Query Parameters:
userId: Güncellenecek kullanıcı ID'si (zorunlu)
Request Body (JSON) - Tüm alanlar opsiyonel:
name, surname, email, phone, company: Temel bilgiler
birthday: Doğum tarihi
sectorIds: Sektör ID'leri array
savedAnnouncements: Kaydedilen duyurular
readAnnouncements: Okunmuş duyurular
Örnek:
PUT /api/updateUser?userId=kie7iC5sf...
{"company": "Yeni Şirket", "sectorIds": ["sector_otomotiv", "sector_tekstil"]}

📱 Flutter Entegrasyonu

Dart/Flutter Örnek Kullanım:
// API Base URL
const String baseURL = "https://eib-api.web.app";

// Duyuruları getir
final response = await http.get(
  Uri.parse('$baseURL/api/announcements?sectorIds=sector_tekstil')
);

// Kullanıcı detayı getir
final user = await http.get(
  Uri.parse('$baseURL/api/getUserById?userId=user_001')
);

// Yeni kullanıcı oluştur (Firebase Auth UID ile)
final User? firebaseUser = FirebaseAuth.instance.currentUser;
final newUser = await http.post(
  Uri.parse('$baseURL/api/createUser'),
  headers: {'Content-Type': 'application/json'},
  body: jsonEncode({
    'uid': firebaseUser?.uid, // Firebase Auth UID
    'name': 'Ahmet',
    'surname': 'Yılmaz',
    'email': firebaseUser?.email,
    'sectorIds': ['sector_tekstil']
  })
);

// Kullanıcı güncelle
final updatedUser = await http.put(
  Uri.parse('$baseURL/api/updateUser?userId=user_123'),
  headers: {'Content-Type': 'application/json'},
  body: jsonEncode({
    'company': 'Yeni Şirket',
    'savedAnnouncements': ['ann_001', 'ann_002']
  })
);
                

🔒 Hata Kodları

200: Başarılı (GET, PUT)
201: Oluşturuldu (POST)
400: Geçersiz istek (eksik alanlar, yanlış format)
404: Bulunamadı (kullanıcı mevcut değil)
405: İzin verilmeyen method
409: Çakışma (email zaten mevcut)
500: Sunucu hatası

📊 Veri Yapıları

Announcement (Duyuru)

{ "id": "ann_001", "title": "Yeni Teşvik Programı", "content": "<p>HTML içerik...</p>", "category": "Genel", "unions": [{"id": "union_tekstil", "title": "EİB Tekstil"}], "sectors": [{"id": "sector_tekstil", "title": "Tekstil"}], "imageUrl": "https://picsum.photos/800/400?random=1", "createdAt": "2025-11-12T12:00:00Z", "createdBy": "adminUserId" }

User (Kullanıcı)

{ "id": "user_001", "name": "Onur", "surname": "Bultan", "email": "onur@test.com", "phone": "+905078727022", "company": "Ege İhracat", "birthday": "1990-05-15T00:00:00Z", "sectorIds": ["sector_tekstil"], "savedAnnouncements": ["ann_001"], "readAnnouncements": [], "createdAt": "2025-11-17T13:35:30.120Z", "updatedAt": "2025-11-17T13:35:30.120Z" }