メインコンテンツまでスキップ

設定

設定は、クライアント/デバッガーのファクトリーオプション、prepare() と send() に渡す SendOptions オブジェクト、プロトコル固有のオプションの 3 層に分かれます。

ファクトリーオプション​

CreateClientOptions​

createClient(options?) に渡します。すべてのフィールドは任意です。

フィールド型説明
writeBackWriteBackOptionsレスポンスを仕様へマージする方法を制御
responseToResponseOptionsレスポンスオブジェクトの正規化を制御
import { createClient } from "@powerduck/openapi-request";

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

DebuggerOptions​

createDebugger(config?) に渡します。すべてのフィールドは任意です。

フィールド型説明
adaptersProtocolAdapter[]既定のアダプターをすべて置き換えるカスタムリスト
extraAdaptersProtocolAdapter[]既定のレジストリに追加するアダプター
writeBackWriteBackOptions書き戻しオプション
responseToResponseOptionsレスポンス正規化オプション
writeBackTruncatedboolean途中で打ち切ったストリームから推論したスキーマを書き戻す。既定値は 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,
});

書き戻しと取得したサンプル​

WriteBackOptions は strategy("merge" または "replace"、既定値 "merge")、keepExistingDescription(既定値 true)、allowedStatusCodes(空ならすべて)、protectComponentRefs(既定値 true)、overwriteExamples(既定値 true)、requirePassingTests に対応します。送信パイプラインではテスト結果を確認しますが、writeBackResponse を直接呼び出した場合は確認しません。

ToResponseOptions は includeExamples(既定値 true)、maxExampleChars(既定値 4000)、maxEventPreviewChars(既定値 200)に対応します。サンプル取得を無効にするか、公開前に内容を確認してください。実際のレスポンスには認証情報や個人データが含まれることがあります。

送信パイプラインは通常、変更したコピーを patchedSpec に返します。入力文書の変更やファイル保存は行いません。呼び出しごとに writeBack: false を指定すると、この処理を省略できます。ファクトリーの writeBack オブジェクトはマージ方法を設定し、呼び出しごとの真偽値は実行の有無を決めます。

SendOptions​

prepare() と send() の主要な入力オブジェクトです。仕様、対象、値、およびリクエスト単位の設定を渡します。

フィールド型必須説明
specOpenApiDocumentはい完全な OpenAPI 3.2 文書
targetOperationTargetはい操作の識別子。後述を参照
valuesRequestValuesいいえpath/query/header/cookie/body の具体的な値
serverUrlstringいいえspec.servers[0].url を上書き
serverVariablesRecord<string, string>いいえサーバー URL テンプレート変数
variablesRecord<string, string>いいえ{{name}} で参照する環境変数
globalsRecord<string, string>いいえPostman 形式のグローバル変数
localVariablesRecord<string, string>いいえローカル変数
collectionVariablesRecord<string, string>いいえコレクション変数
authAuthConfigいいえ認証設定
scriptsScriptConfigいいえリクエスト前とテストのスクリプト
runnerRuntimeRunOptionsいいえpostman-runtime の全オプションを渡す。最優先で適用
websocketWebSocketOptionsいいえWebSocket 固有のオプション
graphqlGraphQLOptionsいいえGraphQL 固有のオプション
mcpMcpOptionsいいえMCP 固有のオプション
grpcanyいいえgRPC 固有のオプション
timeoutnumberいいえリクエスト単位のタイムアウト(ミリ秒)。runner.timeout.request の簡略指定

SendOptions では、以下の実行・ストリーミング制御も指定できます。

フィールド型説明
fetchtypeof fetch対応する箇所で使う、ホスト提供の分離された fetch トランスポート。HTTP/SSE は引き続き postman-runtime を使用。
writeBackbooleanfalse にすると patchedSpec は未定義のままですが、responseFragment は生成します。
signalAbortSignal実行またはサンプリングを中止します。部分的な結果が返る場合があります。
maxEventsnumber保持するストリームイベントの最大数。
maxStreamMsnumberストリームのサンプリング時間上限(ミリ秒)。
maxResponseSizenumberレスポンスのバイト数上限。
maxBufferCharsnumberイベント境界までの SSE パーサーバッファー上限。既定値は 4194304 文字。
maxEventCharsnumberSSE イベントごとに保持するデータの上限。既定値は 1048576 文字。
inheritEventIdbooleanID がない場合は直前の SSE イベント ID を継承。既定値は true。厳密なスキーマ推論には false を指定。
onEvent(event: StreamEvent) => voidストリームイベントを受信。
onConsole(log: ConsoleLog) => voidスクリプトのコンソール出力を受信。
onAssertion(assertion: AssertionResult) => voidアサーション結果を受信。
onResponseStart(info: ResponseStartInfo) => void早期の HTTP/SSE ヘッダーと streaming 判定を確認。
onOpen(info) => voidWebSocket 接続の URL、プロトコル、ヘッダーを受信。

制限の解釈はプロトコルアダプターによって異なる場合があります。UI コールバックは軽量に保ってください。コールバックの例外は実行層で捕捉します。HTTP リクエスターには runner.requester を使い、その maxResponseSize を指定する場合はゼロではなく正の値にしてください。

OperationTarget​

単一の操作を識別します。operationId または method + path のどちらかを推奨します。両方あれば operationId が優先されます。

フィールド型説明
operationIdstring別の検索キー。パスとメソッドより優先
methodstringHTTP メソッド。大文字・小文字は区別しない。path が必要。
pathstring/users/{id} などのテンプレートパス。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​

生成するリクエストに挿入する具体的な値。

フィールド型説明
pathRecord<string, unknown>パスパラメーター値
queryRecord<string, unknown>クエリパラメーター値
headerRecord<string, unknown>ヘッダー値
cookieRecord<string, unknown>Cookie 値
querystringstring事前にエンコードした生のクエリ文字列。OpenAPI 3.2 の querystring 位置で使用
bodyunknownリクエスト本文
contentTypestring複数のメディアタイプが宣言されている場合に使用タイプを指定
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​

フィールド型説明
typeAuthConfig["type"]認証タイプ
tokenstringtype: "bearer" 用の Bearer トークン
usernamestringtype: "basic" 用の Basic 認証ユーザー名
passwordstringtype: "basic" 用の Basic 認証パスワード
keystringtype: "apikey" 用の API キー名
valuestringtype: "apikey" 用の API キー値
in"header" | "query"type: "apikey" 用の API キー位置
// 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" },
});

高度な認証タイプには digest、oauth1、oauth2、jwt、hawk、aws4、ntlm、asap、edgegrid があります。HTTP/SSE/GraphQL 向けの Postman 認証ヘルパーフィールドは parameters: Record<string, string | boolean | number> で渡します。任意の oauth2: OAuth2FlowConfig は OAuth 2.0 のトークン取得・更新を有効にします。すべての認証ヘルパーが全プロトコルに対応するとは限りません。

ScriptConfig​

フィールド型説明
collectionPreRequestScriptSource | ScriptSource[]コレクション単位のリクエスト前スクリプト
collectionTestScriptSource | ScriptSource[]コレクション単位のテストスクリプト
preRequestScriptSource | ScriptSource[]リクエスト単位の送信前スクリプト
testScriptSource | ScriptSource[]リクエスト単位のテストスクリプト
fromSpecExtensionsboolean仕様から x-postman-scripts を読む。既定値は true
captureLastResponseboolean直前のレスポンスを後続リクエストへ公開する組み込みヘルパーを追加

ScriptSource:

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

インポートした仕様に含まれるスクリプトを実行したくない場合は scripts.fromSpecExtensions: false を指定してください。現在の既定値は true です。将来の既定値変更を前提にしないでください。

プロトコル固有のオプション​

HTTP / SSE​

HTTP が既定のアダプターです。text/event-stream の宣言は SSE の意図を示します。実行時にはヘッダー到着時に実際のレスポンスも分類します。probeStreamingResponse() は明示的に呼ぶ独立したプローブであり、毎回自動実行される前提処理ではありません。

基本的な HTTP リクエストに追加設定は不要です。postman-runtime の詳細設定には 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",
});

既定の MCP 手動セッションは Streamable HTTP と endpoint を使います。stdio では kind: "mcp"、transport: "stdio"、ローカルの command、任意の args を渡します。セッションを開くと設定したプロセスが起動します。

gRPC​

gRPC にはアドレス、記述子の取得元(.proto ファイルまたはサーバーリフレクション)、完全修飾されたサービスとメソッドが必要です。

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

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

手動セッションのファクトリーは未接続のセッションを返します。送信前に open()、後処理で close() を呼んでください。gRPC の例には対応するローカルサーバーと proto ファイルが必要です。手動セッションのオプションは SendOptions.grpc と同じオブジェクトではありません。

完全な例​

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

次のステップ​