إنتقل إلى المحتوى الرئيسي

مرجع API

مرجع واجهات التكامل الرئيسية في @powerduck/openapi-request. تلخص الجداول العقود، بينما تتضمن تصريحات TypeScript في الحزمة جميع الصيغ المحمّلة والوسائط الاختيارية. لا تتطابق صادرات نقطة الدخول الرئيسية مع صادرات المسارات الفرعية للبروتوكولات.

الواجهات الأساسية​

createClient(options?): ProtoClient​

ينشئ العميل المخصص لواجهات المستخدم. الوسيط options اختياري.

الوسائط:

الاسمالنوعالوصف
optionsCreateClientOptionsإعدادات اختيارية
options.writeBackWriteBackOptionsالتحكم في كيفية دمج الاستجابات في المواصفة
options.responseToResponseOptionsالتحكم في كيفية توحيد بنية كائنات الاستجابة

القيمة المعادة: كائن ProtoClient بالأساليب التالية:

الأسلوبالتوقيعالوصف
prepare(sendOptions: SendOptions) => PreparedRequestيخطط للطلب ويعيد البروتوكول ونمط العرض ونوع التدفق
send(sendOptions: SendOptions) => Promise<SendResult>ينفذ طلبًا
sendMany(spec, targets, shared?) => Promise<SendManyResult>ينفذ مجموعة طلبات بنتائج مستقلة لكل هدف؛ لا يؤدي فشل طلب إلى إسقاط النتائج الأخرى
connect(connectOptions: ManualSessionOptions) => AnyManualSessionينشئ جلسة websocket/mcp/grpc لم تُفتح بعد؛ استدعِ open() للاتصال
discover(discoverOptions) => Promise<any>يكتشف إمكانات MCP وgRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentيدمج الاستجابة المرصودة في المستند
dispose() => voidلا ينفذ إجراءً حاليًا؛ على المستدعين إغلاق جلساتهم بأنفسهم
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>ينفذ طلب fetch ويصنف استجابته؛ اقرأ محتوى الاستجابة المعادة أو ألغِه

مثال:

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​

ينشئ مصحح أخطاء قابلًا للبرمجة للأتمتة والبرامج النصية والتكامل المستمر.

الوسائط:

الاسمالنوعالوصف
configDebuggerOptionsإعدادات اختيارية
config.adaptersProtocolAdapter[]قائمة محولات مخصصة تستبدل المحولات الافتراضية
config.extraAdaptersProtocolAdapter[]محولات إضافية إلى المحولات الافتراضية
config.writeBackWriteBackOptionsخيارات الكتابة في المواصفة
config.responseToResponseOptionsخيارات توحيد بنية الاستجابة
config.writeBackTruncatedbooleanيكتب المخطط المستنتج من التدفقات المبتورة؛ الافتراضي: true

القيمة المعادة: كائن ProtoKit يتضمن prepare وsend وsendMany وtoCollection وغيرها.

مثال:

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​

ينشئ جلسة مزدوجة الاتجاه طويلة الأمد لـ WebSocket أو MCP أو gRPC. لا تنفذ دالة الإنشاء عمليات إدخال أو إخراج؛ يُفتح الاتصال عند استدعاء open().

الوسائط:

الاسمالنوعالوصف
options.kind"websocket" | "mcp" | "grpc"البروتوكول المطلوب
options.urlstringعنوان URL لاتصال WebSocket
options.endpointstringنقطة نهاية MCP Streamable HTTP
options.transport"streamable-http" | "stdio"وسيلة نقل MCP؛ الافتراضية هي Streamable HTTP
options.command, options.argsstring, string[]الملف التنفيذي المحلي ووسائطه لاستخدام MCP عبر stdio
options.address, options.service, options.methodstringعنوان gRPC واسم الخدمة المؤهل بالكامل والطريقة

في gRPC، وفّر أيضًا مصدرًا للواصفات عبر protoPaths أو reflection. خيارات كل بروتوكول موضحة في الإعدادات.

القيمة المعادة: جلسة تتضمن open() وsend() وclose() وonEvent() وwaitForClose() وevents وstate. تعيد onEvent() اشتراكًا يحتوي على unsubscribe().

مثال:

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​

سجل لكائنات ProtocolAdapter. يبدأ السجل الجديد فارغًا؛ وتسجل createDebugger() محولات HTTP وWebSocket وgRPC وMCP وGraphQL المدمجة ما لم تستبدلها قائمة مخصصة. استخدم register() وunregister() وget() وlist() وrank() وresolve() لإدارة الاختيار.

ProtoKitError​

خطأ ذو نوع محدد تطرحه مسارات مصحح الأخطاء والتنفيذ الأساسية. استخدم instanceof ProtoKitError لتمييز أخطاء المكتبة عن الأعطال غير المتوقعة.

الأنواع الأساسية​

SendOptions​

كائن الإدخال الرئيسي للدالتين prepare() وsend(). تُمرَّر من خلاله المواصفة والهدف والقيم وجميع إعدادات الطلب.

الحقلالنوعمطلوبالوصف
specOpenApiDocumentنعممستند OpenAPI 3.2 كامل
targetOperationTargetنعممعرّف العملية؛ انظر أدناه
valuesRequestValuesلاالقيم الفعلية للمسار والاستعلام والترويسات وملفات تعريف الارتباط والمحتوى
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.
writeBackbooleanاضبطه على false لإبقاء patchedSpec غير معرّف مع الاستمرار في إنشاء responseFragment.
signalAbortSignalإلغاء التنفيذ أو أخذ العينات؛ قد تُعاد نتيجة جزئية مع ذلك.
maxEventsnumberالحد الأقصى لعدد أحداث التدفق المحتفظ بها.
maxStreamMsnumberالمدة القصوى لأخذ عينات التدفق بالمللي ثانية.
maxResponseSizenumberالحد الأقصى لحجم الاستجابة بالبايت.
maxBufferCharsnumberحد ذاكرة التخزين المؤقت لمحلل SSE قبل حدّ الحدث؛ الافتراضي 4194304 محرفًا.
maxEventCharsnumberحد البيانات المحتفظ بها لكل حدث SSE؛ الافتراضي 1048576 محرفًا.
inheritEventIdbooleanوراثة معرّف آخر حدث SSE عند غياب المعرّف؛ الافتراضي true. اضبطه على false لاستنتاج مخطط أكثر صرامة.
onEvent(event: StreamEvent) => voidتلقي أحداث التدفق.
onConsole(log: ConsoleLog) => voidتلقي مخرجات وحدة تحكم البرامج النصية.
onAssertion(assertion: AssertionResult) => voidتلقي نتائج التحققات.
onResponseStart(info: ResponseStartInfo) => voidفحص ترويسات HTTP/SSE المبكرة وتصنيف streaming.
onOpen(info) => voidتلقي تفاصيل اتصال WebSocket: عنوان URL والبروتوكول والترويسات.

قد تفسر محولات البروتوكولات الحدود بطرق مختلفة. اجعل دوال رد النداء الخاصة بالواجهة خفيفة؛ تلتقط طبقة التنفيذ الاستثناءات التي تطرحها هذه الدوال. لإعدادات مرسل طلبات HTTP، استخدم runner.requester؛ ويجب أن تكون قيمة maxResponseSize موجبة وليست صفرًا عند تحديدها.

OperationTarget​

يحدد عملية واحدة. يُفضَّل استخدام operationId أو method + path. عند توفير الاثنين، تكون الأولوية لـ operationId.

الحقلالنوعالوصف
operationIdstringمفتاح بحث بديل له أولوية على المسار والطريقة
methodstringطريقة HTTP غير حساسة لحالة الأحرف. تتطلب path.
pathstringمسار بقالب مثل /users/{id}. يتطلب method.

RequestValues​

القيم الفعلية التي تُدرج في الطلب المُنشأ.

الحقلالنوعالوصف
pathRecord<string, unknown>قيم معاملات المسار
queryRecord<string, unknown>قيم معاملات الاستعلام
headerRecord<string, unknown>قيم الترويسات
cookieRecord<string, unknown>قيم ملفات تعريف الارتباط
querystringstringسلسلة استعلام خام مرمَّزة مسبقًا؛ موضع querystring في OpenAPI 3.2
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"]نوع المصادقة
tokenstringرمز Bearer عند استخدام type: "bearer"
usernamestringاسم المستخدم للمصادقة Basic عند استخدام type: "basic"
passwordstringكلمة المرور للمصادقة Basic عند استخدام type: "basic"
keystringاسم مفتاح API عند استخدام type: "apikey"
valuestringقيمة مفتاح API عند استخدام type: "apikey"
in"header" | "query"موضع مفتاح API عند استخدام 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" },
});

تشمل أنواع المصادقة المتقدمة digest وoauth1 وoauth2 وjwt وhawk وaws4 وntlm وasap وedgegrid. مرّر حقول مساعدات Postman الخاصة بـ HTTP/SSE/GraphQL عبر parameters: Record<string, string | boolean | number>. يتيح الخيار oauth2: OAuth2FlowConfig الحصول على الرموز وتجديدها لنوع OAuth 2.0؛ لا تفترض أن كل مساعد مصادقة ينطبق على جميع البروتوكولات.

PreparedRequest​

تعيده createClient().prepare(). لمصحح الأخطاء نتيجة تخطيط مختلفة: تعيد createDebugger().prepare() كائن PlanResult الذي يحتوي على located وadapter وplan.

الحقلالنوعالوصف
protocolstringالبروتوكول المحدد: http أو websocket أو grpc أو graphql أو mcp
transportstringوسيلة النقل المحددة
targetOperationTargetالهدف الأصلي
operationanyكائن عملية OpenAPI المحدد
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindتصنيف التدفق؛ انظر أدناه
stream.expectedbooleanما إذا كان التدفق متوقعًا
openapi.extensionsRecord<string, unknown>امتدادات OpenAPI المحددة
warningsstring[]التحذيرات التي ظهرت أثناء التخطيط

StreamKind​

التصنيف التفصيلي للتدفقات: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

دوال OpenAPI المساعدة​

العنصر المصدّرالتوقيعالوصف
locateOperation(spec, target) => LocatedOperationيحدد عملية باستخدام OperationTarget
inferSchema(value) => Schemaيستنتج JSON Schema من قيمة مرصودة واحدة
inferSchemaFromMany(values) => Schemaيستنتج مخططًا يشمل عدة قيم مرصودة
mergeSchema(a, b) => Schemaيدمج مخططين مستنتجين باتحاد أو تركيب
sampleFromSchema(schema) => unknownينتج قيمة نموذجية واقعية للمخطط
toResponseObject(result, options?) => { statusCode: string; response: any }ينشئ كائن استجابة OpenAPI من نتيجة مرصودة
writeBackResponse(spec, path, method, fragment, options?) => specيدمج استجابة مرصودة في المستند

الأنواع المصدّرة: LocatedOperation وWriteBackOptions وToResponseOptions.

HTTP / SSE​

تتوفر الأسماء التالية من نقطة الدخول الرئيسية. يصدّر المسار الفرعي @powerduck/openapi-request/http العناصر HttpAdapter وSseParser وbuildCollection وbuildEnvironment وresolveServerUrl وbuildRunOptions وrunWithPostman؛ استورد دوال الكشف وBUILTIN_CAPTURE_TEST من نقطة الدخول الرئيسية.

العنصر المصدّرالوصف
HttpAdapterمحول البروتوكول الافتراضي لـ HTTP/HTTPS
SseParserمحلل تدفق يحول تدفق بايتات SSE إلى أحداث منظّمة
isStreamingOperationيصنف العملية كتدفق اعتمادًا على أنواع المحتوى المعلنة
isSseContentTypeيتحقق مما إذا كان نوع المحتوى يشير إلى SSE
isStreamingContentTypeيتحقق مما إذا كان نوع المحتوى يشير إلى تدفق
acceptHeaderForينشئ ترويسة Accept المناسبة للعملية
probeStreamingResponseينفذ طلب fetch ويصنف استجابته؛ اقرأ محتوى الاستجابة المعادة أو ألغِه
BUILTIN_CAPTURE_TESTبرنامج اختبار Postman مدمج لالتقاط آخر استجابة

WebSocket​

استورد من @powerduck/openapi-request/ws.

العنصر المصدّرالوصف
WebSocketAdapterمحول بروتوكول لأهداف WebSocket
createWsManualSessionينشئ جلسة WebSocket يدوية مزدوجة الاتجاه، ويتوفر أيضًا بالاسمين runWebSocketSession وwsManualSession

GraphQL​

استورد من @powerduck/openapi-request/graphql.

العنصر المصدّرالوصف
GraphQLAdapterمحول بروتوكول لأهداف GraphQL
resolveGraphQLConfigيستخلص إعدادات GraphQL من العملية
runGraphQLينفذ عملية GraphQL
introspectSchemaيستكشف مخطط نقطة نهاية GraphQL بالاستبطان
INTROSPECTION_QUERYاستعلام استبطان GraphQL القياسي
generateOperationينشئ مستند استعلام من مخطط GraphQL مستكشف وحقل محدد
generateAllOperationsينشئ مستندات استعلام لحقول مخطط GraphQL مستكشف
writeGraphQLOperationsيكتب عمليات GraphQL المولّدة في المواصفة
discoverAndWriteGraphQLSchemaيكتشف مخطط GraphQL ويكتبه في المواصفة

MCP (بروتوكول سياق النموذج)​

تتوفر معظم العناصر التالية من @powerduck/openapi-request/mcp. استورد initializeMcpSession من نقطة الدخول الرئيسية؛ اسمها في المسار الفرعي هو initializeSession. يوفّر المسار الفرعي أيضًا runMcp وcreateMcpSessionCore وcreateMcpStdioConnection.

العنصر المصدّرالوصف
McpAdapterمحول بروتوكول لأهداف MCP
createMcpManualSessionينشئ جلسة MCP يدوية، ويتوفر أيضًا باسم mcpManualSession
createMcpStdioSessionينشئ جلسة MCP عبر stdio
runMcpManualSessionمهمل: استخدم createMcpManualSession
resolveMcpConfigيستخلص إعدادات MCP من العملية
initializeMcpSessionيهيئ جلسة MCP؛ اسم بديل لـ initializeSession
discoverMcpCapabilitiesيكتشف إمكانات خادم MCP
MCP_PROTOCOL_VERSIONإصدار بروتوكول MCP المدعوم
generateMcpCallينشئ استدعاء أداة MCP واحدًا
generateAllMcpCallsينشئ جميع استدعاءات أدوات MCP
writeMcpOperationsيكتب عمليات MCP في المواصفة
discoverAndWriteMcpCapabilitiesيكتشف إمكانات MCP ويكتبها في المواصفة
createHttpMcpTransportينشئ وسيلة نقل HTTP لـ MCP
createStdioMcpTransportينشئ وسيلة نقل stdio لـ MCP

gRPC​

استورد دوال الاكتشاف والاستدعاء والواصفات منخفضة المستوى من @powerduck/openapi-request/grpc. استورد GrpcProtocolAdapter وcreateGrpcManualSession وgrpcManualSession وgrpcDiscover وdiscoverGrpc من نقطة الدخول الرئيسية؛ يستخدم المسار الفرعي الاسم discover للاكتشاف. ويوفر أيضًا discoverFromCatalog وdescribeMethod وdescribeFromCatalog لإعادة استخدام الكتالوج بدل تكرار الانعكاس لكل طريقة.

العنصر المصدّرالوصف
GrpcProtocolAdapterمحول بروتوكول gRPC موجّه إلى OpenAPI
GrpcAdapterمحول gRPC منخفض المستوى
grpcDiscover / discoverGrpcيكتشف خدمات gRPC وطرقها
createGrpcManualSession / grpcManualSessionينشئ جلسة gRPC يدوية
grpcCallينفذ استدعاء gRPC واحدًا
resolveMethodيحدد واصف طريقة gRPC
buildMessageTemplateينشئ قالب رسالة من واصف
buildCatalogينشئ كتالوجًا للخدمات والطرق
LOADER_OPTIONSخيارات محمّل proto الافتراضية
scanProtoFilesيفحص المجلدات بحثًا عن ملفات proto
deriveIncludeDirsDetailedيستنتج مجلدات التضمين من مسارات ملفات proto
fetchDescriptorSetيجلب مجموعة واصفات عبر انعكاس gRPC
fetchFullDescriptorSetيجلب مجموعة واصفات كاملة مع جميع التبعيات
listServicesيسرد الخدمات من مجموعة واصفات
listServicesDetailedيسرد الخدمات مع تفاصيل الطرق
serializeDescriptorSetيسلسل مجموعة واصفات إلى بايتات
decodeFileDescriptorProtoيفك ترميز proto لواصف ملف واحد
decodeFileDescriptorSetيفك ترميز مجموعة واصفات ملفات
buildCredentialsينشئ بيانات اعتماد gRPC بشكل متزامن
buildCredentialsAsyncينشئ بيانات اعتماد gRPC بشكل غير متزامن
buildCredentialsCheckedينشئ بيانات اعتماد مع التحقق بشكل متزامن
buildCredentialsCheckedAsyncينشئ بيانات اعتماد مع التحقق بشكل غير متزامن
loadGrpcيحمّل الحزمة @grpc/grpc-js ديناميكيًا
isGrpcAvailableيتحقق من توفر تبعيات gRPC
requireCapabilityيشترط إمكانية gRPC محددة ويطرح خطأ إذا لم تتوفر

تصدّر نقطة الدخول الرئيسية الأسماء البديلة للأنواع GrpcDiscoveryResult وGrpcDiscoveredMethod وGrpcDiscoveredService. أسماؤها في المسار الفرعي gRPC هي DiscoveryResult وDiscoveredMethod وDiscoveredService.

أنواع الأخطاء: ReflectionProtocolError وReflectionUnavailableError وDescriptorDecodeError وGrpcDependencyBrokenError وGrpcDependencyMissingError.

أدوات إضافية​

تصدّر نقطة الدخول الرئيسية أيضًا دوال OAuth 2.0 المساعدة resolveOAuth2Token وacquireOAuth2Token وisOAuth2TokenExpired وoauth2RefreshStatuses وauthFromOAuth2Token، وأداة النسخ toCloneable، والفئة الأساسية UnifiedSession، ودالتي الكتابة الخاصة بـ gRPC وهما writeGrpcOperations وdiscoverAndWriteGrpcOperations.

صادرات المسارات الفرعية​

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