API de tercers (b77.http)
Crida qualsevol API HTTPS amb les teves claus secretes, sense exposar-les.
b77.http.fetch crida una API HTTPS de tercers des dels servidors de builder77. Les teves claus d'API es desen a Configuració → Claus secretes i al codi s'escriuen com a {{secret:NAME}}: el servidor les insereix, de manera que mai no arriben al navegador.
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) }Cada crida fa servir 1 crèdit d'integració. Només https, temps d'espera de 15 segons, respostes de fins a 1 MB. Si una API retorna la teva clau a la resposta, se substitueix per [secret] abans que la teva app vegi la resposta.
Regles per a cada clau secreta
Qualsevol persona que faci servir la teva app pot fer crides amb una clau secreta — sense veure-la. Per això cada clau només funciona tal com ho permets:
- Hosts permesos — els únics servidors als quals s'envia (p. ex.
api.openai.com;*.example.cominclou els subdominis). - Mètodes permesos — GET i POST per defecte.
- Camins permesos — prefixos de camí opcionals, com
/v1/chat/. Buit vol dir qualsevol camí. - On es pot posar la clau — per defecte només en una capçalera de credencials (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key i similars). Els paràmetres de consulta (pel nom, p. ex.
key), el camí de l'URL i el cos de la petició estan desactivats fins que els activis.
Una crida que incompleix una regla es rebutja amb l'estat 403 abans d'enviar res.
Claus a l'URL o al cos
Tria API que acceptin la clau en una capçalera. Algunes la demanen a l'adreça — permet exactament aquest lloc i restringeix el camí:
// 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!' },
});Activa Al cos de la petició només si l'API ho exigeix: qualsevol persona que faci servir la teva app podria escriure la clau en qualsevol cosa que desi aquesta API (un missatge, una nota, un fitxer públic) i tornar-la a llegir.