Passa al contenuto principale

Configurazione

La configurazione ha tre livelli: opzioni della factory del client o debugger, oggetto SendOptions passato a prepare() e send(), e opzioni specifiche dei protocolli.

Opzioni delle factory​

CreateClientOptions​

Passate a createClient(options?). Tutti i campi sono facoltativi.

CampoTipoDescrizione
writeBackWriteBackOptionsControlla come le risposte vengono unite alla specifica
responseToResponseOptionsControlla la normalizzazione degli oggetti risposta
import { createClient } from "@powerduck/openapi-request";

const client = createClient({
writeBack: {
overwriteExamples: true,
// ... other WriteBackOptions
},
response: {
includeExamples: false,
// ... other ToResponseOptions
},
});

DebuggerOptions​

Passate a createDebugger(config?). Tutti i campi sono facoltativi.

CampoTipoDescrizione
adaptersProtocolAdapter[]Elenco di adattatori personalizzato che sostituisce quelli predefiniti
extraAdaptersProtocolAdapter[]Adattatori aggiuntivi per il registro predefinito
writeBackWriteBackOptionsOpzioni di scrittura dei risultati
responseToResponseOptionsOpzioni di normalizzazione delle risposte
writeBackTruncatedbooleanScrive lo schema dedotto dai flussi troncati; valore predefinito: true
import { createDebugger, HttpAdapter, WebSocketAdapter } from "@powerduck/openapi-request";

// Use only HTTP and WebSocket adapters
const debugger1 = createDebugger({
adapters: [new HttpAdapter(), new WebSocketAdapter()],
});

// Add a custom adapter to the defaults
const debugger2 = createDebugger({
extraAdapters: [new MyCustomAdapter()],
writeBackTruncated: true,
});

Scrittura dei risultati ed esempi acquisiti​

WriteBackOptions supporta strategy ("merge" o "replace", predefinito "merge"), keepExistingDescription (predefinito true), allowedStatusCodes (vuoto significa tutti), protectComponentRefs (predefinito true), overwriteExamples (predefinito true) e requirePassingTests. La pipeline di invio verifica i test; una chiamata diretta a writeBackResponse non lo fa.

ToResponseOptions supporta includeExamples (predefinito true), maxExampleChars (predefinito 4000) e maxEventPreviewChars (predefinito 200). Disattiva l’acquisizione degli esempi o controllali prima di pubblicare: le risposte reali possono contenere credenziali o dati personali.

La pipeline di invio restituisce normalmente una copia modificata in patchedSpec; non modifica il documento in ingresso e non salva file. Imposta writeBack: false per la singola chiamata per saltare questo passaggio. L’oggetto writeBack della factory configura l’unione; il booleano per chiamata la attiva o disattiva.

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.
// By operationId (recommended)
const result1 = await client.send({
spec,
target: { operationId: "getUserById" },
});

// By method + path
const result2 = await client.send({
spec,
target: { method: "GET", path: "/users/{id}" },
});

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.

ScriptConfig​

CampoTipoDescrizione
collectionPreRequestScriptSource | ScriptSource[]Script prima della richiesta a livello di raccolta
collectionTestScriptSource | ScriptSource[]Script di test a livello di raccolta
preRequestScriptSource | ScriptSource[]Script prima della singola richiesta
testScriptSource | ScriptSource[]Script di test della singola richiesta
fromSpecExtensionsbooleanLegge x-postman-scripts dalla specifica; predefinito: true
captureLastResponsebooleanAggiunge l’helper integrato che espone l’ultima risposta alle richieste successive

ScriptSource:

interface ScriptSource {
exec: string | string[]; // Script body, either a single string or array of lines
id?: string; // Optional identifier surfaced in script results
}

Imposta scripts.fromSpecExtensions: false se non vuoi eseguire gli script incorporati in una specifica importata. Il valore predefinito attuale è true; non fare affidamento su una modifica futura.

Opzioni per protocollo​

HTTP / SSE​

HTTP è l’adattatore predefinito. La dichiarazione text/event-stream indica l’intento SSE; l’esecuzione classifica anche la risposta reale all’arrivo delle intestazioni. probeStreamingResponse() è un controllo separato ed esplicito, non un prerequisito automatico di ogni chiamata.

Le richieste HTTP di base non richiedono altre impostazioni. Usa SendOptions.runner per la configurazione avanzata di postman-runtime.

WebSocket​

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

const session = createManualSession({
kind: "websocket",
url: "wss://api.example.com/ws",
// Manual-session options are distinct from SendOptions.websocket.
});

MCP​

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

const session = createManualSession({
kind: "mcp",
endpoint: "https://api.example.com/mcp",
});

La sessione manuale MCP predefinita usa Streamable HTTP ed endpoint. Per stdio, passa kind: "mcp", transport: "stdio" e un command locale con args facoltativi; l’apertura della sessione avvia il processo configurato.

gRPC​

gRPC richiede un indirizzo, una fonte di descrittori (file .proto o riflessione del server), un servizio e un metodo completamente qualificati:

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

const session = createManualSession({
kind: "grpc",
address: "localhost:50051",
service: "powerduck.examples.Echo",
method: "Echo",
protoPaths: ["./echo.proto"],
});

Le factory di sessioni manuali restituiscono una sessione non ancora aperta. Chiama open() prima di inviare e close() durante la pulizia. L’esempio gRPC richiede un server locale e un file proto corrispondenti; le opzioni della sessione manuale non sono lo stesso oggetto di SendOptions.grpc.

Esempio completo​

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

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

const result = await client.send({
spec: openApiDocument,
target: { operationId: "updateUser" },
values: {
path: { id: "42" },
query: { verbose: "true" },
header: { "X-Request-Id": "req-abc" },
body: { name: "Alice", email: "alice@example.com" },
},
serverUrl: "https://api.staging.example.com",
auth: { type: "bearer", token: "staging-token" },
timeout: 10000,
variables: {
environment: "staging",
},
});

console.log(result.response.status);
console.log(result.response.body);
console.log(result.response.headers);

Passi successivi​