Executar
Uma function roda de quatro jeitos: pelo domínio dela, pelo SDK, por agendamento e por evento. Quem pode executar por HTTP e pelo SDK é o que está em Quem pode executar (qualquer pessoa, usuários logados ou só com chave de API).
Pelo domínio
Seção intitulada “Pelo domínio”Cada function responde em https://<id>.fn.owbase.dev, com qualquer método e caminho: o pedido chega inteiro em req. É o jeito de receber webhooks de outros serviços e de servir uma API pequena. Essas chamadas são síncronas.
Pelo SDK
Seção intitulada “Pelo SDK”import { ExecutionMethod, Functions } from '@owbase/web';import { client } from './client';
const functions = new Functions(client);
// Síncrona: espera a resposta da function (até 30 s).const execucao = await functions.createExecution({ functionId: '<ID_DA_FUNCTION>', xpath: '/pedidos', method: ExecutionMethod.POST, headers: { 'content-type': 'application/json' }, body: JSON.stringify({ total: 120 }),});console.log(execucao.responseStatusCode, execucao.responseBody);Síncrona ou assíncrona
Seção intitulada “Síncrona ou assíncrona”- Síncrona (padrão): o SDK espera e devolve a resposta (
responseStatusCode,responseBody). A function precisa responder dentro do tempo limite dela (padrão 15 s, configurável até 900 s) e em até 30 s, já contando a partida a frio. Pelo domínio da function, o teto da chamada síncrona é de 60 s. - Assíncrona (
async: true): volta na hora, com a execução na fila. O resultado sai depois, emgetExecution, e a function pode rodar até o tempo limite dela. ComscheduledAt, a execução fica marcada para uma data e hora.
import { ExecutionMethod, ExecutionStatus, Functions } from '@owbase/node';import { client } from './client';
// A chave precisa dos escopos executions.write e executions.read.const functions = new Functions(client);
// Assíncrona: volta na hora, na fila; o resultado sai depois (até o tempo limite da function).const fila = await functions.createExecution({ functionId: '<ID_DA_FUNCTION>', async: true, xpath: '/relatorio', method: ExecutionMethod.POST });
let execucao = fila;while (execucao.status === ExecutionStatus.Waiting || execucao.status === ExecutionStatus.Processing) { await new Promise((r) => setTimeout(r, 2000)); execucao = await functions.getExecution({ functionId: '<ID_DA_FUNCTION>', executionId: fila.$id });}console.log(execucao.status, execucao.responseStatusCode, execucao.logs);Agendamento
Seção intitulada “Agendamento”Em Configurações → Agendamento (cron), uma expressão de cinco campos: minuto, hora, dia, mês e dia da semana. O horário é UTC: 0 12 * * 1-5 roda ao meio-dia UTC (9h em Brasília) de segunda a sexta. O console mostra a próxima execução.
Eventos
Seção intitulada “Eventos”Em Configurações → Eventos, escolha o que dispara a function, como users.*.create (usuário criado), databases.*.tables.*.rows.*.create (linha criada) ou buckets.*.files.*.create (arquivo enviado). Em Outros eventos dá para restringir a um recurso: buckets.fotos.files.*.create. O evento chega em x-owbase-event, e o recurso, no corpo do pedido.
Escopos da chave da execução
Seção intitulada “Escopos da chave da execução”O header x-owbase-key traz uma chave temporária com os escopos de Configurações → Escopos da chave da execução. Dê só o que o código usa (por exemplo, rows.write e users.read).
A aba Execuções lista cada execução (status, gatilho, método e caminho, código HTTP, duração). O detalhe mostra o pedido, a resposta, os logs e os erros. Executar agora faz uma execução de teste pelo console.