Backend i SDK

Zewnętrzne API (b77.http)

Wywołuj dowolne API HTTPS ze swoimi tajnymi kluczami, nie ujawniając ich.

b77.http.fetch wywołuje zewnętrzne API HTTPS z serwerów builder77. Twoje klucze API są przechowywane w sekcji Ustawienia → Sekrety i zapisywane w kodzie jako {{secret:NAME}}: serwer sam je wstawia, więc nigdy nie trafiają do przeglądarki.

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żde wywołanie zużywa 1 kredyt integracji. Tylko https, limit czasu 15 sekund, odpowiedzi do 1 MB. Jeśli API odeśle Twój klucz, zostanie on zastąpiony przez [secret], zanim aplikacja zobaczy odpowiedź.

Reguły dla każdego sekretu

Każdy użytkownik Twojej aplikacji może wykonywać wywołania z sekretem — nie widząc go. Dlatego każdy sekret działa tylko tak, jak pozwolisz:

  • Dozwolone hosty — jedyne serwery, do których jest kiedykolwiek wysyłany (np. api.openai.com; *.example.com obejmuje subdomeny).
  • Dozwolone metody — domyślnie GET i POST.
  • Dozwolone ścieżki — opcjonalne prefiksy ścieżek, np. /v1/chat/. Puste oznacza dowolną ścieżkę.
  • Gdzie można umieścić klucz — domyślnie tylko w nagłówku uwierzytelniającym (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key i podobnych). Parametry zapytania (według nazwy, np. key), ścieżka URL i treść żądania są wyłączone, dopóki ich nie włączysz.

Wywołanie łamiące regułę jest odrzucane ze statusem 403, zanim cokolwiek zostanie wysłane.

Klucze w URL lub treści żądania

Wybieraj API, które przyjmują klucz w nagłówku. Niektóre umieszczają go zamiast tego w adresie — zezwól dokładnie na to miejsce i zawęź ścieżkę:

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

Włączaj W treści żądania tylko wtedy, gdy API tego wymaga: każdy użytkownik Twojej aplikacji mógłby wtedy wpisać klucz do wszystkiego, co to API zapisuje (wiadomości, notatki, publicznego pliku), i odczytać go z powrotem.