Lewati ke konten utama

Konfigurasi

Prioritas konfigurasi adalah argumen CLI > berkas konfigurasi > nilai bawaan. Hasilnya berupa objek CliConfig yang dikembalikan oleh resolveConfig.

CliConfig​

Tipe konfigurasi utama. Semua kolom selain specPath bersifat opsional.

KolomTipeBawaanDeskripsi
specPathstringwajibJalur atau URL http(s):// ke spesifikasi JSON OpenAPI 3.2
serverUrlstring(dari spesifikasi)Ganti URL dasar server dari spesifikasi
outputDirstring"./openapi-cli-report"Direktori untuk berkas laporan
formatsReportFormat[]["json","cli","html"]Format laporan yang akan dibuat
filterFilterConfigundefinedFilter operasi yang akan diuji
concurrencynumber5Maksimum permintaan bersamaan; bilangan bulat 1 hingga 100
timeoutnumber30000Batas waktu per permintaan dalam ms, bilangan bulat 1 hingga 600000; juga berlaku untuk pengambilan spesifikasi jarak jauh
proxystringundefinedURL proxy HTTP(S), misalnya http://proxy:8080
tlsTlsConfigundefinedKonfigurasi TLS dan sertifikat
headersRecord<string, string>undefinedHeader tambahan yang dikirim pada setiap permintaan
authAuthConfigundefinedKonfigurasi autentikasi
variablesRecord<string, string>undefinedVariabel Postman {{name}} yang akan disisipkan
failOnErrorbooleantrueKhusus CLI: kembalikan kode bukan nol setelah pengujian gagal; pemanggil pustaka memeriksa laporan
envFilestringundefinedJalur berkas .env dengan satu pasangan KEY=VALUE per baris
grpcReflectionbooleanotomatisgRPC: konfigurasi eksplisit didahulukan, lalu ekstensi operasi; jika keduanya tidak ada, aktif saat tidak ada jalur proto
grpcProtoPathsstring[]undefinedgRPC: jalur berkas .proto atau direktori
mcpTransport"streamable-http" | "stdio""streamable-http"MCP: transport untuk operasi MCP
mcpCommandstringundefinedMCP stdio: perintah yang dijalankan
mcpArgsstring[]undefinedMCP stdio: argumen perintah
mcpCwdstringundefinedMCP stdio: direktori kerja

ReportFormat adalah union "json" | "cli" | "html".

Opsi runtime lanjutan​

Kolom berikut juga merupakan bagian dari CliConfig. requester, maxEvents, maxStreamMs, dan maxResponseSize dapat diberikan dalam berkas JSON. Setelah konfigurasi diuraikan, berikan signal, httpRuntime, dan resolveTransport langsung ke runTests() melalui kode: ketiganya adalah objek runtime, bukan konfigurasi JSON.

interface AdvancedRuntimeOptions {
requester?: {
followRedirects?: boolean;
maxRedirects?: number;
disableCookies?: boolean;
protocolVersion?: "http1" | "http2" | "auto";
};
maxEvents?: number;
maxStreamMs?: number;
maxResponseSize?: number;
signal?: AbortSignal;
httpRuntime?: { certificates?: unknown; fileResolver?: unknown };
resolveTransport?: (target: { protocol: string; url?: string }) => Promise<
Pick<CliConfig, "proxy" | "tls" | "httpRuntime">
>;
}

requester mengatur pengalihan HTTP, cookie, dan pemilihan protokol. Untuk HTTP/SSE, nilai bawaan maxEvents adalah 50 dan maxStreamMs memakai timeout jika tidak ditentukan; maxResponseSize diteruskan ke runtime permintaan. gRPC menggunakan maxStreamMs sebagai tenggat aliran, lalu timeout, kemudian 30000 ms sebagai cadangan terakhir. signal membatalkan eksekusi; httpRuntime menyediakan penanganan sertifikat dan berkas HTTP; resolveTransport menentukan pengaturan transport per target.

DEFAULT_CONFIG​

Objek nilai bawaan yang diekspor oleh pustaka:

export const DEFAULT_CONFIG: Required<
Pick<
CliConfig,
"outputDir" | "formats" | "concurrency" | "timeout" | "failOnError" | "grpcReflection" | "mcpTransport"
>
> = {
outputDir: "./openapi-cli-report",
formats: ["json", "cli", "html"],
concurrency: 5,
timeout: 30000,
failOnError: true,
grpcReflection: true,
mcpTransport: "streamable-http",
};

FilterConfig​

KolomTipeDeskripsi
methodsstring[]Hanya uji metode HTTP ini, misalnya ["get","post"]; gunakan huruf kecil dalam berkas, sedangkan masukan CLI dinormalisasi
pathsstring[]Hanya uji jalur yang cocok dengan salah satu pola regex; beralih ke pencocokan substring jika regex tidak valid
tagsstring[]Hanya uji operasi dengan salah satu tag ini
operationIdsstring[]Hanya uji nilai operationId yang sama persis

Filter tanpa kunci diuraikan menjadi undefined, sehingga semua operasi dijalankan.

TlsConfig​

KolomTipeDeskripsi
caCertstringJalur kumpulan sertifikat CA dalam format PEM
clientCertstringJalur sertifikat klien PEM untuk mTLS
clientKeystringJalur kunci privat klien PEM untuk mTLS
strictSSLbooleanLewati verifikasi sertifikat TLS jika false; tidak aman
pfxstringJalur kumpulan sertifikat PFX; gRPC memerlukan PEM
passphrasestringFrasa sandi untuk materi sertifikat terenkripsi

Catatan: opsi CLI --insecure dipetakan ke tls.strictSSL = false, sehingga menonaktifkan verifikasi.

AuthConfig​

KolomTipeDeskripsi
typeAuthConfig["type"]Skema autentikasi; nama yang didukung tercantum di bawah
parametersRecord<string, string | number | boolean>Parameter khusus skema yang diteruskan ke runtime permintaan
tokenstringToken Bearer untuk type: "bearer"
usernamestringNama pengguna untuk type: "basic"
passwordstringKata sandi untuk type: "basic"
keystringNama kunci API untuk type: "apikey"
valuestringNilai kunci API untuk type: "apikey"
in"header" | "query"Lokasi penempatan kunci API

Nilai type yang didukung adalah bearer, basic, apikey, none, digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap, dan edgegrid. Ketersediaan serta parameter wajib bergantung pada protokol dan runtime permintaan; menyebut namanya saja belum mengonfigurasi autentikasi.

Saat ini opsi CLI --bearer hanya menghasilkan { type: "bearer", token }. Konfigurasi basic / apikey yang lebih lengkap diberikan melalui berkas konfigurasi.

Berkas konfigurasi JSON​

Berkas berupa JSON biasa yang sesuai dengan Partial<CliConfig>. Berikan dengan --config <path> / -c. Argumen CLI selalu mengungguli nilai dalam berkas.

{
"specPath": "./openapi.json",
"serverUrl": "https://api.staging.example.com",
"outputDir": "./reports",
"formats": ["json", "html"],
"concurrency": 10,
"timeout": 15000,
"failOnError": true,
"proxy": "http://proxy.corp:8080",
"tls": {
"strictSSL": true,
"caCert": "./ca-bundle.pem",
"clientCert": "./client.crt",
"clientKey": "./client.key"
},
"headers": {
"X-API-Key": "${API_KEY}",
"X-Environment": "staging"
},
"auth": {
"type": "bearer",
"token": "${BEARER_TOKEN}"
},
"variables": {
"host": "api.staging.example.com"
},
"filter": {
"methods": ["get", "post"],
"tags": ["v2", "public"],
"paths": ["^/api/v2"],
"operationIds": ["getUser", "createUser"]
},
"grpcReflection": true,
"grpcProtoPaths": ["./proto"],
"mcpTransport": "streamable-http",
"mcpCommand": "npx",
"mcpArgs": ["-y", "@modelcontextprotocol/server-everything"],
"mcpCwd": "./mcp-servers"
}

Berkas yang tidak ada memicu Config file not found: <path>; JSON tidak valid memicu Invalid config file (must be JSON).

Ekspansi variabel lingkungan​

Setelah berkas .env dimuat melalui --env / envFile, referensi ${VAR_NAME} diperluas dalam kolom string berikut:

  • serverUrl
  • proxy
  • Nilai headers
  • auth.token
  • Nilai variables

Contoh:

openapi-cli --spec openapi.json \
--server 'https://${API_HOST}/v1' \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

Perilaku .env: entri process.env yang sudah ada tidak ditimpa; tanda petik tunggal atau ganda yang mengapit nilai dihapus; baris kosong dan komentar # diabaikan; berkas yang tidak ada dilewati tanpa pemberitahuan.

Menyusun konfigurasi dalam kode​

import { resolveConfig, DEFAULT_CONFIG } from "@powerduck/openapi-cli";

const config = resolveConfig({
spec: "./openapi.json",
server: "https://api.staging.example.com",
concurrency: 10,
method: "get",
});

resolveConfig melempar "No OpenAPI spec path provided..." jika spesifikasi tidak diberikan, dan Invalid proxy URL: <url> jika proxy bukan URL yang valid.