バックエンドとSDK

外部API(b77.http)

秘密鍵を外に出さずに、どんなHTTPS APIでも呼び出せます。

b77.http.fetch は、builder77のサーバーから外部のHTTPS APIを呼び出します。APIキーは設定 → シークレット(詳細設定内)に保存します。builder77はキーを暗号化してサーバーに保存します。コードには {{secret:NAME}} と書いておけば、サーバー側で実際のキーに置き換えられるため、キーがブラウザに届くことはありません。

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

呼び出し1回につき連携クレジットを1消費します。呼び出しはhttpsのみで、15秒でタイムアウトし、受け取れる応答は1 MBまでです。APIがキーをそのまま返してきた場合は、アプリが応答を受け取る前に [secret] に置き換えられます。

シークレットごとのルール

アプリを使う人は誰でも、シークレットを見ることなく、それを使った呼び出しができます。そのため、各シークレットはあなたが許可した使い方でしか動かないようになっています。

  • 許可するホスト:キーを送る先のサーバーです。ここ以外には送られません(例:api.openai.com。*.example.com と書くとサブドメインも含みます)。
  • 許可するメソッド:初期設定はGETとPOSTです。
  • 許可するパス:/v1/chat/ のようなパスの先頭部分を任意で指定します。空欄ならどのパスでも使えます。
  • キーを入れてよい場所:初期設定では認証用のヘッダー(Authorization、X-Api-Key、Api-Key、X-Goog-Api-Keyなど)だけです。クエリパラメータ(key のように名前で指定)、URLのパス、リクエスト本文は、オンにするまで使えません。

ルールに反する呼び出しは、何も送信される前にステータス403で拒否されます。

URLや本文にキーを入れるAPI

できるだけ、キーをヘッダーで受け取るAPIを選んでください。中にはアドレスにキーを入れるAPIもあります。その場合は、その場所だけを許可し、パスを絞り込みます。

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

リクエスト本文は、APIがどうしても必要とする場合にだけ許可してください。許可すると、アプリを使う人なら誰でも、そのAPIが保存するもの(メッセージ、メモ、公開ファイルなど)にキーを書き込み、あとから読み出せてしまいます。