Chuyển tới nội dung chính

Tài liệu tham khảo API

Tài liệu tham khảo các API tích hợp chính của @powerduck/openapi-request. Các bảng tóm tắt hợp đồng giao diện; khai báo TypeScript của gói là nguồn đầy đủ về các phiên bản nạp chồng và tham số tùy chọn. Điểm vào chính và đường dẫn con theo giao thức không xuất cùng một tập hợp thành phần.

API cốt lõi​

createClient(options?): ProtoClient​

Tạo client hướng đến giao diện người dùng. Đối số options là tùy chọn.

Tham số:

TênKiểuMô tả
optionsCreateClientOptionsCấu hình tùy chọn
options.writeBackWriteBackOptionsĐiều khiển cách hợp nhất phản hồi vào đặc tả
options.responseToResponseOptionsĐiều khiển cách chuẩn hóa đối tượng phản hồi

Trả về: ProtoClient với các phương thức sau:

Phương thứcChữ kýMô tả
prepare(sendOptions: SendOptions) => PreparedRequestLập kế hoạch yêu cầu và trả về giao thức, chế độ hiển thị cùng loại luồng
send(sendOptions: SendOptions) => Promise<SendResult>Thực thi yêu cầu
sendMany(spec, targets, shared?) => Promise<SendManyResult>Thực thi theo lô với kết quả riêng cho từng đích; lỗi không làm mất các kết quả khác
connect(connectOptions: ManualSessionOptions) => AnyManualSessionTạo phiên websocket/mcp/grpc chưa mở; gọi open() để kết nối
discover(discoverOptions) => Promise<any>Khám phá khả năng của MCP và gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentHợp nhất phản hồi quan sát được vào tài liệu
dispose() => voidHiện không thực hiện thao tác nào; bên gọi phải tự đóng phiên
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Thực hiện yêu cầu fetch và phân loại phản hồi; cần đọc hoặc hủy nội dung phản hồi được trả về

Ví dụ:

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​

Tạo trình gỡ lỗi dùng script cho tự động hóa, script và CI.

Tham số:

TênKiểuMô tả
configDebuggerOptionsCấu hình tùy chọn
config.adaptersProtocolAdapter[]Danh sách adapter tùy chỉnh thay thế các adapter mặc định
config.extraAdaptersProtocolAdapter[]Adapter bổ sung vào danh sách mặc định
config.writeBackWriteBackOptionsTùy chọn ghi lại vào đặc tả
config.responseToResponseOptionsTùy chọn chuẩn hóa phản hồi
config.writeBackTruncatedbooleanGhi lại lược đồ suy luận từ luồng bị cắt ngắn (mặc định: true)

Trả về: ProtoKit với prepare, send, sendMany, toCollection và các phương thức khác.

Ví dụ:

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​

Tạo phiên song công duy trì lâu dài cho WebSocket, MCP và gRPC. Hàm khởi tạo không thực hiện I/O; kết nối chỉ được mở khi gọi open().

Tham số:

TênKiểuMô tả
options.kind"websocket" | "mcp" | "grpc"Giao thức sử dụng
options.urlstringURL kết nối WebSocket
options.endpointstringEndpoint MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Cơ chế truyền MCP; mặc định là Streamable HTTP
options.command, options.argsstring, string[]Tệp thực thi cục bộ và đối số cho MCP stdio
options.address, options.service, options.methodstringĐịa chỉ gRPC, tên dịch vụ đầy đủ và phương thức

Với gRPC, cần cung cấp thêm nguồn mô tả qua protoPaths hoặc reflection. Các tùy chọn theo giao thức nằm trong Cấu hình.

Trả về: phiên có open(), send(), close(), onEvent(), waitForClose(), events và state. onEvent() trả về đối tượng đăng ký có unsubscribe().

Ví dụ:

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​

Bộ đăng ký các phiên bản ProtocolAdapter. Bộ đăng ký mới ban đầu trống; createDebugger() đăng ký các adapter HTTP, WebSocket, gRPC, MCP và GraphQL tích hợp, trừ khi được thay bằng danh sách tùy chỉnh. Dùng register(), unregister(), get(), list(), rank() và resolve() để quản lý lựa chọn.

ProtoKitError​

Lỗi có kiểu do trình gỡ lỗi và các luồng xử lý cốt lõi ném ra. Dùng instanceof ProtoKitError để phân biệt lỗi thư viện với lỗi bất ngờ khác.

Các kiểu cốt lõi​

SendOptions​

Đối tượng đầu vào chính của prepare() và send(). Bạn truyền đặc tả, đích, giá trị và toàn bộ cấu hình ở cấp yêu cầu tại đây.

TrườngKiểuBắt buộcMô tả
specOpenApiDocumentCóTài liệu OpenAPI 3.2 đầy đủ
targetOperationTargetCóĐịnh danh thao tác (xem bên dưới)
valuesRequestValuesKhôngGiá trị cụ thể cho path/query/header/cookie/body
serverUrlstringKhôngGhi đè spec.servers[0].url
serverVariablesRecord<string, string>KhôngBiến trong mẫu URL máy chủ
variablesRecord<string, string>KhôngBiến môi trường được tham chiếu bằng {{name}}
globalsRecord<string, string>KhôngBiến toàn cục theo kiểu Postman
localVariablesRecord<string, string>KhôngBiến cục bộ
collectionVariablesRecord<string, string>KhôngBiến ở cấp collection
authAuthConfigKhôngCấu hình xác thực
scriptsScriptConfigKhôngScript trước yêu cầu và script kiểm thử
runnerRuntimeRunOptionsKhôngTruyền trực tiếp toàn bộ tùy chọn postman-runtime (ưu tiên cao nhất)
websocketWebSocketOptionsKhôngTùy chọn riêng cho WebSocket
graphqlGraphQLOptionsKhôngTùy chọn riêng cho GraphQL
mcpMcpOptionsKhôngTùy chọn riêng cho MCP
grpcanyKhôngTùy chọn riêng cho gRPC
timeoutnumberKhôngThời gian chờ cho từng yêu cầu, tính bằng mili giây (cách viết gọn của runner.timeout.request)

SendOptions còn nhận các tùy chọn điều khiển thực thi và truyền luồng sau:

TrườngKiểuMô tả
fetchtypeof fetchCơ chế truyền fetch biệt lập do ứng dụng chủ cung cấp, nếu được hỗ trợ; HTTP/SSE vẫn dùng postman-runtime.
writeBackbooleanĐặt thành false để giữ patchedSpec là undefined trong khi vẫn tạo responseFragment.
signalAbortSignalHủy thực thi hoặc lấy mẫu; vẫn có thể trả về kết quả một phần.
maxEventsnumberSố sự kiện luồng tối đa được giữ lại.
maxStreamMsnumberThời lượng lấy mẫu luồng tối đa, tính bằng mili giây.
maxResponseSizenumberGiới hạn kích thước phản hồi theo byte.
maxBufferCharsnumberGiới hạn bộ đệm của bộ phân tích SSE trước ranh giới sự kiện; mặc định là 4194304 ký tự.
maxEventCharsnumberGiới hạn dữ liệu được giữ lại cho mỗi sự kiện SSE; mặc định là 1048576 ký tự.
inheritEventIdbooleanKế thừa ID sự kiện SSE gần nhất khi thiếu ID; mặc định là true. Đặt thành false để suy luận lược đồ chặt chẽ hơn.
onEvent(event: StreamEvent) => voidNhận sự kiện luồng.
onConsole(log: ConsoleLog) => voidNhận đầu ra console của script.
onAssertion(assertion: AssertionResult) => voidNhận kết quả assertion.
onResponseStart(info: ResponseStartInfo) => voidKiểm tra sớm header HTTP/SSE và phân loại streaming.
onOpen(info) => voidNhận thông tin kết nối WebSocket: URL, giao thức và header.

Các adapter giao thức có thể diễn giải giới hạn khác nhau. Giữ callback UI gọn nhẹ; tầng thực thi sẽ bắt ngoại lệ do callback ném ra. Với thiết lập bộ gửi yêu cầu HTTP, dùng runner.requester; nếu được chỉ định, maxResponseSize phải là số dương, không phải 0.

OperationTarget​

Xác định một thao tác. Nên dùng operationId hoặc method + path. Nếu cung cấp cả hai, operationId được ưu tiên.

TrườngKiểuMô tả
operationIdstringKhóa tra cứu thay thế; được ưu tiên hơn đường dẫn + phương thức
methodstringPhương thức HTTP, không phân biệt chữ hoa chữ thường. Cần có path.
pathstringĐường dẫn dạng mẫu, ví dụ /users/{id}. Cần có method.

RequestValues​

Các giá trị cụ thể được chèn vào yêu cầu được tạo.

TrườngKiểuMô tả
pathRecord<string, unknown>Giá trị tham số đường dẫn
queryRecord<string, unknown>Giá trị tham số truy vấn
headerRecord<string, unknown>Giá trị header
cookieRecord<string, unknown>Giá trị cookie
querystringstringChuỗi truy vấn thô đã được mã hóa sẵn (vị trí querystring của OpenAPI 3.2)
bodyunknownNội dung yêu cầu
contentTypestringBuộc sử dụng một kiểu media yêu cầu cụ thể khi thao tác khai báo nhiều kiểu
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​

TrườngKiểuMô tả
typeAuthConfig["type"]Loại xác thực
tokenstringToken Bearer (cho type: "bearer")
usernamestringTên người dùng xác thực Basic (cho type: "basic")
passwordstringMật khẩu xác thực Basic (cho type: "basic")
keystringTên khóa API (cho type: "apikey")
valuestringGiá trị khóa API (cho type: "apikey")
in"header" | "query"Vị trí khóa API (cho 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" },
});

Các loại xác thực nâng cao gồm digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap và edgegrid. Truyền các trường của trình hỗ trợ Postman cho HTTP/SSE/GraphQL qua parameters: Record<string, string | boolean | number>. Tùy chọn oauth2: OAuth2FlowConfig cho phép lấy và làm mới token với loại OAuth 2.0; không nên mặc định rằng mọi trình hỗ trợ xác thực đều dùng được với mọi giao thức.

PreparedRequest​

Được trả về bởi createClient().prepare(). Trình gỡ lỗi có kết quả lập kế hoạch khác: createDebugger().prepare() trả về PlanResult với located, adapter và plan.

TrườngKiểuMô tả
protocolstringGiao thức đã xác định (http, websocket, grpc, graphql, mcp)
transportstringCơ chế truyền đã xác định
targetOperationTargetĐích ban đầu
operationanyĐối tượng thao tác OpenAPI đã xác định
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindPhân loại luồng (xem bên dưới)
stream.expectedbooleanCó dự kiến truyền luồng hay không
openapi.extensionsRecord<string, unknown>Các phần mở rộng OpenAPI đã xác định
warningsstring[]Cảnh báo trong quá trình lập kế hoạch

StreamKind​

Phân loại luồng chi tiết: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Hàm hỗ trợ OpenAPI​

Thành phần xuấtChữ kýMô tả
locateOperation(spec, target) => LocatedOperationXác định thao tác bằng OperationTarget
inferSchema(value) => SchemaSuy luận JSON Schema từ một giá trị quan sát được
inferSchemaFromMany(values) => SchemaSuy luận lược đồ bao quát nhiều giá trị quan sát được
mergeSchema(a, b) => SchemaHợp nhất hai lược đồ đã suy luận (hợp hoặc kết hợp)
sampleFromSchema(schema) => unknownTạo giá trị mẫu sát thực tế cho lược đồ
toResponseObject(result, options?) => { statusCode: string; response: any }Tạo đối tượng phản hồi OpenAPI từ kết quả quan sát được
writeBackResponse(spec, path, method, fragment, options?) => specHợp nhất phản hồi quan sát được vào tài liệu

Các kiểu được xuất: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Các tên dưới đây có sẵn từ điểm vào chính. Đường dẫn con @powerduck/openapi-request/http xuất HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions và runWithPostman; hãy nhập các hàm phát hiện cùng BUILTIN_CAPTURE_TEST từ điểm vào chính.

Thành phần xuấtMô tả
HttpAdapterAdapter giao thức mặc định cho HTTP/HTTPS
SseParserBộ phân tích luồng chuyển luồng byte SSE thành sự kiện có cấu trúc
isStreamingOperationPhân loại thao tác là truyền luồng dựa trên kiểu nội dung đã khai báo
isSseContentTypeKiểm tra kiểu nội dung có biểu thị SSE hay không
isStreamingContentTypeKiểm tra kiểu nội dung có biểu thị truyền luồng hay không
acceptHeaderForTạo header Accept phù hợp cho thao tác
probeStreamingResponseThực hiện yêu cầu fetch và phân loại phản hồi; cần đọc hoặc hủy nội dung phản hồi được trả về
BUILTIN_CAPTURE_TESTScript kiểm thử Postman tích hợp để thu thập phản hồi gần nhất

WebSocket​

Nhập từ @powerduck/openapi-request/ws.

Thành phần xuấtMô tả
WebSocketAdapterAdapter giao thức cho đích WebSocket
createWsManualSessionTạo phiên WebSocket thủ công song công, cũng có tên runWebSocketSession và wsManualSession

GraphQL​

Nhập từ @powerduck/openapi-request/graphql.

Thành phần xuấtMô tả
GraphQLAdapterAdapter giao thức cho đích GraphQL
resolveGraphQLConfigXác định cấu hình GraphQL từ thao tác
runGraphQLThực thi thao tác GraphQL
introspectSchemaTruy vấn nội quan lược đồ của endpoint GraphQL
INTROSPECTION_QUERYTruy vấn nội quan GraphQL tiêu chuẩn
generateOperationTạo tài liệu truy vấn từ lược đồ GraphQL đã nội quan và một trường
generateAllOperationsTạo tài liệu truy vấn cho các trường của lược đồ GraphQL đã nội quan
writeGraphQLOperationsGhi các thao tác GraphQL đã tạo vào đặc tả
discoverAndWriteGraphQLSchemaKhám phá lược đồ GraphQL và ghi vào đặc tả

MCP (Model Context Protocol)​

Phần lớn các mục dưới đây có sẵn từ @powerduck/openapi-request/mcp. Nhập initializeMcpSession từ điểm vào chính; đường dẫn con gọi hàm này là initializeSession. Đường dẫn con còn cung cấp runMcp, createMcpSessionCore và createMcpStdioConnection.

Thành phần xuấtMô tả
McpAdapterAdapter giao thức cho đích MCP
createMcpManualSessionTạo phiên MCP thủ công, cũng có tên mcpManualSession
createMcpStdioSessionTạo phiên MCP qua stdio
runMcpManualSessionKhông còn được khuyến nghị: dùng createMcpManualSession
resolveMcpConfigXác định cấu hình MCP từ thao tác
initializeMcpSessionKhởi tạo phiên MCP (bí danh của initializeSession)
discoverMcpCapabilitiesKhám phá khả năng của máy chủ MCP
MCP_PROTOCOL_VERSIONPhiên bản giao thức MCP được hỗ trợ
generateMcpCallTạo một lệnh gọi công cụ MCP
generateAllMcpCallsTạo tất cả lệnh gọi công cụ MCP
writeMcpOperationsGhi các thao tác MCP vào đặc tả
discoverAndWriteMcpCapabilitiesKhám phá khả năng MCP và ghi vào đặc tả
createHttpMcpTransportTạo cơ chế truyền HTTP cho MCP
createStdioMcpTransportTạo cơ chế truyền stdio cho MCP

gRPC​

Nhập các hàm cấp thấp về khám phá, gọi và mô tả từ @powerduck/openapi-request/grpc. Nhập GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover và discoverGrpc từ điểm vào chính; đường dẫn con dùng discover cho chức năng khám phá. Đường dẫn con còn có discoverFromCatalog, describeMethod và describeFromCatalog để tái sử dụng danh mục, tránh lặp lại phản chiếu cho từng phương thức.

Thành phần xuấtMô tả
GrpcProtocolAdapterAdapter giao thức gRPC hướng đến OpenAPI
GrpcAdapterAdapter gRPC cấp thấp
grpcDiscover / discoverGrpcKhám phá dịch vụ và phương thức gRPC
createGrpcManualSession / grpcManualSessionTạo phiên gRPC thủ công
grpcCallThực thi một lệnh gọi gRPC
resolveMethodXác định bộ mô tả phương thức gRPC
buildMessageTemplateTạo mẫu thông điệp từ bộ mô tả
buildCatalogTạo danh mục dịch vụ và phương thức
LOADER_OPTIONSTùy chọn mặc định của bộ tải proto
scanProtoFilesQuét thư mục để tìm tệp proto
deriveIncludeDirsDetailedSuy ra thư mục bao gồm từ đường dẫn tệp proto
fetchDescriptorSetLấy tập mô tả qua phản chiếu gRPC
fetchFullDescriptorSetLấy tập mô tả đầy đủ cùng mọi phụ thuộc
listServicesLiệt kê dịch vụ từ tập mô tả
listServicesDetailedLiệt kê dịch vụ với thông tin phương thức chi tiết
serializeDescriptorSetTuần tự hóa tập mô tả thành byte
decodeFileDescriptorProtoGiải mã một proto mô tả tệp
decodeFileDescriptorSetGiải mã tập mô tả tệp
buildCredentialsTạo thông tin xác thực gRPC đồng bộ
buildCredentialsAsyncTạo thông tin xác thực gRPC bất đồng bộ
buildCredentialsCheckedTạo và xác thực thông tin xác thực đồng bộ
buildCredentialsCheckedAsyncTạo và xác thực thông tin xác thực bất đồng bộ
loadGrpcTải động gói @grpc/grpc-js
isGrpcAvailableKiểm tra các phụ thuộc gRPC có sẵn hay không
requireCapabilityYêu cầu một khả năng gRPC cụ thể và ném lỗi nếu không có

Điểm vào chính xuất các bí danh kiểu GrpcDiscoveryResult, GrpcDiscoveredMethod và GrpcDiscoveredService. Trong đường dẫn con gRPC, chúng có tên DiscoveryResult, DiscoveredMethod và DiscoveredService.

Các kiểu lỗi: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Tiện ích bổ sung​

Điểm vào chính còn xuất các hàm hỗ trợ OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses và authFromOAuth2Token; tiện ích sao chép toCloneable; lớp cơ sở UnifiedSession; cùng các hàm ghi gRPC writeGrpcOperations và discoverAndWriteGrpcOperations.

Thành phần xuất theo đường dẫn con​

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