Skip to main content

API Reference

Every public export of @powerduck/openapi-request v0.2.4, grouped by surface area. All signatures are verified against the source.

Core

createClient(options?): ProtoClient

Builds the UI-first client. The options argument is optional.

Parameters:

NameTypeDescription
optionsCreateClientOptionsOptional configuration
options.writeBackWriteBackOptionsControl how responses are merged back into the spec
options.responseToResponseOptionsControl how response objects are normalized

Returns: ProtoClient with the following methods:

MethodSignatureDescription
prepare(sendOptions: SendOptions) => PreparedRequestPlan a request; returns protocol, display mode, and stream kind
send(sendOptions: SendOptions) => Promise<SendResult>Execute a request
sendMany(spec, targets, shared?) => Promise<SendManyResult>Batch execution; per-target results, failures never discard siblings
connect(connectOptions: ManualSessionOptions) => AnyManualSessionOpen a long-lived session for websocket/mcp/grpc
discover(discoverOptions) => Promise<any>Discover capabilities for MCP and gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentMerge observed response back into the document
dispose() => voidRelease resources (sessions are owned by callers)
probeStreamingResponse(response) => StreamKindInspect a live fetch Response to determine streaming kind

Example:

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

const client = createClient({
writeBack: { mergeExamples: 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

Builds the scripted debugger for automation, scripts, and CI.

Parameters:

NameTypeDescription
configDebuggerOptionsOptional configuration
config.adaptersProtocolAdapter[]Custom adapter list (replaces defaults)
config.extraAdaptersProtocolAdapter[]Extra adapters added to the defaults
config.writeBackWriteBackOptionsWrite-back options
config.responseToResponseOptionsResponse normalization options
config.writeBackTruncatedbooleanWrite back schema inferred from truncated streams (default: true)

Returns: ProtoKit with prepare, send, sendMany, toCollection, and more.

Example:

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

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

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

createManualSession(options): AnyManualSession

Creates a long-lived duplex session for WebSocket, MCP, and gRPC. The factory performs no I/O; connect lazily with open().

Parameters:

NameTypeDescription
options.protocol"websocket" | "mcp" | "grpc"Protocol to use
options.urlstringConnection URL
options.transport"http" | "stdio"For MCP: transport type (default: "http")

Returns: A session object with open(), send(), close(), subscribe(), and state.

Example:

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

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

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

AdapterRegistry

A registry of ProtocolAdapter instances. The default registry wires in the built-in HTTP, WebSocket, gRPC, MCP, and GraphQL adapters.

ProtoKitError

The typed error thrown by the debugger and core paths. Use instanceof ProtoKitError to distinguish library errors from unexpected failures.

Core Types

SendOptions

The primary input object for prepare() and send().

FieldTypeRequiredDescription
specOpenApiDocumentYesThe complete OpenAPI 3.2 document
targetOperationTargetYesOperation identifier (see below)
valuesRequestValuesNoConcrete values for path/query/header/cookie/body
serverUrlstringNoOverrides spec.servers[0].url
serverVariablesRecord<string, string>NoServer URL template variables
variablesRecord<string, string>NoEnvironment variables referenced as {{name}}
globalsRecord<string, string>NoPostman-style globals
localVariablesRecord<string, string>NoLocal variables
authAuthConfigNoAuthentication configuration
scriptsScriptConfigNoPre-request and test scripts
runnerRuntimeRunOptionsNoFull postman-runtime option passthrough (highest precedence)
websocketWebSocketOptionsNoWebSocket-specific options
graphqlGraphQLOptionsNoGraphQL-specific options
mcpMcpOptionsNoMCP-specific options
grpcanyNogRPC-specific options
timeoutnumberNoPer-request timeout in ms (convenience shortcut)

OperationTarget

Identifies a single operation. Use operationId OR method + path.

FieldTypeDescription
operationIdstringAlternative lookup key; takes precedence over path + method
methodstringHTTP method, case-insensitive. Requires path.
pathstringTemplated path, e.g. /users/{id}. Requires method.

RequestValues

User-supplied values injected into the generated request.

FieldTypeDescription
pathRecord<string, unknown>Path parameter values
queryRecord<string, unknown>Query parameter values
headerRecord<string, unknown>Header values
cookieRecord<string, unknown>Cookie values
querystringstringRaw, pre-encoded query string (OpenAPI 3.2)
bodyunknownRequest body
contentTypestringForce a specific request media type

AuthConfig

FieldTypeDescription
type"bearer" | "basic" | "apikey" | "none"Auth type
tokenstringBearer token
usernamestringBasic auth username
passwordstringBasic auth password
keystringAPI key name
valuestringAPI key value
in"header" | "query"API key location

PreparedRequest

Returned by prepare().

FieldTypeDescription
protocolstringResolved protocol (http, websocket, grpc, graphql, mcp)
transportstringResolved transport
targetOperationTargetThe original target
operationanyThe resolved OpenAPI operation object
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindStreaming classification (see below)
stream.expectedbooleanWhether streaming is expected
openapi.extensionsRecord<string, unknown>Resolved OpenAPI extensions
warningsstring[]Warnings encountered during planning

StreamKind

Precise streaming taxonomy: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

OpenAPI Helpers

ExportSignatureDescription
locateOperation(spec, target) => LocatedOperationResolve an operation by OperationTarget
inferSchema(value) => SchemaInfer a JSON Schema from a single observed value
inferSchemaFromMany(values) => SchemaInfer a schema that covers several observed values
mergeSchema(a, b) => SchemaMerge two inferred schemas (union/combination)
sampleFromSchema(schema) => unknownProduce a realistic example value for a schema
toResponseObject(result, options?) => ResponseObjectBuild an OpenAPI response object from an observed result
writeBackResponse(spec, path, method, fragment, options?) => specMerge an observed response back into the document

Type exports: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE

Import from the main entry or @powerduck/openapi-request/http.

ExportDescription
HttpAdapterThe default protocol adapter for HTTP/HTTPS
SseParserStreaming parser that turns an SSE byte stream into structured events
isStreamingOperationClassify an operation as streaming from declared content types
isSseContentTypeCheck if a content type indicates SSE
isStreamingContentTypeCheck if a content type indicates any streaming
acceptHeaderForGenerate the appropriate Accept header for an operation
probeStreamingResponseInspect a live fetch Response to determine streaming kind
BUILTIN_CAPTURE_TESTBuilt-in Postman test script for capturing the last response

WebSocket

Import from @powerduck/openapi-request/ws.

ExportDescription
WebSocketAdapterProtocol adapter for WebSocket targets
createWsManualSessionBuild a duplex WebSocket manual session (also aliased as runWebSocketSession, wsManualSession)

GraphQL

Import from @powerduck/openapi-request/graphql.

ExportDescription
GraphQLAdapterProtocol adapter for GraphQL targets
resolveGraphQLConfigResolve GraphQL configuration from an operation
runGraphQLExecute a GraphQL operation
introspectSchemaIntrospect a GraphQL endpoint's schema
INTROSPECTION_QUERYThe standard GraphQL introspection query
generateOperationGenerate a single GraphQL operation from OpenAPI
generateAllOperationsGenerate all GraphQL operations from an OpenAPI document
writeGraphQLOperationsWrite generated GraphQL operations back into the spec
discoverAndWriteGraphQLSchemaDiscover and write a GraphQL schema into the spec

MCP (Model Context Protocol)

Import from @powerduck/openapi-request/mcp.

ExportDescription
McpAdapterProtocol adapter for MCP targets
createMcpManualSessionBuild an MCP manual session (also aliased as mcpManualSession)
createMcpStdioSessionBuild an MCP session over stdio
runMcpManualSessionDeprecated: use createMcpManualSession
resolveMcpConfigResolve MCP configuration from an operation
initializeMcpSessionInitialize an MCP session (aliased from initializeSession)
discoverMcpCapabilitiesDiscover MCP server capabilities
MCP_PROTOCOL_VERSIONThe supported MCP protocol version
generateMcpCallGenerate a single MCP tool call
generateAllMcpCallsGenerate all MCP tool calls
writeMcpOperationsWrite MCP operations back into the spec
discoverAndWriteMcpCapabilitiesDiscover and write MCP capabilities into the spec
createHttpMcpTransportCreate an HTTP transport for MCP
createStdioMcpTransportCreate a stdio transport for MCP

gRPC

Import from @powerduck/openapi-request/grpc.

ExportDescription
GrpcProtocolAdapterProtocol adapter for gRPC targets (OpenAPI-facing)
GrpcAdapterLow-level gRPC adapter
grpcDiscover / discoverGrpcDiscover gRPC services and methods
createGrpcManualSession / grpcManualSessionBuild a gRPC manual session
grpcCallExecute a single gRPC call
resolveMethodResolve a gRPC method descriptor
buildMessageTemplateBuild a message template from a descriptor
buildCatalogBuild a catalog of services and methods
LOADER_OPTIONSDefault proto loader options
scanProtoFilesScan directories for proto files
deriveIncludeDirsDetailedDerive include directories from proto file paths
fetchDescriptorSetFetch a descriptor set via gRPC reflection
fetchFullDescriptorSetFetch a full descriptor set with all dependencies
listServicesList services from a descriptor set
listServicesDetailedList services with detailed method information
serializeDescriptorSetSerialize a descriptor set to bytes
decodeFileDescriptorProtoDecode a single file descriptor proto
decodeFileDescriptorSetDecode a file descriptor set
buildCredentialsBuild gRPC credentials (synchronous)
buildCredentialsAsyncBuild gRPC credentials (asynchronous)
buildCredentialsCheckedBuild credentials with validation (synchronous)
buildCredentialsCheckedAsyncBuild credentials with validation (asynchronous)
loadGrpcDynamically load the @grpc/grpc-js package
isGrpcAvailableCheck if gRPC dependencies are available
requireCapabilityRequire a specific gRPC capability, throwing if unavailable

Type exports: GrpcDiscoveryResult, GrpcDiscoveredMethod, GrpcDiscoveredService.

Error types: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Subpath Exports

// Main entry (everything)
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";