İçeriğe geç

Portal API'ye giriş#

Portal API, koordinatörlerin Modelen portalını programla yönetmesini sağlar: başvuru ve profil güncelleme, nabız gönderme, adres doğrulama ve herkese açık koordinatör dizinini okuma.

Herkese açık uç noktalar#

Anahtar gerekmez; CORS açıktır (tarayıcıdan çağrılabilir).

curl -s https://modelen.tr/api/v1/saglik
curl -s https://modelen.tr/api/v1/koordinatorler

API anahtarı oluşturmak#

  1. modelen.tr üzerinde hesap açın ve e-postanızı doğrulayın.
  2. Panel → Geliştiriciler için → API anahtarları (/panel/api) sayfasına gidin.
  3. Anahtara bir ad verip oluşturun. mdl_ ile başlayan anahtar yalnızca bir kez gösterilir; hemen kaydedin.
Dikkat

Anahtar parolanız gibidir. Sunucuda yalnızca SHA-256 özeti saklanır; kaybederseniz geri getirilemez, yenisini oluşturup eskisini iptal edersiniz. Anahtarı depoya, istemci tarafı koda ya da herkese açık günlüklere koymayın.

Hesap başına en çok 5 etkin anahtar vardır. Anahtarlar panelden istediğiniz an iptal edilir.

Kimlik doğrulama#

Anahtarı Authorization: Bearer başlığıyla gönderin:

curl -s https://modelen.tr/api/v1/ben -H "Authorization: Bearer $MODELEN_API_ANAHTARI"
import json, os, urllib.request
istek = urllib.request.Request("https://modelen.tr/api/v1/ben",
    headers={"Authorization": "Bearer " + os.environ["MODELEN_API_ANAHTARI"]})
print(json.load(urllib.request.urlopen(istek)))
const yanit = await fetch("https://modelen.tr/api/v1/ben", {
  headers: { Authorization: `Bearer ${process.env.MODELEN_API_ANAHTARI}` },
});
console.log(await yanit.json());
İpucu

Python için hazır bir istemci var: istemci/ornekler/modelen_api.py (yalnızca standart kütüphane). python modelen_api.py ben ile denersiniz.

Koordinatör başvurusu ve güncelleme#

# başvuru oluştur (e-posta doğrulanmış olmalı)
curl -s -X POST https://modelen.tr/api/v1/koordinator \
  -H "Authorization: Bearer $MODELEN_API_ANAHTARI" -H "Content-Type: application/json" \
  -d '{"ad":"Örnek Lab","kisa":"Açık modeller için gönüllü eğitim koordinatörü","adres":"https://koordinator.ornek.org"}'

# alan güncelle (yalnızca gönderilen alanlar değişir)
curl -s -X PATCH https://modelen.tr/api/v1/koordinator \
  -H "Authorization: Bearer $MODELEN_API_ANAHTARI" -H "Content-Type: application/json" \
  -d '{"ayrinti":"Hedefimiz ..."}'

İzin verilen alanlar: ad, kisa, ayrinti, baglanti, adres, hf, iletisim. Başka alan göndermek 400 bilinmeyen_alan döner.

DurumAnlamı
201Başvuru oluşturuldu, yönetici onayına düştü
200Güncellendi (henüz onaylanmamış başvuru)
202Onaylı profilde değişiklik taslak olarak kaydedildi; yönetici onayından sonra yayına girer

Adresi değiştirirseniz doğrulama sıfırlanır; yeniden doğrulamanız gerekir.

Hata biçimi#

Tüm hatalar aynı biçimdedir; kod makine tarafından, hata insan tarafından okunur:

{"hata": "Anahtar başına dakikada en çok 120 istek.", "kod": "hiz_siniri"}
HTTPkodNe zaman
400gecersiz_istekGövde geçerli JSON nesnesi değil
400bilinmeyen_alanİzin verilmeyen alan
400dogrulamaAlan değeri geçersiz (uzunluk, bağlantı biçimi vb.)
400gecersiz_tur / gecersiz_durum / gecersiz_sayi / gecersiz_metinNabız alanı geçersiz
400adres_yok / baslatilmadiAdres doğrulaması için adres yok / doğrulama başlatılmadı
401yetkisizAnahtar yok, yanlış ya da iptal edilmiş
403eposta_dogrulanmadiE-postanızı doğrulamadan başvuru yapılamaz
403onayli_degilBu işlem yalnızca onaylı koordinatörlere açık (ör. nabız)
404yok / basvuru_yokKaynak ya da başvurunuz yok
405yontemBu yol için yöntem desteklenmiyor
409basvuru_var / askidaZaten başvuru var / başvurunuz askıda
422okunamadi / icerik_uyusmuyorAdres doğrulama dosyası okunamadı / içerik uyuşmuyor
429hiz_siniriHız sınırı; Retry-After başlığındaki saniye kadar bekleyin

Hız sınırları#

SınırDeğer
Anahtar başına120 istek / dakika
IP başına (tüm istekler)240 istek / dakika
Geçersiz anahtar denemesi10 dakikada 30 (aşılırsa 10 dk engel)
Nabız6 istek / dakika
Adres doğrulama kontrolü10 dakikada 10 deneme

429 yanıtı Retry-After başlığı taşır. Azalan aralıkla (üstel geri çekilme) yeniden deneyin.

CORS#

Herkese açık uç noktalar (/saglik, /koordinatorler, /koordinatorler/{slug}) her kaynaktan çağrılabilir. Anahtarlı uç noktalar da OPTIONS ön denetimine yanıt verir, ama anahtarı tarayıcı kodunda kullanmayın; anahtarlı çağrıları sunucunuzdan yapın.

Sürümleme#

Yol /api/v1. Geriye uyumlu eklemeler (yeni alan, yeni uç nokta) aynı sürümde yapılır; kırıcı değişiklik /api/v2 olarak gelir. Yanıtlarda bilmediğiniz alanları yok sayın.