Introducción a @powerduck/openapi-request
@powerduck/openapi-request es un depurador de colecciones y un motor de ejecución de peticiones para OpenAPI 3.2. Prepara y envía peticiones a partir de un documento OpenAPI, identifica respuestas en streaming y puede generar un documento actualizado a partir de las respuestas observadas. Una interfaz compacta permite trabajar con seis protocolos de comunicación.
- Nombre del paquete:
@powerduck/openapi-request - Versión:
- Licencia: MIT
- Formato de módulos: distribuciones ESM y CommonJS con declaraciones de tipos incluidas.
Para qué sirve
La biblioteca cubre tres necesidades tomando el mismo documento como referencia:
- Cliente pensado para interfaces gráficas —
createClient()devuelve un objeto conprepare(),send(),connect(),discover()ywriteback(), que corresponden a los pasos de un editor gráfico de peticiones. - Depurador controlado por scripts —
createDebugger()devuelve unProtoKitconsend(),sendMany()ytoCollection()para automatización, scripts y CI. - Sesiones persistentes de gestión manual —
createManualSession()devuelve un objeto de sesión bidireccional con apertura, envío, cierre y un flujo de eventos. La estructura es la misma para WebSocket, MCP y gRPC, de modo que una única interfaz puede gestionar los tres.
Adaptadores de protocolo
El núcleo es independiente del transporte; los adaptadores de protocolo registrados en un AdapterRegistry aportan el comportamiento específico.
- HTTP / SSE — opción predeterminada. Detecta automáticamente las peticiones JSON convencionales y los flujos Server-Sent Events a partir de los tipos de contenido declarados o de las cabeceras de respuesta reales.
- WebSocket — sesiones bidireccionales de texto o datos binarios con un formato de evento común.
- gRPC — llamadas unarias, streaming de servidor, streaming de cliente y streaming bidireccional a partir de archivos
.protoo de la reflexión del servidor. - MCP — llamadas a herramientas de Model Context Protocol mediante Streamable HTTP o stdio.
- GraphQL — introspección, generación y ejecución de operaciones.
Funciones principales
- Modelo de colecciones OpenAPI 3.2 — localiza operaciones mediante
operationIdomethod+pathy prepara peticiones a partir de parámetros, cuerpos de petición y ejemplos. - Detección de streaming —
isStreamingOperation(),isSseContentType()eisStreamingContentType()clasifican las respuestas según los tipos de contenido declarados;probeStreamingResponse()examina las cabeceras de respuesta reales. - Incorporación de respuestas al documento —
inferSchema(),mergeSchema(),toResponseObject()ywriteBackResponse()deducen los esquemas de respuesta y devuelven un documento actualizado. De forma predeterminada,send()lo devuelve enpatchedSpecsi la incorporación tiene éxito;writeBack: falsedesactiva este comportamiento. El documento de entrada no se modifica ni se guarda ningún archivo automáticamente. CompruebawriteBackSkippedReasonywriteBackWarningsantes de guardar el resultado. - Utilidades de esquemas —
sampleFromSchema()genera datos de ejemplo a partir de un esquema. - Carga diferida de dependencias pesadas — gRPC (
@grpc/grpc-js,@grpc/proto-loader) y MCP (@modelcontextprotocol/sdk) se cargan al usarlos por primera vez. Quienes solo utilizan HTTP evitan ese coste de carga.
Instalación
npm install @powerduck/openapi-request
Inicio 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",
});
Siguientes pasos
- Instalación — estructura del paquete, exportaciones de subrutas y dependencias pares para las funciones de protocolo.
- Inicio rápido — primera petición, ejecución del depurador y sesión manual.
- Configuración —
CreateClientOptions,DebuggerOptionsy configuración por protocolo. - Referencia de la API — todas las exportaciones agrupadas por funcionalidad.
- Ejemplos — ejemplos ejecutables de HTTP, SSE, WebSocket, GraphQL, MCP y gRPC.
Licencia
MIT.