Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Conceitos de HTTP Trigger: Recebendo Requisições

Familiarize-se com a capability HTTP Trigger

O HTTP Trigger dispara quando uma requisição HTTP é feita ao endpoint designado do workflow. Isso permite que você inicie workflows a partir de sistemas externos, perfeito para:

  • Criar recursos (como nossos mercados)
  • Workflows orientados por API
  • Integração com sistemas externos

O código do HTTP trigger

import { cre } from "@chainlink/cre-sdk";

const http = new cre.capabilities.HTTPCapability();

// Trigger básico (sem autorização)
const trigger = http.trigger({});

// Ou com chaves autorizadas para validação de assinatura
const trigger = http.trigger({
  authorizedKeys: [
    {
      type: "KEY_TYPE_ECDSA_EVM",
      publicKey: "0x...",
    },
  ],
});

Configuração

O método trigger() aceita um objeto de configuração com o seguinte campo:

  • authorizedKeys: AuthorizedKey[] - Uma lista de chaves públicas usadas para validar a assinatura das requisições recebidas.

AuthorizedKey

Define uma chave pública usada para autenticação de requisições.

  • type: string - O tipo da chave. Use "KEY_TYPE_ECDSA_EVM" para assinaturas EVM.
  • publicKey: string - A chave pública como string.

Exemplo:

const config = {
  authorizedKeys: [
    {
      type: "KEY_TYPE_ECDSA_EVM",
      publicKey: "0x1234567890abcdef...",
    },
  ],
};

Durante a simulação local estamos usando o trigger básico (sem autorização) para simplificar os testes.

Payload do HTTP Trigger

O payload passado para sua função callback contém os dados da requisição HTTP.

  • input: Uint8Array - A entrada JSON do corpo da requisição HTTP como bytes brutos.
  • method: string - Método HTTP (GET, POST, etc.).
  • headers: Record<string, string> - Cabeçalhos da requisição.

Trabalhando com o campo input:

O campo input é um Uint8Array contendo os bytes brutos do corpo da requisição HTTP. O SDK fornece um helper decodeJson para analisá-lo:

import { decodeJson } from "@chainlink/cre-sdk";

// Analisar como JSON (recomendado)
const inputData = decodeJson(payload.input);

// Ou converter para string manualmente
const inputString = new TextDecoder().decode(payload.input);

// Ou analisar manualmente
const inputJson = JSON.parse(new TextDecoder().decode(payload.input));

Função callback

Sua função callback para HTTP triggers deve seguir esta assinatura:

import { type Runtime, type HTTPPayload } from "@chainlink/cre-sdk";

const onHttpTrigger = (runtime: Runtime<Config>, payload: HTTPPayload): YourReturnType => {
  // Sua lógica de workflow aqui
  return result;
}

Parâmetros:

  • runtime: O objeto runtime usado para invocar capabilities e acessar configuração
  • payload: O payload HTTP contendo a entrada da requisição, método e cabeçalhos