Passa al contenuto principale

Configurazione

La precedenza è argomenti CLI > file di configurazione > valori predefiniti. Il risultato è l’oggetto CliConfig restituito da resolveConfig.

CliConfig​

Tipo di configurazione principale. Tutti i campi tranne specPath sono facoltativi.

CampoTipoPredefinitoDescrizione
specPathstringobbligatorioPercorso o URL http(s):// della specifica JSON OpenAPI 3.2
serverUrlstring(dalla specifica)Sostituire l’URL di base del server della specifica
outputDirstring"./openapi-cli-report"Directory per i file dei report
formatsReportFormat[]["json","cli","html"]Formati di report da generare
filterFilterConfigundefinedFiltrare le operazioni da verificare
concurrencynumber5Numero massimo di richieste simultanee; intero da 1 a 100
timeoutnumber30000Timeout per richiesta in ms, intero da 1 a 600000; vale anche per il recupero di specifiche remote
proxystringundefinedURL del proxy HTTP(S), ad esempio http://proxy:8080
tlsTlsConfigundefinedConfigurazione TLS e certificati
headersRecord<string, string>undefinedIntestazioni aggiuntive inviate con ogni richiesta
authAuthConfigundefinedConfigurazione dell’autenticazione
variablesRecord<string, string>undefinedVariabili Postman {{name}} da inserire
failOnErrorbooleantrueSolo CLI: restituire un codice diverso da zero dopo test non superati; chi usa la libreria deve esaminare il report
envFilestringundefinedPercorso del file .env, con una coppia KEY=VALUE per riga
grpcReflectionbooleanautomaticogRPC: prevale la configurazione esplicita, poi l’estensione dell’operazione; altrimenti attivato in assenza di percorsi proto
grpcProtoPathsstring[]undefinedgRPC: percorsi di file .proto o directory
mcpTransport"streamable-http" | "stdio""streamable-http"MCP: trasporto delle operazioni MCP
mcpCommandstringundefinedMCP stdio: comando da avviare
mcpArgsstring[]undefinedMCP stdio: argomenti del comando
mcpCwdstringundefinedMCP stdio: directory di lavoro

ReportFormat è l’unione "json" | "cli" | "html".

Opzioni avanzate di esecuzione​

Anche i campi seguenti fanno parte di CliConfig. requester, maxEvents, maxStreamMs e maxResponseSize possono essere forniti in un file JSON. Dopo aver risolto la configurazione, passa signal, httpRuntime e resolveTransport direttamente a runTests() nel codice: sono oggetti di esecuzione, non configurazione 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 controlla i reindirizzamenti HTTP, i cookie e la scelta del protocollo. Per HTTP/SSE, maxEvents è 50 per impostazione predefinita e maxStreamMs usa timeout se non definito; maxResponseSize viene inoltrato al motore delle richieste. gRPC usa maxStreamMs come scadenza del flusso, poi timeout e infine 30000 ms. signal annulla l’esecuzione; httpRuntime fornisce la gestione HTTP di certificati e file; resolveTransport risolve le impostazioni di trasporto per ogni destinazione.

DEFAULT_CONFIG​

Oggetto dei valori predefiniti esportato dalla libreria:

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​

CampoTipoDescrizione
methodsstring[]Verificare solo questi metodi HTTP, ad esempio ["get","post"]; nei file usare minuscole, mentre l’input CLI viene normalizzato
pathsstring[]Verificare solo i percorsi che corrispondono a una di queste espressioni regolari; se non valida, si usa una ricerca per sottostringa
tagsstring[]Verificare solo le operazioni con almeno uno di questi tag
operationIdsstring[]Verificare solo questi valori esatti di operationId

Un filtro senza chiavi viene risolto in undefined: vengono eseguite tutte le operazioni.

TlsConfig​

CampoTipoDescrizione
caCertstringPercorso della raccolta di certificati CA in PEM
clientCertstringPercorso del certificato client PEM per mTLS
clientKeystringPercorso della chiave privata client PEM per mTLS
strictSSLbooleanSaltare la verifica TLS quando è false; non sicuro
pfxstringPercorso della raccolta di certificati PFX; gRPC richiede invece PEM
passphrasestringPassphrase del materiale del certificato cifrato

Nota: l’opzione CLI --insecure corrisponde a tls.strictSSL = false, quindi disattiva la verifica.

AuthConfig​

CampoTipoDescrizione
typeAuthConfig["type"]Schema di autenticazione; nomi supportati riportati sotto
parametersRecord<string, string | number | boolean>Parametri specifici dello schema passati al motore delle richieste
tokenstringToken Bearer per type: "bearer"
usernamestringNome utente per type: "basic"
passwordstringPassword per type: "basic"
keystringNome della chiave API per type: "apikey"
valuestringValore della chiave API per type: "apikey"
in"header" | "query"Posizione della chiave API

I valori type supportati sono bearer, basic, apikey, none, digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap ed edgegrid. Disponibilità e parametri richiesti dipendono dal protocollo e dal motore delle richieste; il solo nome non configura l’autenticazione.

Attualmente l’opzione CLI --bearer produce solo { type: "bearer", token }. Le configurazioni più complete basic / apikey si forniscono tramite file.

File di configurazione JSON​

Il file contiene JSON conforme a Partial<CliConfig>. Passalo con --config <path> / -c. Gli argomenti CLI hanno sempre la precedenza sui valori del file.

{
"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"
}

Un file mancante genera Config file not found: <path>; JSON non valido genera Invalid config file (must be JSON).

Espansione delle variabili d’ambiente​

Dopo il caricamento di un file .env tramite --env / envFile, i riferimenti ${VAR_NAME} vengono espansi in questi campi stringa:

  • serverUrl
  • proxy
  • Valori di headers
  • auth.token
  • Valori di variables

Esempio:

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

Comportamento di .env: le voci esistenti di process.env non vengono sovrascritte; gli apici singoli o doppi che delimitano i valori vengono rimossi; righe vuote e commenti # vengono ignorati; un file mancante viene saltato senza avviso.

Costruzione dal codice​

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 solleva "No OpenAPI spec path provided..." se non è fornita una specifica e Invalid proxy URL: <url> se proxy non è un URL valido.