Backend és SDK

Külső API-k (b77.http)

Hívj meg bármilyen HTTPS API-t a titkos kulcsaiddal, anélkül hogy felfednéd őket.

A b77.http.fetch a builder77 szervereiről hív meg egy külső HTTPS API-t. Az API-kulcsaidat a Beállítások → Titkos kulcsok részben adhatod meg, a kódban pedig {{secret:NAME}} formában hivatkozol rájuk: a szerver helyettesíti be őket, így sosem jutnak el a böngészőbe.

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

Minden hívás 1 integrációs kreditet használ. Csak https, 15 másodperces időkorlát, legfeljebb 1 MB-os válaszok. Ha egy API visszaküldi a kulcsodat, a helyére [secret] kerül, mielőtt az alkalmazásod megkapja a választ.

Szabályok titkos kulcsonként

Az alkalmazásod bármely felhasználója indíthat hívásokat egy titkos kulccsal – anélkül, hogy látná. Ezért minden kulcs csak úgy működik, ahogy engedélyezed:

  • Engedélyezett hosztok – az egyetlen szerverek, ahová a kulcs valaha eljut (pl. api.openai.com; a *.example.com az aldomaineket is lefedi).
  • Engedélyezett metódusok – alapértelmezés szerint GET és POST.
  • Engedélyezett útvonalak – nem kötelező útvonal-előtagok, például /v1/chat/. Ha üres, bármely útvonal megengedett.
  • Hová kerülhet a kulcs – alapértelmezés szerint csak hitelesítési fejlécbe (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key és hasonlók). A lekérdezési paraméterek (név szerint, pl. key), az URL útvonala és a kérés törzse ki van kapcsolva, amíg be nem kapcsolod őket.

A szabályt sértő hívást 403-as állapotkóddal elutasítjuk, mielőtt bármi elmenne.

Kulcsok az URL-ben vagy a törzsben

Lehetőleg olyan API-t válassz, amely fejlécben várja a kulcsot. Némelyik inkább a címben – ilyenkor pontosan azt a helyet engedélyezd, és szűkítsd az útvonalat:

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

A kérés törzsében beállítást csak akkor kapcsold be, ha az API megköveteli: így bárki, aki az alkalmazásodat használja, beírhatná a kulcsot bármibe, amit az API ment (üzenetbe, jegyzetbe, nyilvános fájlba), majd visszaolvashatná.