{"openapi":"3.1.0","info":{"title":"Kılavuz API","version":"0.1.0","description":"Türkiye verisi için tek anahtar, tek kredi havuzu: adres çözümleme ve doğrulama, IBAN, TCKN/VKN/telefon algoritmik doğrulama (`/v1/dogrula/*`), TCMB ve ECB kurları, kargo takibi. Aynı araçlar MCP olarak da sunulur (`POST /mcp`). Anahtar almak için `POST /v1/kayit`. Hatalar her zaman `{\"hata\": \"…\"}` biçimindedir. Sınırlar: anahtar başına dakikalık istek sınırı (bütün `/v1` ve `/mcp`, ücretsiz uçlar dahil; `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` başlıkları, aşımda 429 + `Retry-After`) ve 0 kredili uçlarda anahtar başına günlük tavan (İstanbul saatiyle gece yarısı sıfırlanır). Kalan kredi `X-Kalan-Kredi` başlığında."},"servers":[{"url":"https://api.kilavuzapi.com"},{"url":"https://xacw6yute6famacx6a7tjafkfq0hqmug.lambda-url.eu-central-1.on.aws"}],"tags":[{"name":"adres"},{"name":"iban"},{"name":"kur"},{"name":"kargo"},{"name":"dogrulama"},{"name":"eczane"},{"name":"takvim"},{"name":"kvkk"},{"name":"ticaret"},{"name":"hukuk"},{"name":"metin"},{"name":"akaryakit"},{"name":"hal"},{"name":"borsa"},{"name":"deprem"},{"name":"ibb"},{"name":"altin"},{"name":"su"},{"name":"hava"},{"name":"resmi-gazete"},{"name":"kesinti"},{"name":"ilan"},{"name":"futbol"},{"name":"vergi-dairesi"},{"name":"vergi"},{"name":"fatura"},{"name":"ceza"},{"name":"harc"},{"name":"ekonomi"},{"name":"musteri"},{"name":"enerji"},{"name":"egitim"},{"name":"test-verisi"},{"name":"urun"},{"name":"bordro"},{"name":"hesap"},{"name":"odeme"},{"name":"mcp"},{"name":"demo"},{"name":"sistem"},{"name":"ulasim"},{"name":"arac"},{"name":"sigorta"},{"name":"ilac"},{"name":"il"},{"name":"nufus"},{"name":"telefon"},{"name":"gtip"},{"name":"nace"},{"name":"isg"},{"name":"eposta"},{"name":"giris"},{"name":"panel"},{"name":"oauth"},{"name":"odeme"},{"name":"hesap"}],"components":{"securitySchemes":{"anahtar":{"type":"http","scheme":"bearer","description":"`ak_live_…` biçiminde API anahtarı"},"panel":{"type":"http","scheme":"bearer","description":"`ak_ses_…` panel oturumu (12 saat; `POST /v1/giris/eposta/dogrula` ya da `POST /v1/oturum/devir`). Giriş açıkken."}},"schemas":{"Hata":{"type":"object","required":["hata"],"properties":{"hata":{"type":"string"}}},"Tatil":{"type":"object","required":["tarih","ad","tur","yarimGun"],"properties":{"tarih":{"type":"string","format":"date"},"ad":{"type":"string"},"tur":{"enum":["resmi","dini"]},"yarimGun":{"type":"boolean","description":"Arifeler ve 28 Ekim: 13.00'te başlar"},"baslangicSaati":{"const":"13:00"}}},"PiyasaFiyati":{"type":"object","required":["kod","ad","alis","satis","birim"],"properties":{"kod":{"type":"string","description":"doviz.com kodu: gram-altin, ceyrek-altin, ons, USD…"},"ad":{"type":"string"},"alis":{"type":"number"},"satis":{"type":"number"},"degisimYuzde":{"type":["number","null"]},"saat":{"type":["string","null"],"description":"Kaynağın son fiyat saati, Türkiye saati SS:DD (tarih yok)"},"birim":{"type":"string","enum":["TRY","USD"]}}},"HavaSaati":{"type":"object","properties":{"zaman":{"type":"string","description":"Adımın başlangıcı, UTC"},"sicaklikC":{"type":["number","null"]},"nemYuzde":{"type":["number","null"]},"ruzgarHizMs":{"type":["number","null"]},"ruzgarYonDerece":{"type":["number","null"]},"basincHpa":{"type":["number","null"]},"bulutYuzde":{"type":["number","null"]},"yagisMm":{"type":["number","null"]},"yagisSaat":{"type":["integer","null"],"enum":[1,6,null],"description":"yagisMm kaç saatlik"},"durum":{"type":["string","null"],"description":"Türkçe gökyüzü durumu"},"durumKod":{"type":["string","null"],"description":"MET sembol kodu"}}},"MesafeUcu":{"type":"object","properties":{"girdi":{"type":"string"},"tur":{"type":"string","enum":["il","koordinat"]},"il":{"type":["string","null"]},"plaka":{"type":["integer","null"]},"lat":{"type":"number"},"lon":{"type":"number"}}},"IlKarti":{"type":"object","required":["plaka","ad","bolge","ibbs","alanKodlari","buyuksehir","komsular","ilceSayisi","nufus"],"properties":{"plaka":{"type":"integer","minimum":1,"maximum":81},"ad":{"type":"string"},"bolge":{"type":"string","enum":["Marmara","Ege","Akdeniz","İç Anadolu","Karadeniz","Doğu Anadolu","Güneydoğu Anadolu"],"description":"Coğrafi bölge (idari birim değil)"},"ibbs":{"type":"object","description":"İstatistiki Bölge Birimleri Sınıflaması (NUTS) kodları","properties":{"duzey1":{"type":"string","example":"TR6"},"duzey2":{"type":"string","example":"TR62"},"duzey3":{"type":"string","example":"TR621"}}},"alanKodlari":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string","example":"0322"},"bolum":{"type":"string","description":"Yalnız İstanbul: \"Avrupa Yakası\"/\"Anadolu Yakası\""}}}},"buyuksehir":{"type":"boolean","description":"6360 sayılı Kanun"},"komsular":{"type":"array","items":{"type":"string"},"description":"Kara sınırı paylaşan iller"},"ilceSayisi":{"type":"integer"},"postaKoduAraligi":{"type":"object","properties":{"bas":{"type":"string","example":"01000"},"son":{"type":"string","example":"01999"}},"description":"İle ayrılan blok; hepsi kullanımda değil"},"nufus":{"type":"object","properties":{"yil":{"type":"integer"},"toplam":{"type":"integer"},"ilIlceMerkezi":{"type":"integer"},"beldeKoy":{"type":"integer","description":"Büyükşehirde 0"},"yillikArtisHizi":{"type":["number","null"],"description":"Binde"},"yogunluk":{"type":"number","description":"Kişi/km²"}}},"yuzolcumu":{"type":"number","description":"km², göl ve baraj yüzeyleri hariç (TÜİK yoğunluğundan türetildi)"},"rakim":{"type":["integer","null"],"description":"İl merkezi rakımı, metre (Copernicus DEM GLO-90, yaklaşık; MGM istasyon rakımı değil)"},"merkez":{"type":["object","null"],"properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"description":"Şehir merkezi POI'lerinin medyanı (Overture), yaklaşık"}}},"IlceNufusu":{"type":"object","required":["ad","nufus"],"properties":{"ad":{"type":"string"},"nufus":{"type":"integer"},"yillikArtisHizi":{"type":["number","null"],"description":"Binde"},"merkez":{"type":["object","null"],"properties":{"lat":{"type":"number"},"lon":{"type":"number"}}}}},"NufusYili":{"type":"object","required":["yil","nufus"],"properties":{"yil":{"type":"integer"},"nufus":{"type":"integer"}}},"IbbsBirimi":{"type":"object","required":["kod","ad"],"properties":{"kod":{"type":"string"},"ad":{"type":"string"},"ust":{"type":"string","description":"Bir üst düzeyin kodu; Düzey 1'de yok"},"plaka":{"type":"integer","description":"Yalnız Düzey 3"}}},"VergiDairesi":{"type":"object","properties":{"kod":{"type":["string","null"],"description":"5 haneli muhasebe birim kodu; şubede null"},"ad":{"type":"string"},"tur":{"type":"string","enum":["mudurluk","sube","defterdarlik"]},"ilKodu":{"type":"string","description":"Plaka kodu, \"01\""},"il":{"type":"string"},"ilce":{"type":"string","description":"İl merkezindekiler \"Merkez\""}}},"TrafikCezasi":{"type":"object","properties":{"madde":{"type":"string","description":"KTK madde/fıkra/bent"},"baslik":{"type":"string"},"tutar":{"type":["number","null"],"description":"TL; aralıklı cezada null"},"alt":{"type":"number"},"ust":{"type":"number"},"ehliyetGun":{"type":"integer","description":"Sürücü belgesi geri alma, gün"},"belgeIptal":{"type":"boolean"},"aracMenGun":{"type":"integer"},"cezaPuani":{"type":"integer","enum":[5,10,15,20],"description":"EGM 2026 rehberi (KTY Ek-35)"},"yururluk":{"type":"string","format":"date"},"dayanak":{"type":"string"},"kaynak":{"type":"string","enum":["resmi","rehber","hesap","ikincil"],"description":"resmi: 7574 RG metni; rehber: EGM 2026 ceza rehberi"},"not":{"type":"string"},"belirsiz":{"type":"boolean"},"etiketler":{"type":"array","items":{"type":"string"}}}},"HarcKalemi":{"type":"object","properties":{"ad":{"type":"string"},"tutar":{"type":["number","null"],"description":"Maktu tutar, TL; oransal kalemde null"},"binde":{"type":"number"},"altSinir":{"type":"number"},"ustSinir":{"type":"number"},"cins":{"type":"string","enum":["harc","degerli-kagit","ucret","pay"]},"sure":{"type":"string","enum":["6ay","1yil","2yil","3yil","10yil","suresiz"]},"dayanak":{"type":"string","description":"Tarifedeki yeri"},"not":{"type":"string"},"belirsiz":{"type":"boolean"}}},"Gecerlilik":{"type":"object","required":["baslangic","bitis"],"properties":{"baslangic":{"type":"string","format":"date"},"bitis":{"type":["string","null"],"format":"date","description":"null: yenisi çıkana kadar"}}},"ResmiKaynak":{"type":"object","required":["belge","rg","url"],"properties":{"belge":{"type":"string"},"rg":{"type":["string","null"],"description":"Resmî Gazete tarihi / sayısı"},"url":{"type":"string"}}},"OranDonemi":{"type":"object","required":["baslangic","bitis","oran","dayanak"],"properties":{"baslangic":{"type":"string","format":"date"},"bitis":{"type":["string","null"],"format":"date","description":"null: güncel dönem"},"oran":{"type":"number","description":"Yüzde (gecikme zammında aylık, tecil faizinde yıllık)"},"dayanak":{"type":"string"}}},"OranParcasi":{"type":"object","properties":{"baslangic":{"type":"string","format":"date"},"bitis":{"type":"string","format":"date"},"oran":{"type":"number"},"dayanak":{"type":"string"},"ay":{"type":"integer","description":"Yalnız gecikme zammında: tam ay"},"gun":{"type":"integer"},"tutar":{"type":"number"}}},"Dilim":{"type":"object","properties":{"ust":{"type":["number","null"],"description":"Dilim üst sınırı (TL); son dilimde null"},"oran":{"type":"number","description":"Yüzde"}}},"Ayrisma":{"type":"object","properties":{"mahalle":{"type":"string"},"koy":{"type":"string"},"yolAdi":{"type":"string"},"yolTipi":{"type":"string"},"binaNo":{"type":"string"},"daire":{"type":"string"},"kat":{"type":"string"},"blok":{"type":"string"},"bina":{"type":"string"},"site":{"type":"string"},"postaKodu":{"type":"string"},"serbest":{"type":"array","items":{"type":"string"},"description":"Çapaya bağlanamayan kelimeler"},"duzeltmeler":{"type":"array","items":{"type":"string"}}}},"AdresSonucu":{"type":"object","required":["hassasiyet","dogrulanan","guven","duzeltmeler","ayrisma"],"properties":{"il":{"type":"string"},"ilce":{"type":"string"},"mahalle":{"type":"string"},"yol":{"type":"string"},"binaNo":{"type":"string"},"daire":{"type":"string"},"kat":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"hassasiyet":{"enum":["sokak","mahalle","ilce","il","yok"],"description":"Koordinatın ayrıntı düzeyi (bileşenin bulunup bulunmadığı değil). `mahalle` şimdilik üretilmiyor"},"dogrulanan":{"type":"object","description":"Hangi bileşenin resmî sicilde bulunduğu; koordinattan bağımsız","properties":{"il":{"type":"boolean"},"ilce":{"type":"boolean"},"mahalle":{"type":"boolean"},"yol":{"type":"boolean"}}},"guven":{"type":"number","minimum":0,"maximum":1},"duzeltmeler":{"type":"array","items":{"type":"string"},"description":"Yapılan düzeltmelerin okunur dökümü"},"ayrisma":{"$ref":"#/components/schemas/Ayrisma"}}},"IbanSonucu":{"type":"object","required":["gecerli"],"properties":{"gecerli":{"type":"boolean"},"iban":{"type":"string"},"bicimli":{"type":"string"},"ulke":{"type":"string"},"bankaKodu":{"type":"string"},"hesapNo":{"type":"string"},"banka":{"type":"object","additionalProperties":true},"hata":{"enum":["bos","gecersiz_karakter","bilinmeyen_ulke","uzunluk","kontrol_basamagi","tr_ayrilmis_hane"]},"aciklama":{"type":"string"}}},"Kur":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"adEn":{"type":"string"},"birim":{"type":"integer","description":"TCMB kote birimi (JPY 100); kurlar 1 birime indirgenmiş"},"alis":{"type":["number","null"]},"satis":{"type":["number","null"]},"efektifAlis":{"type":["number","null"]},"efektifSatis":{"type":["number","null"]}}},"KimlikSonucu":{"type":"object","required":["gecerli","not"],"description":"TCKN hiçbir zaman geri dönmez (KVKK). Yalnız algoritmik doğrulama.","properties":{"gecerli":{"type":"boolean"},"tur":{"enum":["vkn","tckn"],"description":"Yalnız VKN ucunda"},"vkn":{"type":"string","description":"Yalnız geçerli 10 haneli VKN"},"hata":{"enum":["bos","gecersiz_karakter","uzunluk","ilk_hane_sifir","kontrol_10","kontrol_11","kontrol_basamagi"]},"aciklama":{"type":"string"},"not":{"type":"string"}}},"TelefonSonucu":{"type":"object","required":["gecerli"],"properties":{"gecerli":{"type":"boolean"},"e164":{"type":["string","null"],"description":"+905321234567; 444 numaralarında null"},"ulusal":{"type":"string","description":"0532 123 45 67"},"tur":{"enum":["gsm","m2m","sabit","ucretsiz_800","katma_degerli_900","ulusal_850","kurumsal_444"]},"il":{"type":"string","description":"Yalnız sabit hatlarda"},"hata":{"enum":["bos","gecersiz_karakter","yabanci_ulke","uzunluk","tanimsiz_onek"]},"aciklama":{"type":"string"}}},"TeslimTahmini":{"type":"object","required":["gonderimTarihi","kabulTarihi","gonderen","alici","isGunu","tahminiTeslim","enGec","not"],"properties":{"gonderimTarihi":{"type":"string","format":"date"},"kabulTarihi":{"type":"string","format":"date","description":"Gönderinin işleme alındığı ilk iş günü"},"gonderen":{"type":"object","properties":{"il":{"type":"string"},"bolge":{"type":"string"}}},"alici":{"type":"object","properties":{"il":{"type":"string"},"bolge":{"type":"string"}}},"tasiyici":{"type":"string"},"isGunu":{"type":"integer"},"tahminiTeslim":{"type":"string","format":"date"},"enGec":{"type":"string","format":"date","description":"Tahminin bir iş günü sonrası"},"not":{"type":"string","description":"Tahmin, taahhüt değil"}}},"SentetikKayit":{"type":"object","description":"Sentetik kayıt: gerçek bir kişiye/şirkete ait değildir. Alanlar `alanlar` isteğine göre gelir.","properties":{"ad":{"type":"string"},"soyad":{"type":"string"},"unvan":{"type":"string","description":"Yalnız vkn istendiğinde: ticaret unvanı"},"tckn":{"type":"string","description":"Kontrol haneleri tutar, kayıtlı kişi değildir"},"vkn":{"type":"string"},"iban":{"type":"string","description":"TR, mod-97 geçerli; banka kodu TCMB listesinden"},"gsm":{"type":"string","description":"BTK planındaki gerçek 5xx öneki + rastgele abone"},"eposta":{"type":"string","description":"Her zaman example.com (RFC 2606)"},"adres":{"type":"object","description":"İl/ilçe/mahalle/sokak sicilden gerçek; kapı ve daire rastgele","properties":{"il":{"type":"string"},"ilce":{"type":"string"},"mahalle":{"type":"string"},"yol":{"type":"string"},"binaNo":{"type":"string"},"daire":{"type":"string"},"tekSatir":{"type":"string"}}},"dogumTarihi":{"type":"string","format":"date"},"plaka":{"type":"string"}}},"EtiketTarafGirdisi":{"type":"object","required":["adres"],"properties":{"adres":{"type":"string","maxLength":1000},"ad":{"type":"string","maxLength":100,"description":"Kişi ya da firma adı; yalnız etikete geçirilir"}}},"EtiketTaraf":{"type":"object","required":["satirlar","dogrulanan","guven","eksikler"],"properties":{"ad":{"type":"string","description":"Girdiden aynen geçirilir; çözümlenmez, saklanmaz"},"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"mahalle":{"type":["string","null"]},"yol":{"type":["string","null"]},"binaNo":{"type":["string","null"]},"daire":{"type":["string","null"]},"kat":{"type":["string","null"]},"site":{"type":["string","null"]},"blok":{"type":["string","null"]},"satirlar":{"type":"array","items":{"type":"string"},"description":"Etikete basılacak satırlar; her biri en çok 35 karakter"},"dogrulanan":{"type":"object","properties":{"il":{"type":"boolean"},"ilce":{"type":"boolean"},"mahalle":{"type":"boolean"},"yol":{"type":"boolean"}}},"guven":{"type":"number","minimum":0,"maximum":1},"eksikler":{"type":"array","items":{"type":"string"},"description":"Etiket için kritik olup çözülemeyenler (il, ilce, yol, binaNo)"}}},"KargoKonum":{"type":"object","properties":{"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"ulke":{"type":["string","null"]}}},"KargoSonucu":{"type":"object","required":["tasiyici","takipNo","bulundu"],"properties":{"tasiyici":{"type":"string"},"takipNo":{"type":"string"},"bulundu":{"type":"boolean"},"mesaj":{"type":"string","description":"Yalnız bulundu=false"},"durum":{"enum":["hazirlaniyor","yolda","dagitimda","teslim_edildi","iade","bilinmiyor"]},"durumMetni":{"type":["string","null"]},"teslimEdildi":{"type":"boolean"},"gonderiTarihi":{"type":["string","null"]},"tahminiTeslim":{"type":["string","null"]},"cikis":{"$ref":"#/components/schemas/KargoKonum"},"varis":{"$ref":"#/components/schemas/KargoKonum"},"teslimBirimi":{"type":["object","null"],"properties":{"ad":{"type":["string","null"]},"telefon":{"type":["string","null"]}}},"hareketler":{"type":"array","items":{"type":"object","properties":{"tarih":{"type":["string","null"]},"yer":{"type":["string","null"]},"aciklama":{"type":["string","null"]}}}}}}}},"paths":{"/health":{"get":{"tags":["sistem"],"summary":"Canlılık","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"}}}}}}}}},"/openapi.json":{"get":{"tags":["sistem"],"summary":"Bu şema","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/address/resolve":{"post":{"tags":["adres"],"summary":"Adres çözümle ve doğrula","security":[{"anahtar":[]}],"x-kredi":1,"description":"Serbest metin adresi bileşenlerine ayırır, adları sokak sicilinde arar. `adresler[]` ile toplu (en fazla 1000, adres başına 1 kredi). Koordinat yalnız sokak sicilde koordinatlıysa döner.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string"},"adresler":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"q":"kadikoy istanbul moda cad 14"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AdresSonucu"},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"$ref":"#/components/schemas/AdresSonucu"}}}}]}}}},"400":{"description":"q ya da adresler eksik, boş ya da metin olmayan eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla adres","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/parse":{"post":{"tags":["adres"],"summary":"Yalnız ayrıştır (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Sicile bakmaz, koordinat vermez. Anahtar ister ama kredi düşmez.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["q"],"properties":{"q":{"type":"string"}}},"example":{"q":"ataturk bulv no:12/5 cankaya"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ayrisma"}}}},"400":{"description":"q eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/posta-kodu/{kod}":{"get":{"tags":["adres"],"summary":"Posta kodundan ilçe (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Kodun gözlendiği ilçeler, POI sayısına göre sıralı; kod birden çok ilçeye yayılıyorsa hepsi döner. Kaynak PTT değil: Overture Maps Places (CDLA-Permissive 2.0) işletme adreslerindeki kodlar. Kapsam eksik (yaklaşık 3.600 kod); bulunamayan kod 404. Mahalle düzeyinde eşleme yok.","parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{5}$"},"example":"34710"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kod":{"type":"string"},"ilceler":{"type":"array","items":{"type":"object","properties":{"il":{"type":"string"},"ilce":{"type":"string"},"poiSayisi":{"type":"integer","description":"Kodu bu ilçede yazan işletme sayısı"}}}},"kaynak":{"type":"string"},"kapsam":{"type":"string"}}}}}},"400":{"description":"Kod 5 haneli değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Kod kaynakta gözlenmedi (kaynak ve kapsam notuyla)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/plaka/{kod}":{"get":{"tags":["adres"],"summary":"Plaka kodundan il (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İl plaka kodu (01–81) → il adı; `/v1/address/iller` listesinin ters yönü. Kaynak aynı kamu kaydı. 82 ve üstü kodlar il değildir, 422 döner.","parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,2}$"},"example":"34"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"plaka":{"type":"integer","description":"Sayı olarak kod (34)"},"kod":{"type":"string","description":"İki haneli yazım (\"06\")"},"il":{"type":"string"},"kaynak":{"type":"string"},"lisans":{"type":"string"}}}}}},"400":{"description":"Kod 1–2 haneli sayı değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Koda karşılık il yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/iller":{"get":{"tags":["adres"],"summary":"81 il (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"iller":{"type":"array","items":{"type":"object","properties":{"plaka":{"type":"integer"},"ad":{"type":"string"}}}},"kaynak":{"type":"string"},"lisans":{"type":"string"}}}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/ilceler":{"get":{"tags":["adres"],"summary":"İlin ilçeleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"İzmir","description":"Ad ya da plaka"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"il":{"type":"string"},"plaka":{"type":"integer"},"toplam":{"type":"integer"},"ilceler":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"ad":{"type":"string"}}}},"kaynak":{"type":"string"},"lisans":{"type":"string"}}}}}},"400":{"description":"il eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/mahalleler":{"get":{"tags":["adres"],"summary":"İlçenin mahalle ve köyleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"İstanbul","description":"Ad ya da plaka"},{"name":"ilce","in":"query","required":true,"schema":{"type":"string"},"example":"Kadıköy"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"il":{"type":"string"},"ilce":{"type":"string"},"toplam":{"type":"integer"},"mahalleler":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"tip":{"type":"string","enum":["mahalle","koy"]}}}},"kaynak":{"type":"string"},"lisans":{"type":"string"}}}}}},"400":{"description":"il ya da ilce eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il ya da ilçe bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/sokak-tamamla":{"get":{"tags":["adres"],"summary":"Sokak adı tamamlama","security":[{"anahtar":[]}],"x-kredi":1,"description":"İlçedeki sicil sokaklarından `q` ile başlayanlar, sonra adının bir sözcüğü `q` ile başlayanlar; her grupta işlek sokak önce. Türkçe karaktersiz yazılabilir. Mahalleye göre süzmez: sicilde sokak ilçeye bağlı. `yollar` her yol tipiyle tam ad (\"Bağdat Caddesi\"). Öneri yoksa kredi düşmez.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"İstanbul"},{"name":"ilce","in":"query","required":true,"schema":{"type":"string"},"example":"Kadıköy"},{"name":"q","in":"query","required":true,"schema":{"type":"string"},"example":"bagd"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"il":{"type":"string"},"ilce":{"type":"string"},"q":{"type":"string"},"sokaklar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"tipler":{"type":"array","items":{"type":"string"}},"yollar":{"type":"array","items":{"type":"string"}}}}},"kaynak":{"type":"string"},"lisans":{"type":"string"}}}}}},"400":{"description":"q, il ya da ilce eksik; limit aralık dışı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il ya da ilçe bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/ters":{"get":{"tags":["adres"],"summary":"Ters geokod: koordinattan en yakın sokak","security":[{"anahtar":[]}],"x-kredi":1,"description":"Koordinata en yakın sicil sokağını, ilçesini ve ilini döner. Sokak koordinatı o sokağa adres yazan işletmelerin medyanıdır (kapı numarası değil), bu yüzden `uzaklikM` sokağın üstündeyken bile birkaç yüz metre olabilir. Arama yarıçapı 25 km (routes/ters.ts AZAMI_YARICAP_KM); içinde sokak yoksa alanlar null döner ve kredi düşmez. Mahalle verilmez (sicilde sokak ilçeye bağlı). Türkiye dışı koordinat 422.","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number"},"example":40.9812},{"name":"lon","in":"query","required":true,"schema":{"type":"number"},"example":29.0257}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"konum":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"aramaYaricapiKm":{"type":"number"},"sokak":{"type":["object","null"],"properties":{"ad":{"type":"string"},"tipler":{"type":"array","items":{"type":"string"}},"yollar":{"type":"array","items":{"type":"string"}},"lat":{"type":"number"},"lon":{"type":"number"},"poiSayisi":{"type":"integer","description":"Koordinatın kaç işletmeden türediği"}}},"il":{"type":["string","null"]},"plaka":{"type":["integer","null"]},"ilce":{"type":["string","null"]},"mahalle":{"type":"null","description":"Sicilde sokak-mahalle bağı yok; her zaman null"},"uzaklikM":{"type":["integer","null"]},"kaynak":{"type":"string"},"lisans":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"lat ya da lon eksik veya aralık dışı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Koordinat Türkiye dışında","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/mesafe":{"get":{"tags":["adres"],"summary":"İki nokta arası mesafe (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"`a` ve `b` il adı, plaka ya da \"enlem,boylam\" olabilir. Kuş uçuşu mesafe haversine ile; karayolu tahmini kuş uçuşunun 1,3 katı, kaba bir yaklaşıklık — rota servisi değildir. İl verilirse merkez koordinatı Overture POI medyanından gelir.","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string"},"example":"İstanbul"},{"name":"b","in":"query","required":true,"schema":{"type":"string"},"example":"35"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"$ref":"#/components/schemas/MesafeUcu"},"b":{"$ref":"#/components/schemas/MesafeUcu"},"kusUcusuKm":{"type":"number"},"karayoluTahminiKm":{"type":"number"},"katsayi":{"type":"number"},"kaynak":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"a ya da b eksik veya koordinat biçimi hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/ayni-mi":{"post":{"tags":["adres"],"summary":"İki adres aynı yer mi","security":[{"anahtar":[]}],"x-kredi":1,"description":"İki adres çözümlenip bileşen bileşen karşılaştırılır. karar: ayni_adres (il, ilçe, yol, bina no aynı; daire aynı ya da ikisinde de yok), ayni_bina (daire farklı ya da birinde yok), ayni_sokak, farkli, belirsiz (ilçe ya da yol çözülemedi). Mahalle karara girmez. benzerlik 0–1: üst bileşen farklıysa alttakiler sayılmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["a","b"],"properties":{"a":{"type":"string","maxLength":1000},"b":{"type":"string","maxLength":1000}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"karar":{"type":"string","enum":["ayni_adres","ayni_bina","ayni_sokak","farkli","belirsiz"]},"benzerlik":{"type":"number"},"bilesenler":{"type":"object","description":"ayni; farkli; eksik (yalnız birinde var); yok (ikisinde de yok)","properties":{"il":{"type":"string","enum":["ayni","farkli","eksik","yok"]},"ilce":{"type":"string","enum":["ayni","farkli","eksik","yok"]},"mahalle":{"type":"string","enum":["ayni","farkli","eksik","yok"]},"yol":{"type":"string","enum":["ayni","farkli","eksik","yok"]},"binaNo":{"type":"string","enum":["ayni","farkli","eksik","yok"]},"daire":{"type":"string","enum":["ayni","farkli","eksik","yok"]}}},"farklar":{"type":"array","items":{"type":"string"}},"a":{"type":"object"},"b":{"type":"object"}}}}}},"400":{"description":"a ya da b eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"adres 1000 karakteri aşıyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/musteri/tekillestir":{"post":{"tags":["musteri"],"summary":"Müşteri listesinde aynı kişileri kümele","security":[{"anahtar":[]}],"x-kredi":1,"description":"Dolu kayıt başına 1 kredi; bakiye işten önce denetlenir, kredi iş bitince düşer. Bağlar: aynı GSM (E.164), aynı e-posta (Gmail nokta/+etiket yok sayılır), aynı ad + sabit hat, aynı ad + bina (adres çözümlenir; daire çelişmiyorsa). Yalnız aynı adres ya da yalnız aynı ad bağlamaz. JSON gövde JSON, CSV gövde (ilk satır başlık) CSV döner: sona ak_kume, ak_kume_boyut, ak_ilk, ak_neden, ak_ad, ak_telefon, ak_eposta. En çok 10.000 kayıt, 2,5 MB, 20 sn. Girdi saklanmaz.","parameters":[{"name":"ad","in":"query","schema":{"type":"string"},"description":"CSV: sütun adı ya da 1'den sıra (verilmezse başlıktan bulunur)"},{"name":"soyad","in":"query","schema":{"type":"string"},"description":"CSV: sütun adı ya da 1'den sıra (verilmezse başlıktan bulunur)"},{"name":"telefon","in":"query","schema":{"type":"string"},"description":"CSV: sütun adı ya da 1'den sıra (verilmezse başlıktan bulunur)"},{"name":"eposta","in":"query","schema":{"type":"string"},"description":"CSV: sütun adı ya da 1'den sıra (verilmezse başlıktan bulunur)"},{"name":"adres","in":"query","schema":{"type":"string"},"description":"CSV: sütun adı ya da 1'den sıra (verilmezse başlıktan bulunur)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kayitlar"],"properties":{"kayitlar":{"type":"array","maxItems":10000,"items":{"type":"object","properties":{"ad":{"type":"string"},"telefon":{"type":"string"},"eposta":{"type":"string"},"adres":{"type":"string"}}}}}}},"text/csv":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"Kümeler","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"tekilKisi":{"type":"integer"},"tekrar":{"type":"integer"},"kumeler":{"type":"array","items":{"type":"object","properties":{"kume":{"type":"integer"},"sira":{"type":"array","items":{"type":"integer"}},"nedenler":{"type":"array","items":{"type":"string","enum":["telefon","eposta","ad+telefon","ad+adres"]}}}}},"kayitlar":{"type":"array","items":{"type":"object","properties":{"sira":{"type":"integer"},"kume":{"type":"integer"},"ilk":{"type":"boolean"}}}},"not":{"type":"string"}}}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"girdi hatalı ya da sütun bulunamadı (yanıtta basliklar)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"liste çok büyük","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"415":{"description":"gövde JSON ya da CSV değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"süre aşıldı, kredi düşülmedi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/address/temizle":{"post":{"tags":["adres"],"summary":"Toplu adres temizleme (CSV → CSV)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Gövde ham CSV (multipart değil). Aynı CSV döner: özgün sütunlar olduğu gibi, sona `ak_il`, `ak_ilce`, `ak_mahalle`, `ak_yol`, `ak_bina_no`, `ak_daire`, `ak_enlem`, `ak_boylam`, `ak_hassasiyet`, `ak_guven`, `ak_durum` (tamam: il+ilçe+yol sicilde | kismi: il+ilçe | yalniz_il | cozulemedi | bos). Kredi **tekil dolu adres** başına 1; dosya içi tekrar ve boş hücre ücretsiz. Dosya ya bütünüyle işlenir ya da kredi düşmez. En fazla 2,5 MB ve 10.000 veri satırı; büyük dosyayı bölün. Dosya saklanmaz; yalnız kimlik ve adres sütunlarını göndermeniz yeterli.","parameters":[{"name":"sutun","in":"query","schema":{"type":"string"},"description":"Adres sütununun başlık adı ya da 1'den başlayan sırası. Verilmezse `adres`, `address`, `açık adres`, `teslimat adresi`… aranır."},{"name":"ayirici","in":"query","schema":{"type":"string","enum":["auto",",",";","tab"],"default":"auto"}},{"name":"baslik","in":"query","schema":{"type":"string","enum":["1","0"],"default":"1"},"description":"0: ilk satır veri; `sutun` sıra numarası olmalı"},{"name":"kodlama","in":"query","schema":{"type":"string","enum":["auto","utf-8","windows-1254"],"default":"auto"},"description":"TR Excel \"CSV\" kaydı windows-1254; auto ikisini de tanır. Çıktı her zaman UTF-8 (BOM ile)."}],"requestBody":{"required":true,"content":{"text/csv":{"schema":{"type":"string"},"example":"siparis;adres\r\n1001;moda cad 14 kadikoy istanbul\r\n"}}},"responses":{"200":{"description":"Temizlenmiş CSV","headers":{"x-adreskit-satir":{"schema":{"type":"integer"},"description":"Dolu adresli satır"},"x-adreskit-kredi":{"schema":{"type":"integer"},"description":"Düşülen kredi (tekil adres)"},"x-adreskit-kodlama":{"schema":{"type":"string"},"description":"Girdinin okunduğu kodlama"}},"content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"CSV bozuk (satır numarasıyla) ya da adres sütunu bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"2,5 MB ya da 10.000 satır aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"415":{"description":"Gövde CSV değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Süre sınırı aşıldı; kredi düşülmedi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/iban/dogrula":{"post":{"tags":["iban"],"summary":"IBAN doğrula, bankayı çöz","security":[{"anahtar":[]}],"x-kredi":1,"description":"ISO 13616 mod-97. `ibanlar[]` ile toplu (en fazla 1000, IBAN başına 1 kredi).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"iban":{"type":"string"},"ibanlar":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"iban":"TR33 0006 1005 1978 6457 8413 26"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/IbanSonucu"},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"$ref":"#/components/schemas/IbanSonucu"}},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"gecerli":{"type":"integer"}}}}}]}}}},"400":{"description":"iban ya da ibanlar eksik, boş ya da metin olmayan eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla IBAN","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/iban/bankalar":{"get":{"tags":["iban"],"summary":"TCMB banka kodu listesi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kur":{"get":{"tags":["kur"],"summary":"TCMB döviz kurları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Tatil/hafta sonunda en yakın önceki iş gününe düşer; `geriyeDusuldu` bunu söyler. TCMB ticari kullanımı yazılı izne bağlıyor; izin gelene kadar 0 kredi, `not` alanıyla.","parameters":[{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"YYYY-AA-GG"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kaynak":{"const":"TCMB"},"veriKaynagi":{"type":"string","deprecated":true,"description":"`kaynak` ile aynı"},"not":{"type":"string"},"tarih":{"type":"string"},"istenenTarih":{"type":"string"},"geriyeDusuldu":{"type":"boolean"},"bultenNo":{"type":["string","null"]},"kurlar":{"type":"array","items":{"$ref":"#/components/schemas/Kur"}}}}}}},"400":{"description":"tarih biçimi hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Yayın bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kur/cevir":{"post":{"tags":["kur"],"summary":"Para birimi çevir (TCMB kuru, ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Yanıttaki `kaynak` kaynak para birimidir; veri kaynağı `veriKaynagi` (TCMB).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tutar","kaynak","hedef"],"properties":{"tutar":{"type":"number"},"kaynak":{"type":"string"},"hedef":{"type":"string"},"kurTipi":{"enum":["alis","satis","efektifAlis","efektifSatis"],"default":"satis"},"tarih":{"type":"string","format":"date"}}},"example":{"tutar":100,"kaynak":"USD","hedef":"TRY"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"veriKaynagi":{"const":"TCMB"},"not":{"type":"string"},"tutar":{"type":"number"},"kaynak":{"type":"string"},"hedef":{"type":"string"},"sonuc":{"type":"number"},"kurTipi":{"type":"string"},"tarih":{"type":"string"},"geriyeDusuldu":{"type":"boolean"},"kullanilanKur":{"type":"object","properties":{"kaynak":{"type":"number"},"hedef":{"type":"number"}}}}}}}},"400":{"description":"Eksik alan, bilinmeyen para birimi ya da yayımlanmamış kur","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Yayın bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kur/ecb":{"get":{"tags":["kur"],"summary":"ECB euro referans kurları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"29 para birimi, ECB iş günlerinde ~16:00 CET yayımlar. `baz` EUR ise değerler ECB'nin yayımladığı gibi; başka bazda ECB kurlarından hesaplanır ve her kurda `hesaplanan: true` olur. Bu veri ecb.europa.eu'dan ücretsiz alınabilir.","parameters":[{"name":"baz","in":"query","schema":{"type":"string","default":"EUR"},"description":"Üç harfli kod, örn. TRY"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","not","tarih","baz","kurlar"],"properties":{"kaynak":{"type":"string"},"not":{"type":"string"},"hesaplamaNotu":{"type":"string","description":"Yalnız EUR dışı bazda"},"tarih":{"type":"string"},"baz":{"type":"string"},"kurlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"oran":{"type":"number","description":"1 baz = oran kod"},"hesaplanan":{"type":"boolean"}}}}}}}}},"400":{"description":"baz geçersiz ya da ECB listesinde yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"ECB yayını alınamıyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/dogrula/tckn":{"post":{"tags":["dogrulama"],"summary":"TCKN doğrula","security":[{"anahtar":[]}],"x-kredi":1,"description":"11 hane, ilk hane ≠ 0, iki kontrol hanesi. Numara yanıtta dönmez. `tcknler[]` ile toplu (en fazla 1000, öğe başına 1 kredi).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tckn":{"type":"string"},"tcknler":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"tckn":"10000000146"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/KimlikSonucu"},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"$ref":"#/components/schemas/KimlikSonucu"},"description":"Girdi sırasıyla"},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"gecerli":{"type":"integer"}}}}}]}}}},"400":{"description":"tckn ya da tcknler eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/dogrula/vkn":{"post":{"tags":["dogrulama"],"summary":"VKN doğrula","security":[{"anahtar":[]}],"x-kredi":1,"description":"GİB kontrol hanesi. 11 hane gelirse şahıs şirketi (VKN = TCKN) sayılır. `vknler[]` ile toplu (en fazla 1000, öğe başına 1 kredi).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vkn":{"type":"string"},"vknler":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"vkn":"1234567890"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/KimlikSonucu"},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"$ref":"#/components/schemas/KimlikSonucu"},"description":"Girdi sırasıyla"},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"gecerli":{"type":"integer"}}}}}]}}}},"400":{"description":"vkn ya da vknler eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/dogrula/telefon":{"post":{"tags":["dogrulama"],"summary":"Telefon doğrula ve biçimle","security":[{"anahtar":[]}],"x-kredi":1,"description":"BTK numara planı; E.164, tür ve sabit hatta il. Operatör verilmez (numara taşıma). `telefonlar[]` ile toplu (en fazla 1000, öğe başına 1 kredi).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"telefon":{"type":"string"},"telefonlar":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"telefon":"0532 123 45 67"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TelefonSonucu"},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"$ref":"#/components/schemas/TelefonSonucu"},"description":"Girdi sırasıyla"},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"gecerli":{"type":"integer"}}}}}]}}}},"400":{"description":"telefon ya da telefonlar eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/dogrula/kart":{"post":{"tags":["dogrulama"],"summary":"Ödeme kartı numarası doğrula (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Luhn sağlaması, IIN aralığından şema (Visa, Mastercard, Troy, Amex…) ve şemaya göre uzunluk. Banka (BIN) verilmez: ticari kullanıma açık güvenilir liste yok. Tam numara saklanmaz, loglanmaz ve yanıtta dönmez; yalnız maskeli (ilk 6 + son 4). Kartın var olduğunu göstermez. `kartlar[]` ile toplu (en fazla 1000).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kart":{"type":"string"},"kartlar":{"type":"array","items":{"type":"string"},"maxItems":1000}}},"example":{"kart":"4111 1111 1111 1111"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["gecerli","not"],"properties":{"gecerli":{"type":"boolean"},"maskeli":{"type":"string","description":"İlk 6 + son 4 (16 haneden kısada baştan daha az); tam numara dönmez","example":"411111******1111"},"uzunluk":{"type":"integer"},"luhn":{"type":"boolean"},"sema":{"type":["string","null"],"enum":["visa","mastercard","amex","troy","discover","unionpay","jcb","diners","maestro","mir","uatp",null]},"semaAdi":{"type":["string","null"]},"olasiSemalar":{"type":"array","items":{"type":"string"}},"semaUzunluguUygun":{"type":["boolean","null"]},"hata":{"type":"string","enum":["bos","gecersiz_karakter","uzunluk","luhn","sema_uzunlugu"]},"aciklama":{"type":"string"},"not":{"type":"string"}}},{"type":"object","properties":{"sonuclar":{"type":"array","items":{"type":"object","required":["gecerli","not"],"properties":{"gecerli":{"type":"boolean"},"maskeli":{"type":"string","description":"İlk 6 + son 4 (16 haneden kısada baştan daha az); tam numara dönmez","example":"411111******1111"},"uzunluk":{"type":"integer"},"luhn":{"type":"boolean"},"sema":{"type":["string","null"],"enum":["visa","mastercard","amex","troy","discover","unionpay","jcb","diners","maestro","mir","uatp",null]},"semaAdi":{"type":["string","null"]},"olasiSemalar":{"type":"array","items":{"type":"string"}},"semaUzunluguUygun":{"type":["boolean","null"]},"hata":{"type":"string","enum":["bos","gecersiz_karakter","uzunluk","luhn","sema_uzunlugu"]},"aciklama":{"type":"string"},"not":{"type":"string"}}},"description":"Girdi sırasıyla"},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"gecerli":{"type":"integer"}}}}}]}}}},"400":{"description":"kart ya da kartlar eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000'den fazla eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kargo/takip":{"get":{"tags":["kargo"],"summary":"Kargo takip","security":[{"anahtar":[]}],"x-kredi":1,"description":"Şu an yalnız Yurtiçi. Gönderici/alıcı adı döndürülmez. 5 dakika önbellek.","parameters":[{"name":"tasiyici","in":"query","required":true,"schema":{"enum":["yurtici"]}},{"name":"no","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9]{6,30}$"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KargoSonucu"}}}},"400":{"description":"Eksik ya da hatalı parametre","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Taşıyıcı desteklenmiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"502":{"description":"Taşıyıcıya ulaşılamıyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kargo/tasiyicilar":{"get":{"tags":["kargo"],"summary":"Taşıyıcılar ve destek durumu","x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tasiyicilar":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}}}}},"/v1/kargo/desi":{"post":{"tags":["kargo"],"summary":"Desi ve ücretlendirilen ağırlık (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"desi = en × boy × yükseklik (cm) / bölen; bölen varsayılan 3000 (yurt içi yaygın), 4000–6000 seçilebilir. Ücretlendirilen ağırlık = max(desi, ağırlık). Taşıyıcı tarifesi esastır.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["en","boy","yukseklik","agirlik"],"properties":{"en":{"type":"number","description":"cm"},"boy":{"type":"number","description":"cm"},"yukseklik":{"type":"number","description":"cm"},"agirlik":{"type":"number","description":"kg"},"bolen":{"enum":[3000,4000,5000,6000],"default":3000}}},"example":{"en":40,"boy":30,"yukseklik":25,"agirlik":3.5}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"en":{"type":"number"},"boy":{"type":"number"},"yukseklik":{"type":"number"},"agirlik":{"type":"number"},"bolen":{"type":"integer"},"hacimCm3":{"type":"number"},"desi":{"type":"number"},"ucretlendirilenAgirlik":{"type":"number"},"esas":{"enum":["desi","agirlik"]}}}}}},"400":{"description":"Ölçü eksik, pozitif değil ya da bölen geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kargo/etiket":{"post":{"tags":["kargo"],"summary":"Kargo etiketi için adres bloğu","security":[{"anahtar":[]}],"x-kredi":1,"description":"Gönderen ve alıcı adresini çözümler (il/ilçe/mahalle/sokak resmî yazımıyla) ve etikete basılacak satırlara indirir: uzun yazımlar kısaltılır (\"Caddesi\" → \"Cad.\"), kalan taşma sözcük sınırından sarılır, her satır en çok 35 karakter. `desi` verilirse desi ve ücretlendirilen ağırlık da hesaplanır. Çözülemeyen kritik bileşenler `eksikler` ve `uyarilar` ile bildirilir. Kişi/firma adı yalnız geçirilir: çözümlenmez, saklanmaz, loglanmaz. Gönderi başına 1 kredi (iki adres birden).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["alici","gonderen"],"properties":{"alici":{"$ref":"#/components/schemas/EtiketTarafGirdisi"},"gonderen":{"$ref":"#/components/schemas/EtiketTarafGirdisi"},"desi":{"type":"object","required":["en","boy","yukseklik","agirlik"],"properties":{"en":{"type":"number"},"boy":{"type":"number"},"yukseklik":{"type":"number"},"agirlik":{"type":"number"},"bolen":{"enum":[3000,4000,5000,6000],"default":3000}}},"tasiyici":{"type":"string","maxLength":40,"description":"Yalnız yanıta aktarılır"}}},"example":{"alici":{"ad":"Ayşe Yılmaz","adres":"moda cad 14/5 kadikoy istanbul"},"gonderen":{"ad":"Örnek Ltd. Şti.","adres":"ataturk bulv no:12 cankaya ankara"},"desi":{"en":30,"boy":40,"yukseklik":20,"agirlik":4}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"gonderen":{"$ref":"#/components/schemas/EtiketTaraf"},"alici":{"$ref":"#/components/schemas/EtiketTaraf"},"tasiyici":{"type":"string"},"desi":{"type":"object","additionalProperties":true},"satirUzunlugu":{"type":"integer"},"uyarilar":{"type":"array","items":{"type":"string"}},"not":{"type":"string"}}}}}},"400":{"description":"alici/gonderen eksik ya da desi ölçüsü geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"adres 1000, ad 100 karakteri aşıyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kargo/takip-tani":{"post":{"tags":["kargo"],"summary":"Takip numarasından olası taşıyıcı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Numaranın biçiminden (uzunluk, önek, varsa kontrol hanesi) olası taşıyıcıları güvene göre sıralar. **Kesinlik iddiası yok**: taşıyıcılar numara şemalarını resmî olarak yayımlamıyor ve uzunluklar örtüşüyor; kurallar kamuya açık örneklerden çıkarıldı. UPS `1Z…` kontrol hanesi ve DHL Express 10 hane mod-7 sağlaması hesaplanır, tutarsa güven yükselir. Boşluk, tire ve nokta yok sayılır. `takipDestegi: true` olan taşıyıcıda GET /v1/kargo/takip ile gerçek durum sorulabilir. Her adayda `takipUrl`: taşıyıcının herkese açık takip sayfası, numara bağlantıya gömülü; yalnız resmî sitede doğrulanmış kalıplarda dolu (şimdilik Yurtiçi, Aras), sayfası numarayı bağlantıdan almayan taşıyıcıda null. Kredi harcamaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["numara"],"properties":{"numara":{"type":"string","maxLength":60}}},"example":{"numara":"1Z999AA10123456784"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"numara":{"type":"string","description":"Normalize hâli (büyük harf, ayraçsız)"},"bicim":{"enum":["rakam","upu","ups","alfanumerik"]},"uzunluk":{"type":"integer"},"adaylar":{"type":"array","description":"Güvene göre azalan; boş olabilir","items":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"guven":{"type":"number","minimum":0,"maximum":1,"description":"Sıralama ölçüsü, olasılık değil"},"gerekce":{"type":"string"},"takipDestegi":{"type":"boolean"},"takipUrl":{"type":["string","null"],"format":"uri","description":"Taşıyıcının takip sayfası, numara gömülü; doğrulanmış kalıp yoksa null"}}}},"not":{"type":"string"}}}}}},"400":{"description":"numara eksik ya da 6–35 karakter harf/rakam değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kargo/teslim-tahmini":{"post":{"tags":["kargo"],"summary":"Teslim tarihi tahmini (il→il iş günü)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Gönderim tarihi ve iki ilden tahmini teslim ve en geç tarih. Tablo: aynı il 1, aynı/komşu bölge 2, uzak bölge 3 iş günü; Doğu/Güneydoğu Anadolu +1. Hafta sonu, resmî tatil ve arife dağıtım günü sayılmaz; tatil günü verilen gönderi sonraki iş gününde kabul edilir. **Tahmindir, taşıyıcı taahhüdü değildir**; `tasiyici` yalnız yanıta aktarılır. Kapsam 2022–2028 (tatil tablosu).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["gonderimTarihi","gonderenIl","aliciIl"],"properties":{"gonderimTarihi":{"type":"string","format":"date"},"gonderenIl":{"type":"string"},"aliciIl":{"type":"string"},"tasiyici":{"type":"string","maxLength":40,"description":"Yalnız yanıta aktarılır; hesabı değiştirmez"}}},"example":{"gonderimTarihi":"2026-05-22","gonderenIl":"İstanbul","aliciIl":"Van"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeslimTahmini"}}}},"400":{"description":"Tarih biçimi hatalı ya da il tanınmadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında (2022–2028)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/is-gunu-ekle":{"get":{"tags":["takvim"],"summary":"Tarihe iş günü ekle/çıkar (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Başlangıç günü sayılmaz: Cuma + 1 = Pazartesi. Negatif gün geri gider. Resmî tatiller 2429 sayılı Kanun, dini bayramlar Diyanet takvimi; kapsam 2022–2028. Köprü günleri (idari izin) dahil değil.","parameters":[{"name":"tarih","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"Başlangıç"},{"name":"gun","in":"query","required":true,"schema":{"type":"integer","minimum":-1000,"maximum":1000}},{"name":"yarimGun","in":"query","schema":{"enum":["is","tatil"],"default":"is"},"description":"Arife gibi yarım günler iş günü sayılsın mı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"baslangic":{"type":"string"},"gun":{"type":"integer"},"sonuc":{"type":"string"},"yarimGunIsGunu":{"type":"boolean"},"kapsam":{"type":"object","properties":{"ilk":{"type":"integer"},"son":{"type":"integer"}}},"kaynak":{"type":"string"},"guncelleme":{"type":"string"}}}}}},"400":{"description":"Parametre hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında (2022–2028)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/tatiller":{"get":{"tags":["takvim"],"summary":"Resmî tatil listesi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Millî bayramlar, dini bayramlar (Diyanet takvimi) ve 13.00'te başlayan yarım günler. Kapsam 2022–2028 (2027–2028 Diyanet'in ileri tarihli takvimi). Köprü günleri (idari izin) dahil değil.","parameters":[{"name":"yil","in":"query","schema":{"type":"integer"},"description":"Varsayılan: içinde bulunulan yıl"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kaynak":{"type":"string"},"guncelleme":{"type":"string"},"yil":{"type":"integer"},"kapsam":{"type":"object"},"tatiller":{"type":"array","items":{"$ref":"#/components/schemas/Tatil"}}}}}}},"400":{"description":"yil biçimi hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında (2022–2028)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/gun":{"get":{"tags":["takvim"],"summary":"Gün bilgisi: iş günü mü, tatil mi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"tarih","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"YYYY-AA-GG"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kaynak":{"type":"string"},"guncelleme":{"type":"string"},"tarih":{"type":"string"},"haftaninGunu":{"type":"integer","description":"1=Pazartesi … 7=Pazar"},"haftaSonu":{"type":"boolean"},"tatiller":{"type":"array","items":{"$ref":"#/components/schemas/Tatil"}},"tatil":{"type":"boolean"},"yarimGun":{"type":"boolean"},"isGunu":{"type":"boolean"}}}}}},"400":{"description":"tarih hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında (2022–2028)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/is-gunu/say":{"get":{"tags":["takvim"],"summary":"İki tarih arası iş günü sayısı, ikisi dahil (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"baslangic","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"Dahil"},{"name":"bitis","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"Dahil"},{"name":"yarimGun","in":"query","schema":{"enum":["is","tatil"],"default":"is"},"description":"Yarım günler (arife) iş günü sayılsın mı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kaynak":{"type":"string"},"guncelleme":{"type":"string"},"baslangic":{"type":"string"},"bitis":{"type":"string"},"isGunu":{"type":"integer"},"yarimGunIsGunu":{"type":"boolean"}}}}}},"400":{"description":"Parametre hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında (2022–2028)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/namaz":{"get":{"tags":["takvim"],"summary":"Namaz vakitleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Güneşin konumundan hesaplanan vakitler; kazıma ya da dış istek yok. Diyanet açıları: imsak 18°, yatsı 17°, güneş/akşam ufkun 0,833° altı, ikindi gölge katsayısı 1 (Şafii, `asr=standart`) ya da 2 (`asr=hanefi`). Konum `il` verilirse il merkezi koordinatı (Overture POI medyanı), yoksa `lat`/`lon`. Saat dilimi sabit UTC+03:00; kapsam 2017–2050 (öncesinde yaz saati vardı). Temkin (ihtiyat) dakikası eklenmez, yanıtta söylenir. İbadet için resmî Diyanet takvimi esastır.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"İstanbul","description":"Ad ya da plaka; lat/lon ile birlikte verilmez"},{"name":"lat","in":"query","schema":{"type":"number"},"example":41.0082},{"name":"lon","in":"query","schema":{"type":"number"},"example":28.9784},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Varsayılan bugün (Türkiye saati)"},{"name":"asr","in":"query","schema":{"enum":["standart","hanefi"],"default":"standart"},"description":"İkindi gölge katsayısı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tarih":{"type":"string"},"il":{"type":["string","null"]},"plaka":{"type":["integer","null"]},"konum":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"kaynak":{"type":"string"}}},"saatDilimi":{"type":"string"},"yontem":{"type":"object","properties":{"ad":{"type":"string"},"imsakAcisi":{"type":"number"},"yatsiAcisi":{"type":"number"},"ufukAcisi":{"type":"number"},"ikindi":{"type":"string","enum":["standart","hanefi"]},"ikindiGolgeKatsayisi":{"type":"integer"}}},"vakitler":{"type":"object","description":"SS:DD, Türkiye saati. Vakit oluşmuyorsa null (Türkiye'de olmaz).","properties":{"imsak":{"type":["string","null"]},"gunes":{"type":["string","null"]},"ogle":{"type":["string","null"]},"ikindi":{"type":["string","null"]},"aksam":{"type":["string","null"]},"yatsi":{"type":["string","null"]}}},"temkin":{"type":"object","properties":{"dakika":{"type":"integer"},"not":{"type":"string"}}},"kapsam":{"type":"object","properties":{"ilk":{"type":"integer"},"son":{"type":"integer"}}},"not":{"type":"string"}}}}}},"400":{"description":"il ile lat/lon birlikte, ikisi de eksik, ya da tarih/asr hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı ya da yıl kapsam dışında (2017–2050)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/takvim/hicri":{"get":{"tags":["takvim"],"summary":"Hicri ↔ miladi tarih (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"`tarih` verilirse miladiden hicriye, `hicri` verilirse hicriden miladiye; ikisi de yoksa bugün (Türkiye saati). Yöntem tablosal (aritmetik) hicri takvim — 30 yıllık devrede 11 artık yıl. Diyanet takvimi hilalin gözlenmesine dayandığı için 1 gün farklı olabilir; yanıttaki not bunu söyler.","parameters":[{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"example":"2026-09-22","description":"Miladi; hicri ile birlikte verilmez"},{"name":"hicri","in":"query","schema":{"type":"string","pattern":"^\\d{3,4}-\\d{1,2}-\\d{1,2}$"},"example":"1448-03-01"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"miladi":{"type":"string"},"hicri":{"type":"object","properties":{"yil":{"type":"integer"},"ay":{"type":"integer"},"gun":{"type":"integer"},"ayAdi":{"type":"string"},"metin":{"type":"string","description":"\"10 Rebiülevvel 1448\""},"iso":{"type":"string"},"artikYil":{"type":"boolean"},"ayGunSayisi":{"type":"integer"}}},"yontem":{"type":"string"},"kapsam":{"type":"object","properties":{"miladi":{"type":"object","properties":{"ilk":{"type":"integer"},"son":{"type":"integer"}}},"hicri":{"type":"object","properties":{"ilk":{"type":"integer"},"son":{"type":"integer"}}}}},"not":{"type":"string"}}}}}},"400":{"description":"tarih ile hicri birlikte ya da biçim hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Yıl kapsam dışında ya da o ayda olmayan gün","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kvkk/maskele":{"post":{"tags":["kvkk"],"summary":"Metinde kişisel veri bul ve maskele","security":[{"anahtar":[]}],"x-kredi":1,"description":"TCKN, IBAN, telefon, e-posta, kredi kartı ve plakayı bulur, harf/rakamları `*` yapar (uzunluk korunur). TCKN/IBAN/kredi kartı/telefon sağlamalı, e-posta ve plaka biçimsel. Ad-soyad ve adres aranmaz. Yanıt ham değeri değil yalnız yerini verir; metin saklanmaz. En fazla 100.000 karakter; kredi metin başına.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":100000},"turler":{"type":"array","items":{"enum":["tckn","iban","telefon","eposta","kredi_karti","plaka"]},"description":"Verilmezse hepsi"}}},"example":{"metin":"Müşteri 0532 123 45 67 aradı, IBAN TR33 0006 1005 1978 6457 8413 26"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["metin","bulgular","sayim","not"],"properties":{"metin":{"type":"string","description":"Maskelenmiş metin, girdiyle aynı uzunlukta"},"bulgular":{"type":"array","items":{"type":"object","properties":{"tur":{"enum":["tckn","iban","telefon","eposta","kredi_karti","plaka"]},"baslangic":{"type":"integer","description":"JS dizi konumu, dahil"},"bitis":{"type":"integer","description":"Hariç"}}}},"sayim":{"type":"object","additionalProperties":{"type":"integer"}},"not":{"type":"string"}}}}}},"400":{"description":"metin eksik ya da turler geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"100.000 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kvkk/ihlaller":{"get":{"tags":["kvkk"],"summary":"KVKK veri ihlali bildirimleri","security":[{"anahtar":[]}],"x-kredi":1,"description":"KVKK Kurulu'nun kamuoyuna ilan ettiği veri ihlali bildirimleri (kvkk.gov.tr), en yeni önce. Duyuru metni değil, yapılandırılmış özet: neden türleri, tespit ve ihlal tarihleri, etkilenen kişi sayısı ve niteleyicisi, kişi grupları, veri kategorileri ve etiketleri, Kurul kararı. Günde iki kez çekilir, istek anında kaynağa gidilmez. Veri sorumlusu şahıs şirketiyse (unvanda tüzel kişilik işareti yok) adı, duyuru bağlantısı ve neden cümlesi verilmez (`sahisSirketi: true`). `ara` sözcükleri unvan, kategori, kişi grubu ve neden türünde aranır (hepsi geçmeli, Türkçe karaktersiz de olur). Liste boşsa kredi düşmez.","parameters":[{"name":"ara","in":"query","schema":{"type":"string","maxLength":100},"example":"fidye"},{"name":"baslangic","in":"query","schema":{"type":"string","format":"date"},"description":"Yayım tarihi, dahil"},{"name":"bitis","in":"query","schema":{"type":"string","format":"date"},"description":"Yayım tarihi, dahil"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["toplam","ihlaller","kaynak","guncelleme","bayat"],"properties":{"ara":{"type":["string","null"]},"baslangic":{"type":["string","null"]},"bitis":{"type":["string","null"]},"toplam":{"type":"integer"},"ihlaller":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"kvkk.gov.tr içerik numarası"},"yayinTarihi":{"type":"string","format":"date"},"veriSorumlusu":{"type":["string","null"],"description":"Şahıs şirketinde null"},"sahisSirketi":{"type":"boolean"},"url":{"type":"string","description":"Duyuru; şahıs şirketinde liste sayfası"},"ayrintiAlindi":{"type":"boolean","description":"false ise yalnız tarih ve unvan dolu"},"neden":{"type":["string","null"],"description":"Nedeni anlatan madde, en çok 300 karakter; şahıs şirketinde null"},"nedenTurleri":{"type":"array","items":{"enum":["fidye","kimlik-avi","siber-saldiri","yetkisiz-erisim","zafiyet","veri-isleyen","yanlis-gonderim","kayip-calinti","calisan"]}},"tespitTarihi":{"type":["string","null"],"format":"date"},"ihlalBaslangic":{"type":["string","null"],"format":"date"},"ihlalBitis":{"type":["string","null"],"format":"date"},"kisiSayisi":{"type":["integer","null"]},"kisiSayisiNiteleyici":{"enum":["kesin","yaklasik","en_fazla","belirlenemedi",null]},"kisiGruplari":{"type":"array","items":{"type":"string"}},"veriKategorileri":{"type":"array","items":{"type":"string"},"description":"Duyurudaki yazımıyla"},"veriEtiketleri":{"type":"array","items":{"type":"string"},"description":"ad-soyad, kimlik, iletisim, e-posta, telefon, adres, dogum-tarihi, sifre, kullanici-adi, finans, saglik, konum, pasaport, gorsel, ozluk, musteri-islem"},"kurulKarari":{"type":["object","null"],"properties":{"tarih":{"type":["string","null"],"format":"date"},"sayi":{"type":"string","example":"2026/2039"}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"ara çok uzun, tarih ya da limit geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ticaret/cayma":{"get":{"tags":["ticaret"],"summary":"Cayma hakkı süresi ve istisnaları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Mesafeli Sözleşmeler Yönetmeliği m.9: teslimden itibaren 14 gün (teslim günü sayılmaz); m.10: eksik bilgilendirmede sürenin mutlak sonu (+1 yıl); m.15 istisnaları `urunTuru` ile (`caymaHakkiVar: false` + bent). Mühürlü hijyen ürünü ve medya gibi koşullu istisnalarda `istisna.kosul` yazar. Hukuki tavsiye değildir (`uyari`).","parameters":[{"name":"teslimTarihi","in":"query","required":true,"schema":{"type":"string","format":"date"},"description":"Mal: teslim günü; hizmet: sözleşme günü"},{"name":"urunTuru","in":"query","schema":{"enum":["standart","hizmet","finansal_dalgalanma","kisiye_ozel","cabuk_bozulan","muhurlu_hijyen","karisan_mal","muhru_acilmis_medya","sureli_yayin","tarihli_hizmet","anlik_dijital","onayla_baslanan_hizmet"],"default":"standart"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["teslimTarihi","urunTuru","caymaHakkiVar","sure","sonGun","eksikBilgilendirmedeSonGun","mevzuat","yururlukNotu","uyari"],"properties":{"teslimTarihi":{"type":"string"},"urunTuru":{"type":"string"},"caymaHakkiVar":{"type":"boolean"},"sure":{"const":14},"sonGun":{"type":"string","format":"date"},"sonGunTatil":{"type":"boolean","description":"Yalnız 2022–2028"},"eksikBilgilendirmedeSonGun":{"type":"string","format":"date","description":"m.10: sonGun + 1 yıl"},"istisna":{"type":"object","properties":{"bent":{"type":"string"},"aciklama":{"type":"string"},"kosul":{"type":"string"}}},"sureBaslangici":{"type":"string"},"mevzuat":{"type":"object","properties":{"ad":{"type":"string"},"resmiGazete":{"type":"string"},"maddeler":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"string"}}},"yururlukNotu":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"teslimTarihi hatalı ya da urunTuru bilinmiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ticaret/fatura-suresi":{"get":{"tags":["ticaret"],"summary":"Fatura düzenleme süresinin son günü (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"VUK m.231/5: malın teslimi ya da hizmetin yapıldığı tarihten itibaren azami 7 gün (teslim günü sayılmaz); süresinde düzenlenmeyen fatura hiç düzenlenmemiş sayılır. Son gün tatile rastlarsa VUK m.18 gereği izleyen ilk iş günü (`sonGunIsGunu`, 2022–2028). Hukuki tavsiye değildir (`uyari`).","parameters":[{"name":"teslimTarihi","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["teslimTarihi","sure","sonGun","ayDegisiyor","sonuc","mevzuat","yururlukNotu","uyari"],"properties":{"teslimTarihi":{"type":"string"},"sure":{"const":7},"sonGun":{"type":"string","format":"date"},"sonGunIsGunu":{"type":"string","format":"date","description":"VUK m.18; yalnız 2022–2028"},"ayDegisiyor":{"type":"boolean","description":"Son gün teslim ayından sonraki aya taşıyor (KDV dönemi teslim ayı)"},"sonuc":{"type":"string"},"mevzuat":{"type":"object","properties":{"ad":{"type":"string"},"maddeler":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"string"}}},"yururlukNotu":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"teslimTarihi hatalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/yaziyla":{"post":{"tags":["metin"],"summary":"Tutarı yazıyla yaz (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"12.345,50 → \"on iki bin üç yüz kırk beş TL elli kuruş\". Metin girdide Türkçe yazım (nokta binlik, virgül ondalık); sayı girdide kuruş yuvarlanır. En fazla 15 hane. `bitisik` çek/senet yazımı, `buyukHarf` Türkçe büyük harf.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tutar"],"properties":{"tutar":{"oneOf":[{"type":"number"},{"type":"string"}]},"paraBirimi":{"enum":["TRY","USD","EUR","GBP","yok"],"default":"TRY","description":"`yok`: \"… virgül elli\""}}},"example":{"tutar":"12.345,50"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tutar":{"type":"string","description":"Türkçe biçim \"12.345,50\""},"paraBirimi":{"type":"string"},"yazi":{"type":"string"},"buyukHarf":{"type":"string"},"bitisik":{"type":"string"}}}}}},"400":{"description":"tutar eksik/biçimsiz ya da paraBirimi bilinmiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/slug":{"post":{"tags":["metin"],"summary":"URL dostu slug (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Türkçe harfler ASCII'ye iner (ç→c, ı/İ→i, ş→s…), harf-rakam dışı her şey ayırıcı. En fazla 1000 karakter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":1000},"ayirici":{"enum":["-","_"],"default":"-"}}},"example":{"metin":"Çankaya'da Yeni Dükkân!"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"}}}}}},"400":{"description":"metin eksik ya da ayirici geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"1000 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/sirala":{"post":{"tags":["metin"],"summary":"Türkçe alfabe sırasıyla sırala (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"ICU Türkçe sıralama (a b c ç … ı i … o ö … s ş … u ü …); büyük/küçük harf duyarsız, sayılar sayı olarak (\"Sokak 2\" < \"Sokak 10\"). En fazla 10.000 eleman.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["liste"],"properties":{"liste":{"type":"array","items":{"type":"string"},"maxItems":10000},"yon":{"enum":["artan","azalan"],"default":"artan"}}},"example":{"liste":["şeker","çay","ırmak","iğne","ada"]}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"liste":{"type":"array","items":{"type":"string"}},"yon":{"type":"string"}}}}}},"400":{"description":"liste boş, metin olmayan eleman ya da yon geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"10.000'den fazla eleman","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/ad-normalize":{"post":{"tags":["metin"],"summary":"Ad-soyad yazımını düzelt (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"\"MEHMET ALİ  yılmaz\" → \"Mehmet Ali Yılmaz\": Türkçe büyük/küçük harf (İ/ı), fazla boşluk, tire ve kesme. Ad/soyad ayırmaz, cinsiyet tahmini yapmaz. En fazla 200 karakter; girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ad"],"properties":{"ad":{"type":"string","maxLength":200}}},"example":{"ad":"MEHMET ALİ  yılmaz"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"ad":{"type":"string"}}}}}},"400":{"description":"ad eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"200 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/kisaltma":{"post":{"tags":["metin"],"summary":"Adres kısaltmalarını aç ya da kısalt (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"`yon: \"ac\"` (varsayılan): \"Cad.\" → Caddesi, \"Mah.\" → Mahallesi, \"Sk.\" → Sokak, \"Şht.\" → Şehit, \"K:3\" → Kat:3. `yon: \"kisalt\"`: etiket uzunluğu için ters yön (Caddesi → Cad., Organize Sanayi Bölgesi → OSB). Gerçek sözcük de olan kısaltmalar (\"Bul\", \"Sit\") yalnız noktalıysa açılır; \"K\", \"D\" yalnız ardından sayı gelirse. Metnin geri kalanına dokunulmaz, sicille eşleştirmez (bunun için /v1/address/parse). En fazla 2.000 karakter; girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":2000},"yon":{"enum":["ac","kisalt"],"default":"ac"}}},"example":{"metin":"Atatürk Cad. Şht. Ali Sk. No:5 D:3","yon":"ac"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"metin":{"type":"string"},"yon":{"type":"string"},"degisiklikler":{"type":"array","items":{"type":"object","properties":{"once":{"type":"string"},"sonra":{"type":"string"}}}}}}}}},"400":{"description":"metin eksik ya da yon geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"2.000 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/ek":{"post":{"tags":["metin"],"summary":"Türkçe çekim eki üret (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"\"Ankara\" + `yonelme` → \"Ankara'ya\", \"kitap\" + `belirtme` → \"kitabı\", \"2026\" + `bulunma` → \"2026'da\". Ünlü uyumu, ünsüz sertleşmesi (\"40'ta\"), ünsüz yumuşaması (\"kitap → kitabı\", \"renk → rengi\") ve kaynaştırma harfi (araba+yı, araba+nın, araba+sı). `ozelIsim` verilmezse baş harfi büyük yazılanlar özel isim sayılır: kesme işareti konur ve yumuşama yazıya geçmez (TDK). Sayı okunuşuna göre çekilir ve hep kesme alır; soru eki ayrı sözcüktür (\"Volkan mı\"). `kelimeler` ile en fazla 1.000 sözcük tek çağrıda. İkizleşme (\"hak → hakkı\") ve ünlü düşmesi kapsam dışı; girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["ek"],"properties":{"kelime":{"type":"string","maxLength":100},"kelimeler":{"type":"array","items":{"type":"string"},"maxItems":1000,"description":"`kelime` yerine; toplu üretim"},"ek":{"enum":["yonelme","bulunma","ayrilma","belirtme","ilgi","iyelik","ile","mi"]},"ozelIsim":{"type":"boolean","description":"Verilmezse baş harfe bakılır"}}},"example":{"kelime":"Ankara","ek":"yonelme"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kelime":{"type":"string"},"ek":{"type":"string"},"sonuc":{"type":"string","description":"\"Ankara'ya\""},"eklenen":{"type":"string","description":"Yalnız ek: \"'ya\""},"ozelIsim":{"type":"boolean"},"kesme":{"type":"boolean"},"okunus":{"type":"string","description":"Yalnız sayıda: \"iki bin yirmi altı\""},"uyari":{"type":"string"},"not":{"type":"string"},"sonuclar":{"type":"array","items":{"type":"object"},"description":"Yalnız `kelimeler` verildiğinde"}}}}}},"400":{"description":"kelime/ek eksik ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"100 karakterden uzun ya da 1.000'den fazla sözcük","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/tarih":{"post":{"tags":["metin"],"summary":"Doğal dil tarihini çözümle (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"\"3 Ekim 2026\", \"03.10.2026\", \"3/10/26\", \"yarın\", \"önümüzdeki salı\", \"3 gün sonra\", \"haftaya\", \"ayın 15'i\", \"gelecek ay\", \"saat 14:30\" → ISO tarih. Türkiye yazımı esas: gün önce, ay sonra (`Date.parse` \"3.10.2026\"yı 10 Mart okur). Takvim Europe/Istanbul; `simdi` ile göreli ifadelerin dayanağı verilebilir (testte ve geçmiş bir mesajı işlerken). `guven` 1'e yakınsa tarih metinde açıkça yazılı, düştükçe yorum payı artar; `eslesmeler` hangi parçanın hangi kurala takıldığını söyler. Tarih bulunamazsa hata değil, `bulundu: false`. Tarih aralığı (\"3–5 Ekim\"), tekrar eden ifade (\"her salı\") ve saat dilimi seçimi kapsam dışı. En fazla 500 karakter; girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":500},"simdi":{"type":"string","description":"ISO 8601; verilmezse şimdiki an"}}},"example":{"metin":"önümüzdeki salı saat 14:30 teslim","simdi":"2026-09-22T09:00:00+03:00"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["bulundu","guven","eslesmeler","simdi","not"],"properties":{"bulundu":{"type":"boolean"},"tarih":{"type":"string","format":"date"},"saat":{"type":"string","description":"SS:DD"},"iso":{"type":"string","description":"\"2026-10-03\" ya da \"2026-10-03T14:30\""},"guven":{"type":"number","description":"0–1"},"eslesmeler":{"type":"array","items":{"type":"object","properties":{"tur":{"enum":["tarih","saat"]},"metin":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"},"kural":{"type":"string","description":"iso, gun_ay_yil, gorece_gun, hafta_gunu…"}}}},"simdi":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"metin eksik ya da simdi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"500 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/turkcelestir":{"post":{"tags":["metin"],"summary":"ASCII metne Türkçe harfleri geri koy (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"\"Istanbul Sisli Cumhuriyet Cad\" → \"İstanbul Şişli Cumhuriyet Cad\". Sözlük eşleşmesiyle çalışır: koda gömülü sık sözcükler ve 81 il + paketlenmiş sicildeki il/ilçe/mahalle adları. Sözlükte olmayan sözcüğe dokunmaz, uydurmaz. İki Türkçe okunuşu olan sözcüğü (diş/dış, kar/kâr, sık/sik) değiştirmez, `belirsiz` listesine yazar. Büyük harfle başlayan sözcükte yer adı öncelikli (\"Sisli\" → \"Şişli\"); cümle başındaki sözcük de büyük yazıldığı için bu kural yanılabilir. Büyük/küçük harf düzeni korunur; yazım denetimi değildir. En fazla 5.000 karakter; girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":5000}}},"example":{"metin":"Istanbul Sisli Cumhuriyet Cad"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["metin","degisiklikler","belirsiz","not"],"properties":{"metin":{"type":"string","description":"Türkçeleştirilmiş metin"},"degisiklikler":{"type":"array","items":{"type":"object","properties":{"once":{"type":"string"},"sonra":{"type":"string"},"kaynak":{"enum":["ad","sozcuk"]}}}},"belirsiz":{"type":"array","description":"Dokunulmayan çok okunuşlu sözcükler","items":{"type":"object","properties":{"sozcuk":{"type":"string"},"adaylar":{"type":"array","items":{"type":"string"}}}}},"not":{"type":"string"}}}}}},"400":{"description":"metin eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"5.000 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/metin/ayikla":{"post":{"tags":["metin"],"summary":"Serbest metinden alan çıkar (telefon, IBAN, tutar, tarih, adres)","security":[{"anahtar":[]}],"x-kredi":1,"description":"E-posta gövdesi, WhatsApp siparişi ya da destek kaydından yapılandırılmış alanlar. Model çağrılmaz: telefon BTK planıyla, IBAN mod-97 ile, TCKN ve VKN kontrol haneleriyle doğrulanır, e-posta biçimle bulunur; aynı girdi hep aynı çıktıyı verir. Tarih `/v1/metin/tarih` kurallarıyla (\"yarın\", \"3 Ekim 2026\", \"saat 14:30\") — `simdi` verilerek sabitlenebilir. Adres adayı il ya da ilçe adı geçen parçadır; il/ilçe resmî sicilden, mahalle/yol/bina ayrıştırıcıdan gelir, kesin çözüm için `/v1/address/resolve`. **TCKN ham döndürülmez** (ilk 3 + son 2 hane maskeli); 10 haneli VKN tüzel kişi bilgisi olduğu için açık döner. Ad-soyad çıkarılmaz. En fazla 5.000 karakter; metin saklanmaz. Metnin uzunluğundan bağımsız 1 kredi.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["metin"],"properties":{"metin":{"type":"string","maxLength":5000},"simdi":{"type":"string","description":"Göreli tarihlerin başlangıç anı (ISO 8601); yoksa şimdi"}}},"example":{"metin":"Sipariş: Moda Cad. No:14 Kadıköy İstanbul, 0532 123 45 67, 1.250,50 TL, yarın teslim"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["telefonlar","epostalar","ibanlar","tcknler","vknler","tutarlar","tarih","adresAdaylari","not"],"properties":{"telefonlar":{"type":"array","items":{"type":"object","properties":{"e164":{"type":["string","null"],"description":"444 numaralarında null"},"ulusal":{"type":"string"},"tur":{"type":"string"},"metin":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"epostalar":{"type":"array","items":{"type":"object","properties":{"eposta":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"ibanlar":{"type":"array","items":{"type":"object","properties":{"iban":{"type":"string"},"bicimli":{"type":"string"},"banka":{"type":"string"},"metin":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"tcknler":{"type":"array","description":"Ham numara dönmez","items":{"type":"object","properties":{"maskeli":{"type":"string","description":"İlk 3 + son 2 hane: 100******46"},"gecerli":{"type":"boolean"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"vknler":{"type":"array","items":{"type":"object","properties":{"vkn":{"type":"string"},"gecerli":{"type":"boolean"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"tutarlar":{"type":"array","items":{"type":"object","properties":{"tutar":{"type":"string","description":"Makine biçimi: \"1250.50\""},"bicimli":{"type":"string","description":"Türkçe biçim: \"1.250,50\""},"paraBirimi":{"enum":["TRY","USD","EUR","GBP"]},"metin":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}},"tarih":{"type":"object","properties":{"bulundu":{"type":"boolean"},"tarih":{"type":["string","null"]},"saat":{"type":["string","null"]},"iso":{"type":["string","null"]},"guven":{"type":"number"},"eslesmeler":{"type":"array","items":{"type":"object","properties":{"tur":{"enum":["tarih","saat"]},"metin":{"type":"string"},"kural":{"type":"string"},"baslangic":{"type":"integer"},"bitis":{"type":"integer"}}}}}},"adresAdaylari":{"type":"array","description":"Puana göre; sicil bağlı değilse boş","items":{"type":"object","properties":{"metin":{"type":"string"},"il":{"type":"string"},"ilce":{"type":"string"},"mahalle":{"type":"string"},"yol":{"type":"string"},"binaNo":{"type":"string"},"daire":{"type":"string"},"kat":{"type":"string"},"puan":{"type":"integer","description":"il/ilçe 2, mahalle/yol 1 puan"}}}},"not":{"type":"string"}}}}}},"400":{"description":"metin eksik ya da simdi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"5.000 karakterden uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/test-verisi/uret":{"post":{"tags":["test-verisi"],"summary":"Sentetik (sahte) test kaydı üret","security":[{"anahtar":[]}],"x-kredi":0,"description":"Gerçekçi ama uydurma Türk kişi/şirket kayıtları: ad-soyad, TCKN, VKN (+ticaret unvanı), IBAN, GSM, e-posta (example.com), adres (gerçek sicilden il/ilçe/mahalle/sokak + rastgele kapı/daire), doğum tarihi, plaka. Numaralar kendi sağlamalarından geçer (TCKN/VKN kontrol hanesi, IBAN mod-97, BTK numara planı) ama hiçbiri gerçek bir kişiye, şirkete ya da hesaba ait değildir. `tohum` verilirse aynı liste tekrar üretilir (yanıt tohumu her zaman döner). Kredi: 100 kayda kadar 0, üstü her başlanan 100 kayıt için 1 (500 kayıt = 5 kredi).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"adet":{"type":"integer","minimum":1,"maximum":1000,"default":10},"alanlar":{"type":"array","minItems":1,"items":{"enum":["ad","soyad","tckn","vkn","iban","gsm","eposta","adres","dogumTarihi","plaka"]},"description":"Verilmezse hepsi"},"tohum":{"type":"string","maxLength":64,"description":"Tekrarlanabilirlik için"}}},"example":{"adet":5,"alanlar":["ad","soyad","tckn","gsm","adres"],"tohum":"demo-1"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"adet":{"type":"integer"},"tohum":{"type":"string"},"alanlar":{"type":"array","items":{"type":"string"}},"kayitlar":{"type":"array","items":{"$ref":"#/components/schemas/SentetikKayit"}},"not":{"type":"string","description":"Verinin sentetik olduğu uyarısı; kullanıcıya iletin"}}}}}},"400":{"description":"adet, alanlar ya da tohum geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"adet 1000'den büyük","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/urun/kdv-orani":{"post":{"tags":["urun"],"summary":"Ürün adından KDV oranı (1/10/20) ve GTİP tahmini","security":[{"anahtar":[]}],"x-kredi":1,"description":"Ürün adını 2007/13033 BKK eki (I) ve (II) sayılı listelerden yazılmış ölçüte göre %1, %10 ya da %20'ye sınıflandırır ve gömülü TGTC 2026 cetvelinden çıkan on iki haneli adaylar arasından GTİP'i seçer (TypeSafe Jev, tek istek). Oran güveni 0,8'in altındaysa `belirsiz: true`; GTİP güveni 0,6 altıysa `gtip.belirsiz: true`, 0,3 altıysa ya da uygun aday yoksa `gtip: null`. GTİP fasılı oranla çelişirse (gıda fasılı ama %20 gibi) ikisi de belirsiz, gerekçe `celiski`'de. **Tahmindir, vergi ya da gümrük tavsiyesi değildir.** Tek ürün `urun` ya da en çok 100 ürün `urunler`; ürün başına 1 kredi, sınıflandırılamayan ürün kredisiz. Sınıflandırıcıya ulaşılamazsa 503 (kredi düşmez). Yalnız ürün adı gönderin: e-posta ya da 10+ haneli numara içeren girdi 400. Ürün adı loglanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urun":{"type":"string","minLength":2,"maxLength":200},"urunler":{"type":"array","maxItems":100,"items":{"type":"string"}}}},"example":{"urun":"Organik süzme bal 850 g"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"urun":{"type":"string"},"kdvOrani":{"enum":[1,10,20]},"guven":{"type":"number"},"belirsiz":{"type":"boolean","description":"Oran güveni 0,8 altı ya da GTİP fasılıyla çelişiyor: mali müşavire danışın"},"olasiliklar":{"type":"object","properties":{"1":{"type":"number"},"10":{"type":"number"},"20":{"type":"number"}}},"gtip":{"type":["object","null"],"description":"Ürün adından GTİP (TGTC 2026) tahmini: cetvelden çıkan adaylardan seçilen on iki haneli satır. Aday yoksa, sınıflandırıcı \"hiçbiri\" dediyse ya da güveni 0,3 altındaysa null. Gümrük beyanında kullanılmaz.","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string","description":"Pozisyondan satıra tanımlar, \" › \" ile"},"guven":{"type":"number"},"belirsiz":{"type":"boolean","description":"Güven 0,6 altı ya da oranla çelişiyor"}}},"celiski":{"type":["string","null"],"description":"GTİP fasılı ile oran çelişiyorsa kısa gerekçe (ör. gıda fasılı ama %20)"},"onbellek":{"type":"boolean"},"sonuclar":{"type":"array","items":{"type":"object","properties":{"urun":{"type":"string"},"kdvOrani":{"enum":[1,10,20]},"guven":{"type":"number"},"belirsiz":{"type":"boolean","description":"Oran güveni 0,8 altı ya da GTİP fasılıyla çelişiyor: mali müşavire danışın"},"olasiliklar":{"type":"object","properties":{"1":{"type":"number"},"10":{"type":"number"},"20":{"type":"number"}}},"gtip":{"type":["object","null"],"description":"Ürün adından GTİP (TGTC 2026) tahmini: cetvelden çıkan adaylardan seçilen on iki haneli satır. Aday yoksa, sınıflandırıcı \"hiçbiri\" dediyse ya da güveni 0,3 altındaysa null. Gümrük beyanında kullanılmaz.","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string","description":"Pozisyondan satıra tanımlar, \" › \" ile"},"guven":{"type":"number"},"belirsiz":{"type":"boolean","description":"Güven 0,6 altı ya da oranla çelişiyor"}}},"celiski":{"type":["string","null"],"description":"GTİP fasılı ile oran çelişiyorsa kısa gerekçe (ör. gıda fasılı ama %20)"},"onbellek":{"type":"boolean"},"hata":{"type":"string","description":"Yalnız toplu yanıtta, sınıflandırılamayan ürün (kredisiz)"}}},"description":"Yalnız toplu istekte, girdi sırasıyla"},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"basarili":{"type":"integer"},"belirsiz":{"type":"integer"}}},"kaynak":{"type":"string"},"yontem":{"type":"string"},"not":{"type":"string"},"guncelleme":{"type":"string"}}}}}},"400":{"description":"urun/urunler eksik ya da ürün adı değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"100'den fazla ürün","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Sınıflandırıcı kapalı ya da ulaşılamıyor; kredi düşülmedi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/urun/barkod/{ean}":{"get":{"tags":["urun"],"summary":"Barkod sağlaması ve GS1 öneki (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"EAN-13, EAN-8 ve UPC-A kontrol hanesini doğrular; UPC-A'yı 13 haneli karşılığına çevirir ve ilk üç haneden öneki tahsis eden GS1 üye kuruluşunu söyler (868–869 = GS1 Türkiye). Boşluk ve tire yok sayılır. Önek ürünün **üretim yerini göstermez**, numarayı veren kuruluşu gösterir; yanıttaki `not` bunu taşır. Kontrol hanesi tutmayan barkod 200 + `gecerli: false` (beklenen hane ile) döner; harf ya da geçersiz uzunluk 400. Ağ isteği yok, tablo gömülü. GÜBİS güvensiz ürün tablosu varsa `guvensizBildirim` eklenir (bildirimde yazan barkoda göre; ayrıntı `GET /v1/urun/guvensiz`); tablo yoksa alan hiç gelmez.","parameters":[{"name":"ean","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9 -]{8,40}$"},"example":"8690504010012"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["gecerli","not"],"properties":{"gecerli":{"type":"boolean"},"barkod":{"type":"string"},"tur":{"enum":["ean13","ean8","upca"]},"ean13":{"type":"string"},"onek":{"type":["string","null"],"description":"İlk üç hane (EAN-8'de yok)"},"ulke":{"type":["string","null"],"description":"Öneki tahsis eden GS1 üye kuruluşu"},"turkiye":{"type":"boolean"},"kontrolHanesi":{"type":"object","properties":{"verilen":{"type":"string"},"beklenen":{"type":"string"}}},"hata":{"type":["string","null"],"description":"Yalnız gecerli=false iken: kontrol_basamagi"},"aciklama":{"type":["string","null"]},"not":{"type":"string","description":"Önek yorumunun sınırı; kullanıcıya iletin"},"guvensizBildirim":{"type":"object","description":"GÜBİS'te bu barkodu anan güvensiz ürün bildirimi var mı (yalnız tablo varken)","required":["var","bildirimler","kaynak","ayrinti"],"properties":{"var":{"type":"boolean"},"bildirimler":{"type":"array","items":{"type":"object","properties":{"bildirimNo":{"type":"string"},"bildirimTarihi":{"type":"string"},"urun":{"type":"string"},"onlem":{"type":["string","null"]},"url":{"type":"string"}}}},"kaynak":{"type":"string"},"ayrinti":{"type":"string","description":"Ayrıntılı sorgu yolu"}}}}}}}},"400":{"description":"Barkod rakam dışı karakter içeriyor ya da uzunluk 8/12/13 değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/urun/guvensiz":{"get":{"tags":["urun"],"summary":"Güvensiz ürün bildirimleri (GÜBİS)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Ticaret Bakanlığı Güvensiz Ürün Bilgi Sistemi'ndeki bildirimler (2018–, ~1.000): ürün, marka, model, barkod, menşe, risk, güvensizlik nedeni, alınan önlem (toplatma, piyasaya arz yasağı…) ve mevzuat. Günde iki kez çekilir, istek anında kaynağa gidilmez. Firma adı ve adresi verilmez (şahıs ithalatçıda kişisel veri). Barkod yalnız bildirimde yazıyorsa eşleşir; çoğu bildirimde yok, marka/ara ile de sorun. `marka`, `kategori`, `ara` sözcükleri ürün, marka, model, etiket adı ve kategoride aranır (hepsi geçmeli). En yeni bildirim önce. Liste boşsa kredi düşmez.","parameters":[{"name":"barkod","in":"query","schema":{"type":"string","pattern":"^[0-9 -]{8,20}$"},"description":"8–14 hane"},{"name":"marka","in":"query","schema":{"type":"string"}},{"name":"kategori","in":"query","schema":{"type":"string"},"example":"oyuncak"},{"name":"ara","in":"query","schema":{"type":"string"},"example":"peluş anahtarlık"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["toplam","bildirimler","kaynak","guncelleme","bayat"],"properties":{"toplam":{"type":"integer"},"bildirimler":{"type":"array","items":{"type":"object","properties":{"rid":{"type":"integer","description":"GÜBİS kayıt kimliği"},"bildirimNo":{"type":"string"},"bildirimTarihi":{"type":"string","format":"date"},"kurum":{"type":["string","null"]},"kategori":{"type":["string","null"]},"urunGrubu":{"type":["string","null"]},"urun":{"type":"string"},"marka":{"type":["string","null"]},"model":{"type":["string","null"]},"etiketAdi":{"type":["string","null"]},"barkodlar":{"type":"array","items":{"type":"string"}},"mensei":{"type":["string","null"]},"riskler":{"type":["string","null"]},"neden":{"type":["string","null"]},"onlem":{"type":["string","null"]},"onlemTarihi":{"type":["string","null"],"format":"date"},"mevzuat":{"type":["string","null"]},"url":{"type":"string"},"detayli":{"type":"boolean","description":"Ayrıntı sayfası okunduysa true; değilse yalnız RSS alanları dolu"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"filtre yok, barkod ya da limit geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/eczane/nobetci":{"get":{"tags":["eczane"],"summary":"Nöbetçi eczaneler","security":[{"anahtar":[]}],"x-kredi":1,"description":"İlin (isteğe bağlı ilçenin) en son yayımlanan nöbet listesi. Veri kaynaktan günde iki kez çekilir, istek anında kaynağa gidilmez; son başarılı çekim kaynağın tazelik süresinden eskiyse `bayat: true`. Eczacı adı yok; `ad` tabeladaki unvan, `telefon` sabit iş yeri hattı (cep numarası verilmez). İlçe/mahalle referans veriyle belirlenir, bulunamazsa ilçe null. Kapsam: 77 il (Kilis, Rize, Amasya, Bilecik yok). Liste boşsa kredi düşmez. Kapsam dışı il 422 ve `kapsam` listesi.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"İzmir"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Bornova"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["eczaneler","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"nobetTarihi":{"type":["string","null"]},"eczaneler":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"ilce":{"type":["string","null"]},"mahalle":{"type":["string","null"]},"adres":{"type":"string"},"telefon":{"type":["string","null"]},"lat":{"type":["number","null"]},"lon":{"type":["number","null"]},"nobetTuru":{"type":["string","null"]},"nobetBaslangic":{"type":["string","null"],"description":"ISO 8601; kaynak saat vermiyorsa null"},"nobetBitis":{"type":["string","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"il eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Bu il için kaynak yok","content":{"application/json":{"schema":{"type":"object","properties":{"hata":{"type":"string"},"kapsam":{"type":"array","items":{"type":"string"}}}}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/eczane/nobetci/yakin":{"get":{"tags":["eczane"],"summary":"Konuma en yakın nöbetçi eczaneler","security":[{"anahtar":[]}],"x-kredi":1,"description":"Koordinatın düştüğü ilin en son nöbet listesini kuş uçuşu uzaklığa göre sıralar (`yaricap` içinde, en çok `limit`). İl, en yakın koordinatlı sokağın ilçesinden bulunur (25 km içinde yoksa liste boş); yalnız o ilin nöbetçileri sıralanır. Eczanenin koordinatı yoksa ilçe merkezine düşülür (`konumKaynagi: \"ilce_merkezi\"`, kaba tahmin); mahalle merkezi yok. Her eczanede `son30GunNobet`: son 30 günde kaç ayrı gün nöbetçiydi (`gecmis.veriGunu` 30'dan küçükse eksik dönem). Eczacı adı ve cep telefonu yok. Liste boşsa kredi düşmez. Konumun ili kapsam dışıysa 422 ve `kapsam`.","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","minimum":-90,"maximum":90},"example":38.4622},{"name":"lon","in":"query","required":true,"schema":{"type":"number","minimum":-180,"maximum":180},"example":27.2167},{"name":"yaricap","in":"query","schema":{"type":"number","minimum":0.1,"maximum":50,"default":5},"description":"km"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["eczaneler","kaynak","guncelleme","bayat"],"properties":{"konum":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"il":{"type":["string","null"],"description":"Konumun düştüğü il; bulunamazsa null"},"yaricapKm":{"type":"number"},"nobetTarihi":{"type":["string","null"]},"eczaneler":{"type":"array","description":"Uzaklığa göre artan","items":{"type":"object","properties":{"ad":{"type":"string"},"ilce":{"type":["string","null"]},"mahalle":{"type":["string","null"]},"adres":{"type":"string"},"telefon":{"type":["string","null"]},"lat":{"type":["number","null"]},"lon":{"type":["number","null"]},"konumKaynagi":{"type":"string","enum":["eczane","ilce_merkezi"],"description":"Uzaklığın hesaplandığı nokta"},"uzaklikKm":{"type":"number","description":"Kuş uçuşu"},"nobetTuru":{"type":["string","null"]},"nobetBaslangic":{"type":["string","null"]},"nobetBitis":{"type":["string","null"]},"son30GunNobet":{"type":["integer","null"],"description":"Son 30 günde nöbetçi olduğu gün sayısı"}}}},"disarida":{"type":"object","properties":{"yaricapDisi":{"type":"integer"},"konumsuz":{"type":"integer","description":"Ne koordinatı ne ilçe merkezi olan, sıralanamayan eczane"}}},"gecmis":{"type":"object","properties":{"gun":{"type":"integer"},"veriGunu":{"type":"integer"}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"]},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"lat/lon eksik ya da yaricap/limit geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Koordinat Türkiye dışında ya da ili kapsam dışı","content":{"application/json":{"schema":{"type":"object","properties":{"hata":{"type":"string"},"il":{"type":"string"},"kapsam":{"description":"Kapsamdaki iller ya da (Türkiye dışı koordinatta) kutu"}}}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/akaryakit/fiyat":{"get":{"tags":["akaryakit"],"summary":"Akaryakıt bayi fiyatları (EPDK)","security":[{"anahtar":[]}],"x-kredi":1,"description":"İlin marka ve ürün bazında güncel bayi fiyatları ve ürün başına en düşük/ortalama/en yüksek. Kaynak EPDK Bildirim Portalı raporu; günde iki kez çekilir, istek anında EPDK'ya gidilmez. Her fiyatın `tarih`i son bildirildiği gün. İstanbul Anadolu ve Avrupa diye iki bölge (`bolge`). 81 il. Liste boşsa kredi düşmez.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"Ankara"},{"name":"urun","in":"query","schema":{"type":"string"},"example":"motorin","description":"Ürün adında geçen metin (Türkçe karaktersiz de olur)"},{"name":"marka","in":"query","schema":{"type":"string"},"example":"opet"},{"name":"bolge","in":"query","schema":{"type":"string","enum":["anadolu","avrupa"]},"description":"Yalnız İstanbul"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["fiyatlar","kaynak","guncelleme","bayat"],"properties":{"il":{"type":"string"},"fiyatlar":{"type":"array","items":{"type":"object","properties":{"bolge":{"type":["string","null"]},"marka":{"type":"string"},"urun":{"type":"string"},"fiyat":{"type":"number"},"tarih":{"type":"string","description":"Fiyatın son bildirildiği gün (YYYY-AA-GG)"},"supheli":{"type":"boolean","description":"İl/ürün ortancasından %25'ten fazla sapıyor (kaynaktaki olası hatalı bildirim); özete katılmaz"}}}},"ozet":{"type":"array","items":{"type":"object","properties":{"urun":{"type":"string"},"enDusuk":{"type":"number"},"ortalama":{"type":"number"},"enYuksek":{"type":"number"},"markaSayisi":{"type":"integer"},"supheliSayisi":{"type":"integer"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"il eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hal/fiyat":{"get":{"tags":["hal"],"summary":"Toptancı hal fiyat bülteni (Hal Kayıt Sistemi)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Türkiye geneli sebze-meyve toptancı hal ortalama fiyatları: ürün, cins, tür (konvansiyonel/iyi tarım/organik), fiyat (TL / birim), işlem hacmi. Kaynak Ticaret Bakanlığı Hal Kayıt Sistemi günlük bülteni; günde iki kez çekilir, geçmiş bültenler tutulur. `tarih` verilmezse en yeni bülten. Liste boşsa kredi düşmez.","parameters":[{"name":"urun","in":"query","schema":{"type":"string"},"example":"domates","description":"Ürün ya da cins adında geçen metin (Türkçe karaktersiz de olur)"},{"name":"tur","in":"query","schema":{"type":"string","enum":["konvansiyonel","iyi-tarim","organik"]}},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Bülten günü (YYYY-AA-GG)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["urunler","kaynak","guncelleme","bayat"],"properties":{"bultenTarihi":{"type":["string","null"],"description":"Bülten günü"},"veriTarihi":{"type":["string","null"],"description":"Bültenin kullandığı verinin günü (çoğunlukla önceki iş günü)"},"urunler":{"type":"array","items":{"type":"object","properties":{"urun":{"type":"string"},"cins":{"type":"string"},"tur":{"type":"string"},"fiyat":{"type":"number","description":"Ortalama fiyat, TL / birim"},"hacim":{"type":"number","description":"İşlem hacmi, birim cinsinden"},"birim":{"type":"string","description":"Kg, Adet, Bağ"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"tur ya da tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/borsa/fiyat":{"get":{"tags":["borsa"],"summary":"Ticaret borsası fiyatları (TOBB)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Ticaret borsalarında tescil edilen işlemlerin fiyatları: hububat, bakliyat, yağlı tohum, kuru meyve, pamuk, canlı hayvan… En az, en çok ve ortalama fiyat (TL / birim), miktar, işlem adedi ve tutarı. Kaynak TOBB Borsa Fiyat portalı; günde iki kez çekilir, istek anında kaynağa gidilmez. Her (borsa, ürün) için aralıktaki **son işlem günü** döner; `tarih` verilirse yalnız o gün işlem görenler. Kapsam: portalda o ay fiyat giren borsalar. Liste boşsa kredi düşmez.","parameters":[{"name":"urun","in":"query","schema":{"type":"string"},"example":"buğday","description":"Ürün adında geçen metin (Türkçe karaktersiz de olur)"},{"name":"borsa","in":"query","schema":{"type":"string"},"example":"Konya","description":"Borsa adında geçen metin ya da TOBB borsa kodu"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"hububat","description":"Ana ürün grubu (HUBUBAT, BAKLİYAT VE MAMÜLLERİ, KURU MEYVELER, TEKSTİL HAMMADDELERİ…)"},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Tek işlem günü (YYYY-AA-GG); gun ile birlikte verilmez"},{"name":"gun","in":"query","schema":{"type":"integer","minimum":1,"maximum":730,"default":30},"description":"Bugünden geriye kaç gün"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["fiyatlar","kaynak","guncelleme","bayat"],"properties":{"aralik":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"}}},"fiyatlar":{"type":"array","items":{"type":"object","properties":{"borsa":{"type":"string"},"borsaKod":{"type":"string"},"urun":{"type":"string"},"urunKod":{"type":"string","description":"TOBB ürün kodu, ana-alt"},"grup":{"type":"string"},"birim":{"type":"string","description":"KG, TON, ADET…"},"islemTarihi":{"type":"string","format":"date"},"islemZamani":{"type":"string","description":"Son işlem, Türkiye saati (ISO 8601)"},"enAz":{"type":"number"},"enCok":{"type":"number"},"ortalama":{"type":"number","description":"Ağırlıklı ortalama, TL / birim"},"miktar":{"type":"number"},"adet":{"type":"integer"},"tutar":{"type":"number","description":"TL"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"tarih ya da gun geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"bilinmeyen ürün grubu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/borsa/tmo":{"get":{"tags":["borsa"],"summary":"TMO piyasa bülteni: yurt içi hububat ve bakliyat fiyatları","security":[{"anahtar":[]}],"x-kredi":1,"description":"TMO Günlük Piyasa ve Borsa Fiyatları Bülteni'nin yurt içi bölümü: buğday çeşitleri, arpa, mısır, yulaf, soya, ayçiçeği, kepekler, mercimek, nohut, fasulye, pirinç. Her ürün için TMO'nun piyasa fiyatı (`tur=piyasa`), seçili ticaret borsalarının fiyatı ve miktarı (`borsa`, `yer` = borsa) ve sektör fiyatları (`sektor`, `cesit`). TL/ton ve $/ton; geçen yılın aynı günü ve yıllık değişim yalnız bültenin güncel gününde. Bülten PDF'i iş günleri yayımlanır; TMO sitesi yurt dışı IP'ye kapalı olduğundan Türkiye'deki bir makineden gündüz (08:30–20:30) iki saatte bir çekilir, o makine kapalıysa `bayat` (`guncelleme` son başarılı çekim). Bakliyat ve pirinç haftalık. Her kalem için aralıktaki **son gün** döner. TMO'nun kendi alım/satış fiyatları ve uluslararası fiyatlar bu uçta yok. Liste boşsa kredi düşmez.","parameters":[{"name":"urun","in":"query","schema":{"type":"string"},"example":"buğday","description":"Ürün ya da çeşit adında geçen metin (Türkçe karaktersiz de olur)"},{"name":"yer","in":"query","schema":{"type":"string"},"example":"Konya","description":"Borsa adında geçen metin"},{"name":"tur","in":"query","schema":{"type":"string","enum":["piyasa","borsa","sektor"]}},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Tek gün (YYYY-AA-GG); gun ile birlikte verilmez"},{"name":"gun","in":"query","schema":{"type":"integer","minimum":1,"maximum":730,"default":14},"description":"Bugünden geriye kaç gün"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["fiyatlar","kaynak","guncelleme","bayat"],"properties":{"aralik":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"}}},"fiyatlar":{"type":"array","items":{"type":"object","properties":{"urun":{"type":"string","description":"Bültendeki grup başlığı, örn. MAKARNALIK BUĞDAY"},"cesit":{"type":["string","null"],"description":"Sektör ve kepek satırlarında alt kalem"},"yer":{"type":["string","null"],"description":"Borsa satırında borsa"},"tur":{"type":"string","enum":["piyasa","borsa","sektor"]},"tarih":{"type":"string","format":"date"},"miktarTon":{"type":["number","null"]},"tlTon":{"type":"number"},"usdTon":{"type":["number","null"]},"gecenYilTlTon":{"type":["number","null"],"description":"Geçen yılın aynı günü"},"yillikDegisim":{"type":["number","null"],"description":"Yüzde"},"bultenTarihi":{"type":"string","format":"date"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"tarih, gun ya da tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/deprem/son":{"get":{"tags":["deprem"],"summary":"Son depremler (AFAD)","security":[{"anahtar":[]}],"x-kredi":1,"description":"AFAD Deprem Dairesi olay servisinden son depremler, yeniden eskiye. Veri istek anında AFAD'dan alınır, en çok 1 dakika önbellekte tutulur; en çok 168 saat (7 gün) geriye. AFAD yanıt vermezken 6 saate kadar eski veri `bayat: true` ile döner, hiç veri yoksa 503. Liste boşsa kredi düşmez.","parameters":[{"name":"saat","in":"query","schema":{"type":"integer","minimum":1,"maximum":168,"default":24}},{"name":"minBuyukluk","in":"query","schema":{"type":"number","minimum":0,"maximum":10,"default":0},"example":3},{"name":"il","in":"query","schema":{"type":"string"},"example":"İzmir","description":"AFAD'ın olaya yazdığı il (denizdeki olayda en yakın il)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["depremler","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"toplam":{"type":"integer","description":"Süzgece uyan olay sayısı (limit öncesi)"},"depremler":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"zaman":{"type":"string","description":"UTC, ISO 8601"},"zamanTr":{"type":"string","description":"Türkiye saati (+03:00)"},"buyukluk":{"type":"number"},"tur":{"type":"string","description":"ML, MW…"},"derinlikKm":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"yer":{"type":"string"},"ulke":{"type":["string","null"]},"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"mahalle":{"type":["string","null"]},"guncellendi":{"type":["string","null"],"description":"AFAD olayı düzelttiyse güncelleme zamanı (UTC)"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"AFAD'dan son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre aralık dışında","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"AFAD yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/altin/fiyat":{"get":{"tags":["altin"],"summary":"Altın ve serbest piyasa döviz fiyatı","security":[{"anahtar":[]}],"x-kredi":1,"description":"Serbest piyasa altın (gram, has, çeyrek, yarım, tam, cumhuriyet, ata, 14/18/22 ayar, ons, gümüş…) ve döviz alış/satış fiyatları. Kaynak doviz.com sayfaları, istek anında, en çok 2 dakika önbellek; kaynak düşerse 6 saate kadar eski veri `bayat: true`, hiç yoksa 503 (kredi düşmez). Banka, Kapalıçarşı ve Borsa İstanbul fiyatı değildir.","parameters":[{"name":"urun","in":"query","schema":{"type":"string"},"example":"gram,ceyrek,cumhuriyet","description":"Virgüllü ürün kodu ya da kısa ad (gram, has, ceyrek, yarim, tam, cumhuriyet, ata, ons, bilezik); boşsa hepsi"},{"name":"doviz","in":"query","schema":{"type":"string"},"example":"USD,EUR","description":"Virgüllü döviz kodu, \"hepsi\" ya da \"yok\"; varsayılan USD,EUR,GBP,CHF"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["altin","doviz","kaynak","guncelleme","bayat"],"properties":{"altin":{"type":"array","items":{"$ref":"#/components/schemas/PiyasaFiyati"}},"doviz":{"type":"array","items":{"$ref":"#/components/schemas/PiyasaFiyati"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"array","items":{"type":"string"}},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"Kaynaktan son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"doviz listesi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"ürün bulunamadı (geçerli kodlar yanıtta)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"kaynak yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/su/baraj-doluluk":{"get":{"tags":["su"],"summary":"Baraj doluluk oranları","security":[{"anahtar":[]}],"x-kredi":1,"description":"İdarelerin kendi yayımladığı baraj doluluk oranları: Türkiye geneli (DSİ panosu), Ankara (ASKİ), İzmir (İZSU açık veri, CC BY 4.0), Gaziantep (GASKİ). İstek anında, kaynak başına 1 saat önbellek; kaynak düşerse 48 saate kadar eski veri `bayat: true`. `il` verilmezse kapsamdaki hepsi; düşen kaynak `eksik`te. İstanbul ve Bursa kapsam dışı (gerekçe kaynak notunda).","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"İzmir","description":"İl adı ya da \"Türkiye\"; boşsa hepsi"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["sonuclar","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"sonuclar":{"type":"array","items":{"type":"object","properties":{"il":{"type":"string"},"tarih":{"type":["string","null"],"description":"Verinin günü (kaynağın yazdığı); yoksa null"},"toplamDolulukYuzde":{"type":["number","null"]},"aktifDolulukYuzde":{"type":["number","null"]},"gecenYil":{"type":["object","null"],"properties":{"tarih":{"type":["string","null"]},"toplamDolulukYuzde":{"type":["number","null"]},"aktifDolulukYuzde":{"type":["number","null"]}}},"barajlar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"dolulukYuzde":{"type":"number"},"suHacmiM3":{"type":["number","null"]},"maksHacimM3":{"type":["number","null"]},"kullanilabilirSuM3":{"type":["number","null"]},"lat":{"type":["number","null"]},"lon":{"type":["number","null"]}}}},"amaclar":{"type":"array","items":{"type":"object","properties":{"amac":{"type":"string"},"dolulukYuzde":{"type":"number"}}}},"aciklama":{"type":"string"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"Bu kaynaktan son alınma (ISO 8601)"},"bayat":{"type":"boolean"}}}},"eksik":{"type":"array","items":{"type":"object","properties":{"il":{"type":"string"},"neden":{"type":"string"}}}},"kapsam":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"string"},"guncelleme":{"type":"string","description":"Sonuçlardaki en eski alma zamanı (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı ya da kapsam dışı (kapsam yanıtta)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"kaynaklar yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hava/durum":{"get":{"tags":["hava"],"summary":"Hava durumu tahmini (MET Norway)","security":[{"anahtar":[]}],"x-kredi":1,"description":"İl merkezi ya da koordinat için anlık, 24 saatlik ve 7 günlük tahmin. Kaynak MET Norway Locationforecast 2.0 (NLOD 2.0 / CC BY 4.0), istek anında, nokta başına 30 dk önbellek; koordinat 2 ondalığa yuvarlanır. MGM'nin resmî tahmini değildir. Kaynak düşerse 6 saate kadar eski tahmin `bayat: true`, hiç yoksa 503.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"Ankara","description":"İl adı ya da plaka; lat/lon ile birlikte verilmez"},{"name":"lat","in":"query","schema":{"type":"number","minimum":34,"maximum":43}},{"name":"lon","in":"query","schema":{"type":"number","minimum":25,"maximum":46}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["konum","saatlik","gunluk","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"plaka":{"type":["integer","null"]},"konum":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"},"rakimM":{"type":["number","null"]},"kaynak":{"type":"string"}}},"anlik":{"oneOf":[{"$ref":"#/components/schemas/HavaSaati"},{"type":"null"}]},"saatlik":{"type":"array","items":{"$ref":"#/components/schemas/HavaSaati"}},"gunluk":{"type":"array","items":{"type":"object","properties":{"tarih":{"type":"string"},"enDusukC":{"type":["number","null"]},"enYuksekC":{"type":["number","null"]},"yagisMm":{"type":"number"},"durum":{"type":["string","null"]},"durumKod":{"type":["string","null"]}}}},"modelGuncelleme":{"type":["string","null"]},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"MET'ten son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"il ya da lat/lon eksik ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı ya da koordinat kapsam dışı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"kaynak yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/trafik":{"get":{"tags":["ibb"],"summary":"İstanbul anlık trafik indeksi (İBB)","security":[{"anahtar":[]}],"x-kredi":1,"description":"İBB Ulaşım Yönetim Merkezi'nin İstanbul geneli trafik yoğunluk indeksi (0–100) ve yaka indeksleri. Veri istek anında api.ibb.gov.tr'den, en çok 1 dakika önbellekli; `gecmis` ile son 24 saate kadar 5 dakikalık seri. İBB yanıt vermezken 30 dakikaya kadar eski veri `bayat: true`, hiç veri yoksa 503 (kredisiz).","parameters":[{"name":"gecmis","in":"query","schema":{"type":"integer","minimum":0,"maximum":24,"default":0},"description":"Kaç saatlik geçmiş"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["indeks","kaynak","guncelleme","atif"],"properties":{"indeks":{"type":"number"},"anadolu":{"type":["number","null"]},"avrupa":{"type":["number","null"]},"gecmis":{"type":"array","items":{"type":"object","properties":{"zaman":{"type":"string","description":"Türkiye saati (+03:00)"},"indeks":{"type":"number"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"gecmis 0–24 olmalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/otopark":{"get":{"tags":["ibb"],"summary":"İSPARK otopark doluluğu","security":[{"anahtar":[]}],"x-kredi":1,"description":"İSPARK otoparklarının anlık boş yer sayısı ve doluluğu. `lat`/`lon` verilirse yarıçap içindekiler yakından uzağa (`mesafeM`). İstek anında İBB'den, 1 dakika önbellek. Liste boşsa kredi düşmez.","parameters":[{"name":"lat","in":"query","schema":{"type":"number"},"example":40.9903},{"name":"lon","in":"query","schema":{"type":"number"},"example":29.029},{"name":"yaricap","in":"query","schema":{"type":"integer","minimum":50,"maximum":20000,"default":1000},"description":"Metre"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Kadıköy"},{"name":"ara","in":"query","schema":{"type":"string"},"description":"Otopark adındaki sözcükler"},{"name":"tur","in":"query","schema":{"type":"string","enum":["acik","kapali","yol_ustu"]}},{"name":"bos","in":"query","schema":{"type":"boolean"},"description":"true: yalnız boş yeri olanlar"},{"name":"acik","in":"query","schema":{"type":"boolean"},"description":"true: yalnız şu an işletmede olanlar"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":50}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["otoparklar","kaynak","guncelleme","atif"],"properties":{"toplam":{"type":"integer"},"ozet":{"type":"object","properties":{"kapasite":{"type":"integer"},"bos":{"type":"integer"}}},"otoparklar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"ad":{"type":"string"},"tur":{"type":"string","enum":["acik","kapali","yol_ustu","diger"]},"turAdi":{"type":["string","null"]},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"kapasite":{"type":"integer"},"bos":{"type":"integer"},"doluluk":{"type":["number","null"],"description":"Yüzde"},"acik":{"type":"boolean"},"calismaSaatleri":{"type":["string","null"]},"ucretsizDakika":{"type":["number","null"]},"mesafeM":{"type":"integer"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"İstanbul ilçesi bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/otopark/{id}":{"get":{"tags":["ibb"],"summary":"İSPARK otopark ayrıntısı (tarife)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Tek İSPARK otoparkının doluluğu, adresi, saatlik tarifesi ve aylık abonelik ücreti. Bilinmeyen numara 404, kredisiz.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"example":3068}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"otopark":{"type":"object","properties":{"id":{"type":"integer"},"ad":{"type":"string"},"tur":{"type":"string","enum":["acik","kapali","yol_ustu","diger"]},"turAdi":{"type":["string","null"]},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"kapasite":{"type":"integer"},"bos":{"type":"integer"},"doluluk":{"type":["number","null"],"description":"Yüzde"},"acik":{"type":"boolean"},"calismaSaatleri":{"type":["string","null"]},"ucretsizDakika":{"type":["number","null"]},"mesafeM":{"type":"integer"},"adres":{"type":["string","null"]},"aylikAbonelik":{"type":["number","null"]},"olcumZamani":{"type":["string","null"]},"tarife":{"type":"array","items":{"type":"object","properties":{"sure":{"type":"string"},"ucret":{"type":"number"}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"id sayı olmalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"bu numarada İSPARK otoparkı yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/hava/istasyonlar":{"get":{"tags":["ibb"],"summary":"İBB hava kalitesi istasyonları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İBB hava kalitesi izleme istasyonları: id, ad, ilçe, konum. 24 saat önbellek.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"istasyonlar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/hava":{"get":{"tags":["ibb"],"summary":"İstanbul hava kalitesi ölçümleri","security":[{"anahtar":[]}],"x-kredi":1,"description":"Bir İBB istasyonunun saatlik hava kalitesi ölçümleri, yeniden eskiye: indeks, baskın kirletici, konsantrasyonlar. `istasyon` (ad ya da id) ya da `lat`/`lon` (en yakın sabit istasyon) gerekli. 10 dakika önbellek. Ölçüm yoksa kredi düşmez. Ham ölçümdür, resmî değerlendirme yerine geçmez.","parameters":[{"name":"istasyon","in":"query","schema":{"type":"string"},"example":"Kadıköy"},{"name":"lat","in":"query","schema":{"type":"number"}},{"name":"lon","in":"query","schema":{"type":"number"}},{"name":"yaricap","in":"query","schema":{"type":"integer","minimum":50,"maximum":100000,"default":50000},"description":"En yakın istasyon en çok bu kadar uzakta (metre)"},{"name":"saat","in":"query","schema":{"type":"integer","minimum":1,"maximum":48,"default":24}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["istasyon","olcumler","kaynak","guncelleme","atif"],"properties":{"istasyon":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"}}},"mesafeM":{"type":"integer"},"son":{"type":["object","null"],"properties":{"zaman":{"type":"string","description":"Türkiye saati (+03:00)"},"aqi":{"type":"number"},"baskinKirletici":{"type":["string","null"]},"durum":{"type":["string","null"]},"renk":{"type":["string","null"]},"konsantrasyon":{"type":"object","additionalProperties":{"type":["number","null"]}},"altIndeks":{"type":"object","additionalProperties":{"type":["number","null"]}}}},"olcumler":{"type":"array","items":{"type":"object","properties":{"zaman":{"type":"string","description":"Türkiye saati (+03:00)"},"aqi":{"type":"number"},"baskinKirletici":{"type":["string","null"]},"durum":{"type":["string","null"]},"renk":{"type":["string","null"]},"konsantrasyon":{"type":"object","additionalProperties":{"type":["number","null"]}},"altIndeks":{"type":"object","additionalProperties":{"type":["number","null"]}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"istasyon ya da lat/lon yok, parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"istasyon bulunamadı ya da yarıçapta istasyon yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/metro/durum":{"get":{"tags":["ibb"],"summary":"Metro İstanbul hat aksaklıkları","security":[{"anahtar":[]}],"x-kredi":1,"description":"Metro İstanbul'un güncel hat aksaklık duyuruları. Liste boşsa (`normal: true`) bütün hatlar normal ve kredi düşmez. 5 dakika önbellek.","parameters":[{"name":"hat","in":"query","schema":{"type":"string"},"example":"M7"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"normal":{"type":"boolean"},"duyurular":{"type":"array","items":{"type":"object","properties":{"hat":{"type":"string"},"hatId":{"type":["integer","null"]},"aciklama":{"type":"string"},"guncellendi":{"type":["string","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","description":"İBB'den son alınma (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"İBB yanıt vermiyor ve önbellek yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ibb/nokta":{"get":{"tags":["ibb"],"summary":"İstanbul nokta verisi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İBB Açık Veri Portalı nokta listeleri: `rayli` raylı sistem istasyonları, `wifi` ibbWiFi, `istanbulkart` dolum noktaları, `itfaiye` itfaiye istasyonları, `sarj` elektrikli araç şarj istasyonları. `lat`/`lon` ile yakından uzağa. Veri koda gömülü (`guncelleme` paketlendiği gün, `kaynakGuncelleme` portaldaki son değişiklik).","parameters":[{"name":"tur","in":"query","required":true,"schema":{"type":"string","enum":["rayli","wifi","istanbulkart","itfaiye","sarj"]}},{"name":"lat","in":"query","schema":{"type":"number"},"example":41.0369},{"name":"lon","in":"query","schema":{"type":"number"},"example":28.985},{"name":"yaricap","in":"query","schema":{"type":"integer","minimum":50,"maximum":50000,"default":1000},"description":"Metre"},{"name":"ilce","in":"query","schema":{"type":"string"}},{"name":"ara","in":"query","schema":{"type":"string"},"description":"Ad, hat/marka ve adresteki sözcükler (hepsi)"},{"name":"altTur","in":"query","schema":{"type":"string"},"description":"Metro, Tramvay, Banliyö…; halka_acik|ozel; itfaiye statüsü"},{"name":"insaat","in":"query","schema":{"type":"boolean"},"description":"rayli: inşaattaki istasyonlar da"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string"},"toplam":{"type":"integer"},"sayfa":{"type":"integer"},"noktalar":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"]},"ad":{"type":"string"},"altTur":{"type":["string","null"]},"ilce":{"type":["string","null"]},"adres":{"type":["string","null"]},"ek":{"type":["string","null"],"description":"Hat adı (rayli) ya da marka (sarj)"},"insaat":{"type":"boolean"},"lat":{"type":"number"},"lon":{"type":"number"},"mesafeM":{"type":"integer"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"lisansUrl":{"type":"string"},"atif":{"type":"string","description":"İBB Açık Veri Lisansı gereği gösterilmesi gereken atıf metni"},"guncelleme":{"type":"string","format":"date"},"kaynakGuncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"400":{"description":"tur yok ya da parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"İstanbul ilçesi bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/resmi-gazete/bugun":{"get":{"tags":["resmi-gazete"],"summary":"En yeni Resmî Gazete fihristi","security":[{"anahtar":[]}],"x-kredi":0,"description":"Elimizdeki en yeni günün Resmî Gazete fihristi (içindekiler): başlık, bölüm, kategori ve resmigazete.gov.tr bağlantısı. Aynı günün mükerrer sayıları ayrı girdi (`mukerrer` > 0). Belgelerin metni yoktur. Vitrin ucu: her zaman ücretsiz.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["tarih","sayilar","kaynak","guncelleme","bayat"],"properties":{"tarih":{"type":["string","null"],"format":"date","description":"Yayım günü; kayıt yoksa null"},"sayilar":{"type":"array","description":"Gün içindeki sayılar: asıl sayı ve varsa mükerrerler","items":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"integer","description":"Gazete sayısı, örn. 33378"},"mukerrer":{"type":"integer","description":"0 asıl sayı, 1 birinci mükerrer…"},"url":{"type":"string","description":"Fihrist sayfasının adresi"},"basliklar":{"type":"array","items":{"type":"object","properties":{"bolum":{"type":"string","description":"Yasama, Yürütme ve İdare, Yargı ya da İlan"},"kategori":{"type":"string","description":"Alt başlık: YÖNETMELİKLER, TEBLİĞLER, ATAMA KARARLARI…"},"baslik":{"type":"string","description":"`kisisel` ise başlık yerine kategorisi"},"url":{"type":"string","description":"resmigazete.gov.tr'deki belge bağlantısı"},"kisisel":{"type":"boolean","description":"Başlıkta kişi adı geçiyordu; ad saklanmadı"},"etiket":{"type":["string","null"],"enum":["egitim","vergi_maliye","finans","enerji","gida_tarim","saglik","cevre","ulasim","yargi","kamu_personel","kamu_idare","uluslararasi","ticaret_sanayi","diger",null],"description":"Otomatik konu etiketi (yanılabilir); sınıflandırılmadıysa null"}}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/resmi-gazete":{"get":{"tags":["resmi-gazete"],"summary":"Bir günün ya da sayının fihristi","security":[{"anahtar":[]}],"x-kredi":1,"description":"Verilen günün (`tarih`) ya da sayının (`sayi`) fihristi; en az biri gerekli. Kaynak günde iki kez çekilir, geçmiş 5 yıl tutulur. Gazete o gün yayımlanmadıysa (resmî tatil) liste boş döner ve kredi düşmez.","parameters":[{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"example":"2026-09-22","description":"Yayım günü (YYYY-AA-GG)"},{"name":"sayi","in":"query","schema":{"type":"integer","minimum":1},"example":33378,"description":"Gazete sayısı; mükerrerler de gelir"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["tarih","sayilar","kaynak","guncelleme","bayat"],"properties":{"tarih":{"type":["string","null"],"format":"date","description":"Yayım günü; kayıt yoksa null"},"sayilar":{"type":"array","description":"Gün içindeki sayılar: asıl sayı ve varsa mükerrerler","items":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"integer","description":"Gazete sayısı, örn. 33378"},"mukerrer":{"type":"integer","description":"0 asıl sayı, 1 birinci mükerrer…"},"url":{"type":"string","description":"Fihrist sayfasının adresi"},"basliklar":{"type":"array","items":{"type":"object","properties":{"bolum":{"type":"string","description":"Yasama, Yürütme ve İdare, Yargı ya da İlan"},"kategori":{"type":"string","description":"Alt başlık: YÖNETMELİKLER, TEBLİĞLER, ATAMA KARARLARI…"},"baslik":{"type":"string","description":"`kisisel` ise başlık yerine kategorisi"},"url":{"type":"string","description":"resmigazete.gov.tr'deki belge bağlantısı"},"kisisel":{"type":"boolean","description":"Başlıkta kişi adı geçiyordu; ad saklanmadı"},"etiket":{"type":["string","null"],"enum":["egitim","vergi_maliye","finans","enerji","gida_tarim","saglik","cevre","ulasim","yargi","kamu_personel","kamu_idare","uluslararasi","ticaret_sanayi","diger",null],"description":"Otomatik konu etiketi (yanılabilir); sınıflandırılmadıysa null"}}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"tarih ya da sayi gerekli / geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/resmi-gazete/ara":{"get":{"tags":["resmi-gazete"],"summary":"Fihrist başlıklarında arama ve konu süzgeci","security":[{"anahtar":[]}],"x-kredi":1,"description":"Başlıkta geçen metne göre (Türkçe karakter ve büyük/küçük harf ayrımı yok) ve/veya konu etiketine göre arar; `q` ya da `etiket`ten en az biri gerekli. Yeniden eskiye, en çok 50 sonuç. Etiket otomatik sınıflandırmadır, yanılabilir. `kisisel: true` satırların başlığı kategorisine indirgenmiştir: kişi adıyla aranamaz. Sonuç boşsa kredi düşmez.","parameters":[{"name":"q","in":"query","schema":{"type":"string","minLength":3},"example":"tıbbi cihaz"},{"name":"etiket","in":"query","schema":{"type":"string","enum":["egitim","vergi_maliye","finans","enerji","gida_tarim","saglik","cevre","ulasim","yargi","kamu_personel","kamu_idare","uluslararasi","ticaret_sanayi","diger"]},"example":"vergi_maliye"},{"name":"baslangic","in":"query","schema":{"type":"string","format":"date"},"description":"En eski gün"},{"name":"bitis","in":"query","schema":{"type":"string","format":"date"},"description":"En yeni gün"},{"name":"bolum","in":"query","schema":{"type":"string","enum":["yasama","yurutme","yargi","ilan"]}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["sonuclar","kaynak","guncelleme","bayat"],"properties":{"q":{"type":["string","null"]},"etiket":{"type":["string","null"]},"sonuclar":{"type":"array","items":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"integer"},"mukerrer":{"type":"integer","description":"0 asıl sayı, 1 birinci mükerrer…"},"bolum":{"type":"string","description":"Yasama, Yürütme ve İdare, Yargı ya da İlan"},"kategori":{"type":"string","description":"Alt başlık: YÖNETMELİKLER, TEBLİĞLER, ATAMA KARARLARI…"},"baslik":{"type":"string","description":"`kisisel` ise başlık yerine kategorisi"},"url":{"type":"string","description":"resmigazete.gov.tr'deki belge bağlantısı"},"kisisel":{"type":"boolean","description":"Başlıkta kişi adı geçiyordu; ad saklanmadı"},"etiket":{"type":["string","null"],"enum":["egitim","vergi_maliye","finans","enerji","gida_tarim","saglik","cevre","ulasim","yargi","kamu_personel","kamu_idare","uluslararasi","ticaret_sanayi","diger",null],"description":"Otomatik konu etiketi (yanılabilir); sınıflandırılmadıysa null"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"q ya da etiket yok, q 3 karakterden kısa / etiket, tarih ya da bolum geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kesinti":{"get":{"tags":["kesinti"],"summary":"Planlı ve anlık elektrik/su kesintileri","security":[{"anahtar":[]}],"x-kredi":1,"description":"İlin (isteğe bağlı ilçenin) süren ve gelecek kesintileri: dağıtım şirketlerinin ve su idarelerinin duyuruları. Veri günde iki kez çekilir, istek anında kaynağa gidilmez; kaynaklardan birinin son başarılı çekimi tazelik süresinden eskiyse `bayat: true`. Yalnız il, ilçe ve mahalle (sokak yok); açıklamalardan telefon, e-posta ve kişi adı izleri atılır. Elektrik: Samsun, Ordu, Çorum, Amasya, Sinop (YEDAŞ), Kayseri ve Sivas-Gemerek (KCETAŞ), Bursa, Balıkesir, Çanakkale, Yalova (UEDAŞ), İstanbul Avrupa yakası (BEDAŞ), Antalya, Burdur, Isparta (AEDAŞ). Su: İzmir, Ankara, Bursa. YEDAŞ ve BUSKİ yurt dışı IP'ye kapalı olduğu için Türkiye'deki bir makineden gündüz iki saatte bir çekilir; o makine kapalıysa veri eskir, `bayat` ve kaynağın `guncelleme`si bunu gösterir. Liste boşsa kredi düşmez. Kapsam dışı il 422, `kapsam` ve gerekçeli `kapsamDisi` listesi.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"Bursa","description":"İl adı ya da plaka"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Nilüfer"},{"name":"tur","in":"query","schema":{"type":"string","enum":["elektrik","su"]},"description":"Yoksa ikisi"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kesintiler","kaynak","guncelleme","bayat"],"properties":{"il":{"type":"string"},"ilce":{"type":["string","null"]},"tur":{"type":["string","null"]},"kesintiler":{"type":"array","items":{"type":"object","properties":{"tur":{"type":"string","enum":["elektrik","su"]},"ilce":{"type":["string","null"]},"mahalleler":{"type":"array","items":{"type":"string"}},"baslangic":{"type":["string","null"],"description":"ISO 8601 (+03:00)"},"bitis":{"type":["string","null"]},"planli":{"type":"boolean","description":"Bildirimli/planlı (true) ya da arıza (false)"},"neden":{"type":["string","null"]},"aciklama":{"type":["string","null"]},"kaynak":{"type":"string"}}}},"kapsamNotu":{"type":["string","null"],"description":"Kısmi kapsam notu (ör. İstanbul yalnız Avrupa yakası)"},"kaynaklar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"aciklama":{"type":"string"},"tur":{"type":"string"},"url":{"type":"string"},"lisans":{"type":"string"},"anlik":{"type":"boolean"},"guncelleme":{"type":["string","null"]},"bayat":{"type":"boolean"}}}},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"İlgili kaynakların en eski son başarılı çekimi (ISO 8601); biri hiç çekilmediyse null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"il eksik / tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Bu il için kaynak yok","content":{"application/json":{"schema":{"type":"object","properties":{"hata":{"type":"string"},"kapsam":{"type":"object","properties":{"elektrik":{"type":"array","items":{"type":"string"}},"su":{"type":"array","items":{"type":"string"}}}},"kapsamDisi":{"type":"array","items":{"type":"object","properties":{"kaynak":{"type":"string"},"bolge":{"type":"string"},"neden":{"type":"string"}}}}}}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ilan/ara":{"get":{"tags":["ilan"],"summary":"ilan.gov.tr resmî ilanlarında arama","security":[{"anahtar":[]}],"x-kredi":1,"description":"İhale, icra/mahkeme satışı (taşınmaz ve taşınır), kamu personel ve diğer resmî ilanların künyesi: başlık, kurum, il/ilçe, yayın ve satış/ihale tarihi, muhammen bedel, ilanın bağlantısı. Tebligat ve iflas ilanları alınmaz; icra ilanlarının metni ve dosya numarası saklanmaz. Veri günde iki kez çekilir, 180 gün tutulur. Yeniden eskiye; sonuç boşsa kredi düşmez.","parameters":[{"name":"q","in":"query","schema":{"type":"string","minLength":3},"example":"arsa","description":"Başlıkta geçen metin"},{"name":"il","in":"query","schema":{"type":"string"},"example":"Çanakkale","description":"İl adı ya da plaka"},{"name":"ilce","in":"query","schema":{"type":"string"}},{"name":"kategori","in":"query","schema":{"type":"string","enum":["ihale","emlak","vasita","personel","endustriyel","elektronik","muhtelif","hayvan"]},"description":"`emlak` icra/mahkeme taşınmaz satışları; `icra`, `tasinmaz` da kabul"},{"name":"baslangic","in":"query","schema":{"type":"string","format":"date"},"description":"En eski yayın günü"},{"name":"bitis","in":"query","schema":{"type":"string","format":"date"},"description":"En yeni yayın günü"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["sonuclar","kaynak","guncelleme","bayat"],"properties":{"q":{"type":["string","null"]},"il":{"type":["string","null"]},"kategori":{"type":["string","null"]},"sayfa":{"type":"integer"},"sonuclar":{"type":"array","items":{"type":"object","properties":{"ilanNo":{"type":"string"},"kategori":{"type":"string"},"ilanTuru":{"type":["string","null"]},"baslik":{"type":"string"},"kurum":{"type":["string","null"]},"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"yayinTarihi":{"type":"string","format":"date"},"islemTarihi":{"type":["string","null"],"description":"Birinci satış günü ya da ihale tarihi"},"muhammenBedel":{"type":["number","null"]},"ozellikler":{"type":"object","additionalProperties":{"type":"string"}},"url":{"type":"string"},"kisisel":{"type":"boolean","description":"Başlıkta kişi adı izi vardı; başlık kategori adına indirgendi"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"q en az 3 karakter / il, kategori, tarih, limit ya da sayfa geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/ligler":{"get":{"tags":["futbol"],"summary":"Futbol ligleri ve tabloda bulunan sezonlar","security":[{"anahtar":[]}],"x-kredi":0,"description":"Kapsanan ligler: TFF (Süper Lig, 1. Lig, 2. Lig, 3. Lig, BAL, Kadın Süper Lig, Kadın 1./2./3. Lig, U19 PAF) ve Understat (Premier League, La Liga, Bundesliga, Serie A, Ligue 1, RFPL; xG). `oyuncuAdi: false` liglerde (U19, BAL, kadın alt ligleri) yalnız takım düzeyi veri tutulur. `kural`: Monte Carlo için varsayılan statü.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"ligler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"kaynak":{"type":"string","enum":["tff","understat"]},"ulke":{"type":"string"},"kademe":{"type":"string","enum":["profesyonel","amator","genc","kadin"]},"oyuncuAdi":{"type":"boolean"},"xg":{"type":"boolean"},"golKralligi":{"type":"boolean"},"kural":{"type":"object","properties":{"yukselme":{"type":"integer"},"dusme":{"type":"integer"},"playoff":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2}}},"sezonlar":{"type":"array","items":{"type":"string"}},"kaynakAdi":{"type":"string"},"lisans":{"type":"string"}}}},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/takimlar":{"get":{"tags":["futbol"],"summary":"Ligin takımları ve kimlikleri","security":[{"anahtar":[]}],"x-kredi":0,"description":"Form, H2H ve `takim` süzgeci için takım kimlikleri (`tff-3604`, `us-83`). `ara` Türkçe karakter duyarsız.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"ara","in":"query","schema":{"type":"string"},"example":"galatasaray"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"sezon":{"type":"string"},"takimlar":{"type":"array","items":{"type":"object","properties":{"takim_id":{"type":"string"},"takim":{"type":"string"},"grup":{"type":"string"}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"lig ya da sezon geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/puan-durumu":{"get":{"tags":["futbol"],"summary":"Puan durumu","security":[{"anahtar":[]}],"x-kredi":1,"description":"TFF liglerinde kaynağın puan cetveli (puan silme cezaları dahil); Understat liglerinde sonuçlardan hesaplanır (puan > averaj > atılan gol). Gruplu liglerde (2. Lig, 3. Lig, BAL, kadın alt ligleri) grup grup. Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"Kırmızı","description":"Gruplu ligde grup adı (\"Kırmızı\", \"Beyaz\", \"1\"…)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"gruplar":{"type":"array","items":{"type":"object","properties":{"grup":{"type":"string"},"takimlar":{"type":"array","items":{"type":"object","properties":{"sira":{"type":"integer"},"takim_id":{"type":"string"},"takim":{"type":"string"},"o":{"type":"integer"},"g":{"type":"integer"},"b":{"type":"integer"},"m":{"type":"integer"},"a":{"type":"integer"},"y":{"type":"integer"},"av":{"type":"integer"},"p":{"type":"integer"}}}}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"lig ya da sezon geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/fikstur":{"get":{"tags":["futbol"],"summary":"Oynanmamış maçlar","security":[{"anahtar":[]}],"x-kredi":1,"description":"Sezonun oynanmamış maçları, en yakından. TFF sezon listesi tarih vermiyor: tarih ve saat yalnız seçili hafta ile detayı çekilmiş maçlarda dolu, ötekinde `hafta` var. Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"Kırmızı","description":"Gruplu ligde grup adı (\"Kırmızı\", \"Beyaz\", \"1\"…)"},{"name":"hafta","in":"query","schema":{"type":"integer","minimum":1,"maximum":60}},{"name":"takim","in":"query","schema":{"type":"string"},"example":"tff-3604","description":"Takım kimliği (bkz. /v1/futbol/takimlar)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":400,"default":50}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"maclar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"tff-317790"},"grup":{"type":["string","null"]},"hafta":{"type":["integer","null"]},"tarih":{"type":["string","null"],"format":"date","description":"Türkiye günü"},"saat":{"type":["string","null"],"description":"Türkiye saati"},"ev":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"dep":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"skor":{"type":["object","null"],"properties":{"ev":{"type":"integer"},"dep":{"type":"integer"},"not":{"type":["string","null"]}}},"xg":{"type":"object","properties":{"ev":{"type":["number","null"]},"dep":{"type":["number","null"]}},"description":"Yalnız Understat liglerinde"},"stad":{"type":["string","null"]},"lig":{"type":"string"},"sezon":{"type":"string"}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/sonuclar":{"get":{"tags":["futbol"],"summary":"Oynanmış maçlar ve skorlar","security":[{"anahtar":[]}],"x-kredi":1,"description":"Sezonun sonuçları, en yeniden. Understat liglerinde maç xG değeri de gelir. Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"Kırmızı","description":"Gruplu ligde grup adı (\"Kırmızı\", \"Beyaz\", \"1\"…)"},{"name":"hafta","in":"query","schema":{"type":"integer","minimum":1,"maximum":60}},{"name":"takim","in":"query","schema":{"type":"string"},"example":"tff-3604","description":"Takım kimliği (bkz. /v1/futbol/takimlar)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":400,"default":50}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"maclar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"tff-317790"},"grup":{"type":["string","null"]},"hafta":{"type":["integer","null"]},"tarih":{"type":["string","null"],"format":"date","description":"Türkiye günü"},"saat":{"type":["string","null"],"description":"Türkiye saati"},"ev":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"dep":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"skor":{"type":["object","null"],"properties":{"ev":{"type":"integer"},"dep":{"type":"integer"},"not":{"type":["string","null"]}}},"xg":{"type":"object","properties":{"ev":{"type":["number","null"]},"dep":{"type":["number","null"]}},"description":"Yalnız Understat liglerinde"},"stad":{"type":["string","null"]},"lig":{"type":"string"},"sezon":{"type":"string"}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/gol-kralligi":{"get":{"tags":["futbol"],"summary":"Gol krallığı","security":[{"anahtar":[]}],"x-kredi":1,"description":"Yalnız oyuncu adı tutulan liglerde (profesyonel erkek ligleri, Kadın Süper Lig, Understat ligleri); U19, BAL ve kadın alt liglerinde 422. Understat liglerinde oyuncu toplamlarından (xG ile). Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":25}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"oyuncular":{"type":"array","items":{"type":"object","properties":{"sira":{"type":"integer"},"oyuncu":{"type":"string"},"takim":{"type":"string"},"gol":{"type":"integer"},"xg":{"type":["number","null"]}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"lig ya da sezon geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Bu ligde oyuncu adı tutulmuyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/mac/{id}":{"get":{"tags":["futbol"],"summary":"Maç detayı","security":[{"anahtar":[]}],"x-kredi":1,"description":"Skor, goller (dakika, tür), kartlar, oyuncu değişiklikleri; profesyonel liglerde ilk 11 ve yedekler, Understat liglerinde şut haritası (x, y, xG) ve oyuncu xG/xA. U19, BAL ve kadın alt liglerinde olaylar yalnız taraf ve dakikayla, ad yok. Hakem ve gözlemci hiç yok. Bulunamazsa 404, kredi düşmez.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^(tff|us)-\\d{1,10}$"},"example":"tff-317790"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"mac":{"type":"object","properties":{"id":{"type":"string","example":"tff-317790"},"grup":{"type":["string","null"]},"hafta":{"type":["integer","null"]},"tarih":{"type":["string","null"],"format":"date","description":"Türkiye günü"},"saat":{"type":["string","null"],"description":"Türkiye saati"},"ev":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"dep":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"skor":{"type":["object","null"],"properties":{"ev":{"type":"integer"},"dep":{"type":"integer"},"not":{"type":["string","null"]}}},"xg":{"type":"object","properties":{"ev":{"type":["number","null"]},"dep":{"type":["number","null"]}},"description":"Yalnız Understat liglerinde"},"stad":{"type":["string","null"]},"lig":{"type":"string"},"sezon":{"type":"string"}}},"detay":{"type":["object","null"],"description":"goller, kartlar, degisiklikler, kadro?, sutlar?, xgKadro?"},"detayYok":{"type":"string"},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"Kimlik biçimi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Maç bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/takim/{id}/form":{"get":{"tags":["futbol"],"summary":"Takımın son maçları (form)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Son `n` oynanmış maç (varsayılan 5); `dizi` en yeni sağda (G galibiyet, B beraberlik, M mağlubiyet). Boşsa kredi düşmez.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^(tff|us)-\\d{1,10}$"},"example":"tff-3604"},{"name":"n","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":5}},{"name":"lig","in":"query","required":false,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"takim_id":{"type":"string"},"takim":{"type":["string","null"]},"dizi":{"type":"string","example":"GGBMG"},"mac":{"type":"integer"},"puan":{"type":"integer"},"atilan":{"type":"integer"},"yenilen":{"type":"integer"},"lig":{"type":["string","null"]},"maclar":{"type":"array","items":{"type":"object"}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/h2h":{"get":{"tags":["futbol"],"summary":"İki takımın birbiriyle maçları","security":[{"anahtar":[]}],"x-kredi":1,"description":"Tablodaki bütün sezonlar (lig maçları; geri doldurma en az son 5 sezon), en yeniden. Boşsa kredi düşmez.","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string"},"example":"tff-3604"},{"name":"b","in":"query","required":true,"schema":{"type":"string"},"example":"tff-3589"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":["string","null"]},"galibiyet":{"type":"integer"},"gol":{"type":"integer"}}},"b":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":["string","null"]},"galibiyet":{"type":"integer"},"gol":{"type":"integer"}}},"mac":{"type":"integer"},"beraberlik":{"type":"integer"},"maclar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"tff-317790"},"grup":{"type":["string","null"]},"hafta":{"type":["integer","null"]},"tarih":{"type":["string","null"],"format":"date","description":"Türkiye günü"},"saat":{"type":["string","null"],"description":"Türkiye saati"},"ev":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"dep":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":"string"}}},"skor":{"type":["object","null"],"properties":{"ev":{"type":"integer"},"dep":{"type":"integer"},"not":{"type":["string","null"]}}},"xg":{"type":"object","properties":{"ev":{"type":["number","null"]},"dep":{"type":["number","null"]}},"description":"Yalnız Understat liglerinde"},"stad":{"type":["string","null"]},"lig":{"type":"string"},"sezon":{"type":"string"}}}},"kapsam":{"type":"string"},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"a/b geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/olasilik":{"get":{"tags":["futbol"],"summary":"Şampiyonluk, yükselme, play-off ve düşme olasılıkları","security":[{"anahtar":[]}],"x-kredi":1,"description":"Poisson Monte Carlo (yöntem yanıtta, `yontemAciklama`): takım güçleri bu sezonun gollerinden, kalan maçlar simüle edilir, başlangıç kaynağın puan tablosu. Statü varsayılanı lig kataloğundan; `yukselme`, `playoff`, `dusme` ile ezilir (0 kapatır). Tohumlu: aynı girdi aynı sonuç. Tahmindir, bahis tavsiyesi değildir. Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"Kırmızı","description":"Gruplu ligde grup adı (\"Kırmızı\", \"Beyaz\", \"1\"…)"},{"name":"simulasyon","in":"query","schema":{"type":"integer","minimum":100,"maximum":20000,"default":5000}},{"name":"tohum","in":"query","schema":{"type":"integer","minimum":0}},{"name":"yukselme","in":"query","schema":{"type":"integer","minimum":0,"maximum":20},"description":"Doğrudan çıkan takım sayısı"},{"name":"playoff","in":"query","schema":{"type":"string","pattern":"^(0|\\d{1,2}-\\d{1,2})$"},"example":"3-6","description":"Play-off sıraları"},{"name":"dusme","in":"query","schema":{"type":"integer","minimum":0,"maximum":20},"description":"Doğrudan düşen takım sayısı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"yontem":{"type":"string","enum":["poisson-monte-carlo"]},"yontemAciklama":{"type":"string"},"simulasyon":{"type":"integer"},"tohum":{"type":"integer"},"kural":{"type":"object","properties":{"yukselme":{"type":"integer"},"dusme":{"type":"integer"},"playoff":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":2}}},"gruplar":{"type":"array","items":{"type":"object","properties":{"grup":{"type":"string"},"kalanMac":{"type":"integer"},"uyari":{"type":"string"},"takimlar":{"type":"array","items":{"type":"object","properties":{"takim_id":{"type":"string"},"takim":{"type":"string"},"sira":{"type":"integer"},"puan":{"type":"integer"},"beklenenPuan":{"type":"number"},"beklenenSira":{"type":"number"},"sampiyonluk":{"type":"number"},"yukselme":{"type":["number","null"]},"playoff":{"type":["number","null"]},"dusme":{"type":["number","null"]},"siraDagilimi":{"type":"array","items":{"type":"number"}}}}},"guc":{"type":"object"}}}},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/futbol/xg":{"get":{"tags":["futbol"],"summary":"xG: takım, oyuncu ya da beklenen puan tablosu","security":[{"anahtar":[]}],"x-kredi":1,"description":"Yalnız Understat ligleri (xG değerleri Understat'ın modeli). `kapsam=takim`: sezon toplamları (xG, xGA, npxG, xPts, PPDA); `oyuncu`: oyuncu xG, xA, şut, kilit pas; `xpts`: maç xG'lerinden Poisson ile beklenen puan tablosu ve gerçek puanla farkı. TFF liglerinde 422. Boşsa kredi düşmez.","parameters":[{"name":"lig","in":"query","required":true,"example":"super-lig","schema":{"type":"string","description":"super-lig, 1-lig, 2-lig, 3-lig, bal, kadin-super-lig, kadin-1-lig, kadin-2-lig, kadin-3-lig, u19, epl, la-liga, bundesliga, serie-a, ligue-1, rfpl"}},{"name":"sezon","in":"query","schema":{"type":"string"},"example":"2026-2027","description":"\"2026-2027\" ya da \"2026\"; yoksa tablodaki en yeni sezon"},{"name":"kapsam","in":"query","schema":{"type":"string","enum":["takim","oyuncu","xpts"],"default":"takim"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":600}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"kapsam":{"type":"string"},"takimlar":{"type":"array","items":{"type":"object"}},"oyuncular":{"type":"array","items":{"type":"object"}},"yontem":{"type":"string"},"yontemAciklama":{"type":"string"},"kaynak":{"type":["string","null"]},"kaynakUrl":{"type":["string","null"]},"lisans":{"type":["string","null"],"description":"Kaynağın şartı ve kaldırma politikası"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Bu ligde xG yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi-dairesi":{"get":{"tags":["vergi-dairesi"],"summary":"Vergi daireleri listesi (GİB)","security":[{"anahtar":[]}],"x-kredi":0,"description":"GİB \"Defterdarlık ve Vergi Daireleri Listesi\": vergi dairesi müdürlükleri (muhasebe birim koduyla), şubeleri ve Eskişehir Defterdarlığı. Süzgeçsiz tüm Türkiye (~1.100 kayıt). `guncelleme` kaynak listenin tarihi. Ücretsiz.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"İstanbul"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Silivri","description":"Kaynaktaki ilçe. İl merkezindeki (büyükşehirde merkez ilçelerdeki) daireler \"Merkez\"; hangi merkez ilçede oldukları listede yok"},{"name":"ara","in":"query","schema":{"type":"string"},"example":"kadikoy","description":"Ad ya da ilçede sözcük başından, Türkçe karaktersiz"},{"name":"tur","in":"query","schema":{"type":"string","enum":["mudurluk","sube","defterdarlik"]}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["vergiDaireleri","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"toplam":{"type":"integer"},"vergiDaireleri":{"type":"array","items":{"$ref":"#/components/schemas/VergiDairesi"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"Kaynak listenin tarihi (YYYY-AA-GG)"},"bayat":{"type":"boolean","description":"Liste 1 yıldan eski"},"not":{"type":"string"}}}}}},"400":{"description":"tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi-dairesi/{kod}":{"get":{"tags":["vergi-dairesi"],"summary":"Muhasebe birim kodundan vergi dairesi","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{5}$"},"example":"34246"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"vergiDairesi":{"$ref":"#/components/schemas/VergiDairesi"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"kod 5 haneli değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"kod listede yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/politika-faizi":{"get":{"tags":["ekonomi"],"summary":"TCMB politika faizi, gecelik oranlar, reeskont/avans (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Bir hafta vadeli repo (2010'dan politika faizi), gecelik borç alma/verme (2002'den), reeskont ve avans (1990'dan), son PPK kararı ve sonraki toplantı. Koda gömülü TCMB tablosu, `guncelleme` gününe kadar doğrulandı; `tarih` verilmezse son hâli. TCMB verisi ücretsiz ve kaynak gösterilerek verilir (`not`).","parameters":[{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"example":"2025-06-30"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["tarih","reeskont","avans","kaynak","guncelleme","not"],"properties":{"tarih":{"type":"string"},"politikaFaizi":{"type":["object","null"],"properties":{"ad":{"type":"string"},"oran":{"type":"number"},"yururluk":{"type":"string"}}},"politikaFaiziNotu":{"type":"string"},"gecelik":{"type":["object","null"],"properties":{"borcAlma":{"type":"number"},"borcVerme":{"type":"number"},"yururluk":{"type":"string"}}},"reeskont":{"type":"object","properties":{"oran":{"type":"number"},"yururluk":{"type":"string"}}},"avans":{"type":"object","properties":{"oran":{"type":"number"},"yururluk":{"type":"string"}}},"sonKarar":{"oneOf":[{"type":"object","properties":{"tarih":{"type":"string"},"karar":{"enum":["indirim","artirim","sabit"]},"repo":{"type":"number"},"gecelikBorcVerme":{"type":"number"},"gecelikBorcAlma":{"type":"number"},"duyuru":{"type":"string"},"url":{"type":"string"}}},{"type":"null"}]},"sonrakiToplanti":{"type":["string","null"]},"uyari":{"type":"string"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"not":{"type":"string"}}}}}},"400":{"description":"tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"tarih tablo dışında (doğrulama gününden sonra ya da 1990 öncesi)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/ppk-kararlari":{"get":{"tags":["ekonomi"],"summary":"TCMB PPK kararları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"2026 için bütün toplantılar (sabit bırakılanlar dahil, basın duyurusu bağlantısıyla) ve kalan toplantı günleri; 2010–2025 için yalnız politika faizi değişiklikleri (yürürlük günü, repo ve gecelik oranlar). TCMB verisi (`not`).","parameters":[{"name":"yil","in":"query","schema":{"type":"integer","minimum":2010,"maximum":2026},"description":"Varsayılan tablonun son yılı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["yil","degisiklikler","kaynak","guncelleme","not"],"properties":{"yil":{"type":"integer"},"toplantilar":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"tarih":{"type":"string"},"karar":{"enum":["indirim","artirim","sabit"]},"repo":{"type":"number"},"gecelikBorcVerme":{"type":"number"},"gecelikBorcAlma":{"type":"number"},"duyuru":{"type":"string"},"url":{"type":"string"}}}},{"type":"null"}]},"toplantiNotu":{"type":"string"},"degisiklikler":{"type":"array","items":{"type":"object","properties":{"yururluk":{"type":"string"},"repo":{"type":"number"},"gecelikBorcVerme":{"type":["number","null"]},"gecelikBorcAlma":{"type":["number","null"]}}}},"sonrakiToplantilar":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"not":{"type":"string"}}}}}},"400":{"description":"yil geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/gostergeler":{"get":{"tags":["ekonomi"],"summary":"TÜİK ana göstergeler: son açıklanan değerler (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK haber bültenlerinin başlık cümlelerinden okunan son değerler: TÜFE, Yİ-ÜFE, Tarım-ÜFE (yıllık %), işsizlik oranı (mevsim etkisinden arındırılmış), GSYH büyümesi (çeyrek), sanayi üretimi, tüketici ve ekonomik güven endeksi, ihracat/ithalat (milyon USD), konut satışları, trafiğe kaydı yapılan taşıt. Her gösterge dönemi, öteki oranları (`degisimler`), bülten başlık cümlesi (`ozet`) ve bülten bağlantısıyla. Toplayıcı günde iki kez yeni bülten arar; tablo boşsa liste boş ve `bayat: true`.","parameters":[{"name":"kod","in":"query","schema":{"type":"string"},"description":"Virgülle ayrılmış gösterge kodları; verilmezse hepsi. Geçerli: tufe, yi-ufe, tarim-ufe, issizlik, gsyh, sanayi-uretim, tuketici-guven, ekonomik-guven, ihracat, ithalat, konut-satis, motorlu-tasit","example":"tufe,issizlik"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["gostergeler","kaynak","guncelleme","bayat"],"properties":{"gostergeler":{"type":"array","items":{"type":"object","required":["kod","ad","donem","deger","birim","bulten"],"properties":{"kod":{"type":"string","enum":["tufe","yi-ufe","tarim-ufe","issizlik","gsyh","sanayi-uretim","tuketici-guven","ekonomik-guven","ihracat","ithalat","konut-satis","motorlu-tasit"]},"ad":{"type":"string"},"donem":{"type":"string","description":"\"2026-08\" ya da çeyrek için \"2026-Q2\""},"donemAdi":{"type":"string","description":"Bültendeki yazılışı: \"Ağustos 2026\""},"deger":{"type":"number"},"birim":{"type":"string","description":"\"%\", \"endeks\", \"adet\", \"milyon USD\""},"degisimler":{"type":"object","additionalProperties":{"type":"number"},"description":"Bültende geçen öteki değerler: aylik, yilbasindan, oniKiAylikOrtalama, istihdamOrani, ilkEl…"},"ozet":{"type":["string","null"],"description":"Bültenin başlık cümlesi"},"bulten":{"type":"object","properties":{"id":{"type":"integer"},"url":{"type":"string"},"yayinTarihi":{"type":["string","null"],"description":"ISO 8601"}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"bilinmeyen gösterge kodu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/bultenler":{"get":{"tags":["ekonomi"],"summary":"TÜİK bülten akışı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK'in yayımladığı haber bültenleri ve veri tarayıcısı tabloları, en yeni önce: başlık, dönem, yayım anı, konu, bağlantı. Portalın son 50 yayımından birikiyor (üç yıl tutulur). Bülten içeriği verilmez, yalnız künyesi.","parameters":[{"name":"ara","in":"query","schema":{"type":"string","maxLength":100},"description":"Başlıkta parça eşleşme (Türkçe karaktersiz de olur)","example":"konut"},{"name":"konu","in":"query","schema":{"type":"string","maxLength":100},"description":"Konu adında parça eşleşme","example":"enflasyon"},{"name":"tur","in":"query","schema":{"type":"string","enum":["bulten","tablo"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["bultenler","kaynak","guncelleme","bayat"],"properties":{"ara":{"type":["string","null"]},"konu":{"type":["string","null"]},"tur":{"type":["string","null"],"enum":["bulten","tablo",null]},"bultenler":{"type":"array","items":{"type":"object","properties":{"baslik":{"type":"string"},"donem":{"type":["string","null"]},"yayinTarihi":{"type":["string","null"]},"tur":{"type":"string","enum":["bulten","tablo"]},"konu":{"type":["string","null"]},"url":{"type":"string"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"ara/konu çok uzun, tur ya da limit geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/seri":{"get":{"tags":["ekonomi"],"summary":"TÜİK aylık seri: konut satışı, motorlu taşıt, tarım ÜFE (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK Veri Tarayıcısı'ndan aylık seri, eskiden yeniye. `konut-satis`: Türkiye ya da il (`il`), kırılım toplam, ilk-el, ikinci-el, ipotekli, diger, yabanci. `motorlu-tasit`: Türkiye, araç türü kırılımı; ölçü kayit ya da silinen. `tarim-ufe`: Türkiye, genel ve ana gruplar; ölçü endeks, aylik, yilbasindan, yillik, ortalama. Yanıttaki `kirilimlar` ve `olculer` seri için geçerli kodları verir.","parameters":[{"name":"ad","in":"query","required":true,"schema":{"type":"string","enum":["konut-satis","motorlu-tasit","tarim-ufe"]}},{"name":"il","in":"query","schema":{"type":"string"},"description":"Yalnız konut-satis: il adı ya da plaka; verilmezse Türkiye","example":"Antalya"},{"name":"kirilim","in":"query","schema":{"type":"string"},"description":"Varsayılan toplam (tarim-ufe: genel)"},{"name":"olcu","in":"query","schema":{"type":"string"},"description":"Varsayılan adet / kayit / yillik"},{"name":"son","in":"query","schema":{"type":"integer","minimum":1,"maximum":240,"default":24},"description":"Aralık verilmezse son kaç ay"},{"name":"baslangic","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"}},{"name":"bitis","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["ad","bolgeKod","kirilim","olcu","noktalar","kaynak","guncelleme","bayat"],"properties":{"ad":{"type":"string","enum":["konut-satis","motorlu-tasit","tarim-ufe"]},"seriAdi":{"type":"string"},"bolge":{"type":["string","null"]},"bolgeKod":{"type":"string","description":"\"TR\" ya da İBBS düzey-3 kodu (\"TR611\")"},"kirilim":{"type":"string"},"kirilimAdi":{"type":"string"},"olcu":{"type":"string"},"olcuAdi":{"type":"string"},"noktalar":{"type":"array","items":{"type":"object","properties":{"donem":{"type":"string"},"deger":{"type":"number"}}}},"son":{"oneOf":[{"type":"object","properties":{"donem":{"type":"string"},"deger":{"type":"number"}}},{"type":"null"}]},"kirilimlar":{"type":"object","additionalProperties":{"type":"string"}},"olculer":{"type":"object","additionalProperties":{"type":"string"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"ad, kirilim, olcu, il, son ya da tarih aralığı geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/tufe":{"get":{"tags":["ekonomi"],"summary":"TÜFE: aylık, yıllık, 12 aylık ortalama (TÜİK, ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK tüketici fiyat endeksi ve dört değişim oranı, 2005'ten bu yana aylık. `ay` verilmezse son açıklanan ay. `son=N` ile aya kadar son N ay `seri`de. Yeni ay her ayın 3'ü 10:00'da (TR) TÜİK'ten alınır; TÜİK'e ulaşılamazsa eldeki seri `bayat: true` ile döner.","parameters":[{"name":"ay","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"example":"2026-08"},{"name":"son","in":"query","schema":{"type":"integer","minimum":1,"maximum":120},"description":"Seri uzunluğu (ay sayısı)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["ay","yillik","oniKiAylikOrtalama","kaynak","guncelleme","bayat"],"properties":{"ay":{"type":"string","description":"YYYY-AA"},"endeks":{"type":"number"},"aylik":{"type":"number","description":"Önceki aya göre, %"},"aralikaGore":{"type":"number","description":"Önceki yılın Aralık ayına göre, %"},"yillik":{"type":"number","description":"Önceki yılın aynı ayına göre, %"},"oniKiAylikOrtalama":{"type":"number","description":"12 aylık ortalamalara göre, %"},"baz":{"type":"string","description":"\"2025=100\""},"seri":{"type":"array","items":{"type":"object","properties":{"ay":{"type":"string","description":"YYYY-AA"},"endeks":{"type":"number"},"aylik":{"type":"number","description":"Önceki aya göre, %"},"aralikaGore":{"type":"number","description":"Önceki yılın Aralık ayına göre, %"},"yillik":{"type":"number","description":"Önceki yılın aynı ayına göre, %"},"oniKiAylikOrtalama":{"type":"number","description":"12 aylık ortalamalara göre, %"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"TÜİK bülteninin yayım anı"},"bayat":{"type":"boolean","description":"Açıklanmış olması gereken son ay eksik (TÜİK'e ulaşılamadı)"},"not":{"type":"string"}}}}}},"400":{"description":"ay ya da son geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"ay henüz açıklanmadı (`sonAy`) ya da seriden eski","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ekonomi/kira-artis":{"get":{"tags":["ekonomi"],"summary":"Yasal kira artış üst sınırı (TBK m.344, ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜFE on iki aylık ortalama değişimi; konutta 11.06.2022–01.07.2024 arası yenilemelerde %25 tavanı. `yenileme` (kira döneminin başladığı gün) verilirse önceki ayın oranı; `ay` verilirse o ayın oranı (yenileme izleyen ay); ikisi de yoksa son açıklanan ay. `kira` verilirse yeni azami kira. Hukuki tavsiye değildir.","parameters":[{"name":"yenileme","in":"query","schema":{"type":"string","format":"date"},"example":"2026-09-15"},{"name":"ay","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"description":"TÜFE ayı"},{"name":"tur","in":"query","schema":{"type":"string","enum":["konut","isyeri"]},"description":"Varsayılan konut"},{"name":"kira","in":"query","schema":{"type":"number","exclusiveMinimum":0},"example":20000,"description":"Mevcut aylık kira, TL"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["tufeAyi","azamiOran","dayanak","kaynak","guncelleme","uyari"],"properties":{"tufeAyi":{"type":"string"},"oniKiAylikOrtalama":{"type":"number"},"tur":{"type":"string"},"yenileme":{"type":"string"},"azamiOran":{"type":"number","description":"Yüzde"},"konutTavani":{"type":["object","null"],"properties":{"oran":{"type":"number"},"uygulanir":{"type":["boolean","null"],"description":"null: yenileme gününe bağlı"}}},"kira":{"type":["number","null"]},"yeniAzamiKira":{"type":["number","null"]},"dayanak":{"type":"object","properties":{"ustSinir":{"type":"string"},"konutTavani":{"type":"string"}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string"},"bayat":{"type":"boolean"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"TÜFE ayı henüz açıklanmadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/enerji/tarife":{"get":{"tags":["enerji"],"summary":"Elektrik ve doğal gaz tarifesi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Vergiler hariç resmî tarifeler. `elektrik`: EPDK tarife tablosu (kr/kWh), sınıf × abone grubu satırları, perakendeTekZamanli = enerji + dağıtım. `dogalgaz`: BOTAŞ toptan satış fiyatı (TL/Sm³; dağıtım şirketinin alış fiyatı, ev faturasına dağıtım bedeli + ÖTV + KDV eklenir); `il` verilirse konut kademe limiti. Tarife değişince gömülü veri güncellenir; `gecerlilik.baslangic` yürürlük günü.","parameters":[{"name":"tur","in":"query","schema":{"type":"string","enum":["elektrik","dogalgaz"]},"description":"Verilmezse ikisi"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"mesken","description":"Elektrik abone grubu (içerir)"},{"name":"sinif","in":"query","schema":{"type":"string"},"example":"AG","description":"Elektrik tarife sınıfı (başlar)"},{"name":"il","in":"query","schema":{"type":"string"},"example":"Ankara","description":"Doğal gaz konut kademe limiti"},{"name":"ay","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"description":"Kademe limitinin ayı; varsayılan bu ay"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["lisans","uyari"],"properties":{"elektrik":{"type":"object","properties":{"gecerlilik":{"type":"object","properties":{"baslangic":{"type":"string","format":"date"}}},"baslik":{"type":"string"},"birim":{"type":"object"},"satirlar":{"type":"array","items":{"type":"object","properties":{"sinif":{"type":"string"},"grup":{"type":"string"},"kademe":{"type":["string","null"]},"enerji":{"type":"object","properties":{"tekZamanli":{"type":["number","null"]},"gunduz":{"type":["number","null"]},"puant":{"type":["number","null"]},"gece":{"type":["number","null"]}}},"dagitim":{"type":["number","null"]},"guc":{"type":["number","null"]},"reaktif":{"type":["number","null"]},"perakendeTekZamanli":{"type":["number","null"]}}}},"notlar":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"not":{"type":"string"}}},"dogalgaz":{"type":"object","properties":{"gecerlilik":{"type":"object","properties":{"baslangic":{"type":"string","format":"date"}}},"baslik":{"type":"string"},"birim":{"type":"string"},"fiyatlar":{"type":"array","items":{"type":"object","properties":{"alici":{"type":"string"},"grup":{"type":"string"},"tlSm3":{"type":"number"},"tlKwh":{"type":["number","null"]}}}},"kademe":{"type":"object","description":"il verilirse: aylar (12 ay, aylikSm3) ve secilenAy (aylikSm3, gunlukSm3)"},"notlar":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"not":{"type":"string"}}},"lisans":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz ya da il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"eşleşen elektrik tarifesi yok (yanıtta gruplar ve siniflar)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/universiteler":{"get":{"tags":["egitim"],"summary":"Üniversiteler (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"YÖK listesi (devlet, vakıf, vakıf MYO, KKTC) + YÖK Atlas'taki yurt dışı kurumlar. `id` YÖK birim numarası; programlar için `/v1/egitim/universiteler/{id}`. Veri gömülü, `guncelleme` alındığı gün.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"teknik","description":"Ad içinde geçen"},{"name":"il","in":"query","schema":{"type":"string"},"example":"Ankara"},{"name":"tur","in":"query","schema":{"type":"string","enum":["devlet","vakif","vakif_myo","kktc","yurtdisi"]}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"universiteler":{"type":"array","items":{"type":"object","properties":{"id":{"type":["integer","null"],"description":"YÖK birim numarası"},"ad":{"type":"string"},"il":{"type":["string","null"]},"tur":{"type":"string","enum":["devlet","vakif","vakif_myo","kktc","yurtdisi"]},"kurulus":{"type":["string","null"],"format":"date"},"web":{"type":["string","null"]},"adres":{"type":["string","null"]},"programSayisi":{"type":"object","properties":{"lisans":{"type":"integer"},"onlisans":{"type":"integer"}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"array","items":{"type":"string"}},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"kilavuzYili":{"type":["integer","null"]}}}}}},"400":{"description":"tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/universiteler/{id}":{"get":{"tags":["egitim"],"summary":"Üniversite ve programları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"example":173499,"description":"YÖK birim numarası"},{"name":"duzey","in":"query","schema":{"type":"string","enum":["lisans","onlisans"]}},{"name":"puanTuru","in":"query","schema":{"type":"string","enum":["SAY","EA","SÖZ","DİL","TYT"]}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"universite":{"type":"object","properties":{"id":{"type":["integer","null"],"description":"YÖK birim numarası"},"ad":{"type":"string"},"il":{"type":["string","null"]},"tur":{"type":"string","enum":["devlet","vakif","vakif_myo","kktc","yurtdisi"]},"kurulus":{"type":["string","null"],"format":"date"},"web":{"type":["string","null"]},"adres":{"type":["string","null"]},"programSayisi":{"type":"object","properties":{"lisans":{"type":"integer"},"onlisans":{"type":"integer"}}}}},"programSayisi":{"type":"integer"},"programlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"integer","description":"ÖSYM kılavuz kodu"},"universiteId":{"type":"integer"},"fakulte":{"type":["string","null"]},"ad":{"type":"string"},"grup":{"type":["string","null"]},"duzey":{"type":"string","enum":["lisans","onlisans"]},"ogretimTuru":{"type":["string","null"]},"sureYil":{"type":["number","null"]},"puanTuru":{"type":["string","null"]},"dil":{"type":["string","null"]},"burs":{"type":["string","null"]},"kontenjan":{"type":["number","null"]},"tabanPuan":{"type":["number","null"]},"tabanBasariSirasi":{"type":["number","null"]},"ucretTl":{"type":["number","null"]},"il":{"type":["string","null"]},"ilce":{"type":["string","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"array","items":{"type":"string"}},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"kilavuzYili":{"type":["integer","null"]},"uyari":{"type":"string"}}}}}},"400":{"description":"id ya da duzey geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"bu numarada üniversite yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/okullar":{"get":{"tags":["egitim"],"summary":"MEB okul ve kurumları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"MEB \"Okullar ve Diğer Kurumlar\" listesindeki resmî okul ve kurumlar (~55 bin): ad, MEB kurum kodu, tür, il, ilçe, meb.k12.tr sitesi. `il` ya da `ara` gerekli. Adres kaynakta yok; özel okullar yok. `tur` addan çıkarıldı.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"Ankara","description":"İl adı ya da plaka"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Çankaya"},{"name":"tur","in":"query","schema":{"type":"string","enum":["anaokulu","ilkokul","ortaokul","imam_hatip_ortaokulu","anadolu_lisesi","fen_lisesi","sosyal_bilimler_lisesi","imam_hatip_lisesi","mesleki_teknik_lise","guzel_sanatlar_spor_lisesi","lise","ozel_egitim","bilsem","halk_egitim","mesleki_egitim_merkezi","ram","ogretmenevi","mudurluk","diger"]}},{"name":"ara","in":"query","schema":{"type":"string"},"example":"fen lisesi","description":"Addaki sözcükler (hepsi)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"okullar":{"type":"array","items":{"type":"object","properties":{"kurumKodu":{"type":"integer"},"ad":{"type":"string"},"tur":{"type":"string"},"il":{"type":"string"},"ilce":{"type":"string"},"ilKodu":{"type":"integer"},"web":{"type":["string","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz ya da il/ara yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/yks-puani":{"post":{"tags":["egitim"],"summary":"YKS net, OBP ve yerleştirme puanı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"ÖSYM 2026 kılavuzuna göre: test ve alt alan netleri (doğru − yanlış/4), puan türü koşulları (Tablo 1D), OBP (diploma notu × 5, 50'nin altı 50) ve adayın ÖSYM sonucundaki sınav puanından yerleştirme puanı (+ OBP × 0,12; meslek lisesi ek puanı OBP × 0,06; önceki yıl yerleşenlerde yarısı). Sınav puanı netten hesaplanmaz: standart puan ve 100–500 dönüşümü aday kitlesinin istatistiğine bağlı (`sinavPuaniNotu`).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tyt":{"type":"object","description":"turkce (40), sosyal (20), temelMatematik (40), fen (20): {dogru, yanlis}"},"ayt":{"type":"object","description":"matematik 40, fizik 14, kimya 13, biyoloji 13, edebiyat 24, tarih1 10, cografya1 6, tarih2 11, cografya2 11, felsefe 12, din 6"},"ydt":{"type":"object","description":"yabanciDil (80)"},"diplomaNotu":{"type":"number","minimum":0,"maximum":100},"sinavPuanlari":{"type":"object","description":"ÖSYM sonuç belgesindeki puanlar: TYT, SAY, EA, SOZ, DIL (100–500)"},"oncekiYilYerlesti":{"type":"boolean","description":"2025-YKS ile yerleşen: OBP katsayıları yarıya"},"meslekEkPuani":{"type":"boolean","description":"Meslek lisesi mezunu, Tablo 3A/3B.1/3C/3D programı"}}},"example":{"tyt":{"turkce":{"dogru":32,"yanlis":6},"temelMatematik":{"dogru":28,"yanlis":8}},"ayt":{"matematik":{"dogru":20,"yanlis":8}},"diplomaNotu":85,"sinavPuanlari":{"SAY":400}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["netler","puanTurleri","sinavPuani","kaynak","guncelleme"],"properties":{"netler":{"type":"object"},"testNetleri":{"type":"object"},"puanTurleri":{"type":"object"},"obp":{"type":["object","null"]},"obpKatsayilari":{"type":"object"},"yerlestirme":{"type":["object","null"]},"sinavPuani":{"type":"null"},"sinavPuaniNotu":{"type":"string"},"agirliklar":{"type":"object"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"Girdi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/lgs-puani":{"post":{"tags":["egitim"],"summary":"LGS netleri ve katsayılar (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"MEB 2026 kılavuzuna göre test netleri (doğru − yanlış/3), ağırlık katsayıları (Türkçe, matematik, fen 4; diğerleri 1) ve resmî formül. MSP netten hesaplanmaz: standart puan ve 100–500 dönüşümü bütün öğrencilerin istatistiğine bağlı (`mspNotu`).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["testler"],"properties":{"testler":{"type":"object","description":"turkce 20, matematik 20, fen 20, inkilap 10, din 10, yabanciDil 10: {dogru, yanlis}"},"muaf":{"type":"array","items":{"type":"string","enum":["din","yabanciDil"]}}}},"example":{"testler":{"turkce":{"dogru":18,"yanlis":2},"matematik":{"dogru":15,"yanlis":3}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["netler","msp","kaynak","guncelleme"],"properties":{"netler":{"type":"object"},"toplamNet":{"type":"number"},"verilmeyenTestler":{"type":"array","items":{"type":"string"}},"muaf":{"type":"array","items":{"type":"string"}},"katsayilar":{"type":"object"},"msp":{"type":"null"},"mspNotu":{"type":"string"},"formul":{"type":"object"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"Girdi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/sinav-takvimi":{"get":{"tags":["egitim"],"summary":"ÖSYM sınav takvimi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"ÖSYM yıllık sınav takvimi: başvuru başlangıç/bitiş, geç başvuru, sınav ve sonuç tarihleri; bugüne göre `durum`. Çok oturumlu sınavlar (YKS, KPSS…) `oturumlar` altında toplanır. Takvim yayımlanmamış yıl için boş liste ve `yayimlanmadi` notu döner. Kesin tarih için osym.gov.tr esastır.","parameters":[{"name":"yil","in":"query","schema":{"type":"string","pattern":"^\\d{4}$"},"example":"2026","description":"Varsayılan bu yıl"},{"name":"ara","in":"query","schema":{"type":"string"},"example":"KPSS","description":"Sınav adı ya da kısaltması"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"toplam":{"type":"integer"},"yayimlanmadi":{"type":"string"},"sinavlar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"kod":{"type":"string"},"uzunAd":{"type":"string"},"basvuruBaslangic":{"type":["string","null"]},"basvuruBitis":{"type":["string","null"]},"gecBasvuru":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"}}},"sinavTarihleri":{"type":"array","items":{"type":"string","format":"date"}},"sinavSaati":{"type":"string"},"sonucTarihi":{"type":["string","null"]},"aciklama":{"type":"string"},"durum":{"type":"string","enum":["basvuru_bekleniyor","basvuru_acik","sinav_bekleniyor","sonuc_bekleniyor","tamamlandi"]},"oturumlar":{"type":"array","items":{"type":"object"}},"belirsiz":{"type":"boolean"},"not":{"type":"string"}}}},"bilinenYillar":{"type":"array","items":{"type":"integer"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"yil ya da ara geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/egitim/programlar":{"get":{"tags":["egitim"],"summary":"Program / bölüm ara (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"YÖK Atlas tercih kılavuzundaki lisans ve önlisans programları; son yerleştirmenin taban başarı sırasına göre (sırası olmayanlar sonda). `ara`, `universite` ya da `il`den en az biri gerekli. Taban puan bu yılın değil, son yerleştirmenindir.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"bilgisayar mühendisliği","description":"Program ya da program grubu adındaki sözcükler (hepsi)"},{"name":"universite","in":"query","schema":{"type":"string"},"description":"Üniversite adı ya da YÖK birim numarası"},{"name":"il","in":"query","schema":{"type":"string"}},{"name":"puanTuru","in":"query","schema":{"type":"string","enum":["SAY","EA","SÖZ","DİL","TYT"]}},{"name":"duzey","in":"query","schema":{"type":"string","enum":["lisans","onlisans"]}},{"name":"burs","in":"query","schema":{"type":"string"},"example":"Burslu","description":"\"Burslu\", \"%50\", \"Ücretli\" (içerir)"},{"name":"dil","in":"query","schema":{"type":"string"},"example":"İngilizce"},{"name":"universiteTuru","in":"query","schema":{"type":"string","enum":["devlet","vakif","vakif_myo","kktc","yurtdisi"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"programlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"integer","description":"ÖSYM kılavuz kodu"},"universiteId":{"type":"integer"},"fakulte":{"type":["string","null"]},"ad":{"type":"string"},"grup":{"type":["string","null"]},"duzey":{"type":"string","enum":["lisans","onlisans"]},"ogretimTuru":{"type":["string","null"]},"sureYil":{"type":["number","null"]},"puanTuru":{"type":["string","null"]},"dil":{"type":["string","null"]},"burs":{"type":["string","null"]},"kontenjan":{"type":["number","null"]},"tabanPuan":{"type":["number","null"]},"tabanBasariSirasi":{"type":["number","null"]},"ucretTl":{"type":["number","null"]},"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"universite":{"type":"string"},"universiteTuru":{"type":"string"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"array","items":{"type":"string"}},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"kilavuzYili":{"type":["integer","null"]},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz ya da arama ölçütü yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"üniversite bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ilac/ara":{"get":{"tags":["ilac"],"summary":"İlaç ara: barkod, ad, ATC (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TİTCK SKRS e-reçete listesindeki ilaç ve farmasötik ürünler (haftalık): barkod, ATC kodu ve etkin madde, firma, reçete türü (Normal/Kırmızı/Turuncu/Mor/Yeşil), aktif/pasif. Referans bazlı listedeki gerçek kaynak fiyat (`gkfEuro`, €) ad eşlemesiyle; eşleşmeyen üründe null. Eczane satış fiyatı yok (TİTCK fiyat listesi girişe bağlı). `ara`, `barkod` ya da `atc` gerekli; barkodla aranınca varsayılan durum `hepsi`, yoksa `aktif`.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"parol","description":"Ürün adı ya da etkin maddedeki sözcükler (hepsi)"},{"name":"barkod","in":"query","schema":{"type":"string","pattern":"^\\d{8,14}$"},"example":"8699578095307"},{"name":"atc","in":"query","schema":{"type":"string"},"example":"N02BE01","description":"ATC kodu ya da başı (N02)"},{"name":"durum","in":"query","schema":{"type":"string","enum":["aktif","pasif","hepsi"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"ilaclar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"barkod":{"type":"string"},"atcKodu":{"type":["string","null"]},"atcAdi":{"type":["string","null"]},"firma":{"type":["string","null"]},"receteTuru":{"type":["string","null"],"enum":["Normal","Kırmızı","Turuncu","Mor","Yeşil",null]},"durum":{"type":"string","enum":["aktif","pasif"]},"temelIlac":{"type":["object","null"],"properties":{"genel":{"type":["number","null"]},"cocuk":{"type":["number","null"]},"yenidogan":{"type":["number","null"]}}},"listeTarihi":{"type":["string","null"],"format":"date"},"gkfEuro":{"type":["number","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"array","items":{"type":"string"}},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"skrsDonemi":{"type":["string","null"]},"gkfTarihi":{"type":["string","null"],"format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz ya da arama ölçütü yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"barkod listede yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/gtip/fasillar":{"get":{"tags":["gtip"],"summary":"GTİP bölüm ve fasılları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İstatistik Pozisyonlarına Bölünmüş Türk Gümrük Tarife Cetveli 2026 (Karar 10781): 21 bölüm, 98 fasıl; fasıl başına pozisyon ve 12 haneli tarife satırı sayısı.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"bolumler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"tanim":{"type":"string"},"fasillar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"tanim":{"type":"string"},"pozisyonSayisi":{"type":"integer"},"tarifeSatiriSayisi":{"type":"integer"}}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"karar":{"type":"string"},"resmiGazete":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/gtip/ara":{"get":{"tags":["gtip"],"summary":"GTİP metin ya da kod başıyla ara (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Tarife satırlarında (12 hane) Türkçe sözcük araması: çekim ekleri ve bitişik yazım (\"zeytin yağı\") tolere edilir, cetvelde geçmeyen yaygın adlar (\"cep telefonu\", \"laptop\") cetvel diline çevrilir (`yorum`). Önce bütün sözcükleri tutan satırlar; sıra pozisyon başlığının ve satırın kendi tanımının puanıyla. `pozisyonlar` eşleşmelerin toplandığı 4 haneli başlıklardır. Rakamla aranırsa (q=6109) o kod başındaki satırlar döner. Sözcük eşleşmesidir, sınıflandırma kuralı uygulamaz.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"example":"pamuklu tişört"},{"name":"fasil","in":"query","schema":{"type":"string"},"example":"61","description":"Yalnız bu fasıl"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"sorgu":{"type":"string"},"yorum":{"type":["string","null"]},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"toplam":{"type":"integer"},"tam":{"type":"boolean","description":"Bütün sorgu sözcüklerini tutan satır var mı; yoksa kısmi eşleşmeler döner"},"satirlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"tamTanim":{"type":"string","description":"Pozisyondan satıra tanımlar, \" › \" ile"},"fasil":{"type":"string"},"pozisyon":{"type":"string"},"olcuBirimi":{"type":["string","null"]},"kanuniVergiHaddi":{"type":["number","null"],"description":"474 sayılı Kanun'daki had (%); uygulanan vergi değil"},"puan":{"type":"number"}}}},"pozisyonlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"eslesen":{"type":"integer"},"puan":{"type":"number"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"karar":{"type":"string"},"resmiGazete":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"q yok ya da parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/gtip/{kod}":{"get":{"tags":["gtip"],"summary":"GTİP kodla getir: fasıl, pozisyon, alt pozisyon, tarife satırı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"2 hane: fasıl ve pozisyonları (`tur: fasil`). Cetvelde satırı olan kod (4, 6, 8, 10, 12 hane): tanımı, pozisyondan kendisine `yol`, altındaki `agac` ve 12 hanede ölçü birimi ile 474 sayılı Kanun'daki vergi haddi (`tur: dugum`). Satırı olmayan ara kod: altındaki tarife satırları (`tur: onek`). Nokta ve boşluk olabilir: 0901.21, 8517.13.00.00.19.","parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string"},"example":"6109.10.00.00.00"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string","enum":["fasil","dugum","onek"]},"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"duzey":{"type":"string","enum":["pozisyon","alt_pozisyon","kombine_nomanklatur","milli_alt_acilim","gtip"]},"bolum":{"type":"object","properties":{"kod":{"type":"string"},"tanim":{"type":"string"}}},"fasil":{"type":"object","properties":{"kod":{"type":"string"},"tanim":{"type":"string"}}},"yol":{"type":"array","items":{"type":"object","properties":{"kod":{"type":["string","null"]},"kodNoktali":{"type":["string","null"]},"duzey":{"type":["string","null"]},"tanim":{"type":"string"}}}},"olcuBirimi":{"type":["string","null"]},"kanuniVergiHaddi":{"type":["number","null"]},"tarifeSatiriSayisi":{"type":"integer"},"agac":{"type":"array","items":{"type":"object","description":"kod, kodNoktali, tanim, (12 hanede olcuBirimi, kanuniVergiHaddi), alt"}},"pozisyonlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"tarifeSatiriSayisi":{"type":"integer"}}}},"satirlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"tamTanim":{"type":"string","description":"Pozisyondan satıra tanımlar, \" › \" ile"},"fasil":{"type":"string"},"pozisyon":{"type":"string"},"olcuBirimi":{"type":["string","null"]},"kanuniVergiHaddi":{"type":["number","null"],"description":"474 sayılı Kanun'daki had (%); uygulanan vergi değil"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"karar":{"type":"string"},"resmiGazete":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"kod biçimi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"kod 2026 cetvelinde yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/nace/kisimlar":{"get":{"tags":["nace"],"summary":"NACE kısımları ve bölümleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"GİB faaliyet kodu listesi (2026, NACE Rev. 2.1 düzeni): 22 kısım (A–V) ve Türkiye'ye özgü Y; her kısmın bölümleri ve faaliyet sayısı.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kisimlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"tanim":{"type":"string"},"bolumler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"}}}},"faaliyetSayisi":{"type":"integer"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/nace/ara":{"get":{"tags":["nace"],"summary":"NACE faaliyet kodu ara (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Altı haneli faaliyet tanımlarında Türkçe sözcük araması (çekim ekleri tolere edilir; \"yazılım\", \"kafe\", \"emlakçı\" gibi listede geçmeyen adlar liste diline çevrilir, `yorum`). Rakamla aranırsa (q=6210) o kod başındaki faaliyetler. `siniflar` eşleşmelerin toplandığı 4 haneli NACE sınıflarıdır.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"example":"yazılım"},{"name":"kisim","in":"query","schema":{"type":"string"},"example":"K","description":"Yalnız bu kısım (A–V, Y)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"sorgu":{"type":"string"},"yorum":{"type":["string","null"]},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"toplam":{"type":"integer"},"tam":{"type":"boolean"},"faaliyetler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"kisim":{"type":["string","null"]},"sinif":{"type":["string","null"]},"yol":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"}}}},"puan":{"type":"number"},"tehlikeSinifi":{"type":["object","null"],"description":"İSG tehlike sınıfı (İşyeri Tehlike Sınıfları Tebliği Ek-1); kod tebliğde yoksa null. Ayrıntı /v1/isg/tehlike-sinifi/{kod}","properties":{"sinif":{"type":"string","enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"ad":{"type":"string"}}}}}},"siniflar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"},"eslesen":{"type":"integer"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"q yok ya da parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/nace/{kod}":{"get":{"tags":["nace"],"summary":"NACE kodla getir: kısım, bölüm, grup, sınıf, faaliyet (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Kısım harfi (J), bölüm (62), grup (62.1), sınıf (62.10) ya da faaliyet (62.10.00); \"0111xx\" yazımı da olur. Üst düzeyler `yol`da, bir alt düzey `alt`ta.","parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string"},"example":"62.10.00"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"},"yol":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"}}}},"alt":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"duzey":{"type":"string","enum":["kisim","bolum","grup","sinif","faaliyet"]},"tanim":{"type":"string"}}}},"faaliyetSayisi":{"type":"integer"},"tehlikeSinifi":{"type":["object","null"],"description":"Yalnız altı haneli faaliyette. İSG tehlike sınıfı (İşyeri Tehlike Sınıfları Tebliği Ek-1); kod tebliğde yoksa null. Ayrıntı /v1/isg/tehlike-sinifi/{kod}","properties":{"sinif":{"type":"string","enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"ad":{"type":"string"}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"kod biçimi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"kod GİB listesinde yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/isg/tehlike-sinifi":{"get":{"tags":["isg"],"summary":"İSG tehlike sınıfı listesi ve arama (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İş Sağlığı ve Güvenliğine İlişkin İşyeri Tehlike Sınıfları Tebliği (RG 26.12.2012/28509) Ek-1, değişiklikleri işlenmiş (son: RG 1.4.2026/33211; Ek-1 13.3.2025'ten beri NACE Rev.2.1 kodlarıyla). `ara` faaliyet adı (Türkçe sözcük araması, \"yazılım\", \"kafe\" gibi gündelik adlar çevrilir) ya da kod başı (\"62\", \"43.12\"); boşsa bütün liste. `sinif` verilirse o sınıfa bağlı yükümlülükler de döner. `dagilim` süzgeçten sonraki bütün eşleşmelerin sınıf sayıları, `kapsam` GİB NACE listesiyle eşleşme.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"kuaför"},{"name":"sinif","in":"query","schema":{"type":"string","enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"description":"`az`, `cok` kısaltmaları da olur"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"sorgu":{"type":["string","null"]},"yorum":{"type":["string","null"]},"sinif":{"type":["string","null"],"enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"toplam":{"type":"integer"},"tam":{"type":"boolean"},"dagilim":{"type":"object","properties":{"az_tehlikeli":{"type":"integer"},"tehlikeli":{"type":"integer"},"cok_tehlikeli":{"type":"integer"}}},"faaliyetler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"tehlikeSinifi":{"type":"string","enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"tehlikeSinifiAdi":{"type":"string"},"dipnot":{"type":"string","description":"Sınıfın yanındaki \"*\" dipnotu (asbest yasağı)"},"degisiklik":{"type":"object","description":"13.3.2025'teki yeni Ek-1'den sonra satırı değiştiren tebliğ","properties":{"tur":{"type":"string","enum":["degisik_satir","degisik_ibare","ek_satir"]},"aciklama":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}}}},"eslesme":{"type":"string","enum":["tam","yalniz_kod","yok"],"description":"GİB NACE listesiyle (/v1/nace): tam = kod ve tanım aynı, yalniz_kod = kod aynı, tanım yazımı farklı, yok = kod GİB listesinde yok"}}}},"yukumlulukler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"baslik":{"type":"string"},"deger":{"type":["number","string"]},"birim":{"type":"string"},"aciklama":{"type":"string"},"mevzuat":{"type":"object","properties":{"ad":{"type":"string"},"madde":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}}}},"ayrinti":{"type":"object"}}},"description":"Yalnız `sinif` verilince"},"kapsam":{"type":"object","properties":{"tebligFaaliyet":{"type":"integer"},"gibFaaliyet":{"type":"integer"},"ortakKod":{"type":"integer"},"ayniTanim":{"type":"integer"},"yalnizTeblig":{"type":"array","items":{"type":"string"}},"yalnizGib":{"type":"array","items":{"type":"string"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string","description":"Hukuki tavsiye değildir; kesin sınıf SGK tescilindeki asıl işe bağlıdır (Tebliğ m.2)"},"teblig":{"type":"object","properties":{"ad":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}},"ek":{"type":"string"},"naceSurumu":{"type":"string"},"sonDegisiklik":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}},"degisiklikSayisi":{"type":"integer"}}}}}}}},"400":{"description":"parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/isg/tehlike-sinifi/{naceKodu}":{"get":{"tags":["isg"],"summary":"NACE koduna göre İSG tehlike sınıfı ve yükümlülükler (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Altı haneli NACE faaliyet kodu (62.10.00, 621000) → az tehlikeli / tehlikeli / çok tehlikeli ve sınıfa bağlı yükümlülükler: iş güvenliği uzmanı belge sınıfı ve çalışma süresi, işyeri hekimi çalışma süresi, periyodik muayene, risk değerlendirmesi ve acil durum planı yenileme, acil durum destek elemanı; her biri yönetmelik maddesi ve RG künyesiyle. Kod ekten kaldırılmışsa 404 + `mulga`; GİB listesinde olup tebliğde olmayan kod 404 + `gibTanim`.","parameters":[{"name":"naceKodu","in":"path","required":true,"schema":{"type":"string"},"example":"62.10.00"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kod":{"type":"string"},"kodNoktali":{"type":"string"},"tanim":{"type":"string"},"tehlikeSinifi":{"type":"string","enum":["az_tehlikeli","tehlikeli","cok_tehlikeli"]},"tehlikeSinifiAdi":{"type":"string"},"dipnot":{"type":"string","description":"Sınıfın yanındaki \"*\" dipnotu (asbest yasağı)"},"degisiklik":{"type":"object","description":"13.3.2025'teki yeni Ek-1'den sonra satırı değiştiren tebliğ","properties":{"tur":{"type":"string","enum":["degisik_satir","degisik_ibare","ek_satir"]},"aciklama":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}}}},"eslesme":{"type":"string","enum":["tam","yalniz_kod","yok"],"description":"GİB NACE listesiyle (/v1/nace): tam = kod ve tanım aynı, yalniz_kod = kod aynı, tanım yazımı farklı, yok = kod GİB listesinde yok"},"yukumlulukler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"baslik":{"type":"string"},"deger":{"type":["number","string"]},"birim":{"type":"string"},"aciklama":{"type":"string"},"mevzuat":{"type":"object","properties":{"ad":{"type":"string"},"madde":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}}}},"ayrinti":{"type":"object"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string","description":"Hukuki tavsiye değildir; kesin sınıf SGK tescilindeki asıl işe bağlıdır (Tebliğ m.2)"},"teblig":{"type":"object","properties":{"ad":{"type":"string"},"resmiGazete":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}},"ek":{"type":"string"},"naceSurumu":{"type":"string"},"sonDegisiklik":{"type":"object","properties":{"tarih":{"type":"string","format":"date"},"sayi":{"type":"string"},"mukerrer":{"type":"boolean"}}},"degisiklikSayisi":{"type":"integer"}}}}}}}},"400":{"description":"altı haneli kod değil","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"kod tebliğ ekinde yok (mülga, yalnız GİB listesinde ya da hiç yok)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ulasim/yol-maliyeti":{"get":{"tags":["ulasim"],"summary":"Yol maliyeti tahmini (mesafe + yakıt + geçiş)","security":[{"anahtar":[]}],"x-kredi":1,"description":"**Tahmindir.** `a`–`b` arası karayolu mesafesi (kuş uçuşu × 1,3; rota hesabı değil), çıkış (`a`) ilinin güncel EPDK bayi ortalamasıyla yakıt litresi ve tutarı, isteğe bağlı tek geçiş ücreti ve toplam. Geçiş ücreti güzergâh bilinmediği için **tahmin edilmez**: yalnız `yol` + `giris` + `cikis` (köprüde yalnız `yol`) verilirse KGM tarifesinden eklenir; verilmezse `gecis: null`, toplamda geçiş yok. `tuketim` verilmezse benzinde 7, motorinde 6 L/100 km varsayılır (`tuketimVarsayilan: true`). LPG EPDK bayi raporunda yok. 1 kredi; yakıt fiyatı bulunamazsa `toplamTl: null` ve kredi düşmez.","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string"},"example":"İstanbul","description":"Çıkış: il adı, plaka ya da \"enlem,boylam\""},{"name":"b","in":"query","required":true,"schema":{"type":"string"},"example":"Ankara","description":"Varış: il adı, plaka ya da \"enlem,boylam\""},{"name":"yakit","in":"query","schema":{"type":"string","enum":["benzin","motorin"],"default":"benzin"}},{"name":"tuketim","in":"query","schema":{"type":"number","exclusiveMinimum":0,"maximum":60},"description":"L/100 km"},{"name":"sinif","in":"query","schema":{"type":"integer","minimum":1,"maximum":6,"default":1},"description":"KGM araç sınıfı (1 otomobil); yalnız geçiş ücretinde"},{"name":"yol","in":"query","schema":{"type":"string"},"example":"osmangazi","description":"Geçiş tarifesi (köprü adı ya da otoyol)"},{"name":"giris","in":"query","schema":{"type":"string"},"description":"Otoyol giriş istasyonu; cikis ile birlikte"},{"name":"cikis","in":"query","schema":{"type":"string"},"description":"Otoyol çıkış istasyonu; giris ile birlikte"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["mesafe","yakit","gecis","toplamTl","kaynak","guncelleme","not"],"properties":{"a":{"type":"object"},"b":{"type":"object"},"mesafe":{"type":"object","properties":{"kusUcusuKm":{"type":"number"},"karayoluTahminiKm":{"type":"number"},"katsayi":{"type":"number"}}},"arac":{"type":"object","properties":{"sinif":{"type":"integer"},"sinifTanim":{"type":["string","null"]},"yakit":{"enum":["benzin","motorin"]},"tuketimL100":{"type":"number"},"tuketimVarsayilan":{"type":"boolean"}}},"yakit":{"type":"object","properties":{"il":{"type":["string","null"],"description":"Fiyatın alındığı il (çıkış)"},"urun":{"type":"string"},"litreFiyati":{"type":["number","null"],"description":"TL/litre, EPDK bayi ortalaması (şüpheli bildirimler hariç)"},"enDusuk":{"type":["number","null"]},"enYuksek":{"type":["number","null"]},"markaSayisi":{"type":"integer"},"fiyatTarihi":{"type":["string","null"]},"litre":{"type":"number"},"tutarTl":{"type":["number","null"]}}},"gecis":{"type":["object","null"],"description":"Yalnız yol/giris/cikis verildiyse","properties":{"yol":{"type":"object"},"giris":{"type":["string","null"]},"cikis":{"type":["string","null"]},"sinif":{"type":"integer"},"ucretTl":{"type":"number"},"gecerlilik":{"type":["string","null"]}}},"gecisTl":{"type":"number"},"toplamTl":{"type":["number","null"],"description":"Yakıt + geçiş; yakıt fiyatı yoksa null"},"tahmin":{"type":"boolean","const":true},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Yakıt fiyatlarının son başarılı çekimi (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"a/b eksik, parametre geçersiz ya da geçiş belirsiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"geçiş tarifesi ya da giriş-çıkış çifti bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"a ya da b bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ulasim/gecis-ucretleri":{"get":{"tags":["ulasim"],"summary":"Otoyol ve köprü geçiş ücretleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"KGM tarifeleri (15 Temmuz/FSM, Osmangazi, YSS, 1915 Çanakkale köprüleri ve otoyollar), araç sınıfı 1–6, TL, KDV dahil. Parametresiz bütün tarifeler; `yol` ile tek tarife; `giris` + `cikis` ile o çiftin ücreti (`yol` verilmezse bütün otoyollarda aranır). `ucretler` dizisi sınıf sırasıyla; `sinif` verilirse tek eleman. `yonlu: false` tarifede iki yön aynı ücret.","parameters":[{"name":"yol","in":"query","schema":{"type":"string"},"example":"izmir çeşme","description":"Tarife numarası ya da adındaki sözcükler"},{"name":"giris","in":"query","schema":{"type":"string"},"example":"urla","description":"Giriş istasyonu (cikis ile birlikte)"},{"name":"cikis","in":"query","schema":{"type":"string"},"example":"çeşme"},{"name":"sinif","in":"query","schema":{"type":"integer","minimum":1,"maximum":6},"description":"1 otomobil … 5 altı+ akslı, 6 motosiklet"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"toplam":{"type":"integer"},"siniflar":{"type":"array","items":{"type":"object","properties":{"sinif":{"type":"integer"},"tanim":{"type":"string"}}}},"tarifeler":{"type":"array","items":{"type":"object","properties":{"no":{"type":"integer"},"ad":{"type":"string"},"tur":{"type":"string","enum":["kopru","otoyol"]},"gecerlilik":{"type":["string","null"],"format":"date"},"kdvDahil":{"type":"boolean"},"kaynakUrl":{"type":"string"},"ucretler":{"type":"array","items":{"type":["number","null"]}},"kesimler":{"type":"array","items":{"type":"object","properties":{"yonlu":{"type":"boolean"},"istasyonlar":{"type":"array","items":{"type":"string"}}}}}}}},"sonuclar":{"type":"array","description":"giris+cikis ile","items":{"type":"object","properties":{"yol":{"type":"object"},"kesim":{"type":"integer"},"giris":{"type":"string"},"cikis":{"type":"string"},"yonlu":{"type":"boolean"},"ucretler":{"type":"array","items":{"type":["number","null"]}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"parametre geçersiz ya da istasyon adı birden çok istasyona uyuyor (adaylar)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"tarife ya da giriş-çıkış çifti bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/arac/kasko-deger":{"get":{"tags":["arac"],"summary":"TSB kasko değer listesi: marka/model/yıl","security":[{"anahtar":[]}],"x-kredi":1,"description":"Türkiye Sigorta Birliği'nin aylık kasko değer listesi (~28.000 tip, son 15 model yılı), koda gömülü. `marka`, `ara` ya da `markaKodu` zorunlu; `tip` ve `ara` sözcük sözcük eşleşir (ör. marka=alfa romeo&tip=giulietta 1.4). `yil` verilirse yalnız o model yılı için değeri olan tipler, `degerler` o yıla daralır. Değer TL; ilan/piyasa fiyatı değil, kasko priminde ve hasarda esas alınan referans. Sonuç yoksa 0 kredi. Vergi için `/v1/arac/otv` ve `/v1/vergi/mtv`.","parameters":[{"name":"marka","in":"query","schema":{"type":"string"},"example":"alfa romeo","description":"Marka adı (tam eşleşme önce, yoksa içeren)"},{"name":"tip","in":"query","schema":{"type":"string"},"example":"giulietta 1.4","description":"Tip adındaki sözcükler"},{"name":"ara","in":"query","schema":{"type":"string"},"description":"Marka + tip adında serbest arama"},{"name":"markaKodu","in":"query","schema":{"type":"string"},"description":"TSB marka kodu"},{"name":"tipKodu","in":"query","schema":{"type":"string"},"description":"TSB tip kodu (markaKodu ile)"},{"name":"yil","in":"query","schema":{"type":"integer"},"example":2016,"description":"Model yılı"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["araclar","kaynak","guncelleme"],"properties":{"toplam":{"type":"integer"},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"araclar":{"type":"array","items":{"type":"object","properties":{"markaKodu":{"type":"string"},"marka":{"type":"string"},"tipKodu":{"type":"string"},"tip":{"type":"string"},"degerler":{"type":"array","items":{"type":"object","properties":{"yil":{"type":"integer"},"deger":{"type":"number","description":"TL"}}}}}}},"ay":{"type":"string","description":"Liste ayı, YYYY-AA"},"listeAdi":{"type":"string"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"sayfaUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"bayat":{"type":"boolean","description":"Gömülü liste bu aydan eski"},"uyari":{"type":"string"}}}}}},"400":{"description":"marka/ara/markaKodu yok ya da parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/arac/kasko-deger/markalar":{"get":{"tags":["arac"],"summary":"Kasko listesindeki markalar (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["markalar","kaynak","guncelleme"],"properties":{"toplam":{"type":"integer"},"markalar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"tipSayisi":{"type":"integer"}}}},"ay":{"type":"string"},"yillar":{"type":"array","items":{"type":"integer"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"sayfa":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/arac/trafik-azami-prim":{"get":{"tags":["arac","sigorta"],"summary":"Zorunlu trafik sigortası azami primi","security":[{"anahtar":[]}],"x-kredi":1,"description":"SBM'nin yayımladığı azami (tavan) brüt prim tablosu, son üç ay: il × araç grubu × basamak (0 en pahalı … 8 en ucuz, ilk poliçe 4) × özel/tüzel × yakıt (elektrik/diğer) × engelli indirimi. `il` ya da (`grup` + `basamak`) zorunlu; bütün filtreler verilip tek satır kalırsa `azamiPrim` üst düzeyde döner. Sigortacı bu tutarı aşamaz, altında fiyat verebilir. Sonuç yoksa 0 kredi.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"34","description":"Plaka kodu ya da il adı"},{"name":"grup","in":"query","schema":{"type":"string"},"example":"otomobil","description":"Araç grubu kodu (01–15) ya da adı; liste yanıtın hata gövdesinde"},{"name":"basamak","in":"query","schema":{"type":"integer","minimum":0,"maximum":8},"example":4},{"name":"ozelTuzel","in":"query","schema":{"type":"string","enum":["ozel","tuzel"]}},{"name":"yakit","in":"query","schema":{"type":"string","enum":["diger","elektrik"]}},{"name":"engelli","in":"query","schema":{"type":"boolean"},"description":"Engelli indirimli tavan (yalnız basamak 2–8, bazı gruplarda yok)"},{"name":"ay","in":"query","schema":{"type":"string"},"description":"YYYY-AA; tablodaki son üç aydan biri, verilmezse en yenisi"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["satirlar","kaynak","guncelleme"],"properties":{"ay":{"type":"string"},"aylar":{"type":"array","items":{"type":"string"}},"azamiPrim":{"type":"number","description":"Tek satır kaldığında, TL"},"toplam":{"type":"integer"},"satirlar":{"type":"array","items":{"type":"object","properties":{"il":{"type":["string","null"]},"plaka":{"type":"integer"},"grupKodu":{"type":"string"},"grup":{"type":"string"},"basamak":{"type":"integer"},"ozelTuzel":{"type":"string","enum":["ozel","tuzel"]},"yakit":{"type":"string","enum":["diger","elektrik"]},"engelliIndirimi":{"type":"boolean"},"azamiPrim":{"type":"number"}}}},"birim":{"type":"string"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"bayat":{"type":"boolean"},"uyari":{"type":"string"}}}}}},"400":{"description":"il ya da grup+basamak yok, il/grup bulunamadı ya da parametre geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"ay tabloda yok (aylar)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/arac/otv":{"get":{"tags":["arac","vergi"],"summary":"Binek otomobil ÖTV hesabı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"ÖTV (II) sayılı liste 87.03 binek otomobil oranları, Cumhurbaşkanı Kararı 10115 (RG 24.07.2025) ve 31.07.2026'dan itibaren 100.000 TL asgari maktu vergi; ÖTV + %20 KDV. `matrah` (vergisiz fiyat) verilirse ileri, `fiyat` (vergiler dahil) verilirse matrah geriye çözülür. Dilimler kademeli değildir: bütün matrah dilimin oranıyla vergilenir. Engelli/taksi istisnaları ve ticari araçlar kapsam dışı. Yıllık vergi için `/v1/vergi/mtv`.","parameters":[{"name":"motor","in":"query","schema":{"type":"string","enum":["icten","hibrit","sarjli_hibrit","elektrik"],"default":"icten"}},{"name":"motorHacmi","in":"query","schema":{"type":"number"},"example":1499,"description":"cm³ (elektrik dışında zorunlu)"},{"name":"elektrikGucu","in":"query","schema":{"type":"number"},"description":"kW: elektrikte motor gücü, hibritte elektrik motoru gücü"},{"name":"co2","in":"query","schema":{"type":"number"},"description":"Şarjlı hibrit: CO₂ g/km"},{"name":"menzil","in":"query","schema":{"type":"number"},"description":"Şarjlı hibrit: elektrikli menzil km"},{"name":"matrah","in":"query","schema":{"type":"number"},"example":800000,"description":"ÖTV matrahı TL (fiyat ile birlikte verilmez)"},{"name":"fiyat","in":"query","schema":{"type":"number"},"description":"ÖTV ve KDV dahil satış fiyatı TL"},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Verilmezse bugün (2025-07-24 … 2026-12-31)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["otv","kaynak","guncelleme"],"properties":{"satir":{"type":"string"},"tanim":{"type":"string"},"dilim":{"type":"string"},"matrah":{"type":"number"},"otvOrani":{"type":"number","description":"%"},"nispiOtv":{"type":"number"},"otv":{"type":"number"},"asgariMaktuUygulandi":{"type":"boolean"},"kdvMatrahi":{"type":"number"},"kdv":{"type":"number"},"vergiliFiyat":{"type":"number"},"vergiPayi":{"type":"number","description":"%"},"digerCozumler":{"type":"array","items":{"type":"object"},"description":"Fiyattan çözümde aynı fiyatı veren başka matrahlar"},"belirsiz":{"type":"boolean"},"belirsizlik":{"type":"string"},"asgariMaktu":{"type":"object","properties":{"tutar":{"type":"number"},"baslangic":{"type":"string"},"not":{"type":"string"}}},"tarih":{"type":"string"},"ilgili":{"type":"object"},"kaynak":{"type":"object","properties":{"belge":{"type":"string"},"rg":{"type":"string"},"url":{"type":"string"}}},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"motor/motorHacmi/matrah/fiyat eksik ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"tarih kapsam dışı ya da fiyata karşılık matrah yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/sigorta/dask":{"get":{"tags":["sigorta"],"summary":"DASK (zorunlu deprem sigortası) primi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Sigorta bedeli = brüt m² × yapı tarzının o ayki birim maliyeti (azami teminatla sınırlı); prim = bedel × risk grubunun binde oranı. **Risk grubu il/ilçeden çıkmaz** (DASK adres koduna, deprem tehlike haritasına ve zemine göre belirler, eşleme yayımlanmıyor): `riskGrubu` verin, verilmezse yedi grubun primi döner. Birim maliyetler aylık (poliçe başlangıç ayı). Trafik sigortası için `/v1/arac/trafik-azami-prim`.","parameters":[{"name":"m2","in":"query","required":true,"schema":{"type":"number"},"example":100,"description":"Brüt yüzölçümü"},{"name":"yapiTarzi","in":"query","schema":{"type":"string","enum":["betonarme","diger"],"default":"betonarme"}},{"name":"riskGrubu","in":"query","schema":{"type":"string"},"example":"3","description":"1–7 ya da I–VII"},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Poliçe başlangıcı; verilmezse bugün"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["primler","kaynak","guncelleme"],"properties":{"m2":{"type":"number"},"yapiTarzi":{"type":"string"},"yapiTanimi":{"type":"string"},"tarih":{"type":"string"},"ay":{"type":"string"},"birimMaliyet":{"type":"number"},"hesaplananBedel":{"type":"number"},"azamiTeminat":{"type":"number"},"sigortaBedeli":{"type":"number"},"azamiTeminataTakildi":{"type":"boolean"},"primler":{"type":"array","items":{"type":"object","properties":{"riskGrubu":{"type":"integer"},"grup":{"type":"string"},"oranBinde":{"type":"number"},"prim":{"type":"number"}}}},"prim":{"type":"number","description":"riskGrubu verildiyse"},"oranlarBinde":{"type":"array","items":{"type":"number"}},"riskGrubuNotu":{"type":"string"},"ilgili":{"type":"object"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"tarifeUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"m2, yapiTarzi, riskGrubu ya da tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"poliçe ayının birim maliyeti gömülü değil (aylar)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/il/bolgeler":{"get":{"tags":["il"],"summary":"Yedi coğrafi bölge ve illeri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Marmara, Ege, Akdeniz, İç Anadolu, Karadeniz, Doğu Anadolu, Güneydoğu Anadolu; her bölgenin illeri ve toplam nüfusu. Coğrafi bölge idari bir birim değildir — resmî istatistik bölgesi için `/v1/il/ibbs`.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["bolgeler","kaynak","guncelleme"],"properties":{"toplam":{"type":"integer"},"bolgeler":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"ilSayisi":{"type":"integer"},"nufus":{"type":"integer"},"iller":{"type":"array","items":{"type":"object","properties":{"plaka":{"type":"integer"},"ad":{"type":"string"}}}}}}},"kaynak":{"type":"string"},"guncelleme":{"type":"string"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/il/ibbs":{"get":{"tags":["il"],"summary":"İBBS/NUTS bölge birimleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK İstatistiki Bölge Birimleri Sınıflaması: Düzey 1 (12 bölge, TR1…TRC), Düzey 2 (26 alt bölge) ve Düzey 3 (81 il). AB fonu, istatistik raporlaması ve bölgesel kırılım için. Düzey 3'te `plaka` de döner.","parameters":[{"name":"duzey","in":"query","schema":{"type":"string","enum":["1","2","3"]},"description":"Varsayılan 3 (il)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["duzey","birimler","kaynak","guncelleme"],"properties":{"duzey":{"type":"integer"},"toplam":{"type":"integer"},"birimler":{"type":"array","items":{"$ref":"#/components/schemas/IbbsBirimi"}},"kaynak":{"type":"string"},"guncelleme":{"type":"string"},"lisans":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"duzey geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/il/{il}/ilceler":{"get":{"tags":["il"],"summary":"İlin ilçeleri, nüfusu ve koordinatı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İlin tüm ilçeleri: TÜİK ADNKS nüfusu, yıllık artış hızı ve yaklaşık merkez koordinatı. Koordinat sokak sicilindeki noktaların medyanı (resmî ilçe merkezi değil); yeterli nokta yoksa `merkez: null`.","parameters":[{"name":"il","in":"path","required":true,"schema":{"type":"string"},"example":"35","description":"Plaka ya da il adı"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["il","plaka","yil","ilceler","kaynak","guncelleme"],"properties":{"il":{"type":"string"},"plaka":{"type":"integer"},"yil":{"type":"integer"},"toplam":{"type":"integer"},"nufus":{"type":"integer"},"ilceler":{"type":"array","items":{"$ref":"#/components/schemas/IlceNufusu"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"lisans":{"type":"string"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/il/{il}":{"get":{"tags":["il"],"summary":"İl bilgi kartı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Plakadan ya da il adından tek çağrıda: coğrafi bölge, İBBS/NUTS Düzey 1-2-3 kodu, telefon alan kodu, TÜİK nüfusu (il/ilçe merkezi ve belde/köy kırılımıyla), nüfus yoğunluğu, yüzölçümü, merkez koordinatı, rakım (yüzey modelinden, yaklaşık), komşu iller, ilçe sayısı, posta kodu aralığı ve büyükşehir olup olmadığı.","parameters":[{"name":"il","in":"path","required":true,"schema":{"type":"string"},"example":"Konya","description":"Plaka (\"42\", \"06\") ya da il adı (\"Konya\", \"afyon\")"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["il","kaynak","guncelleme"],"properties":{"il":{"$ref":"#/components/schemas/IlKarti"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"lisans":{"type":"string"},"olguKaynak":{"type":"string"},"rakimKaynak":{"type":"object","properties":{"kaynak":{"type":"string"},"lisans":{"type":"string"},"yontem":{"type":"string"}}},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/nufus":{"get":{"tags":["nufus"],"summary":"İl nüfusu, yıllara göre seri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"TÜİK ADNKS il nüfusu ve 2000'den bu yana yıllık seri. `yil` verilirse yalnız o yıl. `ilce` verilirse ilçe nüfusu döner — ilçede yalnız son yıl var, TÜİK geçmiş yılların ilçe ekini yayımdan kaldırıyor.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"Bursa","description":"Plaka ya da il adı"},{"name":"ilce","in":"query","schema":{"type":"string"},"example":"Nilüfer"},{"name":"yil","in":"query","schema":{"type":"integer"},"example":2015}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["il","plaka","yil","nufus","seri","kaynak","guncelleme"],"properties":{"il":{"type":"string"},"plaka":{"type":"integer"},"ilce":{"type":"string"},"yil":{"type":"integer"},"nufus":{"type":"integer"},"yillikArtisHizi":{"type":["number","null"]},"yogunluk":{"type":"number"},"ilceSayisi":{"type":"integer"},"seri":{"type":"array","items":{"$ref":"#/components/schemas/NufusYili"}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"lisans":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"il gerekli ya da yil geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il ya da ilçe bulunamadı, ya da istenen yıl seride yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/telefon/alan-kodu/{kod}":{"get":{"tags":["telefon"],"summary":"Alan kodundan il, GSM önekinden işletmeci (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Üç haneli coğrafi alan kodunu ile çevirir (0212 → İstanbul Avrupa Yakası, 0216 → Anadolu Yakası) ya da GSM önekinin ilk tahsis edildiği işletmeciyi söyler (0532 → Turkcell). Numara taşınabilirliği nedeniyle GSM önekinin numaranın bugünkü işletmecisini göstermediği yanıtta yazar. \"+90 212\", \"(0212)\", \"212\" kabul.","parameters":[{"name":"kod","in":"path","required":true,"schema":{"type":"string"},"example":"0212"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["tur","kod","kaynak","guncelleme"],"properties":{"tur":{"type":"string","enum":["cografi","gsm"]},"kod":{"type":"string"},"bolum":{"type":"string","description":"Yalnız İstanbul"},"il":{"type":"object","properties":{"plaka":{"type":"integer"},"ad":{"type":"string"},"bolge":{"type":"string"}}},"alanKodlari":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"bolum":{"type":"string"}}}},"operator":{"type":"string","description":"Yalnız GSM"},"kullanim":{"type":"string","enum":["mobil","m2m","yabanci"],"description":"Yalnız GSM"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"not":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"alan kodu tanınmadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/parametreler":{"get":{"tags":["vergi"],"summary":"Yıllık vergi ve SGK parametreleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Gelir vergisi tarifesi (ücret ve ücret dışı), asgari ücret (brüt, net, işçi/işveren payları), prime esas kazanç alt/üst sınırı, KDV genel oranları. Her bölümde `gecerlilik` {baslangic, bitis} ve `kaynak` {belge, rg, url}; asgari ücret yıl içinde değişirse dizide yeni dönem. Bordro (brütten nete) hesabı yok.","parameters":[{"name":"yil","in":"query","schema":{"type":"integer"},"example":2026,"description":"Varsayılan içinde bulunulan yıl"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["yil","gelirVergisiTarifesi","asgariUcret","primeEsasKazanc","kdvOranlari","uyari"],"properties":{"yil":{"type":"integer"},"gelirVergisiTarifesi":{"type":"object","properties":{"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"ucret":{"type":"array","items":{"$ref":"#/components/schemas/Dilim"}},"ucretDisi":{"type":"array","items":{"$ref":"#/components/schemas/Dilim"}}}},"asgariUcret":{"type":"array","items":{"type":"object","properties":{"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"brutAylik":{"type":"number"},"brutGunluk":{"type":"number"},"netAylik":{"type":"number"},"isciSgkOrani":{"type":"number"},"isciIssizlikOrani":{"type":"number"},"isverenSgkOrani":{"type":"object","properties":{"indirimsiz":{"type":"number"},"ikiPuanIndirimli":{"type":"number"},"besPuanIndirimliImalat":{"type":"number"}}},"isverenIssizlikOrani":{"type":"number"}}}},"primeEsasKazanc":{"type":"object","properties":{"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"gunlukAlt":{"type":"number"},"gunlukUst":{"type":"number"},"aylikAlt":{"type":"number"},"aylikUst":{"type":"number"}}},"kdvOranlari":{"type":"object","properties":{"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"genel":{"type":"number"},"birSayiliListe":{"type":"number"},"ikiSayiliListe":{"type":"number"}}},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için parametre yok (yanıtta `yillar`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/gelir-vergisi":{"get":{"tags":["vergi"],"summary":"Yıllık matrahtan gelir vergisi (GVK m.103, ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Tarifeyi yıllık matraha uygular, dilim dökümüyle. İstisna, indirim, kümülatif bordro hesabı yapmaz.","parameters":[{"name":"matrah","in":"query","required":true,"schema":{"type":"number","minimum":0},"example":500000,"description":"Yıllık, TL"},{"name":"tur","in":"query","schema":{"type":"string","enum":["ucret","ucret-disi"]},"description":"Varsayılan ucret-disi; ücrette 3. dilim geniş"},{"name":"yil","in":"query","schema":{"type":"integer"},"example":2026}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"tur":{"type":"string"},"matrah":{"type":"number"},"vergi":{"type":"number"},"ortalamaOran":{"type":"number"},"marjinalOran":{"type":"number"},"dokum":{"type":"array","items":{"type":"object","properties":{"alt":{"type":"number"},"ust":{"type":["number","null"]},"oran":{"type":"number"},"matrah":{"type":"number"},"vergi":{"type":"number"}}}},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"matrah ya da tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için parametre yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/kdv":{"get":{"tags":["vergi"],"summary":"KDV ekle ya da ayır (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Oran (I) ve (II) sayılı listelere göre kullanıcı seçer; uç hangi malın hangi orana tabi olduğunu söylemez.","parameters":[{"name":"tutar","in":"query","required":true,"schema":{"type":"number","minimum":0},"example":1200},{"name":"oran","in":"query","schema":{"type":"number","enum":[1,10,20]},"description":"Varsayılan genel oran"},{"name":"dahil","in":"query","schema":{"type":"string","enum":["true","false"]},"description":"true: tutar KDV dahil, ayrıştır"},{"name":"yil","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"oran":{"type":"number"},"kdvHaric":{"type":"number"},"kdv":{"type":"number"},"kdvDahil":{"type":"number"},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar, oran ya da dahil geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için parametre yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/mtv":{"get":{"tags":["vergi"],"summary":"Motorlu taşıtlar vergisi (2026 tarifesi, ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"197 sayılı Kanun m.5/6 ve geçici m.8 tarifeleri (58 Seri No.lu MTV Genel Tebliği). Otomobilde 1/1/2018 ve sonrası tescilliler (I) sayılı tarifeye göre taşıt değeriyle birlikte, öncekiler (I/A) sayılı tarifeye göre yalnız motor hacmi ve yaşla vergilendirilir. `deger` verilmezse vergi yerine o motor hacmine ait değer bantları döner. Yaş = vergilendirme yılı − model yılı + 1. Taksitler Ocak ve Temmuz.","parameters":[{"name":"tur","in":"query","schema":{"type":"string","enum":["otomobil","motosiklet","minibus","panelvan","otobus","kamyon"]},"description":"Varsayılan otomobil"},{"name":"modelYili","in":"query","required":true,"schema":{"type":"integer"},"example":2024},{"name":"motorHacmi","in":"query","schema":{"type":"number"},"example":1600,"description":"cm³; otomobil, motosiklet ve panelvanda zorunlu"},{"name":"deger","in":"query","schema":{"type":"number"},"description":"Taşıt değeri (TL); (I) sayılı tarifede bant seçer"},{"name":"koltuk","in":"query","schema":{"type":"integer"},"description":"Otobüste oturma yeri sayısı"},{"name":"agirlik","in":"query","schema":{"type":"number"},"description":"Kamyon/kamyonet/çekicide azami toplam ağırlık (kg)"},{"name":"tescilYili","in":"query","schema":{"type":"integer"},"description":"2018 öncesi tescilli otomobilde (I/A) tarifesi; verilmezse model yılı kullanılır"},{"name":"yil","in":"query","schema":{"type":"integer"},"example":2026,"description":"Varsayılan 2026; başka yıl 422"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string"},"yil":{"type":"integer"},"modelYili":{"type":"integer"},"yas":{"type":"integer"},"yasGrubu":{"type":"string"},"tarife":{"type":"string","enum":["I","I/A","II"]},"olcu":{"type":"object","properties":{"ad":{"type":"string"},"deger":{"type":"number"},"bant":{"type":"string"}}},"vergi":{"type":["number","null"],"description":"Yıllık TL; değer bandı seçilemediyse null"},"taksitler":{"type":["array","null"],"items":{"type":"object","properties":{"ay":{"type":"string"},"tutar":{"type":"number"}}}},"degerBandi":{"type":["string","null"]},"bantlar":{"type":["array","null"],"items":{"type":"object","properties":{"deger":{"type":"string"},"vergi":{"type":"number"}}}},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tur, modelYili ya da ölçü geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için tarife yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/takvim":{"get":{"tags":["vergi"],"summary":"GİB vergi takvimi: beyanname ve ödeme son günleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"\"Bu hafta hangi beyannamelerin son günü?\", \"Eylül KDV ne zaman ödenir?\". Kaynak GİB vergi takvimi; yıl başına istek anında GİB'den (6 saat önbellek, süre uzatmaları yansır), ulaşılamazsa koda gömülü anlık görüntü (`durum: gomulu`). Aralık `ay`, `hafta`, `tarih` ya da `baslangic`+`bitis` (en çok 400 gün) ile; hiçbiri yoksa bugünden 30 gün. Varsayılan `kapsam=son-gun`: son günü aralıkta olanlar; `acik`: dönemi aralıkla örtüşenler.","parameters":[{"name":"ay","in":"query","schema":{"type":"string"},"example":"2026-09","description":"YYYY-AA"},{"name":"hafta","in":"query","schema":{"type":"string"},"example":"2026-W39","description":"ISO hafta ya da \"bu\""},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Tek gün"},{"name":"baslangic","in":"query","schema":{"type":"string","format":"date"}},{"name":"bitis","in":"query","schema":{"type":"string","format":"date"}},{"name":"ara","in":"query","schema":{"type":"string"},"example":"katma değer","description":"Başlık, vergi türü ya da açıklamada geçen metin"},{"name":"konu","in":"query","schema":{"type":"string"},"example":"Beyan ve Ödeme","description":"Beyan ve Ödeme, Ödeme, Bildirim, Berat…"},{"name":"kapsam","in":"query","schema":{"type":"string","enum":["son-gun","acik"]}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kayitlar","kaynak","guncelleme","durum"],"properties":{"sorgu":{"type":"object","properties":{"ne":{"type":"string"},"baslangic":{"type":"string"},"bitis":{"type":"string"},"kapsam":{"type":"string"},"ara":{"type":["string","null"]},"konu":{"type":["string","null"]}}},"sayi":{"type":"integer"},"kayitlar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"baslik":{"type":"string"},"aciklama":{"type":["string","null"]},"baslangic":{"type":"string","format":"date"},"sonGun":{"type":"string","format":"date"},"vergiTuru":{"type":["string","null"]},"donem":{"type":["string","null"]},"konu":{"type":["string","null"]},"oncelik":{"type":["integer","null"]}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"durum":{"type":"string","enum":["canli","bayat","gomulu"]},"eksikYil":{"type":"array","items":{"type":"integer"}},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tarih/ay/hafta ya da kapsam geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"GİB'e ulaşılamadı ve gömülü kopyada bu yıl yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/oranlar":{"get":{"tags":["vergi"],"summary":"Gecikme zammı, tecil faizi, yeniden değerleme oranları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"GİB \"Yararlı Bilgiler\" tabloları: gecikme zammı (6183 m.51, aylık %; 20.01.2000'den), tecil faizi (6183 m.48, yıllık %; 25.01.2000'den), yeniden değerleme oranı (VUK mük. m.298; 2010–). `tarih` verilirse yalnız o gün geçerli oran.","parameters":[{"name":"tur","in":"query","schema":{"type":"string","enum":["gecikme-zammi","tecil-faizi","yeniden-degerleme"]},"description":"Yoksa üçü"},{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"description":"Geçerli oran; yoksa bugün ve bütün dönemler"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tarih":{"type":"string"},"gecikmeZammi":{"type":"object","properties":{"birim":{"type":"string"},"dayanakKanun":{"type":"string"},"gecerli":{"$ref":"#/components/schemas/OranDonemi"},"donemler":{"type":"array","items":{"$ref":"#/components/schemas/OranDonemi"}},"kaynakUrl":{"type":"string"},"not":{"type":"string"}}},"tecilFaizi":{"type":"object","properties":{"birim":{"type":"string"},"dayanakKanun":{"type":"string"},"gecerli":{"$ref":"#/components/schemas/OranDonemi"},"donemler":{"type":"array","items":{"$ref":"#/components/schemas/OranDonemi"}},"kaynakUrl":{"type":"string"}}},"yenidenDegerleme":{"type":"object","properties":{"birim":{"type":"string"},"dayanakKanun":{"type":"string"},"kaynakUrl":{"type":"string"},"not":{"type":"string"},"oranlar":{"type":"array","items":{"type":"object","properties":{"yil":{"type":"integer"},"oran":{"type":"number"},"dayanak":{"type":"string"}}}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tur ya da tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/gecikme-zammi":{"get":{"tags":["vergi"],"summary":"Vergi borcuna gecikme zammı hesabı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"6183 s.K. m.51: vadeyi izleyen her tam ay için o dönemin aylık oranı, ay kesri için günlük (oran/30); oran değiştiyse süre bölünür, parça parça döküm. Yaklaşık hesap, kuruş farkı olabilir.","parameters":[{"name":"tutar","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0},"example":10000,"description":"Amme alacağının aslı, TL"},{"name":"vade","in":"query","required":true,"schema":{"type":"string","format":"date"},"example":"2025-06-26","description":"Son ödeme günü (2000-01-20 ve sonrası)"},{"name":"odeme","in":"query","schema":{"type":"string","format":"date"},"description":"Varsayılan bugün"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"anapara":{"type":"number"},"vade":{"type":"string"},"odeme":{"type":"string"},"gecikmeGunu":{"type":"integer"},"gecikmeZammi":{"type":"number"},"toplam":{"type":"number"},"dokum":{"type":"array","items":{"$ref":"#/components/schemas/OranParcasi"}},"yontem":{"type":"string"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar ya da tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"vade 20.01.2000 öncesi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/tecil-faizi":{"get":{"tags":["vergi"],"summary":"Tecil faizi hesabı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"6183 s.K. m.48: yıllık oranla gün esaslı basit faiz (tutar × oran × gün / 36500); oran değiştiyse süre bölünür.","parameters":[{"name":"tutar","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0},"example":50000},{"name":"baslangic","in":"query","required":true,"schema":{"type":"string","format":"date"},"example":"2026-01-15"},{"name":"bitis","in":"query","required":true,"schema":{"type":"string","format":"date"},"example":"2026-07-15"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"anapara":{"type":"number"},"baslangic":{"type":"string"},"bitis":{"type":"string"},"gun":{"type":"integer"},"tecilFaizi":{"type":"number"},"toplam":{"type":"number"},"dokum":{"type":"array","items":{"$ref":"#/components/schemas/OranParcasi"}},"yontem":{"type":"string"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar ya da tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"başlangıç 25.01.2000 öncesi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/yeniden-degerleme":{"get":{"tags":["vergi"],"summary":"Yeniden değerleme oranı ve güncellenmiş tutar (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"VUK mükerrer m.298 oranı; `yil` oranın ait olduğu yıl, ertesi yılın maktu tutarlarına uygulanır. Yeni tutar yuvarlanmaz.","parameters":[{"name":"yil","in":"query","schema":{"type":"integer"},"example":2025,"description":"Varsayılan en son ilan edilen yıl"},{"name":"tutar","in":"query","schema":{"type":"number","minimum":0},"example":1000}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"oran":{"type":"number"},"dayanak":{"type":"string"},"uygulanacakYil":{"type":"integer"},"tutar":{"type":"number"},"yeniTutar":{"type":"number"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"guncelleme":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için oran yok (yanıtta `yillar`)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/ozelge/ara":{"get":{"tags":["vergi"],"summary":"GİB özelgelerinde tam metin arama","security":[{"anahtar":[]}],"x-kredi":1,"description":"Gelir İdaresi'nin yayımladığı özelgelerde (~18.000) konu + metin araması. Türkçe karakter ve büyük/küçük harf ayrımı yok; sözcüklerin ilk 5 harfi eşleşir (\"harcından\" = \"harcı\"), 5 harften kısa sözcük ön ek. Bütün sözcükler geçmeli. Konusunda geçenler önce, sonra yeniden eskiye. En çok 50 sonuç, 20 sayfa. Sonuç boşsa kredi düşmez. Metinler kişisel veri taramasından geçmiştir.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","maxLength":200},"example":"riskli yapı tapu harcı"},{"name":"kanun","in":"query","schema":{"type":"string"},"example":"kdv","description":"Kanun numarası (3065) ya da kısaltma: kdv, gv, kv, vuk, harc, damga, mtv, otv, emlak, veraset, amme, bsmv, smmm"},{"name":"yil","in":"query","schema":{"type":"integer","minimum":1990,"maximum":2100},"description":"Özelge tarihinin yılı"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}},{"name":"sayfa","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":1}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["toplam","sonuclar","kaynak","guncelleme","bayat"],"properties":{"q":{"type":"string"},"kanun":{"type":["string","null"]},"yil":{"type":["integer","null"]},"sayfa":{"type":"integer"},"limit":{"type":"integer"},"toplam":{"type":"integer","description":"Bütün eşleşen özelge sayısı"},"sonuclar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"GİB kayıt kimliği; tam metin için /v1/vergi/ozelge/{id}"},"no":{"type":["string","null"],"description":"Özelge (evrak) sayısı"},"tarih":{"type":["string","null"],"format":"date"},"konu":{"type":"string"},"kanun":{"type":"object","properties":{"no":{"type":["string","null"]},"ad":{"type":["string","null"]}}},"maddeler":{"type":"array","items":{"type":"string"}},"birim":{"type":["string","null"],"description":"Özelgeyi veren vergi dairesi başkanlığı / defterdarlık"},"url":{"type":"string","description":"gib.gov.tr sayfası"},"ozet":{"type":"string","description":"İlk eşleşmenin çevresi"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"q boş / kanun, yil, limit ya da sayfa geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/ozelge/{id}":{"get":{"tags":["vergi"],"summary":"GİB özelgesinin tam metni (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Arama sonucundaki `id` ile tam metin. `maskelenen`: yayın öncesi taramada `*` ile kapatılan bulgu sayısı.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1},"example":39055}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"GİB kayıt kimliği; tam metin için /v1/vergi/ozelge/{id}"},"no":{"type":["string","null"],"description":"Özelge (evrak) sayısı"},"tarih":{"type":["string","null"],"format":"date"},"konu":{"type":"string"},"kanun":{"type":"object","properties":{"no":{"type":["string","null"]},"ad":{"type":["string","null"]}}},"maddeler":{"type":"array","items":{"type":"string"}},"birim":{"type":["string","null"],"description":"Özelgeyi veren vergi dairesi başkanlığı / defterdarlık"},"url":{"type":"string","description":"gib.gov.tr sayfası"},"metin":{"type":"string"},"maskelenen":{"type":"integer"},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":["string","null"],"description":"Son başarılı çekim (ISO 8601); hiç yoksa null"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"id geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"bu id ile özelge yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"arşiv okunamıyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/fatura/dogrula":{"post":{"tags":["fatura"],"summary":"e-Fatura / e-Arşiv UBL-TR belge doğrulama: XSD + GİB şematronu","security":[{"anahtar":[]}],"x-kredi":1,"description":"Gövde ham XML (`Content-Type: application/xml`) ya da JSON `{\"xml\": \"...\", \"tur\": \"efatura|earsiv\"}`, en çok 3 MB. Sırayla: iyi biçimli XML; UBL 2.1 XSD (GİB UBL-TR 1.2.1 paketi; Invoice, CreditNote, DespatchAdvice, ReceiptAdvice, ApplicationResponse); GİB e-Fatura paketindeki UBL-TR şematronunun bütün kuralları (zarf dahil). `tur` verilmezse `ProfileID` EARSIVFATURA ise e-Arşiv (GİB `type=earchive` parametresi) sayılır. İmza (XAdES), mükellef/etiket sorgusu ve tekillik denetlenmez; kapsam yanıtta `kapsam` alanında. Belge saklanmaz, günlüğe yazılmaz. Biçim, şema ya da şematron hatası olan belge de 200 döner (`gecerli: false`) ve 1 kredi düşer.","parameters":[{"name":"tur","in":"query","schema":{"type":"string","enum":["efatura","earsiv"]}}],"requestBody":{"required":true,"content":{"application/xml":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","required":["xml"],"properties":{"xml":{"type":"string"},"tur":{"type":"string","enum":["efatura","earsiv"]}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"gecerli":{"type":"boolean"},"bicim":{"type":"object","properties":{"gecerli":{"type":"boolean"},"hata":{"type":"string"}}},"belge":{"type":"object","properties":{"kok":{"type":"string"},"zarf":{"type":"boolean"},"profil":{"type":["string","null"]},"faturaTipi":{"type":["string","null"]},"sematronTuru":{"type":"string","enum":["efatura","earchive"]}}},"sema":{"type":"object","properties":{"durum":{"type":"string","enum":["gecerli","gecersiz","uygulanmadi","calismadi"]},"hatalar":{"type":"array","items":{"type":"object","properties":{"satir":{"type":["integer","null"]},"mesaj":{"type":"string"}}}},"toplamHata":{"type":"integer"},"neden":{"type":"string"}}},"sematron":{"type":"object","properties":{"durum":{"type":"string","enum":["gecerli","gecersiz","yarida"]},"hatalar":{"type":"array","items":{"type":"object","properties":{"kural":{"type":"string"},"mesaj":{"type":"string"},"konum":{"type":"string"}}}},"toplamHata":{"type":"integer"},"denetlenen":{"type":"integer"},"yarida":{"type":"boolean"},"degerlendirilemeyen":{"type":"array","items":{"type":"object","properties":{"kural":{"type":"string"},"konum":{"type":"string"},"neden":{"type":"string"}}}}}},"kapsam":{"type":"string"},"paket":{"type":"object"},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"400":{"description":"XML gövdesi yok ya da tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"belge 3 MB'tan büyük","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"DOCTYPE içeren belge","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/bordro/hesapla":{"post":{"tags":["bordro"],"summary":"Brütten nete / netten brüte ücret (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Aylık bordro: SGK ve işsizlik işçi payı, kümülatif matrahla gelir vergisi, asgari ücret gelir ve damga vergisi istisnası, damga vergisi, isteğe bağlı otomatik katılım (OKS) kesintisi, işveren payları ve işverene maliyet. `brut` ya da `net` alanlarından tam olarak biri verilir; `net` verilirse brüt aranır. `aylik: true` ile o aydan yıl sonuna 12 aylık tablo ve yıllık toplam. Girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brut":{"type":"number","minimum":0,"description":"Aylık brüt ücret; `net` ile birlikte verilemez"},"net":{"type":"number","minimum":0,"description":"Hedef net ücret; brüt aranır"},"ay":{"type":"integer","minimum":1,"maximum":12,"description":"Varsayılan 1"},"yil":{"type":"integer","example":2026},"kumulatifMatrah":{"type":"number","minimum":0,"description":"Önceki aylardan devreden gelir vergisi matrahı"},"engelIndirimi":{"type":"number","minimum":0,"description":"Aylık engellilik indirimi (TL)"},"engelDerecesi":{"type":"integer","enum":[1,2,3],"description":"GVK m.31 derecesi; tutar tebliğden okunur"},"sgkTuru":{"type":"string","enum":["4a","emekli"],"description":"\"emekli\": sosyal güvenlik destek primi"},"bes":{"type":"boolean","description":"Otomatik katılım çalışan katkı payı kesilsin mi"},"besPuanIndirimi":{"type":"boolean","description":"İşveren SGK payında 5 puanlık indirim (5510 m.81/ı)"},"aylik":{"type":"boolean","description":"12 aylık tablo"}}},"example":{"brut":75000,"ay":1,"yil":2026}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"yon":{"type":"string","enum":["brutten-nete","netten-brute"]},"sgkTuru":{"type":"string"},"brut":{"type":"number"},"sgkMatrahi":{"type":"number"},"sgkIsci":{"type":"number"},"issizlikIsci":{"type":"number"},"gelirVergisiMatrahi":{"type":"number"},"kumulatifMatrah":{"type":"number"},"hesaplananGelirVergisi":{"type":"number"},"asgariUcretGelirVergisiIstisnasi":{"type":"number"},"gelirVergisi":{"type":"number"},"hesaplananDamgaVergisi":{"type":"number"},"asgariUcretDamgaIstisnasi":{"type":"number"},"damgaVergisi":{"type":"number"},"besKesintisi":{"type":"number"},"kesintiToplami":{"type":"number"},"net":{"type":"number"},"isverenSgk":{"type":"number"},"isverenIssizlik":{"type":"number"},"isvereneMaliyet":{"type":"number"},"aylik":{"type":"array","items":{"type":"object"},"description":"`aylik: true` verildiyse 12 aylık tablo"},"yillikToplam":{"type":"object"},"parametreler":{"type":"object"},"kaynak":{"type":"object"},"not":{"type":"string"}}}}}},"400":{"description":"girdi geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için parametre yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/bordro/tazminat":{"post":{"tags":["bordro"],"summary":"Kıdem, ihbar ve yıllık izin ücreti (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Kıdem tazminatı (1475 s.K. m.14, dönem tavanıyla sınırlı, yalnız damga vergisi kesilir), ihbar tazminatı (4857 m.17 önelleri; gelir + damga) ve isteğe bağlı kullanılmayan yıllık izin ücreti (4857 m.53/59; SGK + gelir + damga). `cikisNedeni` hangi kalemin doğduğunu belirler. Girdi saklanmaz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["iseGiris","isCikis","brutUcret"],"properties":{"iseGiris":{"type":"string","format":"date"},"isCikis":{"type":"string","format":"date"},"brutUcret":{"type":"number","minimum":0,"description":"Aylık çıplak brüt ücret"},"ekOdemeler":{"type":"number","minimum":0,"description":"Giydirilmiş ücrete eklenen aylık düzenli ödemeler"},"cikisNedeni":{"type":"string","enum":["isveren_fesih","isveren_hakli_fesih","isci_istifa","isci_hakli_fesih","emeklilik","askerlik","evlilik","olum","belirli_sure_bitimi"],"description":"Varsayılan isveren_fesih"},"kullanilmayanIzinGun":{"type":"integer","minimum":0,"maximum":1000},"kumulatifMatrah":{"type":"number","minimum":0},"tavanTutari":{"type":"number","minimum":0,"description":"Kıdem tavanı tabloda yoksa elle"}}},"example":{"iseGiris":"2015-03-01","isCikis":"2026-09-30","brutUcret":60000}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"cikisNedeni":{"type":"string"},"kidemGun":{"type":"integer"},"kidemYili":{"type":"object","properties":{"yil":{"type":"integer"},"ay":{"type":"integer"},"gun":{"type":"integer"}}},"giydirilmisAylikUcret":{"type":"number"},"giydirilmisGunlukUcret":{"type":"number"},"kidemTavani":{"type":"object"},"hak":{"type":"object","properties":{"kidem":{"type":"boolean"},"ihbar":{"type":"boolean"},"aciklama":{"type":"string"}}},"kidem":{"type":["object","null"]},"ihbar":{"type":["object","null"]},"yillikIzin":{"type":["object","null"]},"toplamNet":{"type":"number"},"kaynak":{"type":"object"},"not":{"type":"string"}}}}}},"400":{"description":"tarih ya da tutar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için parametre ya da kıdem tavanı yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/bordro/asgari-ucret":{"get":{"tags":["bordro"],"summary":"Asgari ücret tarihçesi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"2016'dan bugüne asgari ücret dönemleri: brüt, net, işçi ve işveren payları, işverene maliyet (indirimsiz ve 5 puan indirimli). Net tutarlar 2022 öncesinde AGİ dahildir. Kaynak her dönemde Asgari Ücret Tespit Komisyonu Kararı; Resmî Gazete tarihi doğrulanamayan dönemlerde `rg` null.","parameters":[{"name":"yil","in":"query","schema":{"type":"integer"},"example":2026,"description":"Verilmezse tüm tarihçe"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yillar":{"type":"array","items":{"type":"integer"}},"donemler":{"type":"array","items":{"type":"object","properties":{"donem":{"type":"string"},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"},"brutAylik":{"type":"number"},"brutGunluk":{"type":"number"},"netAylik":{"type":"number"},"isciSgkOrani":{"type":"number"},"isciIssizlikOrani":{"type":"number"},"isverenSgkOrani":{"type":"object","properties":{"indirimsiz":{"type":"number"},"besPuanIndirimli":{"type":"number"}}},"isverenIssizlikOrani":{"type":"number"},"isvereneMaliyet":{"type":"object","properties":{"indirimsiz":{"type":"number"},"besPuanIndirimli":{"type":"number"}}}}}},"not":{"type":"string"},"aciklama":{"type":"string"}}}}}},"400":{"description":"yil geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için asgari ücret kaydı yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ceza/trafik":{"get":{"tags":["ceza"],"summary":"2026 trafik cezası tutarları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Tutarların çoğu 7574 sayılı Kanunla (RG 27.02.2026 / 33181) yeniden belirlendi; yeniden değerleme sonucu değildir; kalan tutarlar ve ceza puanları EGM 2026 Trafik İdari Para Ceza Rehberinden. `puanCetveli` Karayolları Trafik Yönetmeliği Ek-35 (128 satır); 7574 ile yeniden yazılan maddelere dayanan satırlar `uyari` taşır.","parameters":[{"name":"madde","in":"query","schema":{"type":"string"},"description":"KTK madde/fıkra ön eki","example":"47/1-b"},{"name":"ara","in":"query","schema":{"type":"string","minLength":2},"description":"Başlık, not ve etiketlerde serbest metin","example":"kirmizi isik"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"adet":{"type":"integer"},"belirsizSayisi":{"type":"integer"},"cezalar":{"type":"array","items":{"$ref":"#/components/schemas/TrafikCezasi"}},"puanSistemi":{"type":"object","description":"KTK m.118 eşik ve kademeler"},"puanCetveli":{"type":"object","description":"KTY Ek-35 ceza puanı cetveli; madde/ara süzgeci burada da uygulanır","properties":{"adet":{"type":"integer"},"uyariSayisi":{"type":"integer"},"satirlar":{"type":"array","items":{"type":"object","properties":{"madde":{"type":"string"},"puan":{"type":"integer","enum":[5,10,15,20]},"ihlal":{"type":"string"},"degisiklik":{"type":"string"},"uyari":{"type":"string","description":"7574 sonrası atıf kanunla örtüşmüyor"}}}},"kaynak":{"$ref":"#/components/schemas/ResmiKaynak"}}},"indirim":{"type":"object","properties":{"oran":{"type":"number"},"sureGun":{"type":"integer"},"aciklama":{"type":"string"}}},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"ara en az 2 karakter olmalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ceza/trafik/indirim":{"post":{"tags":["ceza"],"summary":"Peşin ödeme indirimi ve gecikme faizi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Bir ay içinde ödemede %25 indirim (5326 s.K. m.17/6); sonrasında KTK m.115 uyarınca aylık %5 faiz, ay kesri tam ay, tavan cezanın iki katı.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tutar"],"properties":{"tutar":{"type":"number","exclusiveMinimum":0,"description":"Ceza aslı, TL"},"odemeGunu":{"type":"integer","minimum":0,"maximum":3650,"description":"Tebliğden itibaren geçen gün; varsayılan 0"}}},"example":{"tutar":5000,"odemeGunu":10}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tutar":{"type":"number"},"odemeGunu":{"type":"integer"},"indirimli":{"type":"boolean"},"indirim":{"type":"number"},"gecikmeAy":{"type":"integer"},"faiz":{"type":"number"},"tavanUygulandi":{"type":"boolean"},"odenecek":{"type":"number"},"kural":{"type":"object","properties":{"indirimOrani":{"type":"number"},"odemeSuresiGun":{"type":"integer"},"aylikFaiz":{"type":"number"},"aciklama":{"type":"string"}}},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar ya da odemeGunu geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/harc":{"get":{"tags":["harc"],"summary":"2026 harç ve değerli kâğıt tarifeleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"2026 maktu harçlar yeniden değerleme oranıyla (%25,49) değil, 10783 sayılı Cumhurbaşkanı Kararıyla %18,95 oranında artırıldı. `tur` verilmezse bütün gruplar döner.","parameters":[{"name":"tur","in":"query","schema":{"type":"string","enum":["pasaport","ehliyet","kimlik","noter","tapu","mahkeme","calisma-izni"]}},{"name":"sure","in":"query","schema":{"type":"string","enum":["6ay","1yil","2yil","3yil","10yil","suresiz"]},"description":"Pasaport ve çalışma izninde"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"turler":{"type":"array","items":{"type":"string"}},"sureler":{"type":"array","items":{"type":"string"}},"adet":{"type":"integer"},"belirsizSayisi":{"type":"integer"},"gruplar":{"type":"array","items":{"type":"object","properties":{"tur":{"type":"string"},"baslik":{"type":"string"},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"kalemler":{"type":"array","items":{"$ref":"#/components/schemas/HarcKalemi"}},"not":{"type":"string"}}}},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"},"description":"Döndürülen grupların kaynakları, tekil"},"guncelleme":{"type":"string","format":"date"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"tur ya da sure bilinmiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/tapu":{"post":{"tags":["vergi"],"summary":"Tapu harcı hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Alıcı ve satıcıdan ayrı ayrı binde 20; matrah emlak vergisi değerinden az olamaz (Harçlar K. m.63).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["satisBedeli"],"properties":{"satisBedeli":{"type":"number","exclusiveMinimum":0},"emlakVergisiDegeri":{"type":"number","minimum":0},"taraf":{"type":"string","enum":["alici","satici","ikisi"],"description":"Varsayılan \"ikisi\""},"indirimli":{"type":"boolean","description":"Oran indirimi varsayımı (binde 15); 2026 yılında yürürlükte indirim yok"}}},"example":{"satisBedeli":4500000,"taraf":"alici"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"matrah":{"type":"number"},"matrahKaynagi":{"type":"string"},"binde":{"type":"number"},"taraf":{"type":"string"},"aliciHarci":{"type":"number"},"saticiHarci":{"type":"number"},"toplamHarc":{"type":"number"},"odenecek":{"type":"number"},"asgariUygulandi":{"type":"boolean"},"donerSermaye":{"type":"object","description":"Harç değil; yöresel katsayı yayımlanmadığı için tutar hesaplanmaz"},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"aciklama":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"satisBedeli, taraf ya da indirimli geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/emlak":{"post":{"tags":["vergi"],"summary":"Emlak vergisi ve değerli konut vergisi (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Mesken binde 1, işyeri binde 2, arsa binde 3, arazi binde 1; büyükşehirde iki katı (1319 s.K. m.8 ve m.18).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["rayicDeger","tur"],"properties":{"rayicDeger":{"type":"number","exclusiveMinimum":0,"description":"Belediyenin belirlediği vergi değeri, TL"},"tur":{"type":"string","enum":["konut","isyeri","arsa","arazi"]},"buyuksehir":{"type":"boolean"},"yil":{"type":"integer","description":"Şimdilik yalnız 2026"}}},"example":{"rayicDeger":3200000,"tur":"konut","buyuksehir":true}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"yil":{"type":"integer"},"tur":{"type":"string"},"turAdi":{"type":"string"},"rayicDeger":{"type":"number"},"buyuksehir":{"type":"boolean"},"binde":{"type":"number"},"vergi":{"type":"number"},"taksitler":{"type":"array","items":{"type":"object","properties":{"sira":{"type":"integer"},"tutar":{"type":"number"},"donem":{"type":"string"}}}},"degerliKonutVergisi":{"type":"object","properties":{"tabi":{"type":"boolean"},"esik":{"type":"number"},"matrah":{"type":"number"},"vergi":{"type":"number"},"binde":{"type":["number","null"]},"not":{"type":"string"}}},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"aciklama":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"rayicDeger, tur ya da buyuksehir geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"yıl için oran ve had yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/damga":{"post":{"tags":["vergi"],"summary":"Damga vergisi hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Konut kira sözleşmesi istisnadır (`tur: \"kira-konut\"`). 2026 azami tutar 29.115.961,10 TL (488 s.K. m.14).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tur","tutar"],"properties":{"tur":{"type":"string","enum":["sozlesme","kira","kira-konut","ihale","ihale-sozlesmesi","maas","kefalet","fesihname","ikinci-el-arac"]},"tutar":{"type":"number","minimum":0,"description":"Kirada sözleşme süresinin tamamına ait bedel"}}},"example":{"tur":"sozlesme","tutar":250000}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string"},"ad":{"type":"string"},"matrah":{"type":"number"},"binde":{"type":"number"},"hamVergi":{"type":"number"},"azami":{"type":"number"},"azamiUygulandi":{"type":"boolean"},"vergi":{"type":"number"},"istisna":{"type":"boolean"},"dayanak":{"type":"string"},"turler":{"type":"array","items":{"type":"string"}},"azamiTutar":{"type":"number"},"maktuKalemler":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"tutar":{"type":"number"},"dayanak":{"type":"string"}}}},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"aciklama":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tur ya da tutar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hukuk/faiz":{"get":{"tags":["hukuk"],"summary":"Yasal faiz ve ticari temerrüt faizi oranı (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"3095 sayılı Kanun: m.1 kanuni faiz (5335 %12, BKK 2005/9831 %9, CBK 8485 %24; 7589 ile 31.07.2026'dan TCMB reeskont oranının %80'i) ve m.2/2 ticari temerrüt faizi (TCMB kısa vadeli avans oranı, kanuni faizden yüksekse). Yarıyıl kuralı: 30 Haziran oranı 31 Aralık'takinden 5 puan ya da daha çok farklıysa ikinci yarıda o. `tarih` verilmezse bütün dönemler. Kapsam 01.05.2005–31.12.2026. TCMB verisi içerir (`not`). Hukuki tavsiye değildir.","parameters":[{"name":"tarih","in":"query","schema":{"type":"string","format":"date"},"example":"2025-09-01"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme","uyari","not"],"properties":{"tarih":{"type":"string"},"yasal":{"type":"object","properties":{"oran":{"type":"number","description":"Yıllık %"},"dayanak":{"type":"object","properties":{"ad":{"type":"string"},"rg":{"type":"string"},"url":{"type":"string"}}},"tcmbOrani":{"type":"object","properties":{"tur":{"enum":["reeskont","avans"]},"tarih":{"type":"string"},"oran":{"type":"number"}}},"avansOrani":{"type":"number"},"yasalOrani":{"type":"number"},"aciklama":{"type":"string"}}},"ticari":{"type":"object","properties":{"oran":{"type":"number","description":"Yıllık %"},"dayanak":{"type":"object","properties":{"ad":{"type":"string"},"rg":{"type":"string"},"url":{"type":"string"}}},"tcmbOrani":{"type":"object","properties":{"tur":{"enum":["reeskont","avans"]},"tarih":{"type":"string"},"oran":{"type":"number"}}},"avansOrani":{"type":"number"},"yasalOrani":{"type":"number"},"aciklama":{"type":"string"}}},"donem":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"}}},"adet":{"type":"integer"},"donemler":{"type":"array","items":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"},"yasal":{"type":"number"},"ticari":{"type":"number"},"avans":{"type":"number"},"yasalDayanak":{"type":"string"},"ticariDayanak":{"type":"string"}}}},"aciklama":{"type":"object"},"kapsam":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"}}},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"tarih geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"tarih kapsam dışında (oran henüz belirlenmedi ya da 2005 öncesi)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"post":{"tags":["hukuk"],"summary":"Yasal / ticari temerrüt faizi hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Basit faiz: anapara × oran × gün / 365, oran değiştiği günlerde parçalanır; başlangıç günü sayılmaz, bitiş sayılır. Mürekkep faiz yok (3095 m.3). Sözleşme faizi ve yabancı para borcu hesaba girmez. Hukuki tavsiye değildir.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["anapara","baslangic","bitis"],"properties":{"anapara":{"type":"number","exclusiveMinimum":0,"description":"TL"},"baslangic":{"type":"string","format":"date","description":"Temerrüt / faiz başlangıç günü"},"bitis":{"type":"string","format":"date","description":"Ödeme ya da hesap günü (en geç 2026-12-31)"},"tur":{"type":"string","enum":["yasal","ticari"],"description":"Varsayılan yasal"}}},"example":{"anapara":100000,"baslangic":"2025-01-15","bitis":"2026-03-01","tur":"ticari"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["faiz","toplam","parcalar","kaynak","guncelleme","uyari"],"properties":{"tur":{"type":"string"},"anapara":{"type":"number"},"baslangic":{"type":"string"},"bitis":{"type":"string"},"gun":{"type":"integer"},"faiz":{"type":"number"},"toplam":{"type":"number"},"parcalar":{"type":"array","items":{"type":"object","properties":{"baslangic":{"type":"string"},"bitis":{"type":"string"},"gun":{"type":"integer"},"oran":{"type":"number"},"faiz":{"type":"number"}}}},"aciklama":{"type":"string"},"varsayimlar":{"type":"array","items":{"type":"string"}},"kapsam":{"type":"object"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"},"not":{"type":"string"}}}}}},"400":{"description":"anapara, tarih ya da tur geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"tarih aralığı kapsam dışında","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hukuk/avukatlik-ucreti":{"get":{"tags":["hukuk"],"summary":"Avukatlık Asgari Ücret Tarifesi kalemleri (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"AAÜT 2025–2026 (RG 04.11.2025/33067, değişiklik 08.01.2026/33131): kalemler, nispi dilimler, hesap kuralları. Hukuki tavsiye değildir.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"tüketici","description":"Kalem adında arama (2–100 karakter)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"adet":{"type":"integer"},"kalemler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"bolum":{"type":"string"},"ad":{"type":"string"},"tutar":{"type":["number","null"]},"birim":{"type":"string"},"not":{"type":"string"}}}},"dilimler":{"type":"array","items":{"type":"object","properties":{"ustSinir":{"type":["number","null"]},"oran":{"type":"number"}}}},"kurallar":{"type":"array","items":{"type":"object","properties":{"madde":{"type":"string"},"metin":{"type":"string"}}}},"hesapTurleri":{"type":"array","items":{"type":"string"}},"sonrakiDonem":{"type":"string"},"belirsizSayisi":{"type":"integer"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"ara geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"post":{"tags":["hukuk"],"summary":"Asgari avukatlık ücreti hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"`dava`: nispi dilimlerle mahkemenin maktu tabanından büyüğü (md. 13/1), hüküm altına alınan miktarı geçemez (13/2). `icra`: 56.250 TL'ye kadar maktu 9.000 TL, üstü nispi (md. 11). `arabuluculuk`: md. 16/2. KDV ve stopaj dahil değil. Hukuki tavsiye değildir.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["deger"],"properties":{"deger":{"type":"number","exclusiveMinimum":0,"description":"Dava değeri / takip miktarı, TL"},"tur":{"type":"string","enum":["dava","icra","arabuluculuk"],"description":"Varsayılan \"dava\""},"mahkeme":{"type":"string","description":"İkinci kısım ikinci bölüm kodu; varsayılan \"2.2.10\" (asliye hukuk)"},"onIncelemedenOnce":{"type":"boolean"},"suresindeOdendi":{"type":"boolean"},"anlasma":{"type":"boolean"}}},"example":{"deger":1000000,"tur":"dava","mahkeme":"2.2.10"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string"},"deger":{"type":"number"},"nispi":{"type":"number"},"ucret":{"type":"number"},"dilimler":{"type":"array","items":{"type":"object"}},"maktu":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"tutar":{"type":"number"}}},"adimlar":{"type":"array","items":{"type":"string"}},"maddeler":{"type":"array","items":{"type":"string"}},"not":{"type":"string"},"belirsizSayisi":{"type":"integer"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"deger, tur ya da mahkeme geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hukuk/noter-ucreti":{"get":{"tags":["hukuk"],"summary":"Noterlik ücret tarifesi ve noter harçları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"2026 Noterlik Ücret Tarifesi (RG 30.12.2025/33123, değişiklik 26.08.2026/33352) ve 492 s. Kanun (2) sayılı tarife 2026 tutarları (HKGT 98). Hukuki tavsiye değildir.","parameters":[{"name":"ara","in":"query","schema":{"type":"string"},"example":"vekaletname","description":"Kalem adında arama (2–100 karakter)"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"adet":{"type":"integer"},"kalemler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"bolum":{"type":"string"},"ad":{"type":"string"},"tutar":{"type":["number","null"]},"birim":{"type":"string"},"not":{"type":"string"},"belirsiz":{"type":"boolean"}}}},"yapi":{"type":"string"},"vergiNotu":{"type":"object"},"islemTurleri":{"type":"array","items":{"type":"string"}},"sonrakiDonem":{"type":"string"},"belirsizSayisi":{"type":"integer"},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"ara geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"post":{"tags":["hukuk"],"summary":"Noter harcı ve ücreti hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Harç + noter ücreti (harcın %30'u, en az 58,82 TL) + yazı ücreti + KDV (belirsiz). Taşınmaz satışında ücret binde 1 (500–4.000 TL). Damga vergisi dahil değil (`/v1/vergi/damga`). Hukuki tavsiye değildir.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["islem"],"properties":{"islem":{"type":"string","enum":["degerli","degersiz","vekaletname","ihtarname","tasinmaz_satis","arac_satis"]},"deger":{"type":"number","exclusiveMinimum":0,"description":"degerli, tasinmaz_satis, arac_satis için TL"},"imza":{"type":"integer","minimum":1,"maximum":1000},"tebligNushasi":{"type":"integer","minimum":1,"maximum":1000},"sayfa":{"type":"integer","minimum":1,"maximum":1000},"kdv":{"type":"boolean","description":"Varsayılan true"}}},"example":{"islem":"degerli","deger":500000,"imza":2,"sayfa":9}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"islem":{"type":"string"},"harc":{"type":"object","properties":{"ad":{"type":"string"},"tutar":{"type":"number"},"hesap":{"type":"string"},"belirsiz":{"type":"boolean"},"not":{"type":"string"}}},"noterUcreti":{"type":"object"},"yaziUcreti":{"type":"object"},"kdv":{"type":"object","nullable":true},"toplam":{"type":"number"},"belirsiz":{"type":"boolean"},"belirsizSayisi":{"type":"integer"},"notlar":{"type":"array","items":{"type":"string"}},"kaynak":{"type":"object"},"guncelleme":{"type":"string","format":"date"},"uyari":{"type":"string"}}}}}},"400":{"description":"islem, deger ya da sayı alanları geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/vergi/veraset":{"post":{"tags":["vergi"],"summary":"Veraset ve intikal vergisi hesapla (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"İstisnayı düşüp artan oranlı tarifeyi dilim dilim uygular (7338 s.K.). İstisna her mirasçının hissesine ayrı uygulanır.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tutar"],"properties":{"tutar":{"type":"number","exclusiveMinimum":0,"description":"Mirasçıya isabet eden hisse, TL"},"tur":{"type":"string","enum":["veraset","ivazsiz"],"description":"Varsayılan \"veraset\""},"yakinlik":{"type":"string","enum":["furu","es-furu-var","es-furu-yok","diger"],"description":"Varsayılan \"diger\""}}},"example":{"tutar":6000000,"tur":"veraset","yakinlik":"furu"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"tur":{"type":"string"},"yakinlik":{"type":["string","null"]},"tutar":{"type":"number"},"istisna":{"type":"number"},"istisnaAdi":{"type":"string"},"matrah":{"type":"number"},"dilimler":{"type":"array","items":{"type":"object","properties":{"dilim":{"type":"string"},"oran":{"type":"number"},"matrah":{"type":"number"},"vergi":{"type":"number"}}}},"vergi":{"type":"number"},"efektifOran":{"type":"number"},"taksit":{"type":"object","properties":{"sayi":{"type":"integer"},"tutar":{"type":"number"},"donem":{"type":"string"}}},"tarife":{"type":"array","items":{"type":"object"}},"istisnalar":{"type":"object"},"beyanSuresi":{"type":"string"},"gecerlilik":{"$ref":"#/components/schemas/Gecerlilik"},"kaynak":{"type":"array","items":{"$ref":"#/components/schemas/ResmiKaynak"}},"guncelleme":{"type":"string","format":"date"},"aciklama":{"type":"string"},"not":{"type":"string"},"uyari":{"type":"string"}}}}}},"400":{"description":"tutar, tur ya da yakinlik geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kayit":{"post":{"tags":["hesap"],"summary":"Hesap aç, ilk anahtarı al","x-kredi":0,"description":"IP başına saatte 5 kayıt. Anahtar yanıtta bir kez döner, bir daha gösterilmez.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"},"ad":{"type":"string"},"kaynak":{"type":"string","pattern":"^[a-z0-9._-]{1,40}$","description":"Nereden geldiniz (ör. \"hn\"); isteğe bağlı"}}}}}},"responses":{"201":{"description":"Hesap açıldı","content":{"application/json":{"schema":{"type":"object","properties":{"hesapId":{"type":"string"},"email":{"type":"string"},"plan":{"type":"string"},"anahtar":{"type":"string"},"uyari":{"type":"string"},"dogrulama":{"type":"string","enum":["gonderildi","dogrulanmis","hiz_siniri","gonderilemedi"],"description":"Doğrulama e-postasının durumu (e-posta doğrulaması açıksa)"},"baslangic":{"type":"object","properties":{"ornek":{"type":"string"}}}}}}}},"400":{"description":"Geçersiz e-posta ya da kaynak","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"E-posta zaten kayıtlı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kayıt hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/anahtar":{"post":{"tags":["hesap"],"summary":"Yeni anahtar üret","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"En fazla 10 aktif anahtar. Eski anahtar iptal edilmez. Panel oturumuyla da çağrılabilir.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ad":{"type":"string"}}}}}},"responses":{"201":{"description":"Üretildi","content":{"application/json":{"schema":{"type":"object","properties":{"anahtar":{"type":"string"},"onek":{"type":"string"},"uyari":{"type":"string"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Anahtar sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"get":{"tags":["hesap"],"summary":"Anahtarları listele (yalnız önekler)","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"anahtarlar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"onek":{"type":"string"},"ad":{"type":["string","null"]},"aktif":{"type":"boolean"},"son_kullanim":{"type":["string","null"]},"olusturma":{"type":"string"}}}}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/anahtar/{id}":{"delete":{"tags":["hesap"],"summary":"Anahtarı iptal et","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"iptal":{"type":"boolean"},"id":{"type":"string"}}}}}},"400":{"description":"Geçersiz id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Anahtar bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Son aktif anahtar iptal edilemez (API anahtarıyla çağrıldığında; panel oturumunda sınır yok)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kullanim":{"get":{"tags":["hesap"],"summary":"Kalan kredi","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"API anahtarıyla ya da panel oturumuyla. Panel oturumu kullanım kaydına yazılmaz. Aylık plan açıkken (`plan`, `paket`, `sinirlar`, `askida` alanları) `aylik` plan kotası + ücretsiz kotadır (`kaynak: \"plan+ucretsiz\"`; parçalar `plan` ve `aylik.ucretsiz`), plan yoksa yalnız ücretsiz takvim ayı kotası. Harcama sırası: plan kotası → ücretsiz kota → paket kredisi (`ekKredi`, süresi dolmamış).","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"aylik":{"type":"object","properties":{"kaynak":{"enum":["plan+ucretsiz","ucretsiz"]},"limit":{"type":"integer"},"harcanan":{"type":"integer"},"kalan":{"type":"integer"},"not":{"type":"string"},"ucretsiz":{"type":"object","properties":{"limit":{"type":"integer"},"harcanan":{"type":"integer"},"kalan":{"type":"integer"},"not":{"type":"string"}}}}},"plan":{"type":["object","null"],"properties":{"kod":{"type":"string"},"ad":{"type":"string"},"limit":{"type":"integer"},"harcanan":{"type":"integer"},"kalan":{"type":"integer"},"donemBitis":{"type":"string","format":"date-time"},"iptalIstendi":{"type":["string","null"],"format":"date-time"}}},"ekKredi":{"type":"integer"},"paket":{"type":"object","properties":{"kalan":{"type":"integer"},"sonrakiBitis":{"type":["string","null"],"format":"date-time"},"sonrakiBitisteKalan":{"type":["integer","null"]}}},"toplamKalan":{"type":"integer"},"sinirlar":{"type":"object","properties":{"dakika":{"type":"integer"},"gunlukTavan":{"type":["integer","null"]},"not":{"type":"string"}}},"askida":{"type":"boolean"}}}}}},"401":{"description":"Anahtar geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"403":{"description":"Hesap askıya alınmış","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Hesap bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/toplu":{"post":{"tags":["sistem"],"summary":"Genel toplu istek (en çok 50 alt istek)","security":[{"anahtar":[]}],"x-kredi":0,"description":"Birden çok `/v1/*` çağrısını tek HTTP isteğinde yapar (5 eş zamanlı). Her alt istek aynı anahtarla, kendi fiyatıyla kredi düşer ve dakika sınırına ayrı sayılır; toplu ucun kendisi 0 kredi. Alt isteğin hatası yalnız kendi `durum`unda görünür, bütün yanıt 200 döner. Hesap, anahtar, ödeme, giriş, bildirim ve demo uçları alt istek olamaz. `X-Kalan-Kredi` alt isteklerden sonraki değerdir. Adres, IBAN, TCKN/VKN/telefon uçlarının kendi dizi girdisi (1.000'e kadar) bu uçtan daha verimlidir.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["istekler"],"properties":{"istekler":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","required":["yol"],"properties":{"yol":{"type":"string","description":"`/v1/` ile başlar; sorgu dizgesi içerebilir"},"yontem":{"enum":["GET","POST"],"description":"Yoksa: govde varsa POST, yoksa GET"},"govde":{"description":"POST gövdesi (JSON)"},"sorgu":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"kimlik":{"type":"string","maxLength":100,"description":"Sonuçta aynen döner"}}}}}},"example":{"istekler":[{"yol":"/v1/il/34"},{"yol":"/v1/iban/dogrula","govde":{"iban":"TR330006100519786457841326"},"kimlik":"musteri-7"}]}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"sonuclar":{"type":"array","description":"Girdi sırasıyla","items":{"type":"object","properties":{"kimlik":{"type":"string"},"durum":{"type":"integer"},"govde":{"description":"Alt uç yanıtı (JSON ya da metin)"}}}},"ozet":{"type":"object","properties":{"toplam":{"type":"integer"},"basarili":{"type":"integer"},"hatali":{"type":"integer"},"kalanKredi":{"type":"integer"}}}}}}}},"400":{"description":"Geçersiz alt istek (sıra numarasıyla)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"413":{"description":"50'den fazla alt istek","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/paketler":{"get":{"tags":["odeme"],"summary":"Kredi paketleri ve fiyatlar","x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"paketler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"kredi":{"type":"integer"},"fiyat":{"type":"object","properties":{"TRY":{"type":"number"},"USD":{"type":"number"}}}}}},"gecerlilikAy":{"type":"integer","description":"Paket kredisi satın alındığı günden bu kadar ay geçerli"},"sinirlar":{"type":"object","properties":{"dakika":{"type":"integer"},"gunlukTavan":{"type":"integer"}},"description":"Plansız, paket bakiyeli hesabın hesap başına sınırları"},"not":{"type":"string"}}}}}}}}},"/v1/planlar":{"get":{"tags":["odeme"],"summary":"Aylık planlar ve fiyatlar","x-kredi":0,"description":"Plan kotası dönem başında yenilenir, devretmez; ücretsiz aylık kota plana eklenir. Fiyatlar KDV dahil. Satın alma `POST /v1/abonelik` (açıldığında).","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"planlar":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"string"},"ad":{"type":"string"},"aylikKredi":{"type":"integer"},"fiyat":{"type":"object","properties":{"TRY":{"type":"number"},"USD":{"type":"number"}}},"sinirlar":{"type":"object","properties":{"dakika":{"type":"integer"},"gunlukTavan":{"type":"integer"}}}}}},"not":{"type":"string"}}}}}}}}},"/v1/odeme":{"post":{"tags":["odeme"],"summary":"Ödeme başlat","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"TRY → PayTR, USD → Polar. Sağlayıcı yapılandırılmamışsa 503. Paket kredisi 12 ay geçerli. `faturaUlke` (ISO 3166-1 alfa-2) ilk ödemede hesaba yazılır; Türkiye'ye faturalı hesap yalnız TRY öder (400 `TR_YALNIZ_TRY`).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["paket"],"properties":{"paket":{"type":"string"},"paraBirimi":{"enum":["TRY","USD"]},"faturaUlke":{"type":"string","pattern":"^[A-Z]{2}$"}}},"example":{"paket":"kucuk","paraBirimi":"TRY","faturaUlke":"TR"}}}},"responses":{"201":{"description":"Ödeme sayfası hazır","content":{"application/json":{"schema":{"type":"object","properties":{"odemeId":{"type":"string"},"paket":{"type":"string"},"kredi":{"type":"integer"},"odemeUrl":{"type":"string"}}}}}},"400":{"description":"Geçersiz paket, para birimi ya da ülke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"403":{"description":"Hesap askıya alınmış","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Hesap bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"502":{"description":"Sağlayıcı hatası","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Bu para birimiyle ödeme kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"get":{"tags":["odeme"],"summary":"Ödeme geçmişi","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"odemeler":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/mcp":{"post":{"tags":["mcp"],"summary":"Uzak MCP (Streamable HTTP, stateless)","security":[{},{"anahtar":[]}],"description":"Model Context Protocol JSON-RPC ucu. Anahtar yalnız `tools/call` için gerekli; `initialize`, `tools/list` ve `ping` anahtarsız ve ücretsiz. Anahtarsız tek `tools/call` 401 anlamında `isError` döner; içinde `tools/call` olan anahtarsız toplu istek 401. Kredi, çağrılan aracın REST ucu kadar düşer. Yanıt JSON, SSE yok. `Accept: application/json, text/event-stream` gerekli. Giriş açıkken (OAuth) `ak_live_…` anahtarının yanında OAuth erişim belirteci (`ak_oat_…`) de kabul edilir; kimliksiz `tools/call` HTTP 401 ve `WWW-Authenticate: Bearer resource_metadata=\"…\"` döner, geçersiz ya da süresi dolmuş belirteç 401 `error=\"invalid_token\"`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"JSON-RPC 2.0 mesajı"},"example":{"jsonrpc":"2.0","id":1,"method":"tools/list"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","description":"JSON-RPC 2.0 yanıtı"}}}},"400":{"description":"Geçersiz JSON (JSON-RPC -32700)","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Anahtarsız toplu istekte tools/call","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/demo/adres":{"post":{"tags":["demo"],"summary":"Anahtarsız adres çözümleme (tanıtım)","x-kredi":0,"description":"Tanıtım sayfasındaki canlı kutu için. Anahtar istemez, kredi düşmez. Yalnız tek adres, en fazla 200 karakter. IP başına 10 dakikada 20 istek; aşılınca 429 ve `Retry-After`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["q"],"properties":{"q":{"type":"string","maxLength":200}}},"example":{"q":"kadikoy moda cad 14"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdresSonucu"}}}},"400":{"description":"q eksik ya da çok uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/iban":{"post":{"tags":["demo"],"summary":"Anahtarsız IBAN doğrulama (tanıtım)","x-kredi":0,"description":"Tek IBAN; hesap numarası yanıtta yok. Anahtar istemez, kredi düşmez; yanıt kırpılmış. Bütün veri demoları IP başına 10 dakikada 20 isteği paylaşır; aşılınca 429 ve `Retry-After`. Tamamı için ücretsiz anahtarla gerçek uç.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["iban"],"properties":{"iban":{"type":"string","maxLength":64}}},"example":{"iban":"TR33 0006 1005 1978 6457 8413 26"}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme"],"properties":{"gecerli":{"type":"boolean"},"bicimli":{"type":["string","null"]},"banka":{"type":["object","null"]},"hata":{"type":["string","null"]},"aciklama":{"type":["string","null"]},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"400":{"description":"iban eksik ya da çok uzun","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/eczane":{"get":{"tags":["demo"],"summary":"Anahtarsız nöbetçi eczane (tanıtım, ilk 5)","x-kredi":0,"description":"İl ve ilçe zorunlu; en çok 5 eczane, koordinat yok (`toplam` bütün listenin sayısı). Anahtar istemez, kredi düşmez; yanıt kırpılmış. Bütün veri demoları IP başına 10 dakikada 20 isteği paylaşır; aşılınca 429 ve `Retry-After`. Tamamı için ücretsiz anahtarla gerçek uç.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"İzmir"},{"name":"ilce","in":"query","required":true,"schema":{"type":"string"},"example":"Bornova"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme"],"properties":{"il":{"type":["string","null"]},"ilce":{"type":["string","null"]},"nobetTarihi":{"type":["string","null"]},"toplam":{"type":"integer"},"eczaneler":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"ad":{"type":"string"},"mahalle":{"type":["string","null"]},"adres":{"type":"string"},"telefon":{"type":["string","null"]}}}},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"bayat":{"type":"boolean"},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"400":{"description":"il ya da ilce eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"Kapsam dışı il","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/akaryakit":{"get":{"tags":["demo"],"summary":"Anahtarsız akaryakıt fiyatı (tanıtım)","x-kredi":0,"description":"İlin ürün özeti (en düşük/ortalama/en yüksek); `urun` verilirse en ucuz 5 marka. Anahtar istemez, kredi düşmez; yanıt kırpılmış. Bütün veri demoları IP başına 10 dakikada 20 isteği paylaşır; aşılınca 429 ve `Retry-After`. Tamamı için ücretsiz anahtarla gerçek uç.","parameters":[{"name":"il","in":"query","required":true,"schema":{"type":"string"},"example":"Ankara"},{"name":"urun","in":"query","schema":{"type":"string"},"example":"motorin"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme"],"properties":{"il":{"type":"string"},"ozet":{"type":"array","items":{"type":"object"}},"enUcuz":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"marka":{"type":"string"},"urun":{"type":"string"},"fiyat":{"type":"number"},"tarih":{"type":"string"}}}},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"bayat":{"type":"boolean"},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"400":{"description":"il eksik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"İl bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/deprem":{"get":{"tags":["demo"],"summary":"Anahtarsız son 5 deprem (tanıtım)","x-kredi":0,"description":"AFAD'ın son 5 olayı; parametre yok. Anahtar istemez, kredi düşmez; yanıt kırpılmış. Bütün veri demoları IP başına 10 dakikada 20 isteği paylaşır; aşılınca 429 ve `Retry-After`. Tamamı için ücretsiz anahtarla gerçek uç.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme"],"properties":{"depremler":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"zamanTr":{"type":"string"},"buyukluk":{"type":"number"},"tur":{"type":"string"},"derinlikKm":{"type":"number"},"yer":{"type":"string"},"il":{"type":["string","null"]}}}},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"bayat":{"type":"boolean"},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"AFAD yanıt vermiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/futbol":{"get":{"tags":["demo"],"summary":"Anahtarsız Süper Lig puan durumu, ilk 5 (tanıtım)","x-kredi":0,"description":"Güncel sezonun ilk 5 takımı; parametre yok. Anahtar istemez, kredi düşmez; yanıt kırpılmış. Bütün veri demoları IP başına 10 dakikada 20 isteği paylaşır; aşılınca 429 ve `Retry-After`. Tamamı için ücretsiz anahtarla gerçek uç.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["kaynak","guncelleme"],"properties":{"lig":{"type":"string"},"ligAdi":{"type":"string"},"sezon":{"type":"string"},"takimlar":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"sira":{"type":"integer"},"takim":{"type":"string"},"o":{"type":"integer"},"av":{"type":"integer"},"p":{"type":"integer"}}}},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"bayat":{"type":"boolean"},"kaynak":{"type":"string"},"guncelleme":{"type":["string","null"]},"not":{"type":"string"}}}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/demo/tazelik":{"get":{"tags":["demo"],"summary":"Kaynak başına son başarılı çekim (tanıtım şeridi)","x-kredi":0,"description":"Toplayıcının çektiği her kaynağın son başarılı çekimi ve alan özeti (eczane, akaryakıt, hal, Resmî Gazete, futbol). İstek anında çağrılan kaynaklar (AFAD, TCMB, İBB…) listede yok. Yanıt örnek başına 60 sn önbellekte; IP başına 10 dakikada 30 istek.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["alanlar","kaynaklar","kaynak","guncelleme"],"properties":{"alanlar":{"type":"array","items":{"type":"object","properties":{"alan":{"type":"string"},"ad":{"type":"string"},"kaynakSayisi":{"type":"integer"},"tazeKaynakSayisi":{"type":"integer"},"sonCekim":{"type":["string","null"]}}}},"kaynaklar":{"type":"array","items":{"type":"object","properties":{"ad":{"type":"string"},"alan":{"type":["string","null"]},"sonCekim":{"type":["string","null"]},"bayat":{"type":"boolean"}}}},"kaynak":{"type":"string"},"guncelleme":{"type":"string"}}}}}},"429":{"description":"Demo sınırı doldu","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/eposta/dogrula":{"get":{"tags":["eposta"],"summary":"E-posta adresini doğrula (e-postadaki bağlantı)","parameters":[{"name":"kod","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"dogrulandi":{"type":"boolean"}}}}}},"400":{"description":"Kod geçersiz ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/eposta/dogrulama-gonder":{"post":{"tags":["eposta"],"summary":"Doğrulama e-postasını yeniden gönder","security":[{"anahtar":[]}],"x-kredi":0,"description":"Saatte en fazla 3. Bağlantı 24 saat geçerli; yeni bağlantı eskisini geçersiz kılar.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"dogrulama":{"type":"string","enum":["gonderildi","dogrulanmis"]}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"E-posta gönderilemiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kurtar":{"post":{"tags":["eposta"],"summary":"Anahtar kurtarma kodu iste","description":"Hesap olsun olmasın aynı yanıt döner. Kod e-postayla gelir, 30 dakika geçerli. IP başına saatte 5, hesap başına saatte 3 istek.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"responses":{"202":{"description":"İstek alındı","content":{"application/json":{"schema":{"type":"object","properties":{"mesaj":{"type":"string"}}}}}},"400":{"description":"Geçersiz e-posta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"E-posta gönderilemiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/kurtar/onay":{"post":{"tags":["eposta"],"summary":"Kurtarma koduyla yeni anahtar al","description":"`eskileriIptal: true` önceki bütün anahtarları kapatır. Kod tek kullanımlık; anahtar yanıtta bir kez döner.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kod"],"properties":{"kod":{"type":"string"},"eskileriIptal":{"type":"boolean","default":false}}}}}},"responses":{"201":{"description":"Anahtar üretildi","content":{"application/json":{"schema":{"type":"object","properties":{"anahtar":{"type":"string"},"onek":{"type":"string"},"iptalEdilen":{"type":"integer"},"uyari":{"type":"string"}}}}}},"400":{"description":"Kod geçersiz ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Anahtar sınırı (kod harcanmadı)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/giris/yontemler":{"get":{"tags":["giris"],"summary":"Açık giriş yöntemleri","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"google":{"type":"boolean"},"apple":{"type":"boolean"},"eposta":{"type":"boolean"}}}}}}}}},"/v1/giris/eposta":{"post":{"tags":["giris"],"summary":"E-postaya giriş kodu gönder","description":"6 haneli kod ve tek tıklık bağlantı, 15 dakika, tek kullanımlık. Hesap yoksa ilk girişte açılır. IP başına saatte 10, e-posta başına saatte 3. Gönderici yoksa 503.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"}}}}}},"responses":{"202":{"description":"Kod gönderildi","content":{"application/json":{"schema":{"type":"object","properties":{"istek":{"type":"string","description":"`gi_…`; kodla birlikte gönderilir"},"gecerlilikDakika":{"type":"integer"},"mesaj":{"type":"string"}}}}}},"400":{"description":"Geçersiz e-posta","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"E-posta gönderilemiyor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/giris/eposta/dogrula":{"post":{"tags":["giris"],"summary":"Kodla ya da bağlantıyla giriş, panel oturumu al","description":"`{istek, kod}` ya da `{baglanti}`. 5 yanlış denemede kod yanar. Yanıtta panel belirteci; ayrıca API alanında httpOnly çerez.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"istek":{"type":"string"},"kod":{"type":"string","pattern":"^[0-9]{6}$"},"baglanti":{"type":"string","description":"`gk_…`"}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["oturum","tur","son"],"properties":{"oturum":{"type":"string","description":"`ak_ses_…` panel belirteci; `Authorization: Bearer` ile gönderilir"},"tur":{"const":"Bearer"},"son":{"type":"string","format":"date-time"},"yeniHesap":{"type":"boolean","description":"Bu girişte hesap açıldı mı"}}}}}},"400":{"description":"Kod geçersiz, yanlış ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/giris/google":{"get":{"tags":["giris"],"summary":"Google ile giriş (tarayıcı yönlendirmesi)","description":"OIDC yetki kodu + PKCE. `sonra=panel` (varsayılan) girişten sonra `PANEL_URL/giris/tamam#devir=…` adresine döner.","parameters":[{"name":"sonra","in":"query","schema":{"type":"string"}}],"responses":{"302":{"description":"Google'a yönlendirme"},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Google girişi kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/giris/apple":{"get":{"tags":["giris"],"summary":"Apple ile giriş (tarayıcı yönlendirmesi)","parameters":[{"name":"sonra","in":"query","schema":{"type":"string"}}],"responses":{"302":{"description":"Apple'a yönlendirme"},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Apple girişi kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/oturum/devir":{"post":{"tags":["panel"],"summary":"Devir kodunu panel oturumuna çevir","description":"Tarayıcı girişinden sonra panel `#devir=ak_dvr_…` alır (2 dakika, tek kullanımlık) ve bununla belirteç ister.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["devir"],"properties":{"devir":{"type":"string"}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["oturum","tur","son"],"properties":{"oturum":{"type":"string","description":"`ak_ses_…` panel belirteci; `Authorization: Bearer` ile gönderilir"},"tur":{"const":"Bearer"},"son":{"type":"string","format":"date-time"},"yeniHesap":{"type":"boolean","description":"Bu girişte hesap açıldı mı"}}}}}},"400":{"description":"Devir kodu geçersiz, kullanılmış ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/oturum/cikis":{"post":{"tags":["panel"],"summary":"Çıkış","security":[{"panel":[]}],"description":"Panel belirtecini, bağlı çerez oturumunu ve o çerezden doğan bütün belirteçleri kapatır.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"cikis":{"type":"boolean"}}}}}},"401":{"description":"Oturum yok ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/ben":{"get":{"tags":["panel"],"summary":"Hesap bilgisi","security":[{"panel":[]}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"hesapId":{"type":"string"},"email":{"type":"string"},"dogrulandi":{"type":"boolean"},"plan":{"type":"string"},"olusturma":{"type":"string"},"aylikKredi":{"type":"integer"},"ekKredi":{"type":"integer"},"girisYontemleri":{"type":"array","items":{"enum":["eposta","google","apple"]}},"askida":{"type":"boolean","description":"Aylık plan açıkken"},"aylikPlan":{"type":["object","null"],"description":"Aylık plan açıkken; etkin plan","properties":{"kod":{"type":"string"},"saglayici":{"type":"string"},"donemBitis":{"type":"string"},"iptalIstendi":{"type":["string","null"]}}}}}}}},"401":{"description":"Oturum yok ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/baglantilar":{"get":{"tags":["panel"],"summary":"OAuth bağlantıları (Claude vb.)","security":[{"panel":[]}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"baglantilar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ad":{"type":["string","null"]},"istemciId":{"type":"string"},"olusturma":{"type":"string"},"sonKullanim":{"type":["string","null"]}}}}}}}}},"401":{"description":"Oturum yok ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/baglantilar/{id}":{"delete":{"tags":["panel"],"summary":"OAuth bağlantısını kapat","security":[{"panel":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"iptal":{"type":"boolean"},"id":{"type":"string"}}}}}},"400":{"description":"Geçersiz id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Oturum yok ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Bağlantı bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hesap":{"delete":{"tags":["panel"],"summary":"Hesabı sil (KVKK)","security":[{"panel":[]}],"description":"Gövdede `onay` hesabın e-postası olmalı. Ödemesi olmayan hesap silinir, ödemesi olan anonimleşir (e-posta, anahtarlar, oturumlar, bağlantılar silinir; ödeme kaydı kimliksiz kalır).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["onay"],"properties":{"onay":{"type":"string","format":"email"}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"sonuc":{"enum":["silindi","anonimlestirildi"]}}}}}},"400":{"description":"Onay e-postası eşleşmedi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Oturum yok ya da süresi dolmuş","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Yenilenen aylık plan var; önce DELETE /v1/abonelik","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"501":{"description":"Hesap silme bu sunucuda kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"tags":["oauth"],"summary":"Korunan kaynak meta verisi (RFC 9728)","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"resource":{"type":"string"},"authorization_servers":{"type":"array","items":{"type":"string"}},"scopes_supported":{"type":"array","items":{"type":"string"}}}}}}}}}},"/.well-known/oauth-protected-resource/mcp":{"get":{"tags":["oauth"],"summary":"`/mcp` için korunan kaynak meta verisi (RFC 9728)","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"resource":{"type":"string"},"authorization_servers":{"type":"array","items":{"type":"string"}}}}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["oauth"],"summary":"Yetkilendirme sunucusu meta verisi (RFC 8414)","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/oauth/register":{"post":{"tags":["oauth"],"summary":"Dinamik istemci kaydı (RFC 7591)","description":"Yalnız açık istemci (`token_endpoint_auth_method: none`). Geri dönüş adresleri: Claude (`https://claude.ai/api/mcp/auth_callback`, `https://claude.com/api/mcp/auth_callback`), http://localhost ve 127.0.0.1 (port serbest) ve sunucuda tanımlı ekler. IP başına saatte 20.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["redirect_uris"],"properties":{"redirect_uris":{"type":"array","items":{"type":"string"}},"client_name":{"type":"string"},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}}}}}}},"responses":{"201":{"description":"Kaydedildi","content":{"application/json":{"schema":{"type":"object","properties":{"client_id":{"type":"string"},"client_id_issued_at":{"type":"integer"},"redirect_uris":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"invalid_redirect_uri ya da invalid_client_metadata","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}}}}},"/oauth/authorize":{"get":{"tags":["oauth"],"summary":"Yetkilendirme (tarayıcı)","description":"`response_type=code`, `code_challenge_method=S256` ve `state` zorunlu. Giriş yoksa giriş sayfasına, sonra onay ekranına gider.","parameters":[{"name":"response_type","in":"query","schema":{"type":"string"}},{"name":"client_id","in":"query","schema":{"type":"string"}},{"name":"redirect_uri","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string"}},{"name":"code_challenge","in":"query","schema":{"type":"string"}},{"name":"code_challenge_method","in":"query","schema":{"type":"string"}},{"name":"scope","in":"query","schema":{"type":"string"}},{"name":"resource","in":"query","schema":{"type":"string"}}],"responses":{"302":{"description":"Onay ekranına ya da hatayla istemciye yönlendirme"},"400":{"description":"Bilinmeyen istemci ya da geri dönüş adresi (HTML, yönlendirme yok)"}}}},"/oauth/token":{"post":{"tags":["oauth"],"summary":"Belirteç (authorization_code + PKCE, refresh_token)","description":"Erişim belirteci 1 saat, yenileme belirteci 30 gün ve her kullanımda döner; eski yenileme belirteci yeniden kullanılırsa bağlantı kapatılır.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["grant_type","client_id"],"properties":{"grant_type":{"enum":["authorization_code","refresh_token"]},"client_id":{"type":"string"},"code":{"type":"string"},"redirect_uri":{"type":"string"},"code_verifier":{"type":"string"},"refresh_token":{"type":"string"},"resource":{"type":"string"}}}},"application/json":{"schema":{"type":"object","required":["grant_type","client_id"],"properties":{"grant_type":{"enum":["authorization_code","refresh_token"]},"client_id":{"type":"string"},"code":{"type":"string"},"redirect_uri":{"type":"string"},"code_verifier":{"type":"string"},"refresh_token":{"type":"string"},"resource":{"type":"string"}}}}}},"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"const":"Bearer"},"expires_in":{"type":"integer"},"refresh_token":{"type":"string"},"scope":{"type":"string"}}}}}},"400":{"description":"invalid_grant, invalid_target, unsupported_grant_type","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}},"401":{"description":"invalid_client","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}}}}},"/oauth/revoke":{"post":{"tags":["oauth"],"summary":"Belirteç iptali (RFC 7009)","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"},"token_type_hint":{"type":"string"}}}},"application/json":{"schema":{"type":"object","required":["token"],"properties":{"token":{"type":"string"},"token_type_hint":{"type":"string"}}}}}},"responses":{"200":{"description":"İptal edildi (tanınmayan belirteçte de 200)"},"429":{"description":"Hız sınırı","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"}}}}}}}}},"/v1/abonelik":{"get":{"tags":["odeme"],"summary":"Etkin plan ve plan geçmişi","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"etkin":{"type":["object","null"],"properties":{"id":{"type":"string"},"plan":{"type":"string"},"saglayici":{"enum":["paytr","polar"]},"durum":{"type":"string"},"fiyat":{"type":"object","properties":{"tutar":{"type":"number"},"paraBirimi":{"type":"string"}}},"donemBaslangic":{"type":"string","format":"date-time"},"donemBitis":{"type":"string","format":"date-time"},"iptalIstendi":{"type":["string","null"],"format":"date-time"},"aylikKredi":{"type":"integer"},"harcanan":{"type":"integer"},"kalan":{"type":"integer"},"yenilenir":{"type":"boolean"}}},"gecmis":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"post":{"tags":["odeme"],"summary":"Aylık plan başlat","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"USD → Polar abonelik (her ay otomatik çekim). TRY → PayTR tek ödeme, bir aylık dönem; otomatik çekim yok, bitişe 3 gün kala aynı plan yeniden alınabilir. Etkin plan varken 409. Türkiye'ye faturalı hesap yalnız TRY. Sağlayıcı yapılandırılmamışsa 503.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan"],"properties":{"plan":{"type":"string"},"paraBirimi":{"enum":["TRY","USD"]},"faturaUlke":{"type":"string","pattern":"^[A-Z]{2}$"}}},"example":{"plan":"gelistirici","paraBirimi":"TRY","faturaUlke":"TR"}}}},"responses":{"201":{"description":"Ödeme sayfası hazır","content":{"application/json":{"schema":{"type":"object","properties":{"abonelikId":{"type":"string"},"plan":{"type":"string"},"aylikKredi":{"type":"integer"},"paraBirimi":{"type":"string"},"odemeUrl":{"type":"string"}}}}}},"400":{"description":"Geçersiz plan, para birimi ya da ülke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"403":{"description":"Hesap askıya alınmış","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Hesap bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Etkin plan var","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"502":{"description":"Sağlayıcı hatası","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"Bu para birimiyle plan kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"delete":{"tags":["odeme"],"summary":"Planı dönem sonunda bitir","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"Yenileme durur; dönem sonuna kadar kota kullanılır, iade yok.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"iptal":{"type":"boolean"},"abonelikId":{"type":"string"},"donemBitis":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"İptal edilecek etkin plan yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"409":{"description":"Abonelik sağlayıcıda henüz eşleşmedi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"502":{"description":"Sağlayıcı hatası","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"USD ile plan kapalı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/bildirim/kredi-esik":{"get":{"tags":["hesap"],"summary":"Kredi eşik uyarısı ayarı","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"ayar":{"type":["object","null"],"properties":{"esik":{"type":"integer"},"url":{"type":"string","description":"Maskeli (Slack adresi sırdır)"},"eposta":{"type":"boolean"},"sonGonderim":{"type":["string","null"],"format":"date-time"},"sonKalan":{"type":["integer","null"]},"sonHata":{"type":["string","null"]}}}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"post":{"tags":["hesap"],"summary":"Kredi eşik uyarısını kur ya da değiştir","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"Kalan kredi `esik`in altına inince en çok 24 saatte bir haber verir. `url`: HTTPS webhook (Slack `hooks.slack.com` ve Discord gelen webhook'u metin olarak, diğerleri imzalı JSON: `{\"olay\":\"kredi.esik\",\"kalan\":812,\"esik\":1000,\"zaman\":\"…\"}`, başlık `x-adreskit-imza: t=<unix>,v1=<hex HMAC-SHA256(imzaSirri, \"<t>.<gövde>\")>`). Adres herkese açık bir IP'ye çözülmeli, yönlendirme izlenmez, 3 sn zaman aşımı. `eposta: true`: hesabın doğrulanmış e-postasına. İmza sırrı yalnız ilk kurulumda ve `sirYenile: true` ile döner. Ayar değişince 24 saat sayacı sıfırlanır.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["esik"],"properties":{"esik":{"type":"integer","minimum":1},"url":{"type":["string","null"],"format":"uri"},"eposta":{"type":"boolean"},"sirYenile":{"type":"boolean"}}},"example":{"esik":1000,"url":"https://hooks.slack.com/services/T000/B000/XXXX","eposta":true}}}},"responses":{"200":{"description":"Güncellendi","content":{"application/json":{"schema":{"type":"object","properties":{"ayar":{"type":"object","properties":{"esik":{"type":"integer"},"url":{"type":"string","description":"Maskeli (Slack adresi sırdır)"},"eposta":{"type":"boolean"},"sonGonderim":{"type":["string","null"],"format":"date-time"},"sonKalan":{"type":["integer","null"]},"sonHata":{"type":["string","null"]}}},"imzaSirri":{"type":"string"},"imzaNotu":{"type":"string"},"uyarilar":{"type":"array","items":{"type":"string"}}}}}}},"201":{"description":"Kuruldu","content":{"application/json":{"schema":{"type":"object","properties":{"ayar":{"type":"object","properties":{"esik":{"type":"integer"},"url":{"type":"string","description":"Maskeli (Slack adresi sırdır)"},"eposta":{"type":"boolean"},"sonGonderim":{"type":["string","null"],"format":"date-time"},"sonKalan":{"type":["integer","null"]},"sonHata":{"type":["string","null"]}}},"imzaSirri":{"type":"string"},"imzaNotu":{"type":"string"},"uyarilar":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Geçersiz eşik ya da adres","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}},"delete":{"tags":["hesap"],"summary":"Kredi eşik uyarısını kapat","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"kapatildi":{"type":"boolean"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Kurulu uyarı yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/bildirim/kredi-esik/dene":{"post":{"tags":["hesap"],"summary":"Deneme uyarısı gönder","security":[{"anahtar":[]},{"panel":[]}],"x-kredi":0,"description":"Olay `kredi.esik.deneme`; hesap başına dakikada bir.","responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","properties":{"webhook":{"type":["string","null"],"description":"`gonderildi` ya da `hata: …`"},"eposta":{"type":["string","null"],"enum":["gonderildi","kapali","dogrulanmamis","hata",null]}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"404":{"description":"Kurulu uyarı yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Dakikada bir deneme","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hava/kalite":{"get":{"tags":["hava"],"summary":"Hava kalitesi, 81 il (Çevre Bakanlığı SİM)","security":[{"anahtar":[]}],"x-kredi":1,"description":"Çevre, Şehircilik ve İklim Değişikliği Bakanlığı Sürekli İzleme Merkezi'nin ~336 istasyonundan son saatlik ölçüm: Ulusal Hava Kalitesi İndeksi (`aqi`), durum, baskın kirletici, PM10/PM2.5/NO2/SO2/CO/O3 konsantrasyonu ve alt indeksleri. İl (ilçe), istasyon ya da koordinatla (en yakın istasyonlar, seyyar araç hariç). Kaynak yurt dışı IP'ye kapalı: ölçümler Türkiye'deki bir makineden gündüz (08:30–20:30) iki saatte bir çekilir; son çekim 3 saatten eskiyse (gece, kaçan tur) `bayat: true`, hiç veri yoksa 503. Doğrulanmamış ham veri. Ölçümü olan istasyon yoksa kredi düşmez.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"example":"Ankara","description":"İl adı ya da plaka"},{"name":"ilce","in":"query","schema":{"type":"string"},"description":"Yalnız il ile"},{"name":"istasyon","in":"query","schema":{"type":"string"},"description":"İstasyon adı (parçası) ya da kimliği"},{"name":"lat","in":"query","schema":{"type":"number","minimum":34,"maximum":43}},{"name":"lon","in":"query","schema":{"type":"number","minimum":25,"maximum":46}},{"name":"yaricapKm","in":"query","schema":{"type":"integer","minimum":1,"maximum":300,"default":50},"description":"Koordinatla arama yarıçapı"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50},"description":"Koordinatla varsayılan 3, öteki 50"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["istasyonlar","ozet","kaynak","guncelleme","bayat"],"properties":{"il":{"type":["string","null"]},"istasyonlar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kod":{"type":["string","null"]},"ad":{"type":"string"},"il":{"type":"string"},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"tur":{"type":["string","null"]},"isleten":{"type":["string","null"]},"mobil":{"type":"boolean","description":"Seyyar ölçüm aracı"},"mesafeKm":{"type":"number","description":"Yalnız koordinatla aramada"},"olcum":{"type":"object","properties":{"zaman":{"type":["string","null"],"description":"Son ölçüm saati (ISO 8601, +03:00)"},"aqi":{"type":["integer","null"]},"durumKod":{"type":["integer","null"]},"durum":{"type":"string"},"renk":{"type":["string","null"]},"baskinKirletici":{"type":["string","null"]},"konsantrasyon":{"type":"object","description":"µg/m³; ölçülmeyen null","additionalProperties":{"type":["number","null"]}},"altIndeks":{"type":"object","additionalProperties":{"type":["number","null"]}}}},"eski":{"type":"boolean","description":"Son ölçüm 3 saatten eski"}}}},"ozet":{"type":"object","properties":{"istasyonSayisi":{"type":"integer"},"olcumlu":{"type":"integer"},"enYuksek":{"type":["object","null"],"properties":{"id":{"type":"string"},"ad":{"type":"string"},"aqi":{"type":"integer"},"durum":{"type":"string"},"baskinKirletici":{"type":["string","null"]}}}}},"esikler":{"type":"array","items":{"type":"object","properties":{"kod":{"type":"integer"},"ad":{"type":"string"},"min":{"type":"number"},"max":{"type":"number"},"aciklama":{"type":"string"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string","description":"SİM'den son başarılı çekim (ISO 8601)"},"bayat":{"type":"boolean"},"not":{"type":"string"}}}}}},"400":{"description":"il, istasyon ya da lat/lon eksik; parametreler çelişiyor ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il ya da istasyon bulunamadı, koordinat kapsam dışı ya da yarıçapta istasyon yok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"hava kalitesi verisi henüz yok (hiç çekilmedi)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}},"/v1/hava/kalite/istasyonlar":{"get":{"tags":["hava"],"summary":"Hava kalitesi istasyonları (ücretsiz)","security":[{"anahtar":[]}],"x-kredi":0,"description":"SİM hava kalitesi istasyonları: kimlik, ad, il, ilçe, konum, tür, işleten. İl ile süzülebilir.","parameters":[{"name":"il","in":"query","schema":{"type":"string"},"description":"İl adı ya da plaka"}],"responses":{"200":{"description":"Başarılı","content":{"application/json":{"schema":{"type":"object","required":["toplam","istasyonlar","kaynak","guncelleme","bayat"],"properties":{"toplam":{"type":"integer"},"istasyonlar":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kod":{"type":["string","null"]},"ad":{"type":"string"},"il":{"type":"string"},"ilce":{"type":["string","null"]},"lat":{"type":"number"},"lon":{"type":"number"},"tur":{"type":["string","null"]},"isleten":{"type":["string","null"]},"mobil":{"type":"boolean"}}}},"kaynak":{"type":"string"},"kaynakUrl":{"type":"string"},"lisans":{"type":"string"},"guncelleme":{"type":"string"},"bayat":{"type":"boolean"}}}}}},"401":{"description":"Anahtar yok ya da geçersiz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"422":{"description":"il bulunamadı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"429":{"description":"Kredi limiti aşıldı","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}},"503":{"description":"hava kalitesi verisi henüz yok (hiç çekilmedi)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hata"}}}}}}}}}