Taustasüsteem ja SDK

Kolmandate osapoolte API-d (b77.http)

Kutsu mis tahes HTTPS-API-t oma salavõtmetega neid paljastamata.

b77.http.fetch kutsub kolmanda osapoole HTTPS-API-t builder77 serveritest. Su API-võtmed hoitakse jaotises Seaded → Salavõtmed ja koodis kirjutatakse need kujul {{secret:NAME}}: server lisab need ise, nii et need ei jõua kunagi brauserisse.

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

Iga päring kulutab 1 integratsioonikrediidi. Ainult https, 15-sekundiline ajalõpp, vastused kuni 1 MB. Kui API saadab su võtme vastuses tagasi, asendatakse see väärtusega [secret] enne, kui su rakendus vastuse kätte saab.

Reeglid iga salavõtme jaoks

Iga su rakenduse kasutaja saab salavõtmega päringuid teha — seda nägemata. Seepärast töötab iga võti ainult nii, nagu sa lubad:

  • Lubatud hostid — ainsad serverid, kuhu võti üldse saadetakse (nt api.openai.com; *.example.com hõlmab ka alamdomeene).
  • Lubatud meetodid — vaikimisi GET ja POST.
  • Lubatud teed — valikulised tee eesliited, näiteks /v1/chat/. Tühi tähendab mis tahes teed.
  • Kuhu võtme võib panna — vaikimisi ainult volituspäisesse (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key jms). Päringuparameetrid (nime järgi, nt key), URL-i tee ja päringu keha on välja lülitatud, kuni sa need sisse lülitad.

Reeglit rikkuv päring lükatakse olekuga 403 tagasi enne, kui midagi saadetakse.

Võtmed URL-is või kehas

Eelista API-sid, mis võtavad võtme vastu päises. Mõni ootab seda hoopis aadressis — luba täpselt see koht ja kitsenda teed:

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

Luba Päringu kehas ainult siis, kui API seda nõuab: siis saab iga su rakenduse kasutaja kirjutada võtme ükskõik millesse, mida see API salvestab (sõnum, märge, avalik fail), ja selle tagasi lugeda.