Pular para o conteúdo principal

Referência da API

Referência das principais APIs de integração de @powerduck/openapi-request. As tabelas resumem os contratos; as declarações TypeScript do pacote contêm todas as sobrecargas e os parâmetros opcionais. O ponto de entrada principal e os subcaminhos de protocolo não exportam exatamente os mesmos elementos.

APIs principais​

createClient(options?): ProtoClient​

Cria o cliente voltado a interfaces de usuário. O argumento options é opcional.

Parâmetros:

NomeTipoDescrição
optionsCreateClientOptionsConfiguração opcional
options.writeBackWriteBackOptionsControla como as respostas são mescladas à especificação
options.responseToResponseOptionsControla a normalização dos objetos de resposta

Retorna: um ProtoClient com os seguintes métodos:

MétodoAssinaturaDescrição
prepare(sendOptions: SendOptions) => PreparedRequestPlaneja uma requisição e retorna o protocolo, o modo de exibição e o tipo de fluxo
send(sendOptions: SendOptions) => Promise<SendResult>Executa uma requisição
sendMany(spec, targets, shared?) => Promise<SendManyResult>Executa um lote com resultados por destino; falhas não descartam os demais resultados
connect(connectOptions: ManualSessionOptions) => AnyManualSessionCria uma sessão websocket/mcp/grpc ainda não aberta; chame open() para conectar
discover(discoverOptions) => Promise<any>Descobre os recursos de MCP e gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentMescla a resposta observada no documento
dispose() => voidAtualmente não executa nenhuma ação; quem chama deve fechar suas sessões
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Executa uma requisição fetch e classifica a resposta; consuma ou cancele o corpo retornado

Exemplo:

import { createClient } from "@powerduck/openapi-request";

const client = createClient({
writeBack: { overwriteExamples: true },
});

const plan = client.prepare({
spec,
target: { operationId: "getUserById" },
});

const result = await client.send({
spec,
target: { operationId: "getUserById" },
values: { path: { id: "42" } },
});

createDebugger(config?): ProtoKit​

Cria o depurador programável para automação, scripts e CI.

Parâmetros:

NomeTipoDescrição
configDebuggerOptionsConfiguração opcional
config.adaptersProtocolAdapter[]Lista de adaptadores personalizados que substitui os padrões
config.extraAdaptersProtocolAdapter[]Adaptadores adicionais aos padrões
config.writeBackWriteBackOptionsOpções de gravação de resultados
config.responseToResponseOptionsOpções de normalização de respostas
config.writeBackTruncatedbooleanGrava o esquema inferido de fluxos truncados (padrão: true)

Retorna: um ProtoKit com prepare, send, sendMany, toCollection e outros métodos.

Exemplo:

import { createDebugger } from "@powerduck/openapi-request";

const dbg = createDebugger({
writeBackTruncated: true,
});

const result = await dbg.send({
spec,
target: { operationId: "getUserById" },
values: { path: { id: "42" } },
serverUrl: "https://api.example.com",
});

createManualSession(options): AnyManualSession​

Cria uma sessão duplex de longa duração para WebSocket, MCP ou gRPC. A função de criação não realiza E/S; a conexão é aberta com open().

Parâmetros:

NomeTipoDescrição
options.kind"websocket" | "mcp" | "grpc"Protocolo a usar
options.urlstringURL de conexão WebSocket
options.endpointstringEndpoint MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Transporte MCP; o padrão é Streamable HTTP
options.command, options.argsstring, string[]Executável local e argumentos para MCP stdio
options.address, options.service, options.methodstringEndereço gRPC, nome completo do serviço e método

Para gRPC, forneça também uma fonte de descritores por protoPaths ou reflection. As opções por protocolo estão em Configuração.

Retorna: uma sessão com open(), send(), close(), onEvent(), waitForClose(), events e state. onEvent() retorna uma inscrição com unsubscribe().

Exemplo:

import { createManualSession } from "@powerduck/openapi-request";

const session = createManualSession({
kind: "websocket",
url: "wss://api.example.com/ws",
});

const subscription = session.onEvent((event) => {
console.log(event.kind, event.data);
});
try {
await session.open();
await session.send({ type: "message", data: "hello" });
} finally {
await session.close();
subscription.unsubscribe();
}

AdapterRegistry​

Registro de instâncias de ProtocolAdapter. Um novo registro começa vazio; createDebugger() registra os adaptadores HTTP, WebSocket, gRPC, MCP e GraphQL integrados, salvo se uma lista personalizada os substituir. Use register(), unregister(), get(), list(), rank() e resolve() para gerenciar a seleção.

ProtoKitError​

Erro tipado lançado pelo depurador e pelos fluxos principais. Use instanceof ProtoKitError para distinguir erros da biblioteca de falhas inesperadas.

Tipos principais​

SendOptions​

Objeto de entrada principal de prepare() e send(). Recebe a especificação, o alvo, os valores e toda a configuração da requisição.

CampoTipoObrigatórioDescrição
specOpenApiDocumentSimDocumento OpenAPI 3.2 completo
targetOperationTargetSimIdentificador da operação, explicado abaixo
valuesRequestValuesNãoValores concretos para path/query/header/cookie/body
serverUrlstringNãoSubstitui spec.servers[0].url
serverVariablesRecord<string, string>NãoVariáveis do modelo de URL do servidor
variablesRecord<string, string>NãoVariáveis de ambiente referenciadas como {{name}}
globalsRecord<string, string>NãoVariáveis globais no estilo Postman
localVariablesRecord<string, string>NãoVariáveis locais
collectionVariablesRecord<string, string>NãoVariáveis de coleção
authAuthConfigNãoConfiguração de autenticação
scriptsScriptConfigNãoScripts anteriores à requisição e de testes
runnerRuntimeRunOptionsNãoRepasse completo das opções postman-runtime, com prioridade máxima
websocketWebSocketOptionsNãoOpções de WebSocket
graphqlGraphQLOptionsNãoOpções de GraphQL
mcpMcpOptionsNãoOpções de MCP
grpcanyNãoOpções de gRPC
timeoutnumberNãoTempo limite por requisição em ms, atalho para runner.timeout.request

SendOptions também aceita estes controles de execução e streaming:

CampoTipoDescrição
fetchtypeof fetchTransporte fetch isolado fornecido pelo host quando suportado; HTTP/SSE continuam usando postman-runtime.
writeBackbooleanDefinir false deixa patchedSpec indefinido, mas ainda produz responseFragment.
signalAbortSignalCancela a execução ou amostragem; um resultado parcial ainda pode ser retornado.
maxEventsnumberMáximo de eventos de streaming retidos.
maxStreamMsnumberDuração máxima da amostragem do fluxo em milissegundos.
maxResponseSizenumberLimite de bytes da resposta.
maxBufferCharsnumberLimite do buffer SSE antes de um delimitador de evento; padrão: 4194304 caracteres.
maxEventCharsnumberLimite de dados retidos por evento SSE; padrão: 1048576 caracteres.
inheritEventIdbooleanHerda o último ID de evento SSE quando ausente; padrão: true. Defina false para uma inferência de schema mais rigorosa.
onEvent(event: StreamEvent) => voidRecebe eventos do fluxo.
onConsole(log: ConsoleLog) => voidRecebe a saída de console dos scripts.
onAssertion(assertion: AssertionResult) => voidRecebe resultados de asserções.
onResponseStart(info: ResponseStartInfo) => voidInspeciona os primeiros cabeçalhos HTTP/SSE e a classificação streaming.
onOpen(info) => voidRecebe detalhes da conexão WebSocket: URL, protocolo e cabeçalhos.

Adaptadores podem interpretar os limites de formas diferentes. Mantenha leves os callbacks de interface; a camada de execução captura suas exceções. Para configurar o requester HTTP, use runner.requester; seu maxResponseSize, quando informado, deve ser positivo, não zero.

OperationTarget​

Identifica uma operação. Prefira operationId ou method + path. Se ambos forem fornecidos, operationId tem prioridade.

CampoTipoDescrição
operationIdstringChave alternativa de busca, com prioridade sobre caminho e método
methodstringMétodo HTTP sem distinção entre maiúsculas e minúsculas. Exige path.
pathstringCaminho parametrizado, como /users/{id}. Exige method.

RequestValues​

Valores concretos injetados na requisição gerada.

CampoTipoDescrição
pathRecord<string, unknown>Valores de parâmetros de caminho
queryRecord<string, unknown>Valores de parâmetros de consulta
headerRecord<string, unknown>Valores de cabeçalhos
cookieRecord<string, unknown>Valores de cookies
querystringstringQuery string bruta e já codificada, para a localização querystring do OpenAPI 3.2
bodyunknownCorpo da requisição
contentTypestringForça um tipo de mídia quando a operação declara vários
const result = await client.send({
spec,
target: { operationId: "updateUser" },
values: {
path: { id: "42" },
query: { version: "2" },
header: { "X-Request-Id": "abc-123" },
body: { name: "Alice", email: "alice@example.com" },
contentType: "application/json",
},
});

AuthConfig​

CampoTipoDescrição
typeAuthConfig["type"]Tipo de autenticação
tokenstringToken Bearer para type: "bearer"
usernamestringUsuário Basic para type: "basic"
passwordstringSenha Basic para type: "basic"
keystringNome da chave API para type: "apikey"
valuestringValor da chave API para type: "apikey"
in"header" | "query"Localização da chave API para type: "apikey"
// Bearer token
const result1 = await client.send({
spec,
target: { operationId: "getUser" },
auth: { type: "bearer", token: "your-jwt-token" },
});

// Basic auth
const result2 = await client.send({
spec,
target: { operationId: "getUser" },
auth: { type: "basic", username: "admin", password: "secret" },
});

// API key in header
const result3 = await client.send({
spec,
target: { operationId: "getUser" },
auth: { type: "apikey", key: "X-API-Key", value: "key-123", in: "header" },
});

Os tipos avançados são digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap e edgegrid. Passe os campos auxiliares Postman de HTTP/SSE/GraphQL por parameters: Record<string, string | boolean | number>. A opção oauth2: OAuth2FlowConfig ativa a obtenção e renovação de tokens OAuth 2.0; não presuma que todo mecanismo funciona com todos os protocolos.

PreparedRequest​

Retornado por createClient().prepare(). O depurador oferece outro resultado de planejamento: createDebugger().prepare() retorna um PlanResult com located, adapter e plan.

CampoTipoDescrição
protocolstringProtocolo resolvido (http, websocket, grpc, graphql, mcp)
transportstringTransporte resolvido
targetOperationTargetDestino original
operationanyObjeto de operação OpenAPI resolvido
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindClassificação do fluxo (veja abaixo)
stream.expectedbooleanIndica se streaming é esperado
openapi.extensionsRecord<string, unknown>Extensões OpenAPI resolvidas
warningsstring[]Avisos encontrados durante o planejamento

StreamKind​

Classificação precisa dos fluxos: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Funções auxiliares OpenAPI​

ExportaçãoAssinaturaDescrição
locateOperation(spec, target) => LocatedOperationResolve uma operação por OperationTarget
inferSchema(value) => SchemaInfere um JSON Schema a partir de um único valor observado
inferSchemaFromMany(values) => SchemaInfere um esquema que abrange vários valores observados
mergeSchema(a, b) => SchemaMescla dois esquemas inferidos (união ou combinação)
sampleFromSchema(schema) => unknownProduz um valor de exemplo realista para um esquema
toResponseObject(result, options?) => { statusCode: string; response: any }Constrói um objeto de resposta OpenAPI a partir de um resultado observado
writeBackResponse(spec, path, method, fragment, options?) => specMescla uma resposta observada no documento

Tipos exportados: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Os nomes abaixo estão disponíveis no ponto de entrada principal. O subcaminho @powerduck/openapi-request/http exporta HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions e runWithPostman; importe as funções de detecção e BUILTIN_CAPTURE_TEST pelo ponto de entrada principal.

ExportaçãoDescrição
HttpAdapterAdaptador de protocolo padrão para HTTP/HTTPS
SseParserParser de streaming que transforma um fluxo de bytes SSE em eventos estruturados
isStreamingOperationClassifica uma operação como streaming pelos tipos de conteúdo declarados
isSseContentTypeVerifica se um tipo de conteúdo indica SSE
isStreamingContentTypeVerifica se um tipo de conteúdo indica streaming
acceptHeaderForGera o cabeçalho Accept adequado para uma operação
probeStreamingResponseExecuta uma requisição fetch e classifica a resposta; consuma ou cancele o corpo retornado
BUILTIN_CAPTURE_TESTScript de teste Postman integrado para capturar a última resposta

WebSocket​

Importe de @powerduck/openapi-request/ws.

ExportaçãoDescrição
WebSocketAdapterAdaptador de protocolo para destinos WebSocket
createWsManualSessionCria uma sessão WebSocket manual duplex, também disponível como runWebSocketSession e wsManualSession

GraphQL​

Importe de @powerduck/openapi-request/graphql.

ExportaçãoDescrição
GraphQLAdapterAdaptador de protocolo para destinos GraphQL
resolveGraphQLConfigResolve a configuração GraphQL de uma operação
runGraphQLExecuta uma operação GraphQL
introspectSchemaObtém por introspecção o esquema de um endpoint GraphQL
INTROSPECTION_QUERYConsulta padrão de introspecção GraphQL
generateOperationGera um documento de consulta a partir de um esquema GraphQL obtido por introspecção e de um campo
generateAllOperationsGera documentos de consulta para os campos de um esquema GraphQL obtido por introspecção
writeGraphQLOperationsGrava as operações GraphQL geradas na especificação
discoverAndWriteGraphQLSchemaDescobre um esquema GraphQL e o grava na especificação

MCP (Model Context Protocol)​

A maioria dos itens abaixo está disponível em @powerduck/openapi-request/mcp. Importe initializeMcpSession pelo ponto de entrada principal; no subcaminho, o nome é initializeSession. O subcaminho também expõe runMcp, createMcpSessionCore e createMcpStdioConnection.

ExportaçãoDescrição
McpAdapterAdaptador de protocolo para destinos MCP
createMcpManualSessionCria uma sessão MCP manual, também disponível como mcpManualSession
createMcpStdioSessionCria uma sessão MCP por stdio
runMcpManualSessionObsoleto: use createMcpManualSession
resolveMcpConfigResolve a configuração MCP de uma operação
initializeMcpSessionInicializa uma sessão MCP (alias de initializeSession)
discoverMcpCapabilitiesDescobre os recursos do servidor MCP
MCP_PROTOCOL_VERSIONVersão compatível do protocolo MCP
generateMcpCallGera uma chamada de ferramenta MCP
generateAllMcpCallsGera todas as chamadas de ferramentas MCP
writeMcpOperationsGrava as operações MCP na especificação
discoverAndWriteMcpCapabilitiesDescobre os recursos MCP e os grava na especificação
createHttpMcpTransportCria um transporte HTTP para MCP
createStdioMcpTransportCria um transporte stdio para MCP

gRPC​

Importe as funções de baixo nível para descoberta, chamadas e descritores de @powerduck/openapi-request/grpc. Importe GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover e discoverGrpc pelo ponto de entrada principal; o subcaminho usa discover para descoberta. Ele também oferece discoverFromCatalog, describeMethod e describeFromCatalog, permitindo reutilizar um catálogo sem repetir a reflexão para cada método.

ExportaçãoDescrição
GrpcProtocolAdapterAdaptador de protocolo gRPC voltado a OpenAPI
GrpcAdapterAdaptador gRPC de baixo nível
grpcDiscover / discoverGrpcDescobre serviços e métodos gRPC
createGrpcManualSession / grpcManualSessionCria uma sessão gRPC manual
grpcCallExecuta uma chamada gRPC
resolveMethodResolve um descritor de método gRPC
buildMessageTemplateCria um modelo de mensagem a partir de um descritor
buildCatalogCria um catálogo de serviços e métodos
LOADER_OPTIONSOpções padrão do carregador proto
scanProtoFilesProcura arquivos proto em diretórios
deriveIncludeDirsDetailedDeriva os diretórios de inclusão dos caminhos de arquivos proto
fetchDescriptorSetObtém um conjunto de descritores por reflexão gRPC
fetchFullDescriptorSetObtém um conjunto completo de descritores com todas as dependências
listServicesLista os serviços de um conjunto de descritores
listServicesDetailedLista os serviços com informações detalhadas dos métodos
serializeDescriptorSetSerializa um conjunto de descritores em bytes
decodeFileDescriptorProtoDecodifica um proto de descritor de arquivo
decodeFileDescriptorSetDecodifica um conjunto de descritores de arquivos
buildCredentialsCria credenciais gRPC de forma síncrona
buildCredentialsAsyncCria credenciais gRPC de forma assíncrona
buildCredentialsCheckedCria e valida credenciais de forma síncrona
buildCredentialsCheckedAsyncCria e valida credenciais de forma assíncrona
loadGrpcCarrega dinamicamente o pacote @grpc/grpc-js
isGrpcAvailableVerifica se as dependências gRPC estão disponíveis
requireCapabilityExige um recurso gRPC específico e lança erro se ele estiver indisponível

O ponto de entrada principal exporta os aliases de tipo GrpcDiscoveryResult, GrpcDiscoveredMethod e GrpcDiscoveredService. No subcaminho gRPC, os nomes são DiscoveryResult, DiscoveredMethod e DiscoveredService.

Tipos de erro: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Outros utilitários​

O ponto de entrada principal também exporta as funções OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses e authFromOAuth2Token, o utilitário de cópia toCloneable, a classe base UnifiedSession e as funções de gravação gRPC writeGrpcOperations e discoverAndWriteGrpcOperations.

Exportações por subcaminho​

// Main integration entry
import { createClient, createDebugger } from "@powerduck/openapi-request";

// Protocol-specific entries
import { HttpAdapter } from "@powerduck/openapi-request/http";
import { WebSocketAdapter } from "@powerduck/openapi-request/ws";
import { GrpcAdapter } from "@powerduck/openapi-request/grpc";
import { McpAdapter } from "@powerduck/openapi-request/mcp";
import { GraphQLAdapter } from "@powerduck/openapi-request/graphql";