Backend och SDK

Tredjeparts-API:er (b77.http)

Anropa valfritt HTTPS-API med dina hemliga nycklar utan att avslöja dem.

b77.http.fetch anropar ett HTTPS-API från en tredje part via builder77:s servrar. Dina API-nycklar sparas under Inställningar → Hemliga nycklar och skrivs i koden som {{secret:NAME}}: servern fyller i dem, så de når aldrig webbläsaren.

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

Varje anrop använder 1 integrationskredit. Endast https, tidsgräns på 15 sekunder, svar på upp till 1 MB. Om ett API skickar tillbaka din nyckel ersätts den med [secret] innan din app ser svaret.

Regler för varje nyckel

Alla som använder din app kan göra anrop med en hemlig nyckel – utan att se den. Därför fungerar varje nyckel bara på det sätt du tillåter:

  • Tillåtna värdar – de enda servrar den någonsin skickas till (t.ex. api.openai.com; *.example.com omfattar underdomäner).
  • Tillåtna metoder – GET och POST som standard.
  • Tillåtna sökvägar – valfria sökvägsprefix som /v1/chat/. Tomt betyder valfri sökväg.
  • Var nyckeln får placeras – som standard bara i en autentiseringsheader (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key med flera). Frågeparametrar (efter namn, t.ex. key), URL:ens sökväg och anropets body är avstängda tills du slår på dem.

Ett anrop som bryter mot en regel nekas med status 403 innan något skickas.

Nycklar i URL:en eller body

Välj helst API:er som tar nyckeln i en header. Vissa lägger den i adressen i stället – tillåt då exakt den platsen och begränsa sökvägen:

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

Tillåt bara I anropets body om API:et kräver det: då kan alla som använder din app skriva in nyckeln i allt som API:et sparar (ett meddelande, en anteckning, en offentlig fil) och läsa ut den igen.