Lewati ke konten utama

Referensi API

Referensi API integrasi utama @powerduck/openapi-request. Tabel merangkum kontrak; deklarasi TypeScript paket menjadi acuan lengkap untuk overload dan parameter opsional. Ekspor dari titik masuk utama dan subpath protokol tidak sama persis.

API inti​

createClient(options?): ProtoClient​

Membuat klien yang dirancang untuk antarmuka pengguna. Argumen options bersifat opsional.

Parameter:

NamaTipeKeterangan
optionsCreateClientOptionsKonfigurasi opsional
options.writeBackWriteBackOptionsMengatur cara respons digabungkan kembali ke spesifikasi
options.responseToResponseOptionsMengatur cara objek respons dinormalisasi

Mengembalikan: ProtoClient dengan metode berikut:

MetodeTanda tanganKeterangan
prepare(sendOptions: SendOptions) => PreparedRequestMerencanakan permintaan dan mengembalikan protokol, mode tampilan, serta jenis aliran
send(sendOptions: SendOptions) => Promise<SendResult>Menjalankan permintaan
sendMany(spec, targets, shared?) => Promise<SendManyResult>Eksekusi batch dengan hasil per target; kegagalan tidak membuang hasil target lain
connect(connectOptions: ManualSessionOptions) => AnyManualSessionMembuat sesi websocket/mcp/grpc yang belum dibuka; panggil open() untuk terhubung
discover(discoverOptions) => Promise<any>Menemukan kemampuan MCP dan gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentMenggabungkan respons yang diamati ke dokumen
dispose() => voidSaat ini tidak melakukan tindakan; pemanggil harus menutup sesinya sendiri
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Menjalankan permintaan fetch dan mengklasifikasikan responsnya; baca atau batalkan isi respons yang dikembalikan

Contoh:

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​

Membuat debugger berbasis skrip untuk otomatisasi, skrip, dan CI.

Parameter:

NamaTipeKeterangan
configDebuggerOptionsKonfigurasi opsional
config.adaptersProtocolAdapter[]Daftar adaptor kustom yang menggantikan adaptor bawaan
config.extraAdaptersProtocolAdapter[]Adaptor tambahan untuk adaptor bawaan
config.writeBackWriteBackOptionsOpsi penulisan kembali
config.responseToResponseOptionsOpsi normalisasi respons
config.writeBackTruncatedbooleanMenuliskan skema yang disimpulkan dari aliran terpotong (bawaan: true)

Mengembalikan: ProtoKit dengan prepare, send, sendMany, toCollection, dan lainnya.

Contoh:

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​

Membuat sesi dupleks berumur panjang untuk WebSocket, MCP, dan gRPC. Fungsi pembuat tidak melakukan I/O; koneksi dibuka melalui open().

Parameter:

NamaTipeKeterangan
options.kind"websocket" | "mcp" | "grpc"Protokol yang digunakan
options.urlstringURL koneksi WebSocket
options.endpointstringEndpoint MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Transport MCP; bawaannya Streamable HTTP
options.command, options.argsstring, string[]Program lokal dan argumen untuk MCP stdio
options.address, options.service, options.methodstringAlamat gRPC, nama layanan lengkap, dan metode

Untuk gRPC, berikan juga sumber deskriptor melalui protoPaths atau reflection. Opsi per protokol tersedia di Konfigurasi.

Mengembalikan: sesi dengan open(), send(), close(), onEvent(), waitForClose(), events, dan state. onEvent() mengembalikan objek langganan dengan unsubscribe().

Contoh:

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​

Registri instans ProtocolAdapter. Registri baru dimulai dalam keadaan kosong; createDebugger() mendaftarkan adaptor bawaan HTTP, WebSocket, gRPC, MCP, dan GraphQL kecuali digantikan daftar kustom. Gunakan register(), unregister(), get(), list(), rank(), dan resolve() untuk mengelola pemilihan.

ProtoKitError​

Galat bertipe yang dilempar debugger dan jalur eksekusi inti. Gunakan instanceof ProtoKitError untuk membedakan galat pustaka dari kegagalan tak terduga.

Tipe inti​

SendOptions​

Objek masukan utama untuk prepare() dan send(). Di sini Anda meneruskan spesifikasi, target, nilai, dan seluruh konfigurasi tingkat permintaan.

KolomTipeWajibKeterangan
specOpenApiDocumentYaDokumen OpenAPI 3.2 lengkap
targetOperationTargetYaPengenal operasi (lihat di bawah)
valuesRequestValuesTidakNilai konkret untuk path/query/header/cookie/body
serverUrlstringTidakMenggantikan spec.servers[0].url
serverVariablesRecord<string, string>TidakVariabel templat URL server
variablesRecord<string, string>TidakVariabel lingkungan yang dirujuk sebagai {{name}}
globalsRecord<string, string>TidakVariabel global bergaya Postman
localVariablesRecord<string, string>TidakVariabel lokal
collectionVariablesRecord<string, string>TidakVariabel tingkat koleksi
authAuthConfigTidakKonfigurasi autentikasi
scriptsScriptConfigTidakSkrip prapermintaan dan pengujian
runnerRuntimeRunOptionsTidakPenerusan seluruh opsi postman-runtime secara langsung (prioritas tertinggi)
websocketWebSocketOptionsTidakOpsi khusus WebSocket
graphqlGraphQLOptionsTidakOpsi khusus GraphQL
mcpMcpOptionsTidakOpsi khusus MCP
grpcanyTidakOpsi khusus gRPC
timeoutnumberTidakBatas waktu per permintaan dalam milidetik (pintasan untuk runner.timeout.request)

SendOptions juga menerima kontrol eksekusi dan streaming berikut:

KolomTipeKeterangan
fetchtypeof fetchTransport fetch terisolasi yang disediakan host jika didukung; HTTP/SSE tetap menggunakan postman-runtime.
writeBackbooleanAtur ke false agar patchedSpec tetap undefined sementara responseFragment tetap dihasilkan.
signalAbortSignalMembatalkan eksekusi atau pengambilan sampel; hasil parsial masih dapat dikembalikan.
maxEventsnumberJumlah maksimum peristiwa streaming yang disimpan.
maxStreamMsnumberDurasi maksimum pengambilan sampel streaming dalam milidetik.
maxResponseSizenumberBatas ukuran respons dalam byte.
maxBufferCharsnumberBatas buffer parser SSE sebelum batas peristiwa; bawaan 4194304 karakter.
maxEventCharsnumberBatas data yang disimpan per peristiwa SSE; bawaan 1048576 karakter.
inheritEventIdbooleanMewarisi ID peristiwa SSE terakhir jika tidak ada ID baru; bawaan true. Atur ke false untuk inferensi skema yang lebih ketat.
onEvent(event: StreamEvent) => voidMenerima peristiwa streaming.
onConsole(log: ConsoleLog) => voidMenerima keluaran konsol skrip.
onAssertion(assertion: AssertionResult) => voidMenerima hasil asersi.
onResponseStart(info: ResponseStartInfo) => voidMemeriksa header awal HTTP/SSE dan klasifikasi streaming.
onOpen(info) => voidMenerima detail koneksi WebSocket: URL, protokol, dan header.

Adaptor protokol dapat menafsirkan batas secara berbeda. Pastikan callback UI tetap ringan; pengecualian yang dilempar callback ditangkap oleh lapisan eksekusi. Untuk pengaturan peminta HTTP, gunakan runner.requester; jika diberikan, maxResponseSize harus positif, bukan nol.

OperationTarget​

Mengidentifikasi satu operasi. Sebaiknya gunakan operationId atau method + path. Jika keduanya diberikan, operationId diutamakan.

KolomTipeKeterangan
operationIdstringKunci pencarian alternatif; diutamakan daripada path + method
methodstringMetode HTTP, tidak peka huruf besar-kecil. Memerlukan path.
pathstringPath bertemplat, misalnya /users/{id}. Memerlukan method.

RequestValues​

Nilai konkret yang dimasukkan ke permintaan yang dihasilkan.

KolomTipeKeterangan
pathRecord<string, unknown>Nilai parameter path
queryRecord<string, unknown>Nilai parameter kueri
headerRecord<string, unknown>Nilai header
cookieRecord<string, unknown>Nilai cookie
querystringstringString kueri mentah yang sudah dienkode (lokasi querystring pada OpenAPI 3.2)
bodyunknownIsi permintaan
contentTypestringMemaksa tipe media permintaan tertentu saat operasi mendeklarasikan beberapa tipe
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​

KolomTipeKeterangan
typeAuthConfig["type"]Jenis autentikasi
tokenstringToken Bearer (untuk type: "bearer")
usernamestringNama pengguna autentikasi Basic (untuk type: "basic")
passwordstringKata sandi autentikasi Basic (untuk type: "basic")
keystringNama kunci API (untuk type: "apikey")
valuestringNilai kunci API (untuk type: "apikey")
in"header" | "query"Lokasi kunci API (untuk 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" },
});

Jenis autentikasi lanjutan meliputi digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap, dan edgegrid. Teruskan kolom helper Postman untuk HTTP/SSE/GraphQL melalui parameters: Record<string, string | boolean | number>. Opsi oauth2: OAuth2FlowConfig mengaktifkan perolehan dan penyegaran token untuk jenis OAuth 2.0; jangan menganggap semua helper autentikasi berlaku untuk semua protokol.

PreparedRequest​

Dikembalikan oleh createClient().prepare(). Debugger memiliki hasil perencanaan berbeda: createDebugger().prepare() mengembalikan PlanResult dengan located, adapter, dan plan.

KolomTipeKeterangan
protocolstringProtokol yang ditentukan (http, websocket, grpc, graphql, mcp)
transportstringTransport yang ditentukan
targetOperationTargetTarget asli
operationanyObjek operasi OpenAPI yang ditemukan
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindKlasifikasi aliran (lihat di bawah)
stream.expectedbooleanApakah streaming diharapkan
openapi.extensionsRecord<string, unknown>Ekstensi OpenAPI yang ditentukan
warningsstring[]Peringatan selama perencanaan

StreamKind​

Klasifikasi aliran yang terperinci: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Fungsi pembantu OpenAPI​

EksporTanda tanganKeterangan
locateOperation(spec, target) => LocatedOperationMenemukan operasi berdasarkan OperationTarget
inferSchema(value) => SchemaMenyimpulkan JSON Schema dari satu nilai yang diamati
inferSchemaFromMany(values) => SchemaMenyimpulkan skema yang mencakup beberapa nilai yang diamati
mergeSchema(a, b) => SchemaMenggabungkan dua skema hasil inferensi (gabungan atau kombinasi)
sampleFromSchema(schema) => unknownMenghasilkan nilai contoh yang realistis untuk skema
toResponseObject(result, options?) => { statusCode: string; response: any }Membuat objek respons OpenAPI dari hasil yang diamati
writeBackResponse(spec, path, method, fragment, options?) => specMenggabungkan respons yang diamati ke dalam dokumen

Tipe yang diekspor: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Nama berikut tersedia dari titik masuk utama. Subpath @powerduck/openapi-request/http mengekspor HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions, dan runWithPostman; impor fungsi deteksi dan BUILTIN_CAPTURE_TEST dari titik masuk utama.

EksporKeterangan
HttpAdapterAdaptor protokol bawaan untuk HTTP/HTTPS
SseParserParser streaming yang mengubah aliran byte SSE menjadi peristiwa terstruktur
isStreamingOperationMengklasifikasikan operasi sebagai streaming berdasarkan tipe konten yang dideklarasikan
isSseContentTypeMemeriksa apakah tipe konten menunjukkan SSE
isStreamingContentTypeMemeriksa apakah tipe konten menunjukkan streaming
acceptHeaderForMenghasilkan header Accept yang sesuai untuk operasi
probeStreamingResponseMenjalankan permintaan fetch dan mengklasifikasikan responsnya; baca atau batalkan isi respons yang dikembalikan
BUILTIN_CAPTURE_TESTSkrip pengujian Postman bawaan untuk merekam respons terakhir

WebSocket​

Impor dari @powerduck/openapi-request/ws.

EksporKeterangan
WebSocketAdapterAdaptor protokol untuk target WebSocket
createWsManualSessionMembuat sesi WebSocket manual dupleks, juga tersedia sebagai runWebSocketSession dan wsManualSession

GraphQL​

Impor dari @powerduck/openapi-request/graphql.

EksporKeterangan
GraphQLAdapterAdaptor protokol untuk target GraphQL
resolveGraphQLConfigMenentukan konfigurasi GraphQL dari operasi
runGraphQLMenjalankan operasi GraphQL
introspectSchemaMelakukan introspeksi skema endpoint GraphQL
INTROSPECTION_QUERYKueri introspeksi GraphQL standar
generateOperationMenghasilkan dokumen kueri dari skema GraphQL hasil introspeksi dan suatu field
generateAllOperationsMenghasilkan dokumen kueri untuk field pada skema GraphQL hasil introspeksi
writeGraphQLOperationsMenuliskan operasi GraphQL yang dihasilkan ke spesifikasi
discoverAndWriteGraphQLSchemaMenemukan skema GraphQL dan menuliskannya ke spesifikasi

MCP (Model Context Protocol)​

Sebagian besar entri berikut tersedia dari @powerduck/openapi-request/mcp. Impor initializeMcpSession dari titik masuk utama; pada subpath namanya initializeSession. Subpath juga menyediakan runMcp, createMcpSessionCore, dan createMcpStdioConnection.

EksporKeterangan
McpAdapterAdaptor protokol untuk target MCP
createMcpManualSessionMembuat sesi MCP manual, juga tersedia sebagai mcpManualSession
createMcpStdioSessionMembuat sesi MCP melalui stdio
runMcpManualSessionUsang: gunakan createMcpManualSession
resolveMcpConfigMenentukan konfigurasi MCP dari operasi
initializeMcpSessionMenginisialisasi sesi MCP (alias dari initializeSession)
discoverMcpCapabilitiesMenemukan kemampuan server MCP
MCP_PROTOCOL_VERSIONVersi protokol MCP yang didukung
generateMcpCallMenghasilkan satu pemanggilan alat MCP
generateAllMcpCallsMenghasilkan semua pemanggilan alat MCP
writeMcpOperationsMenuliskan operasi MCP ke spesifikasi
discoverAndWriteMcpCapabilitiesMenemukan kemampuan MCP dan menuliskannya ke spesifikasi
createHttpMcpTransportMembuat transport HTTP untuk MCP
createStdioMcpTransportMembuat transport stdio untuk MCP

gRPC​

Impor fungsi tingkat rendah untuk penemuan, pemanggilan, dan deskriptor dari @powerduck/openapi-request/grpc. Impor GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover, dan discoverGrpc dari titik masuk utama; subpath menggunakan discover untuk penemuan. Subpath juga menyediakan discoverFromCatalog, describeMethod, dan describeFromCatalog agar katalog dapat digunakan kembali tanpa mengulang refleksi untuk setiap metode.

EksporKeterangan
GrpcProtocolAdapterAdaptor protokol gRPC untuk OpenAPI
GrpcAdapterAdaptor gRPC tingkat rendah
grpcDiscover / discoverGrpcMenemukan layanan dan metode gRPC
createGrpcManualSession / grpcManualSessionMembuat sesi gRPC manual
grpcCallMenjalankan satu pemanggilan gRPC
resolveMethodMenentukan deskriptor metode gRPC
buildMessageTemplateMembuat templat pesan dari deskriptor
buildCatalogMembuat katalog layanan dan metode
LOADER_OPTIONSOpsi bawaan pemuat proto
scanProtoFilesMemindai direktori untuk mencari berkas proto
deriveIncludeDirsDetailedMenentukan direktori penyertaan dari path berkas proto
fetchDescriptorSetMengambil kumpulan deskriptor melalui refleksi gRPC
fetchFullDescriptorSetMengambil kumpulan deskriptor lengkap beserta seluruh dependensi
listServicesMenampilkan daftar layanan dari kumpulan deskriptor
listServicesDetailedMenampilkan layanan beserta informasi metode terperinci
serializeDescriptorSetMenserialisasi kumpulan deskriptor menjadi byte
decodeFileDescriptorProtoMendekode satu proto deskriptor berkas
decodeFileDescriptorSetMendekode kumpulan deskriptor berkas
buildCredentialsMembuat kredensial gRPC secara sinkron
buildCredentialsAsyncMembuat kredensial gRPC secara asinkron
buildCredentialsCheckedMembuat kredensial dengan validasi secara sinkron
buildCredentialsCheckedAsyncMembuat kredensial dengan validasi secara asinkron
loadGrpcMemuat paket @grpc/grpc-js secara dinamis
isGrpcAvailableMemeriksa ketersediaan dependensi gRPC
requireCapabilityMensyaratkan kemampuan gRPC tertentu dan melempar galat jika tidak tersedia

Titik masuk utama mengekspor alias tipe GrpcDiscoveryResult, GrpcDiscoveredMethod, dan GrpcDiscoveredService. Subpath gRPC menamainya DiscoveryResult, DiscoveredMethod, dan DiscoveredService.

Tipe galat: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Utilitas tambahan​

Titik masuk utama juga mengekspor fungsi OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses, dan authFromOAuth2Token; utilitas penyalinan toCloneable; kelas dasar UnifiedSession; serta fungsi penulisan kembali gRPC writeGrpcOperations dan discoverAndWriteGrpcOperations.

Ekspor subpath​

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