Перейти к основному содержимому

Справочник API

Справочник основных API интеграции @powerduck/openapi-request. Таблицы кратко описывают контракты; полный перечень перегрузок и необязательных параметров содержится в декларациях TypeScript пакета. Основная точка входа и подпути протоколов экспортируют разные наборы элементов.

Основные API​

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​

Создаёт программируемый отладчик для автоматизации, скриптов и CI.

Параметры:

ИмяТипОписание
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.urlstringURL подключения 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НетКонкретные значения пути, строки запроса, заголовков, cookie и тела
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Наследовать последний ID события 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>Значения cookie
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 (Model Context Protocol)​

Большинство перечисленных ниже элементов доступны из @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";