Aller au contenu principal

Référence API

Référence des principales API d’intégration de @powerduck/openapi-request. Les tableaux résument les contrats ; les déclarations TypeScript du paquet définissent l’ensemble des surcharges et paramètres facultatifs. Le point d’entrée principal et les sous-chemins par protocole n’exportent pas exactement les mêmes éléments.

API principales​

createClient(options?): ProtoClient​

Crée le client destiné aux interfaces utilisateur. L’argument options est facultatif.

Paramètres :

NomTypeDescription
optionsCreateClientOptionsConfiguration facultative
options.writeBackWriteBackOptionsContrôle la fusion des réponses dans la spécification
options.responseToResponseOptionsContrôle la normalisation des objets de réponse

Renvoie : un ProtoClient avec les méthodes suivantes :

MéthodeSignatureDescription
prepare(sendOptions: SendOptions) => PreparedRequestPlanifie une requête et renvoie le protocole, le mode d’affichage et le type de flux
send(sendOptions: SendOptions) => Promise<SendResult>Exécute une requête
sendMany(spec, targets, shared?) => Promise<SendManyResult>Exécute un lot avec un résultat par cible ; un échec ne supprime pas les autres résultats
connect(connectOptions: ManualSessionOptions) => AnyManualSessionCrée une session websocket/mcp/grpc non ouverte ; appelez open() pour la connecter
discover(discoverOptions) => Promise<any>Découvre les fonctionnalités MCP et gRPC
writeback(spec, prepared, result, writeOptions?) => OpenApiDocumentFusionne la réponse observée dans le document
dispose() => voidNe fait actuellement rien ; les appelants doivent fermer leurs sessions
probeStreamingResponse(input: RequestInfo | URL, init?: RequestInit) => Promise<{ ok: boolean; status: number; contentType?: string; kind: "none" | "sse" | "ndjson" | "chunked"; response: Response }>Effectue une requête fetch et classe sa réponse ; consommez ou annulez le corps de la réponse renvoyée

Exemple :

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​

Crée le débogueur scriptable pour l’automatisation, les scripts et la CI.

Paramètres :

NomTypeDescription
configDebuggerOptionsConfiguration facultative
config.adaptersProtocolAdapter[]Liste d’adaptateurs personnalisés, remplaçant ceux par défaut
config.extraAdaptersProtocolAdapter[]Adaptateurs supplémentaires ajoutés à ceux par défaut
config.writeBackWriteBackOptionsOptions de réécriture
config.responseToResponseOptionsOptions de normalisation des réponses
config.writeBackTruncatedbooleanRéécrit le schéma déduit de flux tronqués (par défaut : true)

Renvoie : un ProtoKit avec prepare, send, sendMany, toCollection, entre autres.

Exemple :

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​

Crée une session duplex de longue durée pour WebSocket, MCP ou gRPC. La fonction de création n’effectue aucune entrée/sortie ; la connexion se fait avec open().

Paramètres :

NomTypeDescription
options.kind"websocket" | "mcp" | "grpc"Protocole à utiliser
options.urlstringURL de connexion WebSocket
options.endpointstringPoint de terminaison MCP Streamable HTTP
options.transport"streamable-http" | "stdio"Transport MCP ; Streamable HTTP par défaut
options.command, options.argsstring, string[]Exécutable local et arguments pour MCP stdio
options.address, options.service, options.methodstringAdresse gRPC, nom complet du service et méthode

Pour gRPC, fournissez aussi une source de descripteurs via protoPaths ou reflection. Les options par protocole figurent dans Configuration.

Renvoie : une session avec open(), send(), close(), onEvent(), waitForClose(), events et state. onEvent() renvoie un abonnement disposant de unsubscribe().

Exemple :

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​

Registre d’instances de ProtocolAdapter. Un nouveau registre est vide ; createDebugger() y inscrit les adaptateurs HTTP, WebSocket, gRPC, MCP et GraphQL intégrés, sauf si une liste personnalisée les remplace. Utilisez register(), unregister(), get(), list(), rank() et resolve() pour gérer la sélection.

ProtoKitError​

Erreur typée levée par le débogueur et les traitements principaux. Utilisez instanceof ProtoKitError pour distinguer les erreurs de la bibliothèque des défaillances inattendues.

Types principaux​

SendOptions​

Objet d’entrée principal de prepare() et send(). Il reçoit la spécification, la cible, les valeurs et toute la configuration au niveau de la requête.

ChampTypeObligatoireDescription
specOpenApiDocumentOuiDocument OpenAPI 3.2 complet
targetOperationTargetOuiIdentifiant de l’opération, voir ci-dessous
valuesRequestValuesNonValeurs concrètes pour path/query/header/cookie/body
serverUrlstringNonRemplace spec.servers[0].url
serverVariablesRecord<string, string>NonVariables du modèle d’URL du serveur
variablesRecord<string, string>NonVariables d’environnement référencées par {{name}}
globalsRecord<string, string>NonVariables globales de style Postman
localVariablesRecord<string, string>NonVariables locales
collectionVariablesRecord<string, string>NonVariables de collection
authAuthConfigNonConfiguration de l’authentification
scriptsScriptConfigNonScripts prérequête et de test
runnerRuntimeRunOptionsNonTransmission complète des options postman-runtime, avec la priorité la plus élevée
websocketWebSocketOptionsNonOptions WebSocket
graphqlGraphQLOptionsNonOptions GraphQL
mcpMcpOptionsNonOptions MCP
grpcanyNonOptions gRPC
timeoutnumberNonDélai par requête en ms, raccourci pour runner.timeout.request

SendOptions accepte également ces contrôles d’exécution et de streaming :

ChampTypeDescription
fetchtypeof fetchTransport fetch isolé fourni par l’hôte lorsqu’il est pris en charge ; HTTP/SSE utilisent toujours postman-runtime.
writeBackbooleanDéfinir sur false laisse patchedSpec indéfini tout en produisant responseFragment.
signalAbortSignalAnnule l’exécution ou l’échantillonnage ; un résultat partiel peut encore être renvoyé.
maxEventsnumberNombre maximal d’événements de flux conservés.
maxStreamMsnumberDurée maximale d’échantillonnage du flux en millisecondes.
maxResponseSizenumberLimite de taille de réponse en octets.
maxBufferCharsnumberLimite du tampon SSE avant une frontière d’événement ; par défaut 4194304 caractères.
maxEventCharsnumberLimite des données conservées par événement SSE ; par défaut 1048576 caractères.
inheritEventIdbooleanHérite du dernier ID d’événement SSE s’il est absent ; par défaut true. Utilisez false pour une inférence de schéma plus stricte.
onEvent(event: StreamEvent) => voidReçoit les événements du flux.
onConsole(log: ConsoleLog) => voidReçoit la sortie console des scripts.
onAssertion(assertion: AssertionResult) => voidReçoit les résultats des assertions.
onResponseStart(info: ResponseStartInfo) => voidExamine les premiers en-têtes HTTP/SSE et la classification streaming.
onOpen(info) => voidReçoit les détails de connexion WebSocket : URL, protocole et en-têtes.

Les adaptateurs peuvent interpréter les limites différemment. Gardez les callbacks d’interface légers ; la couche d’exécution intercepte leurs exceptions. Pour les réglages du requester HTTP, utilisez runner.requester ; si maxResponseSize est fourni, il doit être strictement positif, pas nul.

OperationTarget​

Identifie une opération. Préférez soit operationId, soit method + path. Si les deux sont fournis, operationId est prioritaire.

ChampTypeDescription
operationIdstringAutre clé de recherche, prioritaire sur le chemin et la méthode
methodstringMéthode HTTP insensible à la casse. Nécessite path.
pathstringChemin à paramètres, par exemple /users/{id}. Nécessite method.

RequestValues​

Valeurs concrètes injectées dans la requête générée.

ChampTypeDescription
pathRecord<string, unknown>Valeurs des paramètres de chemin
queryRecord<string, unknown>Valeurs des paramètres de requête
headerRecord<string, unknown>Valeurs des en-têtes
cookieRecord<string, unknown>Valeurs des cookies
querystringstringChaîne de requête brute, déjà encodée, pour l’emplacement querystring d’OpenAPI 3.2
bodyunknownCorps de la requête
contentTypestringImpose un type de média si l’opération en déclare plusieurs
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​

ChampTypeDescription
typeAuthConfig["type"]Type d’authentification
tokenstringJeton Bearer pour type: "bearer"
usernamestringNom d’utilisateur Basic pour type: "basic"
passwordstringMot de passe Basic pour type: "basic"
keystringNom de clé API pour type: "apikey"
valuestringValeur de clé API pour type: "apikey"
in"header" | "query"Emplacement de clé API pour 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" },
});

Les types avancés sont digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap et edgegrid. Transmettez leurs champs d’aide Postman HTTP/SSE/GraphQL via parameters: Record<string, string | boolean | number>. L’option oauth2: OAuth2FlowConfig active l’acquisition et le renouvellement des jetons OAuth 2.0 ; ne supposez pas que chaque mécanisme fonctionne avec tous les protocoles.

PreparedRequest​

Renvoyé par createClient().prepare(). Le débogueur produit un résultat de planification différent : createDebugger().prepare() renvoie un PlanResult contenant located, adapter et plan.

ChampTypeDescription
protocolstringProtocole résolu (http, websocket, grpc, graphql, mcp)
transportstringTransport résolu
targetOperationTargetCible d’origine
operationanyObjet d’opération OpenAPI résolu
display.modeDisplayMode"response" | "event-list" | "duplex-session"
stream.kindStreamKindClassification du flux (voir ci-dessous)
stream.expectedbooleanIndique si un flux est attendu
openapi.extensionsRecord<string, unknown>Extensions OpenAPI résolues
warningsstring[]Avertissements rencontrés lors de la planification

StreamKind​

Classification précise des flux : "none" | "sse" | "ndjson" | "chunked" | "websocket" | "graphql-stream" | "grpc-unary" | "grpc-server-stream" | "grpc-client-stream" | "grpc-bidi" | "mcp-http-stream" | "mcp-stdio"

Fonctions utilitaires OpenAPI​

ExportSignatureDescription
locateOperation(spec, target) => LocatedOperationRésout une opération à partir d’un OperationTarget
inferSchema(value) => SchemaDéduit un JSON Schema d’une seule valeur observée
inferSchemaFromMany(values) => SchemaDéduit un schéma couvrant plusieurs valeurs observées
mergeSchema(a, b) => SchemaFusionne deux schémas déduits (union ou combinaison)
sampleFromSchema(schema) => unknownProduit une valeur d’exemple réaliste pour un schéma
toResponseObject(result, options?) => { statusCode: string; response: any }Construit un objet de réponse OpenAPI à partir d’un résultat observé
writeBackResponse(spec, path, method, fragment, options?) => specFusionne une réponse observée dans le document

Types exportés : LocatedOperation, WriteBackOptions, ToResponseOptions.

HTTP / SSE​

Les noms ci-dessous sont disponibles depuis le point d’entrée principal. Le sous-chemin @powerduck/openapi-request/http exporte HttpAdapter, SseParser, buildCollection, buildEnvironment, resolveServerUrl, buildRunOptions et runWithPostman ; importez les fonctions de détection et BUILTIN_CAPTURE_TEST depuis le point d’entrée principal.

ExportDescription
HttpAdapterAdaptateur de protocole par défaut pour HTTP/HTTPS
SseParserAnalyseur de flux transformant un flux d’octets SSE en événements structurés
isStreamingOperationClasse une opération comme flux à partir des types de contenu déclarés
isSseContentTypeVérifie si un type de contenu indique SSE
isStreamingContentTypeVérifie si un type de contenu indique un flux
acceptHeaderForGénère l’en-tête Accept approprié pour une opération
probeStreamingResponseEffectue une requête fetch et classe sa réponse ; consommez ou annulez le corps de la réponse renvoyée
BUILTIN_CAPTURE_TESTScript de test Postman intégré pour capturer la dernière réponse

WebSocket​

À importer depuis @powerduck/openapi-request/ws.

ExportDescription
WebSocketAdapterAdaptateur de protocole pour les cibles WebSocket
createWsManualSessionCrée une session WebSocket manuelle duplex, également nommée runWebSocketSession ou wsManualSession

GraphQL​

À importer depuis @powerduck/openapi-request/graphql.

ExportDescription
GraphQLAdapterAdaptateur de protocole pour les cibles GraphQL
resolveGraphQLConfigRésout la configuration GraphQL à partir d’une opération
runGraphQLExécute une opération GraphQL
introspectSchemaInspecte le schéma d’un point de terminaison GraphQL par introspection
INTROSPECTION_QUERYRequête d’introspection GraphQL standard
generateOperationGénère un document de requête à partir d’un schéma GraphQL introspecté et d’un champ
generateAllOperationsGénère des documents de requête pour les champs d’un schéma GraphQL introspecté
writeGraphQLOperationsRéécrit les opérations GraphQL générées dans la spécification
discoverAndWriteGraphQLSchemaDécouvre un schéma GraphQL et l’inscrit dans la spécification

MCP (Model Context Protocol)​

La plupart des éléments ci-dessous sont disponibles depuis @powerduck/openapi-request/mcp. Importez initializeMcpSession depuis le point d’entrée principal ; le sous-chemin l’appelle initializeSession. Il expose aussi runMcp, createMcpSessionCore et createMcpStdioConnection.

ExportDescription
McpAdapterAdaptateur de protocole pour les cibles MCP
createMcpManualSessionCrée une session MCP manuelle, également nommée mcpManualSession
createMcpStdioSessionCrée une session MCP sur stdio
runMcpManualSessionObsolète : utilisez createMcpManualSession
resolveMcpConfigRésout la configuration MCP à partir d’une opération
initializeMcpSessionInitialise une session MCP (alias de initializeSession)
discoverMcpCapabilitiesDécouvre les fonctionnalités du serveur MCP
MCP_PROTOCOL_VERSIONVersion du protocole MCP prise en charge
generateMcpCallGénère un appel d’outil MCP
generateAllMcpCallsGénère tous les appels d’outils MCP
writeMcpOperationsRéécrit les opérations MCP dans la spécification
discoverAndWriteMcpCapabilitiesDécouvre les fonctionnalités MCP et les inscrit dans la spécification
createHttpMcpTransportCrée un transport HTTP pour MCP
createStdioMcpTransportCrée un transport stdio pour MCP

gRPC​

Importez les fonctions de bas niveau de découverte, d’appel et de gestion des descripteurs depuis @powerduck/openapi-request/grpc. Importez GrpcProtocolAdapter, createGrpcManualSession, grpcManualSession, grpcDiscover et discoverGrpc depuis le point d’entrée principal ; le sous-chemin utilise le nom discover. Il propose aussi discoverFromCatalog, describeMethod et describeFromCatalog pour réutiliser un catalogue sans répéter la réflexion pour chaque méthode.

ExportDescription
GrpcProtocolAdapterAdaptateur de protocole gRPC destiné à OpenAPI
GrpcAdapterAdaptateur gRPC de bas niveau
grpcDiscover / discoverGrpcDécouvre les services et méthodes gRPC
createGrpcManualSession / grpcManualSessionCrée une session gRPC manuelle
grpcCallExécute un appel gRPC
resolveMethodRésout un descripteur de méthode gRPC
buildMessageTemplateCrée un modèle de message à partir d’un descripteur
buildCatalogCrée un catalogue des services et méthodes
LOADER_OPTIONSOptions par défaut du chargeur proto
scanProtoFilesRecherche des fichiers proto dans les répertoires
deriveIncludeDirsDetailedDéduit les répertoires d’inclusion des chemins de fichiers proto
fetchDescriptorSetRécupère un jeu de descripteurs par réflexion gRPC
fetchFullDescriptorSetRécupère un jeu complet de descripteurs avec toutes ses dépendances
listServicesListe les services d’un jeu de descripteurs
listServicesDetailedListe les services avec le détail des méthodes
serializeDescriptorSetSérialise un jeu de descripteurs en octets
decodeFileDescriptorProtoDécode un proto de descripteur de fichier
decodeFileDescriptorSetDécode un jeu de descripteurs de fichiers
buildCredentialsConstruit les informations d’authentification gRPC (synchrone)
buildCredentialsAsyncConstruit les informations d’authentification gRPC (asynchrone)
buildCredentialsCheckedConstruit et valide les informations d’authentification (synchrone)
buildCredentialsCheckedAsyncConstruit et valide les informations d’authentification (asynchrone)
loadGrpcCharge dynamiquement le paquet @grpc/grpc-js
isGrpcAvailableVérifie la disponibilité des dépendances gRPC
requireCapabilityExige une fonctionnalité gRPC et lève une erreur si elle est indisponible

Le point d’entrée principal exporte les alias de type GrpcDiscoveryResult, GrpcDiscoveredMethod et GrpcDiscoveredService. Le sous-chemin gRPC les nomme DiscoveryResult, DiscoveredMethod et DiscoveredService.

Types d’erreurs : ReflectionProtocolError, ReflectionUnavailableError, DescriptorDecodeError, GrpcDependencyBrokenError, GrpcDependencyMissingError.

Autres utilitaires​

Le point d’entrée principal exporte aussi les fonctions OAuth 2.0 resolveOAuth2Token, acquireOAuth2Token, isOAuth2TokenExpired, oauth2RefreshStatuses et authFromOAuth2Token, l’utilitaire de copie toCloneable, la classe de base UnifiedSession, ainsi que les fonctions de réécriture gRPC writeGrpcOperations et discoverAndWriteGrpcOperations.

Exports des sous-chemins​

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