Backend a SDK

API třetích stran (b77.http)

Volej libovolné HTTPS API se svými tajnými klíči, aniž bys je prozradil.

b77.http.fetch volá HTTPS API třetí strany ze serverů builder77. Tvoje API klíče jsou uložené v Nastavení → Tajné klíče a v kódu se zapisují jako {{secret:NAME}}: server je doplní sám, takže se nikdy nedostanou do prohlížeče.

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

Každé volání spotřebuje 1 integrační kredit. Jen https, časový limit 15 sekund, odpovědi do 1 MB. Pokud API pošle tvůj klíč zpátky, nahradí se [secret] dřív, než odpověď uvidí tvoje aplikace.

Pravidla pro každý tajný klíč

Kdokoli, kdo používá tvou aplikaci, může s tajným klíčem volat API – aniž by ho viděl. Proto každý klíč funguje jen tak, jak povolíš:

  • Povolené domény – jediné servery, na které se kdy pošle (např. api.openai.com; *.example.com pokrývá i subdomény).
  • Povolené metody – ve výchozím stavu GET a POST.
  • Povolené cesty – volitelné prefixy cest, třeba /v1/chat/. Prázdné znamená jakoukoli cestu.
  • Kam smí být klíč vložen – ve výchozím stavu jen do autentizační hlavičky (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key a podobně). Parametry dotazu (podle názvu, např. key), cesta URL a tělo požadavku jsou vypnuté, dokud je nezapneš.

Volání, které porušuje pravidlo, se odmítne se stavem 403 dřív, než se cokoli odešle.

Klíče v URL nebo v těle

Dávej přednost API, která berou klíč v hlavičce. Některá ho místo toho mají v adrese – povol přesně to místo a zúž cestu:

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

V těle požadavku povol jen tehdy, když to API vyžaduje: kdokoli, kdo používá tvou aplikaci, by pak mohl klíč zapsat do čehokoli, co toto API ukládá (třeba do zprávy, poznámky nebo veřejného souboru), a zase si ho přečíst.