Backend ve SDK

Üçüncü taraf API'ler (b77.http)

Gizli anahtarlarını açığa çıkarmadan herhangi bir HTTPS API'sini çağır.

b77.http.fetch, üçüncü taraf bir HTTPS API'sini builder77'nin sunucularından çağırır. API anahtarların Ayarlar → Gizli anahtarlar bölümünde saklanır ve kodda {{secret:NAME}} olarak yazılır: sunucu onları yerine koyar, böylece tarayıcıya hiç ulaşmazlar.

const res = await b77.http.fetch('https://api.openai.com/v1/chat/completions', {
  method: 'POST',                                          // default GET
  headers: { Authorization: 'Bearer {{secret:OPENAI_API_KEY}}' },
  body: { model: 'gpt-4o-mini', messages: [{ role: 'user', content: 'Hi!' }] }, // object → JSON, or a string
});
if (res.ok) console.log(res.data);  // { ok, status, headers, body (text), data (parsed JSON or null) }

Her çağrı 1 entegrasyon kredisi kullanır. Yalnızca https, 15 saniye zaman aşımı, en fazla 1 MB yanıt. Bir API anahtarını geri döndürürse, uygulaman yanıtı görmeden önce anahtar [secret] ile değiştirilir.

Her gizli anahtarın kuralları

Uygulamanı kullanan herkes bir gizli anahtarla, onu görmeden, çağrı yapabilir. Bu yüzden her anahtar yalnızca senin izin verdiğin şekilde çalışır:

  • İzin verilen sunucular — anahtarın gönderilebileceği tek sunucular (örn. api.openai.com; *.example.com alt alan adlarını da kapsar).
  • İzin verilen yöntemler — varsayılan olarak GET ve POST.
  • İzin verilen yollar — /v1/chat/ gibi isteğe bağlı yol önekleri. Boşsa her yol.
  • Anahtarın konabileceği yerler — varsayılan olarak yalnızca bir kimlik bilgisi başlığı (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key ve benzerleri). Sorgu parametreleri (adıyla, örn. key), adresin yol kısmı ve istek gövdesi sen açana kadar kapalıdır.

Bir kuralı çiğneyen çağrı, hiçbir şey gönderilmeden 403 durum koduyla reddedilir.

Adreste veya gövdede anahtar

Anahtarı başlıkta alan API'leri tercih et. Bazıları anahtarı adrese koyar; o zaman tam olarak o yere izin ver ve yolu daralt:

// Settings → Secrets: TELEGRAM_TOKEN, host api.telegram.org, "In the URL path" on,
// allowed path /bot{{secret:TELEGRAM_TOKEN}}/sendMessage
await b77.http.fetch('https://api.telegram.org/bot{{secret:TELEGRAM_TOKEN}}/sendMessage', {
  method: 'POST',
  body: { chat_id: 12345, text: 'New booking!' },
});

İstek gövdesinde seçeneğine yalnızca API gerektiriyorsa izin ver: o zaman uygulamanı kullanan herkes anahtarı o API'nin kaydettiği herhangi bir şeye (bir mesaj, bir not, herkese açık bir dosya) yazıp geri okuyabilir.