Ana içeriğe geç

API Başvurusu

@powerduck/openapi-request paketinin temel entegrasyon API'leri için başvuru kaynağıdır. Tablolar sözleşmeleri özetler; tüm aşırı yüklemeler ve isteğe bağlı parametreler için paketin TypeScript bildirimleri esastır. Ana giriş noktası ile protokol alt yollarının dışa aktardığı öğeler aynı değildir.

Temel API'ler​

createClient(options?): ProtoClient​

Arayüz odaklı istemciyi oluşturur. options bağımsız değişkeni isteğe bağlıdır.

Parametreler:

AdTürAçıklama
optionsCreateClientOptionsİsteğe bağlı yapılandırma
options.writeBackWriteBackOptionsYanıtların belirtime nasıl birleştirileceğini belirler
options.responseToResponseOptionsYanıt nesnelerinin nasıl normalleştirileceğini belirler

Döndürür: Aşağıdaki yöntemleri içeren ProtoClient:

YöntemİmzaAçıklama
prepare(sendOptions: SendOptions) => PreparedRequestİsteği planlar; protokolü, görüntüleme modunu ve akış türünü döndürür
send(sendOptions: SendOptions) => Promise<SendResult>Bir isteği yürütür
sendMany(spec, targets, shared?) => Promise<SendManyResult>Hedef başına sonuçlarla toplu yürütme; başarısızlıklar diğer sonuçları silmez
connect(connectOptions: ManualSessionOptions) => AnyManualSessionAçılmamış bir websocket/mcp/grpc oturumu oluşturur; bağlanmak için open() çağırın
discover(discoverOptions) => Promise<any>MCP ve gRPC yeteneklerini keşfeder
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentGözlemlenen yanıtı belgeye birleştirir
dispose() => voidŞu anda işlem yapmaz; çağıranlar oturumlarını kapatmalıdır
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Fetch isteği yapıp yanıtını sınıflandırır; dönen yanıt gövdesini tüketin veya iptal edin

Örnek:

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​

Otomasyon, betikler ve CI için betik destekli hata ayıklayıcıyı oluşturur.

Parametreler:

AdTürAçıklama
configDebuggerOptionsİsteğe bağlı yapılandırma
config.adaptersProtocolAdapter[]Varsayılanların yerini alan özel bağdaştırıcı listesi
config.extraAdaptersProtocolAdapter[]Varsayılanlara eklenen bağdaştırıcılar
config.writeBackWriteBackOptionsGeri yazma seçenekleri
config.responseToResponseOptionsYanıt normalleştirme seçenekleri
config.writeBackTruncatedbooleanKesilmiş akışlardan çıkarılan şemayı geri yazar (varsayılan: true)

Döndürür: prepare, send, sendMany, toCollection ve diğer yöntemleri içeren ProtoKit.

Örnek:

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 ve gRPC için uzun ömürlü çift yönlü oturum oluşturur. Oluşturma işlevi G/Ç yapmaz; bağlantı open() ile açılır.

Parametreler:

AdTürAçıklama
options.kind"websocket" | "mcp" | "grpc"Kullanılacak protokol
options.urlstringWebSocket bağlantı URL'si
options.endpointstringMCP Streamable HTTP uç noktası
options.transport"streamable-http" | "stdio"MCP aktarımı; varsayılan Streamable HTTP'dir
options.command, options.argsstring, string[]MCP stdio için yerel çalıştırılabilir dosya ve argümanlar
options.address, options.service, options.methodstringgRPC adresi, tam nitelikli hizmet adı ve yöntem

gRPC için protoPaths veya reflection üzerinden bir tanımlayıcı kaynağı da sağlayın. Protokole özgü seçenekler Yapılandırma bölümündedir.

Döndürür: open(), send(), close(), onEvent(), waitForClose(), events ve state içeren oturum. onEvent(), unsubscribe() yöntemi olan bir abonelik döndürür.

Örnek:

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 örneklerinin kayıt defteridir. Yeni kayıt defteri boştur; özel bir listeyle değiştirilmedikçe createDebugger() yerleşik HTTP, WebSocket, gRPC, MCP ve GraphQL bağdaştırıcılarını kaydeder. Seçimi yönetmek için register(), unregister(), get(), list(), rank() ve resolve() kullanın.

ProtoKitError​

Hata ayıklayıcı ve temel yürütme yolları tarafından fırlatılan türlendirilmiş hata. Kütüphane hatalarını beklenmeyen hatalardan ayırmak için instanceof ProtoKitError kullanın.

Temel türler​

SendOptions​

prepare() ve send() için temel girdi nesnesidir. Belirtim, hedef, değerler ve istek düzeyindeki tüm yapılandırma burada iletilir.

AlanTürZorunluAçıklama
specOpenApiDocumentEvetEksiksiz OpenAPI 3.2 belgesi
targetOperationTargetEvetİşlem tanımlayıcısı (aşağıya bakın)
valuesRequestValuesHayırYol/sorgu/üstbilgi/çerez/gövde için somut değerler
serverUrlstringHayırspec.servers[0].url değerini geçersiz kılar
serverVariablesRecord<string, string>HayırSunucu URL şablonu değişkenleri
variablesRecord<string, string>Hayır{{name}} biçiminde başvurulan ortam değişkenleri
globalsRecord<string, string>HayırPostman tarzı genel değişkenler
localVariablesRecord<string, string>HayırYerel değişkenler
collectionVariablesRecord<string, string>HayırKoleksiyon düzeyindeki değişkenler
authAuthConfigHayırKimlik doğrulama yapılandırması
scriptsScriptConfigHayırİstek öncesi betikler ve test betikleri
runnerRuntimeRunOptionsHayırTüm postman-runtime seçeneklerini doğrudan iletir (en yüksek öncelik)
websocketWebSocketOptionsHayırWebSocket'e özgü seçenekler
graphqlGraphQLOptionsHayırGraphQL'e özgü seçenekler
mcpMcpOptionsHayırMCP'ye özgü seçenekler
grpcanyHayırgRPC'ye özgü seçenekler
timeoutnumberHayırİstek başına milisaniye cinsinden zaman aşımı (runner.timeout.request için kısayol)

SendOptions, şu yürütme ve akış denetimlerini de kabul eder:

AlanTürAçıklama
fetchtypeof fetchDesteklendiğinde ana uygulamanın sağladığı yalıtılmış fetch aktarımı; HTTP/SSE, postman-runtime kullanmaya devam eder.
writeBackbooleanresponseFragment üretilmeye devam ederken patchedSpec değerinin undefined kalması için false olarak ayarlayın.
signalAbortSignalYürütmeyi veya örneklemeyi iptal eder; yine de kısmi sonuç döndürülebilir.
maxEventsnumberSaklanacak en fazla akış olayı sayısı.
maxStreamMsnumberMilisaniye cinsinden en uzun akış örnekleme süresi.
maxResponseSizenumberBayt cinsinden yanıt sınırı.
maxBufferCharsnumberOlay sınırına ulaşılmadan önce SSE ayrıştırıcısının arabellek sınırı; varsayılan 4194304 karakter.
maxEventCharsnumberSSE olayı başına saklanacak veri sınırı; varsayılan 1048576 karakter.
inheritEventIdbooleanSSE olayında kimlik yoksa son olay kimliğini devralır; varsayılan true. Daha sıkı şema çıkarımı için false olarak ayarlayın.
onEvent(event: StreamEvent) => voidAkış olaylarını alır.
onConsole(log: ConsoleLog) => voidBetik konsolu çıktısını alır.
onAssertion(assertion: AssertionResult) => voidDoğrulama sonuçlarını alır.
onResponseStart(info: ResponseStartInfo) => voidİlk HTTP/SSE üstbilgilerini ve streaming sınıflandırmasını inceler.
onOpen(info) => voidWebSocket bağlantı ayrıntılarını alır: URL, protokol ve üstbilgiler.

Protokol bağdaştırıcıları sınırları farklı yorumlayabilir. Arayüz geri çağrılarını hafif tutun; geri çağrıların fırlattığı hatalar yürütme katmanında yakalanır. HTTP istek ayarları için runner.requester kullanın; maxResponseSize belirtilirse sıfır değil, pozitif olmalıdır.

OperationTarget​

Tek bir işlemi tanımlar. operationId veya method + path seçeneklerinden birini tercih edin. İkisi de verilirse operationId önceliklidir.

AlanTürAçıklama
operationIdstringAlternatif arama anahtarı; yol + yöntem çiftinden önceliklidir
methodstringBüyük/küçük harfe duyarsız HTTP yöntemi. path gerektirir.
pathstringŞablonlu yol, örneğin /users/{id}. method gerektirir.

RequestValues​

Oluşturulan isteğe eklenecek somut değerler.

AlanTürAçıklama
pathRecord<string, unknown>Yol parametresi değerleri
queryRecord<string, unknown>Sorgu parametresi değerleri
headerRecord<string, unknown>Üstbilgi değerleri
cookieRecord<string, unknown>Çerez değerleri
querystringstringÖnceden kodlanmış ham sorgu dizesi (OpenAPI 3.2 querystring konumu)
bodyunknownİstek gövdesi
contentTypestringİşlem birden fazla istek medya türü bildiriyorsa belirli bir türü zorunlu kılar
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​

AlanTürAçıklama
typeAuthConfig["type"]Kimlik doğrulama türü
tokenstringBearer belirteci (type: "bearer" için)
usernamestringBasic kimlik doğrulama kullanıcı adı (type: "basic" için)
passwordstringBasic kimlik doğrulama parolası (type: "basic" için)
keystringAPI anahtarı adı (type: "apikey" için)
valuestringAPI anahtarı değeri (type: "apikey" için)
in"header" | "query"API anahtarı konumu (type: "apikey" için)
// 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" },
});

Gelişmiş kimlik doğrulama türleri digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap ve edgegrid olarak sıralanır. HTTP/SSE/GraphQL için Postman yardımcı alanlarını parameters: Record<string, string | boolean | number> üzerinden iletin. İsteğe bağlı oauth2: OAuth2FlowConfig, OAuth 2.0 türünde belirteç alma ve yenilemeyi etkinleştirir; her kimlik doğrulama yardımcısının tüm protokollerde geçerli olduğunu varsaymayın.

PreparedRequest​

createClient().prepare() tarafından döndürülür. Hata ayıklayıcının planlama sonucu farklıdır: createDebugger().prepare(), located, adapter ve plan içeren bir PlanResult döndürür.

AlanTürAçıklama
protocolstringÇözümlenen protokol (http, websocket, grpc, graphql, mcp)
transportstringÇözümlenen aktarım
targetOperationTargetÖzgün hedef
operationanyÇözümlenen OpenAPI işlem nesnesi
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindAkış sınıflandırması (aşağıya bakın)
stream.expectedbooleanAkış beklenip beklenmediği
openapi.extensionsRecord<string, unknown>Çözümlenen OpenAPI uzantıları
warningsstring[]Planlama sırasında oluşan uyarılar

StreamKind​

Ayrıntılı akış sınıflandırması: "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

OpenAPI yardımcıları​

Dışa aktarılan öğeİmzaAçıklama
locateOperation(spec, target) => LocatedOperationOperationTarget üzerinden bir işlemi çözümler
inferSchema(value) => SchemaTek bir gözlemlenen değerden JSON Schema çıkarır
inferSchemaFromMany(values) => SchemaBirden çok gözlemlenen değeri kapsayan şema çıkarır
mergeSchema(a, b) => SchemaÇıkarılan iki şemayı birleştirir (birleşim veya kombinasyon)
sampleFromSchema(schema) => unknownŞema için gerçekçi bir örnek değer üretir
toResponseObject(result, options?) => { statusCode: string; response: any }Gözlemlenen sonuçtan OpenAPI yanıt nesnesi oluşturur
writeBackResponse(spec, path, method, fragment, options?) => specGözlemlenen bir yanıtı belgeye birleştirir

Dışa aktarılan türler: LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Aşağıdaki adlar ana giriş noktasında bulunur. @powerduck/openapi-request/http alt yolu HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions ve runWithPostman öğelerini dışa aktarır; algılama yardımcılarını ve BUILTIN_CAPTURE_TEST öğesini ana giriş noktasından içe aktarın.

Dışa aktarılan öğeAçıklama
HttpAdapterHTTP/HTTPS için varsayılan protokol bağdaştırıcısı
SseParserSSE bayt akışını yapılandırılmış olaylara dönüştüren akış ayrıştırıcısı
isStreamingOperationBildirilen içerik türlerinden işlemi akış olarak sınıflandırır
isSseContentTypeİçerik türünün SSE belirtip belirtmediğini denetler
isStreamingContentTypeİçerik türünün akış belirtip belirtmediğini denetler
acceptHeaderForİşlem için uygun Accept üstbilgisini üretir
probeStreamingResponseFetch isteği yapıp yanıtını sınıflandırır; dönen yanıt gövdesini tüketin veya iptal edin
BUILTIN_CAPTURE_TESTSon yanıtı yakalayan yerleşik Postman test betiği

WebSocket​

@powerduck/openapi-request/ws üzerinden içe aktarın.

Dışa aktarılan öğeAçıklama
WebSocketAdapterWebSocket hedefleri için protokol bağdaştırıcısı
createWsManualSessionÇift yönlü manuel WebSocket oturumu oluşturur; runWebSocketSession ve wsManualSession adlarıyla da kullanılabilir

GraphQL​

@powerduck/openapi-request/graphql üzerinden içe aktarın.

Dışa aktarılan öğeAçıklama
GraphQLAdapterGraphQL hedefleri için protokol bağdaştırıcısı
resolveGraphQLConfigİşlemden GraphQL yapılandırmasını çözümler
runGraphQLGraphQL işlemi yürütür
introspectSchemaGraphQL uç noktasının şemasını iç gözlemle alır
INTROSPECTION_QUERYStandart GraphQL iç gözlem sorgusu
generateOperationİç gözlemle alınan GraphQL şeması ve bir alandan sorgu belgesi üretir
generateAllOperationsİç gözlemle alınan GraphQL şemasının alanları için sorgu belgeleri üretir
writeGraphQLOperationsÜretilen GraphQL işlemlerini belirtime geri yazar
discoverAndWriteGraphQLSchemaGraphQL şemasını keşfeder ve belirtime yazar

MCP (Model Context Protocol)​

Aşağıdaki öğelerin çoğu @powerduck/openapi-request/mcp üzerinden kullanılabilir. initializeMcpSession öğesini ana giriş noktasından içe aktarın; alt yoldaki adı initializeSession şeklindedir. Alt yol ayrıca runMcp, createMcpSessionCore ve createMcpStdioConnection öğelerini sunar.

Dışa aktarılan öğeAçıklama
McpAdapterMCP hedefleri için protokol bağdaştırıcısı
createMcpManualSessionManuel MCP oturumu oluşturur; mcpManualSession adıyla da kullanılabilir
createMcpStdioSessionstdio üzerinden MCP oturumu oluşturur
runMcpManualSessionKullanımı artık önerilmiyor: createMcpManualSession kullanın
resolveMcpConfigİşlemden MCP yapılandırmasını çözümler
initializeMcpSessionMCP oturumunu başlatır (initializeSession diğer adıyla)
discoverMcpCapabilitiesMCP sunucusunun yeteneklerini keşfeder
MCP_PROTOCOL_VERSIONDesteklenen MCP protokol sürümü
generateMcpCallTek bir MCP araç çağrısı üretir
generateAllMcpCallsTüm MCP araç çağrılarını üretir
writeMcpOperationsMCP işlemlerini belirtime geri yazar
discoverAndWriteMcpCapabilitiesMCP yeteneklerini keşfeder ve belirtime yazar
createHttpMcpTransportMCP için HTTP aktarımı oluşturur
createStdioMcpTransportMCP için stdio aktarımı oluşturur

gRPC​

Düşük düzeyli keşif, çağrı ve tanımlayıcı yardımcılarını @powerduck/openapi-request/grpc üzerinden içe aktarın. GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover ve discoverGrpc öğelerini ana giriş noktasından içe aktarın; alt yol keşif için discover adını kullanır. Ayrıca discoverFromCatalog, describeMethod ve describeFromCatalog sunarak her yöntem için yansımayı tekrarlamak yerine kataloğu yeniden kullanmanızı sağlar.

Dışa aktarılan öğeAçıklama
GrpcProtocolAdapterOpenAPI'ye yönelik gRPC protokol bağdaştırıcısı
GrpcAdapterDüşük düzeyli gRPC bağdaştırıcısı
grpcDiscover / discoverGrpcgRPC hizmetlerini ve yöntemlerini keşfeder
createGrpcManualSession / grpcManualSessionManuel gRPC oturumu oluşturur
grpcCallTek bir gRPC çağrısı yürütür
resolveMethodgRPC yöntem tanımlayıcısını çözümler
buildMessageTemplateTanımlayıcıdan ileti şablonu oluşturur
buildCatalogHizmet ve yöntem kataloğu oluşturur
LOADER_OPTIONSVarsayılan proto yükleyici seçenekleri
scanProtoFilesDizinlerde proto dosyalarını tarar
deriveIncludeDirsDetailedProto dosya yollarından içerme dizinlerini türetir
fetchDescriptorSetgRPC yansımasıyla tanımlayıcı kümesini alır
fetchFullDescriptorSetTüm bağımlılıklarıyla tam tanımlayıcı kümesini alır
listServicesTanımlayıcı kümesindeki hizmetleri listeler
listServicesDetailedHizmetleri ayrıntılı yöntem bilgileriyle listeler
serializeDescriptorSetTanımlayıcı kümesini baytlara serileştirir
decodeFileDescriptorProtoTek bir dosya tanımlayıcı proto'sunun kodunu çözer
decodeFileDescriptorSetDosya tanımlayıcı kümesinin kodunu çözer
buildCredentialsgRPC kimlik bilgilerini oluşturur (eşzamanlı)
buildCredentialsAsyncgRPC kimlik bilgilerini oluşturur (eşzamansız)
buildCredentialsCheckedDoğrulamayla kimlik bilgilerini oluşturur (eşzamanlı)
buildCredentialsCheckedAsyncDoğrulamayla kimlik bilgilerini oluşturur (eşzamansız)
loadGrpc@grpc/grpc-js paketini dinamik olarak yükler
isGrpcAvailablegRPC bağımlılıklarının kullanılabilirliğini denetler
requireCapabilityBelirli bir gRPC yeteneğini gerektirir; kullanılamıyorsa hata fırlatır

Ana giriş noktası GrpcDiscoveryResult, GrpcDiscoveredMethod ve GrpcDiscoveredService tür takma adlarını dışa aktarır. gRPC alt yolunda bunların adları DiscoveryResult, DiscoveredMethod ve DiscoveredService şeklindedir.

Hata türleri: ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Ek yardımcılar​

Ana giriş noktası ayrıca OAuth 2.0 yardımcıları resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses ve authFromOAuth2Token; kopyalama yardımcısı toCloneable; UnifiedSession temel sınıfı; gRPC geri yazma yardımcıları writeGrpcOperations ve discoverAndWriteGrpcOperations öğelerini dışa aktarır.

Alt yol dışa aktarımları​

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