Aller au contenu principal

Configuration

La configuration comporte trois niveaux : les options de fabrique du client ou du débogueur, l’objet SendOptions transmis à prepare() et send(), et les options propres aux protocoles.

Options de fabrique​

CreateClientOptions​

À transmettre à createClient(options?). Tous les champs sont facultatifs.

ChampTypeDescription
writeBackWriteBackOptionsContrôle la fusion des réponses dans la spécification
responseToResponseOptionsContrôle la normalisation des objets de réponse
import { createClient } from "@powerduck/openapi-request";

const client = createClient({
writeBack: {
overwriteExamples: true,
// ... other WriteBackOptions
},
response: {
includeExamples: false,
// ... other ToResponseOptions
},
});

DebuggerOptions​

À transmettre à createDebugger(config?). Tous les champs sont facultatifs.

ChampTypeDescription
adaptersProtocolAdapter[]Liste d’adaptateurs personnalisée, remplaçant tous les adaptateurs par défaut
extraAdaptersProtocolAdapter[]Adaptateurs ajoutés au registre par défaut
writeBackWriteBackOptionsOptions de réécriture
responseToResponseOptionsOptions de normalisation des réponses
writeBackTruncatedbooleanRéécrit le schéma déduit des flux tronqués ; par défaut true
import { createDebugger, HttpAdapter, WebSocketAdapter } from "@powerduck/openapi-request";

// Use only HTTP and WebSocket adapters
const debugger1 = createDebugger({
adapters: [new HttpAdapter(), new WebSocketAdapter()],
});

// Add a custom adapter to the defaults
const debugger2 = createDebugger({
extraAdapters: [new MyCustomAdapter()],
writeBackTruncated: true,
});

Réécriture et exemples capturés​

WriteBackOptions accepte strategy ("merge" ou "replace", par défaut "merge"), keepExistingDescription (par défaut true), allowedStatusCodes (vide signifie tous), protectComponentRefs (par défaut true), overwriteExamples (par défaut true) et requirePassingTests. Le pipeline d’envoi vérifie les résultats des tests ; un appel direct à writeBackResponse ne le fait pas.

ToResponseOptions accepte includeExamples (par défaut true), maxExampleChars (par défaut 4000) et maxEventPreviewChars (par défaut 200). Désactivez la capture d’exemples ou vérifiez-les avant publication : les réponses réelles peuvent contenir des identifiants ou des données personnelles.

Le pipeline d’envoi renvoie normalement une copie modifiée dans patchedSpec ; il ne modifie pas le document d’entrée et n’enregistre aucun fichier. Définissez writeBack: false pour un appel afin d’ignorer cette étape. L’objet writeBack de la fabrique règle la fusion ; le booléen de chaque appel l’active ou la désactive.

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.
// By operationId (recommended)
const result1 = await client.send({
spec,
target: { operationId: "getUserById" },
});

// By method + path
const result2 = await client.send({
spec,
target: { method: "GET", path: "/users/{id}" },
});

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.

ScriptConfig​

ChampTypeDescription
collectionPreRequestScriptSource | ScriptSource[]Scripts prérequête de collection
collectionTestScriptSource | ScriptSource[]Scripts de test de collection
preRequestScriptSource | ScriptSource[]Scripts prérequête individuels
testScriptSource | ScriptSource[]Scripts de test individuels
fromSpecExtensionsbooleanLit x-postman-scripts dans la spécification ; par défaut true
captureLastResponsebooleanAjoute l’assistant intégré qui expose la dernière réponse aux requêtes suivantes

ScriptSource:

interface ScriptSource {
exec: string | string[]; // Script body, either a single string or array of lines
id?: string; // Optional identifier surfaced in script results
}

Définissez scripts.fromSpecExtensions: false si vous ne souhaitez pas exécuter les scripts intégrés à une spécification importée. La valeur actuelle par défaut est true ; ne comptez pas sur un futur changement.

Options propres aux protocoles​

HTTP / SSE​

HTTP est l’adaptateur par défaut. Le type déclaré text/event-stream indique une intention SSE ; l’exécution classe aussi la réponse réelle à l’arrivée des en-têtes. probeStreamingResponse() est une sonde distincte, appelée explicitement, et non un prérequis automatique à chaque appel.

Les requêtes HTTP simples n’exigent aucune configuration supplémentaire. Utilisez SendOptions.runner pour les réglages avancés de postman-runtime.

WebSocket​

import { createManualSession } from "@powerduck/openapi-request";

const session = createManualSession({
kind: "websocket",
url: "wss://api.example.com/ws",
// Manual-session options are distinct from SendOptions.websocket.
});

MCP​

import { createManualSession } from "@powerduck/openapi-request";

const session = createManualSession({
kind: "mcp",
endpoint: "https://api.example.com/mcp",
});

La session manuelle MCP par défaut utilise Streamable HTTP et endpoint. Pour stdio, fournissez kind: "mcp", transport: "stdio" et une command locale avec des args facultatifs ; l’ouverture de la session lance le processus configuré.

gRPC​

gRPC nécessite une adresse, une source de descripteurs (fichiers .proto ou réflexion du serveur), ainsi qu’un service et une méthode entièrement qualifiés :

import { createManualSession } from "@powerduck/openapi-request";

const session = createManualSession({
kind: "grpc",
address: "localhost:50051",
service: "powerduck.examples.Echo",
method: "Echo",
protoPaths: ["./echo.proto"],
});

Les fabriques de sessions manuelles renvoient une session non ouverte. Appelez open() avant l’envoi et close() lors du nettoyage. L’exemple gRPC nécessite un serveur local et un fichier proto correspondants ; les options de session manuelle ne sont pas le même objet que SendOptions.grpc.

Exemple complet​

import { createClient } from "@powerduck/openapi-request";

const client = createClient({
writeBack: { overwriteExamples: true },
});

const result = await client.send({
spec: openApiDocument,
target: { operationId: "updateUser" },
values: {
path: { id: "42" },
query: { verbose: "true" },
header: { "X-Request-Id": "req-abc" },
body: { name: "Alice", email: "alice@example.com" },
},
serverUrl: "https://api.staging.example.com",
auth: { type: "bearer", token: "staging-token" },
timeout: 10000,
variables: {
environment: "staging",
},
});

console.log(result.response.status);
console.log(result.response.body);
console.log(result.response.headers);

Pour aller plus loin​