APIs de terceiros (b77.http)
Chame qualquer API HTTPS com as suas chaves secretas, sem as expor.
b77.http.fetch chama uma API HTTPS de terceiros a partir dos servidores do builder77. As suas chaves de API ficam guardadas em Definições → Chaves secretas e escrevem-se no código como {{secret:NAME}}: o servidor preenche-as, por isso nunca chegam ao 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 chamada usa 1 crédito de integrações. Só https, tempo limite de 15 segundos, respostas até 1 MB. Se uma API devolver a sua chave, esta é substituída por [secret] antes de a sua app ver a resposta.
Regras de cada chave
Qualquer pessoa que use a sua app pode fazer chamadas com uma chave secreta, sem a ver. Por isso, cada chave só funciona da forma que permitir:
- Hosts permitidos — os únicos servidores para onde é enviada (por ex.
api.openai.com;*.example.comabrange os subdomínios). - Métodos permitidos — GET e POST por predefinição.
- Caminhos permitidos — prefixos de caminho opcionais, como
/v1/chat/. Vazio significa qualquer caminho. - Onde a chave pode ser colocada — por predefinição, só num cabeçalho de credenciais (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key e semelhantes). Os parâmetros de consulta (por nome, por ex.
key), o caminho do URL e o corpo do pedido ficam desligados até os ativar.
Uma chamada que viole uma regra é recusada com o estado 403 antes de qualquer envio.
Chaves no URL ou no corpo
Prefira APIs que recebam a chave num cabeçalho. Algumas colocam-na no endereço: nesse caso, permita exatamente esse ponto e restrinja o caminho.
// 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!' },
});Só permita No corpo do pedido se a API o exigir: qualquer pessoa que use a sua app poderia escrever a chave em tudo o que essa API guarda (uma mensagem, uma nota, um ficheiro público) e voltar a lê-la.