Introdução ao @powerduck/openapi-request
@powerduck/openapi-request é um depurador de coleções e um mecanismo de execução de requisições para OpenAPI 3.2. Ele prepara e envia requisições com base em um documento OpenAPI, identifica respostas em streaming e pode gerar um documento atualizado a partir das respostas observadas. Uma interface compacta dá acesso a seis protocolos de comunicação.
- Nome do pacote:
@powerduck/openapi-request - Versão:
- Licença: MIT
- Formato dos módulos: distribuições ESM e CommonJS com declarações de tipos incluídas.
Para que serve
A biblioteca atende a três necessidades usando o mesmo documento como referência:
- Cliente voltado a interfaces gráficas —
createClient()retorna um objeto comprepare(),send(),connect(),discover()ewriteback(), que correspondem às etapas de um editor gráfico de requisições. - Depurador controlado por scripts —
createDebugger()retorna umProtoKitcomsend(),sendMany()etoCollection()para automação, scripts e CI. - Sessões persistentes com controle manual —
createManualSession()retorna um objeto de sessão bidirecional com abertura, envio, fechamento e fluxo de eventos. A estrutura é a mesma para WebSocket, MCP e gRPC, permitindo que uma única interface controle os três.
Adaptadores de protocolo
O núcleo é independente do transporte; os adaptadores de protocolo registrados em um AdapterRegistry fornecem o comportamento específico.
- HTTP / SSE — suporte padrão. Requisições JSON convencionais e fluxos Server-Sent Events são identificados automaticamente pelos tipos de conteúdo declarados ou pelos cabeçalhos das respostas reais.
- WebSocket — sessões bidirecionais de texto ou dados binários com uma estrutura de evento comum.
- gRPC — chamadas unárias, streaming do servidor, streaming do cliente e streaming bidirecional com base em arquivos
.protoou reflexão do servidor. - MCP — chamadas a ferramentas do Model Context Protocol via Streamable HTTP ou stdio.
- GraphQL — introspecção, geração e execução de operações.
Recursos principais
- Modelo de coleções OpenAPI 3.2 — localiza operações por
operationIdoumethod+pathe prepara requisições a partir de parâmetros, corpos de requisição e exemplos. - Detecção de streaming —
isStreamingOperation(),isSseContentType()eisStreamingContentType()classificam respostas pelos tipos de conteúdo declarados;probeStreamingResponse()examina os cabeçalhos das respostas reais. - Incorporação de respostas ao documento —
inferSchema(),mergeSchema(),toResponseObject()ewriteBackResponse()inferem esquemas de resposta e retornam um documento atualizado. Por padrão,send()o retorna empatchedSpecquando a incorporação é bem-sucedida;writeBack: falsedesativa esse comportamento. O documento de entrada não é alterado e nenhum arquivo é salvo automaticamente. VerifiquewriteBackSkippedReasonewriteBackWarningsantes de persistir o resultado. - Utilitários de esquema —
sampleFromSchema()gera dados de exemplo a partir de um esquema. - Carregamento sob demanda de dependências pesadas — gRPC (
@grpc/grpc-js,@grpc/proto-loader) e MCP (@modelcontextprotocol/sdk) são carregados no primeiro uso. Aplicações que usam apenas HTTP não arcam com esse custo de carregamento.
Instalação
npm install @powerduck/openapi-request
Início rápido
import { createClient } from "@powerduck/openapi-request";
const spec = {
openapi: "3.2.0",
info: { title: "Users", version: "1.0.0" },
paths: {
"/users/{id}": {
get: {
operationId: "getUserById",
parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }],
responses: { "200": { description: "User" } },
},
},
},
};
const client = createClient();
const plan = client.prepare({
spec,
target: { operationId: "getUserById" },
});
const result = await client.send({
spec,
target: { operationId: "getUserById" },
values: { path: { id: "42" } },
serverUrl: "https://api.example.com",
});
Próximos passos
- Instalação — estrutura do pacote, exportações de subcaminhos e dependências pares para os recursos de protocolo.
- Início rápido — primeira requisição, execução do depurador e sessão manual.
- Configuração —
CreateClientOptions,DebuggerOptionse configuração por protocolo. - Referência da API — todas as exportações agrupadas por funcionalidade.
- Exemplos — exemplos executáveis de HTTP, SSE, WebSocket, GraphQL, MCP e gRPC.
Licença
MIT.