Serverio dalis ir SDK

Trečiųjų šalių API (b77.http)

Kviesk bet kurią HTTPS API su savo slaptaisiais raktais jų neatskleisdamas.

b77.http.fetch iškviečia trečiosios šalies HTTPS API iš builder77 serverių. Tavo API raktai saugomi skiltyje Nustatymai → Slaptieji raktai, o kode rašomi kaip {{secret:NAME}}: serveris juos įrašo pats, todėl jie niekada nepasiekia naršyklės.

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) }

Kiekvienas iškvietimas naudoja 1 integracijų kreditą. Tik https, 15 sekundžių laiko limitas, atsakymai iki 1 MB. Jei API atsakyme grąžina tavo raktą, jis pakeičiamas į [secret] dar prieš tavo programėlei gaunant atsakymą.

Kiekvieno slaptojo rakto taisyklės

Bet kuris tavo programėlės naudotojas gali kviesti API su slaptuoju raktu — jo nematydamas. Todėl kiekvienas raktas veikia tik taip, kaip leidi:

  • Leidžiami serveriai — vieninteliai serveriai, kuriems raktas apskritai siunčiamas (pvz., api.openai.com; *.example.com apima ir subdomenus).
  • Leidžiami metodai — numatytai GET ir POST.
  • Leidžiami keliai — neprivalomi kelio prefiksai, pvz., /v1/chat/. Tuščia reiškia bet kokį kelią.
  • Kur galima dėti raktą — numatytai tik į prisijungimo duomenų antraštę (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key ir panašias). Užklausos parametrai (pagal pavadinimą, pvz., key), URL kelias ir užklausos turinys išjungti, kol jų neįjungsi.

Taisyklę pažeidžiantis iškvietimas atmetamas su būsena 403 dar prieš ką nors išsiunčiant.

Raktai URL ar turinyje

Rinkis API, kurios raktą priima antraštėje. Kai kurios jo reikalauja adrese — leisk būtent tą vietą ir susiaurink kelią:

// 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!' },
});

Užklausos turinyje leisk tik tada, jei API to reikalauja: tada bet kuris tavo programėlės naudotojas galėtų įrašyti raktą į bet ką, ką ta API išsaugo (žinutę, užrašą, viešą failą), ir jį perskaityti.