Saltar al contenido principal

Configuración

La configuración tiene tres capas: opciones de fábrica del cliente o depurador, el objeto SendOptions pasado a prepare() y send(), y opciones específicas de cada protocolo.

Opciones de fábrica​

CreateClientOptions​

Se pasa a createClient(options?). Todos los campos son opcionales.

CampoTipoDescripción
writeBackWriteBackOptionsControla cómo se fusionan las respuestas con la especificación
responseToResponseOptionsControla la normalización de los objetos de respuesta
import { createClient } from "@powerduck/openapi-request";

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

DebuggerOptions​

Se pasa a createDebugger(config?). Todos los campos son opcionales.

CampoTipoDescripción
adaptersProtocolAdapter[]Lista de adaptadores personalizada que sustituye todos los predeterminados
extraAdaptersProtocolAdapter[]Adaptadores adicionales para el registro predeterminado
writeBackWriteBackOptionsOpciones de escritura de resultados
responseToResponseOptionsOpciones de normalización de respuestas
writeBackTruncatedbooleanEscribe el esquema inferido de flujos truncados; valor predeterminado: 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,
});

Escritura de resultados y ejemplos capturados​

WriteBackOptions admite strategy ("merge" o "replace", por defecto "merge"), keepExistingDescription (por defecto true), allowedStatusCodes (vacío significa todos), protectComponentRefs (por defecto true), overwriteExamples (por defecto true) y requirePassingTests. El proceso de envío comprueba los resultados de las pruebas; llamar directamente a writeBackResponse no lo hace.

ToResponseOptions admite includeExamples (por defecto true), maxExampleChars (por defecto 4000) y maxEventPreviewChars (por defecto 200). Desactive la captura de ejemplos o revíselos antes de publicar: las respuestas reales pueden contener credenciales o datos personales.

El proceso de envío normalmente devuelve una copia modificada en patchedSpec; no modifica el documento de entrada ni guarda archivos. Establezca writeBack: false en cada llamada para omitir ese paso. El objeto writeBack de la fábrica configura la fusión; el booleano por llamada la activa o desactiva.

SendOptions​

Objeto de entrada principal de prepare() y send(). Recibe la especificación, el destino, los valores y toda la configuración de la solicitud.

CampoTipoObligatorioDescripción
specOpenApiDocumentSíDocumento OpenAPI 3.2 completo
targetOperationTargetSíIdentificador de operación, explicado más abajo
valuesRequestValuesNoValores concretos para path/query/header/cookie/body
serverUrlstringNoSustituye spec.servers[0].url
serverVariablesRecord<string, string>NoVariables de la plantilla de URL del servidor
variablesRecord<string, string>NoVariables de entorno referenciadas como {{name}}
globalsRecord<string, string>NoVariables globales de estilo Postman
localVariablesRecord<string, string>NoVariables locales
collectionVariablesRecord<string, string>NoVariables de colección
authAuthConfigNoConfiguración de autenticación
scriptsScriptConfigNoScripts previos a la solicitud y de pruebas
runnerRuntimeRunOptionsNoOpciones completas de postman-runtime transmitidas con máxima prioridad
websocketWebSocketOptionsNoOpciones de WebSocket
graphqlGraphQLOptionsNoOpciones de GraphQL
mcpMcpOptionsNoOpciones de MCP
grpcanyNoOpciones de gRPC
timeoutnumberNoTiempo límite por solicitud en ms; atajo para runner.timeout.request

SendOptions también acepta estos controles de ejecución y streaming:

CampoTipoDescripción
fetchtypeof fetchTransporte fetch aislado proporcionado por el host donde se admita; HTTP/SSE siguen usando postman-runtime.
writeBackbooleanAl establecer false, deja patchedSpec sin definir y sigue generando responseFragment.
signalAbortSignalCancela la ejecución o el muestreo; aún puede devolver un resultado parcial.
maxEventsnumberMáximo de eventos de streaming conservados.
maxStreamMsnumberDuración máxima del muestreo del flujo en milisegundos.
maxResponseSizenumberLímite de bytes de la respuesta.
maxBufferCharsnumberLímite del búfer SSE antes de un límite de evento; por defecto 4194304 caracteres.
maxEventCharsnumberLímite de datos conservados por evento SSE; por defecto 1048576 caracteres.
inheritEventIdbooleanHereda el último ID de evento SSE cuando falta; por defecto true. Use false para una inferencia de esquemas más estricta.
onEvent(event: StreamEvent) => voidRecibe eventos del flujo.
onConsole(log: ConsoleLog) => voidRecibe la salida de consola de los scripts.
onAssertion(assertion: AssertionResult) => voidRecibe resultados de aserciones.
onResponseStart(info: ResponseStartInfo) => voidInspecciona las primeras cabeceras HTTP/SSE y la clasificación streaming.
onOpen(info) => voidRecibe detalles de la conexión WebSocket: URL, protocolo y cabeceras.

Los adaptadores pueden interpretar los límites de forma distinta. Mantenga ligeros los callbacks de la interfaz; la capa de ejecución captura sus excepciones. Para ajustar el requester HTTP use runner.requester; su maxResponseSize, si se indica, debe ser positivo, no cero.

OperationTarget​

Identifica una operación. Use preferiblemente operationId o method + path. Si se proporcionan ambos, prevalece operationId.

CampoTipoDescripción
operationIdstringClave de búsqueda alternativa con prioridad sobre ruta y método
methodstringMétodo HTTP sin distinguir mayúsculas. Requiere path.
pathstringRuta parametrizada, por ejemplo /users/{id}. Requiere 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​

Valores concretos inyectados en la solicitud generada.

CampoTipoDescripción
pathRecord<string, unknown>Valores de parámetros de ruta
queryRecord<string, unknown>Valores de parámetros de consulta
headerRecord<string, unknown>Valores de cabeceras
cookieRecord<string, unknown>Valores de cookies
querystringstringCadena de consulta sin procesar y ya codificada, para la ubicación querystring de OpenAPI 3.2
bodyunknownCuerpo de la solicitud
contentTypestringFuerza un tipo de medio si la operación declara varios
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​

CampoTipoDescripción
typeAuthConfig["type"]Tipo de autenticación
tokenstringToken Bearer para type: "bearer"
usernamestringUsuario Basic para type: "basic"
passwordstringContraseña Basic para type: "basic"
keystringNombre de clave API para type: "apikey"
valuestringValor de clave API para type: "apikey"
in"header" | "query"Ubicación de clave API para 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" },
});

Los tipos avanzados son digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap y edgegrid. Pase sus campos auxiliares Postman de HTTP/SSE/GraphQL mediante parameters: Record<string, string | boolean | number>. La opción oauth2: OAuth2FlowConfig activa la obtención y renovación de tokens OAuth 2.0; no suponga que todos los mecanismos funcionan con todos los protocolos.

ScriptConfig​

CampoTipoDescripción
collectionPreRequestScriptSource | ScriptSource[]Scripts previos a la solicitud de la colección
collectionTestScriptSource | ScriptSource[]Scripts de pruebas de la colección
preRequestScriptSource | ScriptSource[]Scripts previos a una solicitud
testScriptSource | ScriptSource[]Scripts de pruebas de una solicitud
fromSpecExtensionsbooleanLee x-postman-scripts de la especificación; por defecto true
captureLastResponsebooleanAñade el auxiliar integrado que expone la última respuesta a solicitudes posteriores

ScriptSource:

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

Establezca scripts.fromSpecExtensions: false si no quiere ejecutar scripts incluidos en una especificación importada. El valor predeterminado actual es true; no dependa de un cambio futuro.

Opciones por protocolo​

HTTP / SSE​

HTTP es el adaptador predeterminado. Declarar text/event-stream indica intención SSE; la ejecución también clasifica la respuesta real cuando llegan las cabeceras. probeStreamingResponse() es una comprobación explícita independiente, no un requisito automático de cada llamada.

Las solicitudes HTTP básicas no necesitan más configuración. Use SendOptions.runner para ajustes avanzados 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 sesión manual MCP predeterminada usa Streamable HTTP y endpoint. Para stdio, pase kind: "mcp", transport: "stdio" y un command local con args opcionales; abrir la sesión inicia el proceso configurado.

gRPC​

gRPC necesita una dirección, una fuente de descriptores (archivos .proto o reflexión del servidor), y un servicio y método completamente cualificados:

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

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

Las fábricas de sesiones manuales devuelven una sesión sin abrir. Llame a open() antes de enviar y a close() durante la limpieza. El ejemplo gRPC necesita un servidor local y un archivo proto compatibles; las opciones de sesión manual no son el mismo objeto que SendOptions.grpc.

Ejemplo completo​

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);

Siguientes pasos​