Saltar al contenido principal

Referencia de la API

Referencia de las principales API de integración de @powerduck/openapi-request. Las tablas resumen los contratos; las declaraciones TypeScript del paquete contienen todas las sobrecargas y los parámetros opcionales. El punto de entrada principal y los subdirectorios de exportación por protocolo no ofrecen exactamente los mismos elementos.

API principales​

createClient(options?): ProtoClient​

Crea el cliente orientado a interfaces de usuario. El argumento options es opcional.

Parámetros:

NombreTipoDescripción
optionsCreateClientOptionsConfiguración opcional
options.writeBackWriteBackOptionsControla cómo se fusionan las respuestas con la especificación
options.responseToResponseOptionsControla la normalización de los objetos de respuesta

Devuelve: un ProtoClient con los siguientes métodos:

MétodoFirmaDescripción
prepare(sendOptions: SendOptions) => PreparedRequestPlanifica una petición y devuelve el protocolo, el modo de visualización y el tipo de flujo
send(sendOptions: SendOptions) => Promise<SendResult>Ejecuta una petición
sendMany(spec, targets, shared?) => Promise<SendManyResult>Ejecuta un lote con resultados por destino; un fallo no descarta los demás resultados
connect(connectOptions: ManualSessionOptions) => AnyManualSessionCrea una sesión websocket/mcp/grpc sin abrir; llama a open() para conectarla
discover(discoverOptions) => Promise<any>Descubre las capacidades de MCP y gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentFusiona la respuesta observada con el documento
dispose() => voidActualmente no realiza ninguna acción; quien llama debe cerrar sus sesiones
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Realiza una petición fetch y clasifica su respuesta; consume o cancela el cuerpo devuelto

Ejemplo:

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​

Crea el depurador programable para automatización, scripts y CI.

Parámetros:

NombreTipoDescripción
configDebuggerOptionsConfiguración opcional
config.adaptersProtocolAdapter[]Lista de adaptadores personalizados que sustituye a los predeterminados
config.extraAdaptersProtocolAdapter[]Adaptadores adicionales a los predeterminados
config.writeBackWriteBackOptionsOpciones de escritura de resultados
config.responseToResponseOptionsOpciones de normalización de respuestas
config.writeBackTruncatedbooleanIncorpora el esquema inferido de flujos truncados (predeterminado: true)

Devuelve: un ProtoKit con prepare, send, sendMany, toCollection y otros métodos.

Ejemplo:

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​

Crea una sesión dúplex de larga duración para WebSocket, MCP o gRPC. La función de creación no realiza E/S; la conexión se abre con open().

Parámetros:

NombreTipoDescripción
options.kind"websocket" | "mcp" | "grpc"Protocolo que se utilizará
options.urlstringURL de conexión WebSocket
options.endpointstringEndpoint MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Transporte MCP; Streamable HTTP de forma predeterminada
options.command, options.argsstring, string[]Ejecutable local y argumentos para MCP stdio
options.address, options.service, options.methodstringDirección gRPC, nombre completo del servicio y método

Para gRPC, proporciona también una fuente de descriptores mediante protoPaths o reflection. Las opciones por protocolo se detallan en Configuración.

Devuelve: una sesión con open(), send(), close(), onEvent(), waitForClose(), events y state. onEvent() devuelve una suscripción con unsubscribe().

Ejemplo:

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 instancias de ProtocolAdapter. Un registro nuevo está vacío; createDebugger() registra los adaptadores integrados HTTP, WebSocket, gRPC, MCP y GraphQL, salvo que una lista personalizada los sustituya. Usa register(), unregister(), get(), list(), rank() y resolve() para gestionar la selección.

ProtoKitError​

Error tipado que lanzan el depurador y los procesos principales. Usa instanceof ProtoKitError para distinguir los errores de la biblioteca de otros fallos inesperados.

Tipos principales​

SendOptions​

Objeto de entrada principal de prepare() y send(). Recibe la especificación, el destino, los valores y toda la configuración de la solicitud.

CampoTipoObligatorioDescripción
specOpenApiDocumentSíDocumento OpenAPI 3.2 completo
targetOperationTargetSíIdentificador de operación, explicado más abajo
valuesRequestValuesNoValores concretos para path/query/header/cookie/body
serverUrlstringNoSustituye spec.servers[0].url
serverVariablesRecord<string, string>NoVariables de la plantilla de URL del servidor
variablesRecord<string, string>NoVariables de entorno referenciadas como {{name}}
globalsRecord<string, string>NoVariables globales de estilo Postman
localVariablesRecord<string, string>NoVariables locales
collectionVariablesRecord<string, string>NoVariables de colección
authAuthConfigNoConfiguración de autenticación
scriptsScriptConfigNoScripts previos a la solicitud y de pruebas
runnerRuntimeRunOptionsNoOpciones completas de postman-runtime transmitidas con máxima prioridad
websocketWebSocketOptionsNoOpciones de WebSocket
graphqlGraphQLOptionsNoOpciones de GraphQL
mcpMcpOptionsNoOpciones de MCP
grpcanyNoOpciones de gRPC
timeoutnumberNoTiempo límite por solicitud en ms; atajo para runner.timeout.request

SendOptions también acepta estos controles de ejecución y streaming:

CampoTipoDescripción
fetchtypeof fetchTransporte fetch aislado proporcionado por el host donde se admita; HTTP/SSE siguen usando postman-runtime.
writeBackbooleanAl establecer false, deja patchedSpec sin definir y sigue generando responseFragment.
signalAbortSignalCancela la ejecución o el muestreo; aún puede devolver un resultado parcial.
maxEventsnumberMáximo de eventos de streaming conservados.
maxStreamMsnumberDuración máxima del muestreo del flujo en milisegundos.
maxResponseSizenumberLímite de bytes de la respuesta.
maxBufferCharsnumberLímite del búfer SSE antes de un límite de evento; por defecto 4194304 caracteres.
maxEventCharsnumberLímite de datos conservados por evento SSE; por defecto 1048576 caracteres.
inheritEventIdbooleanHereda el último ID de evento SSE cuando falta; por defecto true. Use false para una inferencia de esquemas más estricta.
onEvent(event: StreamEvent) => voidRecibe eventos del flujo.
onConsole(log: ConsoleLog) => voidRecibe la salida de consola de los scripts.
onAssertion(assertion: AssertionResult) => voidRecibe resultados de aserciones.
onResponseStart(info: ResponseStartInfo) => voidInspecciona las primeras cabeceras HTTP/SSE y la clasificación streaming.
onOpen(info) => voidRecibe detalles de la conexión WebSocket: URL, protocolo y cabeceras.

Los adaptadores pueden interpretar los límites de forma distinta. Mantenga ligeros los callbacks de la interfaz; la capa de ejecución captura sus excepciones. Para ajustar el requester HTTP use runner.requester; su maxResponseSize, si se indica, debe ser positivo, no cero.

OperationTarget​

Identifica una operación. Use preferiblemente operationId o method + path. Si se proporcionan ambos, prevalece operationId.

CampoTipoDescripción
operationIdstringClave de búsqueda alternativa con prioridad sobre ruta y método
methodstringMétodo HTTP sin distinguir mayúsculas. Requiere path.
pathstringRuta parametrizada, por ejemplo /users/{id}. Requiere method.

RequestValues​

Valores concretos inyectados en la solicitud generada.

CampoTipoDescripción
pathRecord<string, unknown>Valores de parámetros de ruta
queryRecord<string, unknown>Valores de parámetros de consulta
headerRecord<string, unknown>Valores de cabeceras
cookieRecord<string, unknown>Valores de cookies
querystringstringCadena de consulta sin procesar y ya codificada, para la ubicación querystring de OpenAPI 3.2
bodyunknownCuerpo de la solicitud
contentTypestringFuerza un tipo de medio si la operación declara varios
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​

CampoTipoDescripción
typeAuthConfig["type"]Tipo de autenticación
tokenstringToken Bearer para type: "bearer"
usernamestringUsuario Basic para type: "basic"
passwordstringContraseña Basic para type: "basic"
keystringNombre de clave API para type: "apikey"
valuestringValor de clave API para type: "apikey"
in"header" | "query"Ubicación de clave 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" },
});

Los tipos avanzados son digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap y edgegrid. Pase sus campos auxiliares Postman de HTTP/SSE/GraphQL mediante parameters: Record<string, string | boolean | number>. La opción oauth2: OAuth2FlowConfig activa la obtención y renovación de tokens OAuth 2.0; no suponga que todos los mecanismos funcionan con todos los protocolos.

PreparedRequest​

Lo devuelve createClient().prepare(). El depurador ofrece otro resultado de planificación: createDebugger().prepare() devuelve un PlanResult con located, adapter y plan.

CampoTipoDescripción
protocolstringProtocolo resuelto (http, websocket, grpc, graphql, mcp)
transportstringTransporte resuelto
targetOperationTargetDestino original
operationanyObjeto de operación OpenAPI resuelto
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindClasificación del flujo (véase más abajo)
stream.expectedbooleanIndica si se espera streaming
openapi.extensionsRecord<string, unknown>Extensiones OpenAPI resueltas
warningsstring[]Advertencias durante la planificación

StreamKind​

Clasificación precisa de flujos: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Funciones auxiliares de OpenAPI​

ExportaciónFirmaDescripción
locateOperation(spec, target) => LocatedOperationResuelve una operación mediante OperationTarget
inferSchema(value) => SchemaInfiere un JSON Schema a partir de un único valor observado
inferSchemaFromMany(values) => SchemaInfiere un esquema que abarca varios valores observados
mergeSchema(a, b) => SchemaFusiona dos esquemas inferidos (unión o combinación)
sampleFromSchema(schema) => unknownGenera un valor de ejemplo realista para un esquema
toResponseObject(result, options?) => { statusCode: string; response: any }Construye un objeto de respuesta OpenAPI a partir de un resultado observado
writeBackResponse(spec, path, method, fragment, options?) => specFusiona una respuesta observada con el documento

Tipos exportados: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Los siguientes nombres están disponibles en el punto de entrada principal. La ruta @powerduck/openapi-request/http exporta HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions y runWithPostman; importa las funciones de detección y BUILTIN_CAPTURE_TEST desde el punto de entrada principal.

ExportaciónDescripción
HttpAdapterAdaptador de protocolo predeterminado para HTTP/HTTPS
SseParserAnalizador que convierte un flujo de bytes SSE en eventos estructurados
isStreamingOperationClasifica una operación como streaming según los tipos de contenido declarados
isSseContentTypeComprueba si un tipo de contenido indica SSE
isStreamingContentTypeComprueba si un tipo de contenido indica streaming
acceptHeaderForGenera la cabecera Accept adecuada para una operación
probeStreamingResponseRealiza una petición fetch y clasifica su respuesta; consume o cancela el cuerpo devuelto
BUILTIN_CAPTURE_TESTScript de prueba Postman integrado para capturar la última respuesta

WebSocket​

Importa desde @powerduck/openapi-request/ws.

ExportaciónDescripción
WebSocketAdapterAdaptador de protocolo para destinos WebSocket
createWsManualSessionCrea una sesión WebSocket manual dúplex, también disponible como runWebSocketSession y wsManualSession

GraphQL​

Importa desde @powerduck/openapi-request/graphql.

ExportaciónDescripción
GraphQLAdapterAdaptador de protocolo para destinos GraphQL
resolveGraphQLConfigResuelve la configuración GraphQL de una operación
runGraphQLEjecuta una operación GraphQL
introspectSchemaObtiene por introspección el esquema de un endpoint GraphQL
INTROSPECTION_QUERYConsulta estándar de introspección GraphQL
generateOperationGenera un documento de consulta a partir de un esquema GraphQL obtenido por introspección y un campo
generateAllOperationsGenera documentos de consulta para los campos de un esquema GraphQL obtenido por introspección
writeGraphQLOperationsIncorpora las operaciones GraphQL generadas a la especificación
discoverAndWriteGraphQLSchemaDescubre un esquema GraphQL y lo incorpora a la especificación

MCP (Model Context Protocol)​

La mayoría de los siguientes elementos están disponibles en @powerduck/openapi-request/mcp. Importa initializeMcpSession desde el punto de entrada principal; en la ruta específica se llama initializeSession. Esta también expone runMcp, createMcpSessionCore y createMcpStdioConnection.

ExportaciónDescripción
McpAdapterAdaptador de protocolo para destinos MCP
createMcpManualSessionCrea una sesión MCP manual, también disponible como mcpManualSession
createMcpStdioSessionCrea una sesión MCP mediante stdio
runMcpManualSessionObsoleto: utiliza createMcpManualSession
resolveMcpConfigResuelve la configuración MCP de una operación
initializeMcpSessionInicializa una sesión MCP (alias de initializeSession)
discoverMcpCapabilitiesDescubre las capacidades del servidor MCP
MCP_PROTOCOL_VERSIONVersión compatible del protocolo MCP
generateMcpCallGenera una llamada a una herramienta MCP
generateAllMcpCallsGenera todas las llamadas a herramientas MCP
writeMcpOperationsIncorpora las operaciones MCP a la especificación
discoverAndWriteMcpCapabilitiesDescubre las capacidades MCP y las incorpora a la especificación
createHttpMcpTransportCrea un transporte HTTP para MCP
createStdioMcpTransportCrea un transporte stdio para MCP

gRPC​

Importa las funciones de bajo nivel para descubrimiento, llamadas y descriptores desde @powerduck/openapi-request/grpc. Importa GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover y discoverGrpc desde el punto de entrada principal; en la ruta específica, la función de descubrimiento se llama discover. Esta también proporciona discoverFromCatalog, describeMethod y describeFromCatalog para reutilizar un catálogo sin repetir la reflexión por cada método.

ExportaciónDescripción
GrpcProtocolAdapterAdaptador de protocolo gRPC orientado a OpenAPI
GrpcAdapterAdaptador gRPC de bajo nivel
grpcDiscover / discoverGrpcDescubre servicios y métodos gRPC
createGrpcManualSession / grpcManualSessionCrea una sesión gRPC manual
grpcCallEjecuta una llamada gRPC
resolveMethodResuelve un descriptor de método gRPC
buildMessageTemplateConstruye una plantilla de mensaje a partir de un descriptor
buildCatalogConstruye un catálogo de servicios y métodos
LOADER_OPTIONSOpciones predeterminadas del cargador proto
scanProtoFilesBusca archivos proto en directorios
deriveIncludeDirsDetailedDeduce los directorios de inclusión a partir de las rutas de archivos proto
fetchDescriptorSetObtiene un conjunto de descriptores mediante reflexión gRPC
fetchFullDescriptorSetObtiene un conjunto completo de descriptores con todas sus dependencias
listServicesEnumera los servicios de un conjunto de descriptores
listServicesDetailedEnumera los servicios con información detallada de sus métodos
serializeDescriptorSetSerializa un conjunto de descriptores en bytes
decodeFileDescriptorProtoDecodifica un proto de descriptor de archivo
decodeFileDescriptorSetDecodifica un conjunto de descriptores de archivos
buildCredentialsConstruye credenciales gRPC de forma síncrona
buildCredentialsAsyncConstruye credenciales gRPC de forma asíncrona
buildCredentialsCheckedConstruye y valida credenciales de forma síncrona
buildCredentialsCheckedAsyncConstruye y valida credenciales de forma asíncrona
loadGrpcCarga dinámicamente el paquete @grpc/grpc-js
isGrpcAvailableComprueba si las dependencias gRPC están disponibles
requireCapabilityExige una capacidad gRPC concreta y lanza un error si no está disponible

El punto de entrada principal exporta los alias de tipo GrpcDiscoveryResult, GrpcDiscoveredMethod y GrpcDiscoveredService. En la ruta gRPC se llaman DiscoveryResult, DiscoveredMethod y DiscoveredService.

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

Otras utilidades​

El punto de entrada principal también exporta las funciones OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses y authFromOAuth2Token, la utilidad de copia toCloneable, la clase base UnifiedSession y las funciones de escritura gRPC writeGrpcOperations y discoverAndWriteGrpcOperations.

Exportaciones por subruta​

// 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";