Бекенд і SDK

Сторонні API (b77.http)

Викликай будь-який HTTPS API зі своїми секретними ключами, не розкриваючи їх.

b77.http.fetch викликає сторонній HTTPS API із серверів builder77. Твої API-ключі зберігаються в Налаштування → Секретні ключі, а в коді записуються як {{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 кредит інтеграцій. Лише https, тайм-аут 15 секунд, відповіді до 1 МБ. Якщо 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, які приймають ключ у заголовку. Деякі натомість вимагають його в адресі — дозволь саме це місце й звузь шлях:

// 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 (повідомлення, нотатку, публічний файл), і прочитати його назад.