Pular para o conteúdo principal

O que são secrets?

Secrets são variáveis de ambiente criptografadas que você acessa em tempo de execução através de ctx.env. Use-os para chaves de API, URLs de banco de dados, tokens de serviços externos e quaisquer valores sensíveis.

Configure secrets

Você tem três formas de configurar secrets com o CLI:
Passe pares KEY=VALUE diretamente:
jelou secrets set query-customer CRM_API_KEY=sk_test_EXAMPLE JELOU_API_KEY=jfn_pat_EXAMPLE
# ✓ Set 2 secrets
As chaves devem estar em UPPER_SNAKE_CASE (padrão: ^[A-Z][A-Z0-9_]*$).

Acesse secrets na sua função

Use ctx.env dentro do handler:
index.ts
import { define, z } from "@jelou/functions";

export default define({
  name: "send-whatsapp",
  description: "Sends a WhatsApp message using the Jelou API",
  input: z.object({
    phone: z.string().min(10),
    message: z.string().min(1),
  }),
  handler: async (input, ctx) => {
    const apiKey = ctx.env.get("JELOU_API_KEY");
    const botId = ctx.env.get("BOT_ID");

    if (!apiKey) {
      ctx.log("Error: JELOU_API_KEY not configured");
      return { sent: false, error: "Missing API key" };
    }

    const res = await fetch("https://api.jelou.ai/v1/messages/send", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${apiKey}`,
      },
      body: JSON.stringify({
        botId,
        phone: input.phone,
        message: input.message,
      }),
    });

    return { sent: res.ok, status: res.status };
  },
});

Métodos de ctx.env

MétodoRetornaDescrição
ctx.env.get("KEY")string | undefinedObtém o valor de um secret
ctx.env.has("KEY")booleanVerifica se um secret existe
ctx.env.toObject()Record<string, string>Obtém todos os secrets como objeto

Variáveis bloqueadas

Variáveis internas da plataforma com o prefixo __FN_ são bloqueadas. Chamar ctx.env.get("__FN_COMPANY_ID") retorna undefined.

Desenvolvimento local

No desenvolvimento local, o servidor jelou dev carrega secrets do seu arquivo .env:
.env
CRM_API_KEY=sk-test-local123
JELOU_API_KEY=jfn_pat_test_local
DATABASE_URL=postgres://localhost:5432/mydb
Você pode especificar um arquivo diferente:
jelou dev --env .env.local
Nunca faça commit do seu arquivo .env no repositório. O jelou init o adiciona automaticamente ao .gitignore.

Listar e deletar secrets

jelou secrets list query-customer
# ▸ Key              Updated
# ▸ CRM_API_KEY      2 hours ago
# ▸ JELOU_API_KEY    3 days ago

jelou secrets delete query-customer CRM_API_KEY
# ✓ Deleted CRM_API_KEY

Secrets em CI/CD

Em pipelines de CI, use variáveis de ambiente do sistema para injetar secrets:
deploy.yml
- name: Configure secrets and deploy
  env:
    JELOU_TOKEN: ${{ secrets.JELOU_TOKEN }}
  run: |
    jelou secrets set query-customer \
      CRM_API_KEY=${{ secrets.CRM_API_KEY }} \
      JELOU_API_KEY=${{ secrets.JELOU_API_KEY }}
    jelou deploy --no-confirm