# Webhostric — yapay zekâ ve geliştirici talimatı Base URL: https://webhostric.com.tr/v1 Kimlik: Authorization: Bearer wk_user_… (JSON: Content-Type: application/json) Anahtar: Google ile giriş → https://webhostric.com.tr/?panel=apikeys → "Yeni anahtar üret". KYC gerekmez; anahtar tam haliyle yalnızca bir kez gösterilir. MCP: https://webhostric.com.tr/mcp (Streamable HTTP; Bearer anahtar veya OAuth 2.1 + PKCE) OpenAPI: https://webhostric.com.tr/v1/openapi.json ## İstemci bağlantısı API ve MCP uçları CORS üzerinden tüm HTTPS istemcilerine açıktır. Ancak bir anahtarı sıradan sohbet mesajına yapıştırmak Claude, ChatGPT, Gemini veya Grok ortamına otomatik ağ/araç yetkisi vermez. - Uzak MCP destekleyen istemcide https://webhostric.com.tr/mcp adresini özel bağlayıcı olarak ekle ve OAuth ile bağlan. - MCP desteklemeyen istemcide https://webhostric.com.tr/v1/openapi.json şemasını araç/function-calling katmanına ekle veya REST çağrılarını yetkili backend'den yap. - İstemci kendi ağ izin listesi nedeniyle alan adına erişemiyorsa anahtarı geçersiz sayma; kullanıcıdan MCP/araç bağlantısını kurmasını iste. Bu istemci kısıtı sunucu tarafından aşılamaz. ## İlk adım GET /v1/me → bakiye, KYC durumu, bekleyen siparişler, yetenekler ve recommendedNextAction. ## "Site kur" isteğinde zorunlu karar akışı 1) GET /v1/me ile güncel bakiyeyi oku; kullanıcıdan istenen site adı, tasarım ve alan adını netleştir. 2) Alan adını sorgula, ardından POST /v1/order/quote ile kesin toplamı öğren. Yalnızca hesapta para bulunması yeterli değildir; quote.sufficientBalance alanı esas alınır. 3) sufficientBalance=false ise ücretli kurulum/satın alma işlemini DURDUR. shortfall tutarını ve topUpUrl (https://webhostric.com.tr/balance) bağlantısını ver, kullanıcıdan bakiye yüklemesini iste. AI ödeme yapamaz veya yükleme yapıldığını varsayamaz; sonra /v1/me ve teklifi yeniden kontrol eder. 4) sufficientBalance=true ise alan adı + toplam USD + approveUrl bilgisini göster. Kullanıcı tarayıcıda onay vermeden ücretli işlemi yürütme. Onaydan sonra Idempotency-Key ile execute et ve siteyi kur/yayınla. 5) Bakiye yokken ücretsiz proje/önizleme hazırlanabilir; bunu satın alınmış alan adı veya tamamlanmış canlı yayın gibi gösterme. ## Ücretsiz (KYC yok) GET /v1/tlds?q=com desteklenen uzantılar + USD fiyat + kycRequired POST /v1/domain/check {"domain":"ornek.com"} status: available | available_requires_kyc | unavailable | premium | manual | unsupported | restricted | provider_error (yalnızca purchasable=true satın alınabilir) GET /v1/themes · GET /v1/sites · GET /v1/sites/{domain} PUT /v1/sites/{domain}/page {"path":"/hakkimizda","title":"Hakkımızda","html":"…"} POST /v1/sites/{domain}/edit {"instruction":"iletişim sayfası ekle"} (GPT-OSS 120B ajanı) Projeler (sunucusuz): POST /v1/projects {"name":"Envanter"} → https://.webhostric.com.tr POST /v1/projects/{id}/build {"requirements":"…"} doğal dilden uygulama + koleksiyonlar PUT /v1/projects/{id}/collections/{name} {"fields":{"title":{"type":"string","required":true}},"publicRead":true,"publicWrite":false} POST /v1/projects/{id}/collections/{name}/records {"records":[{"title":"Kalem","qty":5}]} POST /v1/projects/{id}/collections/{name}/query {"filter":{"qty":{"gte":1}},"sort":"-_createdAt","limit":20} DELETE /v1/projects/{id}/collections/{name}/records {"ids":["rec_…"]} PUT /v1/projects/{id}/files/public/index.html {"content":"…"} GET /v1/projects/{id} (durum, kullanım, loglar) · GET /v1/projects/{id}/logs Yayınlanan uygulama aynı origin'de veri okur/yazar: GET/POST /_wh/data/ (publicRead/publicWrite ile sınırlı). Kotalar: 5 proje, 20 koleksiyon/proje, 5000 kayıt/proje, 2 MB/dosya, 50 MB/proje. Ücretsiz; aşımda 409 quota_exceeded. ## Alan adı taşıma + kurumsal e-posta + kesin düzenleme (araçlar) GET /v1/tools tüm araçların tam listesi (ad + parametreler). Her araç POST /v1/tools/{ad} ile çağrılır. POST /v1/tools/get_site_page {"domain":"...","path":"/"} sayfanın HTML'ini okur. Belirli bir yazıyı/link metnini DEĞİŞTİR-KALDIR-EKLE gibi nokta atışı düzenleme için: get_site_page ile oku → ilgili yeri düzelt → PUT /v1/sites/{domain}/page (veya upsert_site_page) ile geri yaz. Bu, footer/link/metin değişiklikleri için en kesin yoldur. POST /v1/tools/move_domain {"domain":"sirket.com"} müşteri alan adını taşımak için Cloudflare bölgesi açar ve o alan adına ÖZEL nameserver'ları döndürür; müşteri bunları kendi registrar'ında günceller. POST /v1/tools/move_domain_status {"domain":"sirket.com"} NS yönlendirmesi aktif mi (pending/active). POST /v1/tools/create_email {"domain":"sirket.com","address":"info","forwardTo":"gercek@gmail.com"} ad@alanadi → gerçek kutuya yönlendirme (kurumsal e-posta). TAM erişim gerekir. POST /v1/tools/list_email {"domain":"sirket.com"} e-posta yönlendirme kurallarını listeler. TAM erişim gerekir. ## Erişim katmanı Sınırlı (limited) anahtar: site kurulumu, alan adı alma, NS/taşıma ve site düzenleme/okuma. Veritabanı (projeler/db/files) ve kurumsal e-posta KAPALIDIR → 403 forbidden "yöneticiden tam erişim isteyin"; uydurma yapma, bu hatayı ilet. Tam (full) anahtar: tüm araçlar açık. Yapamadığın her istekte ilgili hata kodunu/açıklamasını kullanıcıya dürüstçe ilet. ## Ücretli akış (bakiye + her işlem için onay) 1) POST /v1/order/quote {"domain":"ornek.com","theme":"tanitim"} → ücret ALINMAZ; approveUrl, kycRequired, sufficientBalance, shortfall, topUpUrl döner. 2) Kullanıcıya tam alan adı + USD tutar + approveUrl göster. Kullanıcı kendi tarayıcısında onaylar (AI onaylayamaz). 3) POST /v1/order/execute {"orderId":"ord_…"} + Idempotency-Key başlığı. Aynı anahtarla tekrar = çift tahsilat yok. ## Hatalar (hepsi {ok:false, code, error, ...}) 401 unauthorized · 402 insufficient_balance {balance, required, shortfall, topUpUrl} → "Bakiyen yok/yetersiz. Bakiye yükledikten sonra işleme devam edebilirsin." de ve https://webhostric.com.tr/balance bağlantısını ver; bakiyeyi yalnızca kullanıcı kartla yükler, AI yükleyemez. 403 kyc_required {kycUrl} (yalnızca .tr gibi kimlik isteyen uzantılar) · 412 approval_required {approveUrl} · 410 approval_expired · 409 price_changed/conflict/quota_exceeded · 422 unsupported_tld · 429 rate_limited {retryAfter} · 502 provider_error (müsaitlik bilinmiyor; "müsait" deme). ## Kurallar - Anahtarı URL'ye, loglara veya kullanıcıya gösterilen metne yazma. - Başka hesabın site/proje/verisine erişemezsin; sahiplik sunucuda doğrulanır. - Silme işlemleri geri alınamaz; kullanıcıdan açık onay al.