Passa al contenuto principale

Riferimento API

Riferimento alle principali API di integrazione di @powerduck/openapi-request. Le tabelle riassumono i contratti; le dichiarazioni TypeScript del pacchetto contengono tutti gli overload e i parametri facoltativi. Il punto di ingresso principale e i sottopercorsi dei protocolli non esportano esattamente gli stessi elementi.

API principali​

createClient(options?): ProtoClient​

Crea il client orientato alle interfacce utente. L’argomento options è facoltativo.

Parametri:

NomeTipoDescrizione
optionsCreateClientOptionsConfigurazione facoltativa
options.writeBackWriteBackOptionsControlla come le risposte vengono unite alla specifica
options.responseToResponseOptionsControlla la normalizzazione degli oggetti risposta

Restituisce: un ProtoClient con i seguenti metodi:

MetodoFirmaDescrizione
prepare(sendOptions: SendOptions) => PreparedRequestPianifica una richiesta e restituisce protocollo, modalità di visualizzazione e tipo di flusso
send(sendOptions: SendOptions) => Promise<SendResult>Esegue una richiesta
sendMany(spec, targets, shared?) => Promise<SendManyResult>Esegue un batch con risultati per destinazione; un errore non elimina gli altri risultati
connect(connectOptions: ManualSessionOptions) => AnyManualSessionCrea una sessione websocket/mcp/grpc non ancora aperta; chiama open() per connetterla
discover(discoverOptions) => Promise<any>Rileva le funzionalità di MCP e gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentUnisce la risposta osservata al documento
dispose() => voidAttualmente non esegue alcuna operazione; il chiamante deve chiudere le proprie sessioni
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Esegue una richiesta fetch e ne classifica la risposta; consuma o annulla il corpo restituito

Esempio:

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 il debugger programmabile per automazione, script e CI.

Parametri:

NomeTipoDescrizione
configDebuggerOptionsConfigurazione facoltativa
config.adaptersProtocolAdapter[]Elenco di adattatori personalizzati che sostituisce quelli predefiniti
config.extraAdaptersProtocolAdapter[]Adattatori aggiuntivi a quelli predefiniti
config.writeBackWriteBackOptionsOpzioni di scrittura dei risultati
config.responseToResponseOptionsOpzioni di normalizzazione delle risposte
config.writeBackTruncatedbooleanScrive lo schema dedotto da flussi troncati (valore predefinito: true)

Restituisce: un ProtoKit con prepare, send, sendMany, toCollection e altri metodi.

Esempio:

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 sessione duplex di lunga durata per WebSocket, MCP o gRPC. La funzione di creazione non esegue I/O; la connessione viene aperta con open().

Parametri:

NomeTipoDescrizione
options.kind"websocket" | "mcp" | "grpc"Protocollo da usare
options.urlstringURL di connessione WebSocket
options.endpointstringEndpoint MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Trasporto MCP; il valore predefinito è Streamable HTTP
options.command, options.argsstring, string[]Eseguibile locale e argomenti per MCP stdio
options.address, options.service, options.methodstringIndirizzo gRPC, nome completo del servizio e metodo

Per gRPC, fornisci anche una fonte di descrittori tramite protoPaths o reflection. Le opzioni per protocollo sono elencate in Configurazione.

Restituisce: una sessione con open(), send(), close(), onEvent(), waitForClose(), events e state. onEvent() restituisce una sottoscrizione dotata di unsubscribe().

Esempio:

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 di istanze di ProtocolAdapter. Un nuovo registro è vuoto; createDebugger() registra gli adattatori integrati HTTP, WebSocket, gRPC, MCP e GraphQL, salvo che un elenco personalizzato li sostituisca. Usa register(), unregister(), get(), list(), rank() e resolve() per gestire la selezione.

ProtoKitError​

Errore tipizzato generato dal debugger e dai percorsi di esecuzione principali. Usa instanceof ProtoKitError per distinguere gli errori della libreria dai guasti imprevisti.

Tipi principali​

SendOptions​

Oggetto di ingresso principale per prepare() e send(). Contiene specifica, destinazione, valori e tutte le impostazioni a livello di richiesta.

CampoTipoObbligatorioDescrizione
specOpenApiDocumentSìDocumento OpenAPI 3.2 completo
targetOperationTargetSìIdentificatore dell’operazione, descritto sotto
valuesRequestValuesNoValori concreti per path/query/header/cookie/body
serverUrlstringNoSostituisce spec.servers[0].url
serverVariablesRecord<string, string>NoVariabili del modello di URL del server
variablesRecord<string, string>NoVariabili d’ambiente referenziate come {{name}}
globalsRecord<string, string>NoVariabili globali in stile Postman
localVariablesRecord<string, string>NoVariabili locali
collectionVariablesRecord<string, string>NoVariabili di raccolta
authAuthConfigNoConfigurazione dell’autenticazione
scriptsScriptConfigNoScript prima della richiesta e di test
runnerRuntimeRunOptionsNoInoltro completo delle opzioni postman-runtime, con priorità massima
websocketWebSocketOptionsNoOpzioni WebSocket
graphqlGraphQLOptionsNoOpzioni GraphQL
mcpMcpOptionsNoOpzioni MCP
grpcanyNoOpzioni gRPC
timeoutnumberNoTimeout per richiesta in ms, scorciatoia per runner.timeout.request

SendOptions accetta anche questi controlli di esecuzione e streaming:

CampoTipoDescrizione
fetchtypeof fetchTrasporto fetch isolato fornito dall’host dove supportato; HTTP/SSE continuano a usare postman-runtime.
writeBackbooleanCon false, patchedSpec resta indefinito mentre responseFragment viene comunque prodotto.
signalAbortSignalAnnulla l’esecuzione o il campionamento; può comunque restituire un risultato parziale.
maxEventsnumberNumero massimo di eventi del flusso conservati.
maxStreamMsnumberDurata massima del campionamento del flusso in millisecondi.
maxResponseSizenumberLimite della risposta in byte.
maxBufferCharsnumberLimite del buffer SSE prima di un confine di evento; predefinito: 4194304 caratteri.
maxEventCharsnumberLimite dei dati conservati per evento SSE; predefinito: 1048576 caratteri.
inheritEventIdbooleanEredita l’ultimo ID di evento SSE quando manca; predefinito: true. Usa false per un’inferenza dello schema più rigorosa.
onEvent(event: StreamEvent) => voidRiceve gli eventi del flusso.
onConsole(log: ConsoleLog) => voidRiceve l’output della console degli script.
onAssertion(assertion: AssertionResult) => voidRiceve i risultati delle asserzioni.
onResponseStart(info: ResponseStartInfo) => voidEsamina le prime intestazioni HTTP/SSE e la classificazione streaming.
onOpen(info) => voidRiceve i dettagli della connessione WebSocket: URL, protocollo e intestazioni.

Gli adattatori possono interpretare i limiti in modo diverso. Mantieni leggeri i callback dell’interfaccia; il livello di esecuzione intercetta le eccezioni. Per le impostazioni del requester HTTP usa runner.requester; il suo maxResponseSize, se presente, deve essere positivo, non zero.

OperationTarget​

Identifica un’operazione. Preferisci operationId oppure method + path. Se sono presenti entrambi, prevale operationId.

CampoTipoDescrizione
operationIdstringChiave di ricerca alternativa, prioritaria rispetto a percorso e metodo
methodstringMetodo HTTP senza distinzione tra maiuscole e minuscole. Richiede path.
pathstringPercorso parametrico, ad esempio /users/{id}. Richiede method.

RequestValues​

Valori concreti inseriti nella richiesta generata.

CampoTipoDescrizione
pathRecord<string, unknown>Valori dei parametri di percorso
queryRecord<string, unknown>Valori dei parametri di query
headerRecord<string, unknown>Valori delle intestazioni
cookieRecord<string, unknown>Valori dei cookie
querystringstringStringa di query grezza già codificata, per la posizione querystring di OpenAPI 3.2
bodyunknownCorpo della richiesta
contentTypestringImpone un tipo di media quando l’operazione ne dichiara diversi
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​

CampoTipoDescrizione
typeAuthConfig["type"]Tipo di autenticazione
tokenstringToken Bearer per type: "bearer"
usernamestringNome utente Basic per type: "basic"
passwordstringPassword Basic per type: "basic"
keystringNome della chiave API per type: "apikey"
valuestringValore della chiave API per type: "apikey"
in"header" | "query"Posizione della chiave API per 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" },
});

I tipi avanzati sono digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap ed edgegrid. Passa i rispettivi campi ausiliari Postman per HTTP/SSE/GraphQL tramite parameters: Record<string, string | boolean | number>. L’opzione oauth2: OAuth2FlowConfig attiva acquisizione e rinnovo dei token OAuth 2.0; non presumere che ogni meccanismo funzioni con tutti i protocolli.

PreparedRequest​

Restituito da createClient().prepare(). Il debugger produce un risultato di pianificazione diverso: createDebugger().prepare() restituisce un PlanResult con located, adapter e plan.

CampoTipoDescrizione
protocolstringProtocollo risolto (http, websocket, grpc, graphql, mcp)
transportstringTrasporto risolto
targetOperationTargetDestinazione originale
operationanyOggetto dell’operazione OpenAPI risolto
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindClassificazione del flusso (vedi sotto)
stream.expectedbooleanIndica se è previsto lo streaming
openapi.extensionsRecord<string, unknown>Estensioni OpenAPI risolte
warningsstring[]Avvisi emersi durante la pianificazione

StreamKind​

Classificazione precisa dei flussi: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Funzioni di supporto OpenAPI​

EsportazioneFirmaDescrizione
locateOperation(spec, target) => LocatedOperationRisolve un’operazione tramite OperationTarget
inferSchema(value) => SchemaDeduce un JSON Schema da un singolo valore osservato
inferSchemaFromMany(values) => SchemaDeduce uno schema che comprende più valori osservati
mergeSchema(a, b) => SchemaUnisce due schemi dedotti (unione o combinazione)
sampleFromSchema(schema) => unknownProduce un valore di esempio realistico per uno schema
toResponseObject(result, options?) => { statusCode: string; response: any }Crea un oggetto di risposta OpenAPI da un risultato osservato
writeBackResponse(spec, path, method, fragment, options?) => specUnisce una risposta osservata al documento

Tipi esportati: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

I nomi seguenti sono disponibili dal punto di ingresso principale. Il sottopercorso @powerduck/openapi-request/http esporta HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions e runWithPostman; importa le funzioni di rilevamento e BUILTIN_CAPTURE_TEST dal punto di ingresso principale.

EsportazioneDescrizione
HttpAdapterAdattatore di protocollo predefinito per HTTP/HTTPS
SseParserParser di streaming che trasforma un flusso di byte SSE in eventi strutturati
isStreamingOperationClassifica un’operazione come streaming in base ai tipi di contenuto dichiarati
isSseContentTypeVerifica se un tipo di contenuto indica SSE
isStreamingContentTypeVerifica se un tipo di contenuto indica uno streaming
acceptHeaderForGenera l’header Accept appropriato per un’operazione
probeStreamingResponseEsegue una richiesta fetch e ne classifica la risposta; consuma o annulla il corpo restituito
BUILTIN_CAPTURE_TESTScript di test Postman integrato per acquisire l’ultima risposta

WebSocket​

Importa da @powerduck/openapi-request/ws.

EsportazioneDescrizione
WebSocketAdapterAdattatore di protocollo per destinazioni WebSocket
createWsManualSessionCrea una sessione WebSocket manuale duplex, disponibile anche come runWebSocketSession e wsManualSession

GraphQL​

Importa da @powerduck/openapi-request/graphql.

EsportazioneDescrizione
GraphQLAdapterAdattatore di protocollo per destinazioni GraphQL
resolveGraphQLConfigRisolve la configurazione GraphQL di un’operazione
runGraphQLEsegue un’operazione GraphQL
introspectSchemaOttiene per introspezione lo schema di un endpoint GraphQL
INTROSPECTION_QUERYQuery standard di introspezione GraphQL
generateOperationGenera un documento di query da uno schema GraphQL ottenuto per introspezione e da un campo
generateAllOperationsGenera documenti di query per i campi di uno schema GraphQL ottenuto per introspezione
writeGraphQLOperationsScrive le operazioni GraphQL generate nella specifica
discoverAndWriteGraphQLSchemaRileva uno schema GraphQL e lo scrive nella specifica

MCP (Model Context Protocol)​

La maggior parte delle voci seguenti è disponibile da @powerduck/openapi-request/mcp. Importa initializeMcpSession dal punto di ingresso principale; nel sottopercorso si chiama initializeSession. Il sottopercorso espone anche runMcp, createMcpSessionCore e createMcpStdioConnection.

EsportazioneDescrizione
McpAdapterAdattatore di protocollo per destinazioni MCP
createMcpManualSessionCrea una sessione MCP manuale, disponibile anche come mcpManualSession
createMcpStdioSessionCrea una sessione MCP su stdio
runMcpManualSessionDeprecato: usa createMcpManualSession
resolveMcpConfigRisolve la configurazione MCP di un’operazione
initializeMcpSessionInizializza una sessione MCP (alias di initializeSession)
discoverMcpCapabilitiesRileva le funzionalità del server MCP
MCP_PROTOCOL_VERSIONVersione supportata del protocollo MCP
generateMcpCallGenera una chiamata a uno strumento MCP
generateAllMcpCallsGenera tutte le chiamate agli strumenti MCP
writeMcpOperationsScrive le operazioni MCP nella specifica
discoverAndWriteMcpCapabilitiesRileva le funzionalità MCP e le scrive nella specifica
createHttpMcpTransportCrea un trasporto HTTP per MCP
createStdioMcpTransportCrea un trasporto stdio per MCP

gRPC​

Importa le funzioni di basso livello per rilevamento, chiamate e descrittori da @powerduck/openapi-request/grpc. Importa GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover e discoverGrpc dal punto di ingresso principale; il sottopercorso usa discover per il rilevamento. Offre anche discoverFromCatalog, describeMethod e describeFromCatalog, così puoi riutilizzare un catalogo senza ripetere la reflection per ogni metodo.

EsportazioneDescrizione
GrpcProtocolAdapterAdattatore di protocollo gRPC rivolto a OpenAPI
GrpcAdapterAdattatore gRPC di basso livello
grpcDiscover / discoverGrpcRileva servizi e metodi gRPC
createGrpcManualSession / grpcManualSessionCrea una sessione gRPC manuale
grpcCallEsegue una singola chiamata gRPC
resolveMethodRisolve un descrittore di metodo gRPC
buildMessageTemplateCrea un modello di messaggio da un descrittore
buildCatalogCrea un catalogo di servizi e metodi
LOADER_OPTIONSOpzioni predefinite del caricatore proto
scanProtoFilesCerca file proto nelle directory
deriveIncludeDirsDetailedRicava le directory di inclusione dai percorsi dei file proto
fetchDescriptorSetRecupera un insieme di descrittori tramite reflection gRPC
fetchFullDescriptorSetRecupera un insieme completo di descrittori con tutte le dipendenze
listServicesElenca i servizi di un insieme di descrittori
listServicesDetailedElenca i servizi con informazioni dettagliate sui metodi
serializeDescriptorSetSerializza un insieme di descrittori in byte
decodeFileDescriptorProtoDecodifica un singolo proto di descrittore di file
decodeFileDescriptorSetDecodifica un insieme di descrittori di file
buildCredentialsCrea credenziali gRPC in modo sincrono
buildCredentialsAsyncCrea credenziali gRPC in modo asincrono
buildCredentialsCheckedCrea e convalida credenziali in modo sincrono
buildCredentialsCheckedAsyncCrea e convalida credenziali in modo asincrono
loadGrpcCarica dinamicamente il pacchetto @grpc/grpc-js
isGrpcAvailableVerifica la disponibilità delle dipendenze gRPC
requireCapabilityRichiede una specifica funzionalità gRPC e genera un errore se non è disponibile

Il punto di ingresso principale esporta gli alias di tipo GrpcDiscoveryResult, GrpcDiscoveredMethod e GrpcDiscoveredService. Nel sottopercorso gRPC si chiamano DiscoveryResult, DiscoveredMethod e DiscoveredService.

Tipi di errore: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Altre utilità​

Il punto di ingresso principale esporta anche le funzioni OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses e authFromOAuth2Token, l’utilità di copia toCloneable, la classe base UnifiedSession e le funzioni di scrittura gRPC writeGrpcOperations e discoverAndWriteGrpcOperations.

Esportazioni dei sottopercorsi​

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