
Security News
Lovable’s OJ Rewrites Vite’s Dev Server in Rust as AI Lowers the Cost of Forking Open Source
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.
@postman/sdk-config
Advanced tools
Shared SDK configuration contracts and transformations for Postman SDK generation
Build and validate SDK Config documents for SDK Generation API requests.
SDK Config describes what to generate: SDK identity, API behavior, client behavior, package metadata, documentation, output, shared generation options, and one or more language targets. API source files, authentication, idempotency, and transport metadata belong to the SDK Generation API request rather than the SDK Config document.
npm install @postman/sdk-config
Node.js 24 or newer is required. Both ESM and CommonJS are supported.
Use the versioned entry point when creating an API payload. parseSdkConfigV1 validates unknown
input, applies defaults, and returns the normalized SdkConfigV1 type.
import {
parseSdkConfigV1,
type SdkConfigV1,
type SdkConfigV1Input,
} from '@postman/sdk-config/sdk-config/v1';
const input: SdkConfigV1Input = {
schemaVersion: 'sdk-config/v1',
sdkName: 'Example SDK',
sdkVersion: '1.0.0',
api: {},
client: { timeoutMs: 30_000 },
package: {},
output: { delivery: 'zip', fileName: 'example-typescript.zip' },
docs: { includeApiReference: true },
generation: { includeWatermark: true },
targets: [
{
language: 'typescript',
generatorVersion: '1.2.3',
package: { packageName: '@example/sdk' },
generation: { packageManager: 'pnpm', testFramework: 'vitest' },
},
],
};
const sdkConfig: SdkConfigV1 = parseSdkConfigV1(input);
For validation without throwing, use the exported schema:
import { sdkConfigV1Schema } from '@postman/sdk-config/sdk-config/v1';
const result = sdkConfigV1Schema.safeParse(input);
if (!result.success) {
console.error(result.error.issues);
}
SDK Config objects are strict. Unknown fields, duplicate language targets, incompatible package publication settings, and non-exact generator versions are rejected.
An SDK Generation API request combines three kinds of data:
payloadKind: "sdk-config-v1".The payload filename must match its target ID: <targetId>.json.
const targetId = 'typescript-sdk';
const request = {
protocolVersion: 2,
apiName: 'Example API',
idempotencyKey: crypto.randomUUID(),
apiInputs: [{ id: 'default', specIndexes: 'all' }],
targets: [
{
targetId,
apiInputId: 'default',
language: 'typescript',
sdk: {
name: sdkConfig.sdkName,
version: sdkConfig.sdkVersion,
...(sdkConfig.apiVersion === undefined ? {} : { apiVersion: sdkConfig.apiVersion }),
},
fernGenerator: { id: 'typescript-generator', version: '1.2.3' },
payloadKind: 'sdk-config-v1',
package: sdkConfig.targets[0]?.package,
requestedOutput: { type: 'download' },
},
],
};
const form = new FormData();
form.append('request', JSON.stringify(request));
form.append('sources', sourceArchive, 'sources.tar.gz');
form.append(
'payloads',
new Blob([JSON.stringify(sdkConfig)], { type: 'application/json' }),
`${targetId}.json`,
);
const response = await fetch('https://api.example.com/sdk-generations', {
method: 'POST',
headers: { Authorization: `Bearer ${accessToken}` },
body: form,
});
The endpoint URL, authentication scheme, source archive format, and response shape are defined by the SDK Generation API provider.
This request form supports downloaded archives. Its effective SDK Config output must be
{ "delivery": "zip" } without publication settings, and requestedOutput must be
{ "type": "download" }.
For each request target, the API request and matching SDK Config target must agree on:
languagegeneratorVersion is present in SDK ConfigRoot package properties are inherited by each target and overridden by target package properties. A target output replaces the root output; it is not merged with it.
These SDK Config values are interpreted as file paths during generation:
generation.customQueryPaths[]generation.workflows[].pathgeneration.hooks.source.location when source.type is pathgeneration.customCode.source.location when source.type is pathEach value must be a relative path and cannot contain a .. path segment. Absolute POSIX paths,
Windows drive paths, UNC paths, and parent-directory traversal are rejected during validation. URL
source locations are not treated as file paths.
An SDK Config can describe several language targets. Shared api, client, docs, and generation
settings apply to every target. SDK identity, package metadata, output, and language-specific
generation settings can be overridden per target.
Each language can appear only once. When sending a multi-target SDK Config to an SDK Generation API, attach the config under each request target that should select its matching language configuration.
Supported target languages are typescript, python, java, kotlin, go, csharp, php,
ruby, rust, swift, cli, mcp, and terraform.
FAQs
Shared SDK configuration contracts and transformations for Postman SDK generation
The npm package @postman/sdk-config receives a total of 2,184 weekly downloads. As such, @postman/sdk-config popularity was classified as popular.
We found that @postman/sdk-config demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.

Security News
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.