Zum Hauptinhalt springen

Konfiguration

Die Konfiguration hat drei Ebenen: Factory-Optionen für Client oder Debugger, das an prepare() und send() übergebene SendOptions-Objekt sowie protokollspezifische Optionen.

Factory-Optionen​

CreateClientOptions​

Wird an createClient(options?) übergeben. Alle Felder sind optional.

FeldTypBeschreibung
writeBackWriteBackOptionsSteuert das Zusammenführen von Antworten mit der Spezifikation
responseToResponseOptionsSteuert die Normalisierung von Antwortobjekten
import { createClient } from "@powerduck/openapi-request";

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

DebuggerOptions​

Wird an createDebugger(config?) übergeben. Alle Felder sind optional.

FeldTypBeschreibung
adaptersProtocolAdapter[]Eigene Adapterliste, die alle Standardadapter ersetzt
extraAdaptersProtocolAdapter[]Zusätzliche Adapter für die Standardregistrierung
writeBackWriteBackOptionsOptionen zum Zurückschreiben
responseToResponseOptionsOptionen zur Antwortnormalisierung
writeBackTruncatedbooleanSchreibt Schemas aus abgeschnittenen Streams zurück; Standard: 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,
});

Zurückschreiben und erfasste Beispiele​

WriteBackOptions unterstützt strategy ("merge" oder "replace", Standard "merge"), keepExistingDescription (Standard true), allowedStatusCodes (leer bedeutet alle), protectComponentRefs (Standard true), overwriteExamples (Standard true) und requirePassingTests. Die Sendepipeline prüft die Testergebnisse; ein direkter Aufruf von writeBackResponse tut dies nicht.

ToResponseOptions unterstützt includeExamples (Standard true), maxExampleChars (Standard 4000) und maxEventPreviewChars (Standard 200). Deaktivieren Sie die Beispielerfassung oder prüfen Sie die Beispiele vor der Veröffentlichung: Reale Antworten können Zugangsdaten oder personenbezogene Daten enthalten.

Die Sendepipeline liefert normalerweise eine geänderte Kopie in patchedSpec; sie verändert weder das Eingabedokument noch speichert sie eine Datei. Überspringen Sie diesen Schritt mit writeBack: false pro Aufruf. Das writeBack-Objekt der Factory konfiguriert die Zusammenführung; der boolesche Wert pro Aufruf aktiviert oder deaktiviert sie.

SendOptions​

Das zentrale Eingabeobjekt für prepare() und send(). Hier übergeben Sie Spezifikation, Ziel, Werte und sämtliche Einstellungen auf Anfrageebene.

FeldTypErforderlichBeschreibung
specOpenApiDocumentJaDas vollständige OpenAPI-3.2-Dokument
targetOperationTargetJaOperationskennung, siehe unten
valuesRequestValuesNeinKonkrete Werte für path/query/header/cookie/body
serverUrlstringNeinÜberschreibt spec.servers[0].url
serverVariablesRecord<string, string>NeinVariablen der Server-URL-Vorlage
variablesRecord<string, string>NeinAls {{name}} referenzierte Umgebungsvariablen
globalsRecord<string, string>NeinGlobale Variablen im Postman-Stil
localVariablesRecord<string, string>NeinLokale Variablen
collectionVariablesRecord<string, string>NeinVariablen auf Collection-Ebene
authAuthConfigNeinAuthentifizierungskonfiguration
scriptsScriptConfigNeinSkripte vor der Anfrage und Testskripte
runnerRuntimeRunOptionsNeinVollständige Durchreichung der postman-runtime-Optionen mit höchster Priorität
websocketWebSocketOptionsNeinWebSocket-Optionen
graphqlGraphQLOptionsNeinGraphQL-Optionen
mcpMcpOptionsNeinMCP-Optionen
grpcanyNeingRPC-Optionen
timeoutnumberNeinZeitlimit pro Anfrage in ms, Kurzform für runner.timeout.request

SendOptions akzeptiert außerdem diese Ausführungs- und Streaming-Einstellungen:

FeldTypBeschreibung
fetchtypeof fetchIsolierter fetch-Transport des Hosts, sofern unterstützt; HTTP/SSE verwenden weiterhin postman-runtime.
writeBackbooleanMit false bleibt patchedSpec undefiniert, während responseFragment weiterhin erzeugt wird.
signalAbortSignalBricht Ausführung oder Sampling ab; ein Teilergebnis kann weiterhin zurückgegeben werden.
maxEventsnumberMaximale Anzahl gespeicherter Streamereignisse.
maxStreamMsnumberMaximale Streaming-Sampling-Dauer in Millisekunden.
maxResponseSizenumberGrößenlimit der Antwort in Bytes.
maxBufferCharsnumberSSE-Parser-Pufferlimit vor einer Ereignisgrenze; Standard: 4194304 Zeichen.
maxEventCharsnumberLimit der gespeicherten Daten je SSE-Ereignis; Standard: 1048576 Zeichen.
inheritEventIdbooleanÜbernimmt die letzte SSE-Ereignis-ID, wenn sie fehlt; Standard: true. Für strengere Schemaableitung auf false setzen.
onEvent(event: StreamEvent) => voidEmpfängt Streamereignisse.
onConsole(log: ConsoleLog) => voidEmpfängt Konsolenausgaben von Skripten.
onAssertion(assertion: AssertionResult) => voidEmpfängt Assertion-Ergebnisse.
onResponseStart(info: ResponseStartInfo) => voidLiest frühe HTTP/SSE-Header und die streaming-Klassifizierung.
onOpen(info) => voidEmpfängt WebSocket-Verbindungsdetails: URL, Protokoll und Header.

Protokolladapter können Limits unterschiedlich auslegen. Halten Sie UI-Callbacks schlank; die Ausführungsschicht fängt geworfene Fehler ab. HTTP-Requester-Einstellungen gehören in runner.requester; dessen maxResponseSize muss, sofern angegeben, positiv sein und darf nicht null sein.

OperationTarget​

Identifiziert eine Operation. Verwenden Sie vorzugsweise entweder operationId oder method + path. Wenn beides angegeben ist, hat operationId Vorrang.

FeldTypBeschreibung
operationIdstringAlternativer Suchschlüssel mit Vorrang vor Pfad und Methode
methodstringHTTP-Methode ohne Beachtung der Groß-/Kleinschreibung. Benötigt path.
pathstringPfadvorlage, beispielsweise /users/{id}. Benötigt 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​

Konkrete Werte, die in die erzeugte Anfrage eingesetzt werden.

FeldTypBeschreibung
pathRecord<string, unknown>Werte für Pfadparameter
queryRecord<string, unknown>Werte für Abfrageparameter
headerRecord<string, unknown>Headerwerte
cookieRecord<string, unknown>Cookiewerte
querystringstringUnveränderte, bereits kodierte Abfragezeichenfolge für die OpenAPI-3.2-Position querystring
bodyunknownAnfragebody
contentTypestringErzwingt einen Medientyp, wenn die Operation mehrere deklariert
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​

FeldTypBeschreibung
typeAuthConfig["type"]Authentifizierungstyp
tokenstringBearer-Token für type: "bearer"
usernamestringBasic-Benutzername für type: "basic"
passwordstringBasic-Passwort für type: "basic"
keystringAPI-Schlüsselname für type: "apikey"
valuestringAPI-Schlüsselwert für type: "apikey"
in"header" | "query"API-Schlüsselposition für 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" },
});

Erweiterte Authentifizierungstypen sind digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap und edgegrid. Übergeben Sie deren Postman-Hilfsfelder für HTTP/SSE/GraphQL über parameters: Record<string, string | boolean | number>. Das optionale oauth2: OAuth2FlowConfig aktiviert Tokenbeschaffung und -erneuerung für OAuth 2.0. Gehen Sie nicht davon aus, dass jeder Authentifizierungshelfer mit jedem Protokoll funktioniert.

ScriptConfig​

FeldTypBeschreibung
collectionPreRequestScriptSource | ScriptSource[]Pre-Request-Skripte auf Collection-Ebene
collectionTestScriptSource | ScriptSource[]Testskripte auf Collection-Ebene
preRequestScriptSource | ScriptSource[]Pre-Request-Skripte auf Anfrageebene
testScriptSource | ScriptSource[]Testskripte auf Anfrageebene
fromSpecExtensionsbooleanLiest x-postman-scripts aus der Spezifikation; Standard: true
captureLastResponsebooleanErgänzt den integrierten Helfer, der die letzte Antwort für spätere Anfragen bereitstellt

ScriptSource:

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

Setzen Sie scripts.fromSpecExtensions: false, wenn Sie in einer importierten Spezifikation eingebettete Skripte nicht ausführen möchten. Der aktuelle Standard ist true; verlassen Sie sich nicht auf eine zukünftige Änderung.

Protokollspezifische Optionen​

HTTP / SSE​

HTTP ist der Standardadapter. Deklariertes text/event-stream signalisiert SSE; bei der Ausführung wird die tatsächliche Antwort auch beim Eintreffen der Header klassifiziert. probeStreamingResponse() ist eine separate, ausdrücklich aufzurufende Prüfung und keine automatische Voraussetzung für jeden Aufruf.

Einfache HTTP-Anfragen benötigen keine weiteren Einstellungen. Für erweiterte postman-runtime-Konfiguration verwenden Sie SendOptions.runner.

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",
});

Die manuelle MCP-Sitzung verwendet standardmäßig Streamable HTTP und endpoint. Für stdio übergeben Sie kind: "mcp", transport: "stdio" und einen lokalen command mit optionalen args; das Öffnen der Sitzung startet den konfigurierten Prozess.

gRPC​

gRPC benötigt eine Adresse, eine Deskriptorquelle (.proto-Dateien oder Serverreflexion) sowie einen vollständig qualifizierten Dienst und eine Methode:

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

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

Factories für manuelle Sitzungen liefern eine noch nicht geöffnete Sitzung. Rufen Sie vor dem Senden open() und beim Aufräumen close() auf. Das gRPC-Beispiel benötigt einen passenden lokalen Server und eine proto-Datei; manuelle Sitzungsoptionen sind nicht dasselbe Objekt wie SendOptions.grpc.

Vollständiges Beispiel​

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);

Nächste Schritte​

  • Alle exportierten Typen finden Sie in der API-Referenz
  • Protokollspezifische Anleitungen finden Sie unter Beispiele