@@ -1502,18 +1502,16 @@ Options:
15021502 --exclude-prefix PREFIX Exclude operations with operationId starting with PREFIX
15031503 (default: '_deprecated')
15041504 --no-exclude Disable operation exclusion (include all operations)
1505- --use-query-safe-response Use ApiResponseSafe for GET operations by default
1506- (default: true; query responses have only readonly fields required)
1507- --no-use-query-safe-response Disable safe response typing for GET operations
1508- (all fields required, matching ApiResponse behavior)
1505+ --use-query-safe-response Export SafeResponse type for GET operations
1506+ (default: false; use true to enable)
15091507 --help, -h Show this help message
15101508
15111509Examples:
15121510 npx @qualisero/openapi-endpoint ./api/openapi.json ./src/generated
15131511 npx @qualisero/openapi-endpoint https://api.example.com/openapi.json ./src/api
15141512 npx @qualisero/openapi-endpoint ./api.json ./src/gen --exclude-prefix _internal
15151513 npx @qualisero/openapi-endpoint ./api.json ./src/gen --no-exclude
1516- npx @qualisero/openapi-endpoint ./api.json ./src/gen --no- use-query-safe-response
1514+ npx @qualisero/openapi-endpoint ./api.json ./src/gen --use-query-safe-response true
15171515
15181516This command will generate:
15191517 - openapi-types.ts (TypeScript types from OpenAPI spec)
@@ -1524,13 +1522,17 @@ This command will generate:
15241522 - api-schemas.ts (Type aliases for schema objects from OpenAPI spec)
15251523
15261524Query Response Typing (--use-query-safe-response):
1527- GET responses with this flag enabled use ApiResponseSafe, which requires only readonly
1525+ When enabled (true), GET operations export a SafeResponse type that requires only readonly
15281526 fields (typically those provided by the server). This matches the semantic distinction:
15291527 - POST/PATCH request bodies: optional fields (you don't have to provide everything)
15301528 - GET response bodies: readonly fields are always present (server always returns them)
15311529
1532- Disable this flag to require all fields (ApiResponse) if your API schema doesn't
1533- properly distinguish readonly fields.
1530+ Example:
1531+ import { api } from './api-client'
1532+ const { data } = api.listPets.useQuery()
1533+ // data has type SafeResponse when --use-query-safe-response true
1534+
1535+ When disabled (default), only the Response type is exported.
15341536` )
15351537}
15361538
@@ -1843,7 +1845,7 @@ async function generateApiOperationsFile(
18431845function generateApiTypesContent (
18441846 operationMap : Record < string , OperationInfo > ,
18451847 opEnums : Record < string , Record < string , Record < string , string > > > ,
1846- useQuerySafeResponse = true ,
1848+ useQuerySafeResponse = false ,
18471849) : string {
18481850 const ids = Object . keys ( operationMap ) . sort ( )
18491851 const isQuery = ( id : string ) => [ 'GET' , 'HEAD' , 'OPTIONS' ] . includes ( operationMap [ id ] . method )
@@ -1933,7 +1935,7 @@ async function generateApiTypesFile(
19331935 openApiSpec : OpenAPISpec ,
19341936 outputDir : string ,
19351937 excludePrefix : string | null ,
1936- useQuerySafeResponse = true ,
1938+ useQuerySafeResponse = false ,
19371939) : Promise < void > {
19381940 console . log ( '🔨 Generating api-types.ts...' )
19391941 const operationMap = buildOperationMap ( openApiSpec , excludePrefix )
@@ -1961,7 +1963,7 @@ async function main(): Promise<void> {
19611963
19621964 // Parse options
19631965 let excludePrefix : string | null = '_deprecated' // default
1964- let useQuerySafeResponse = true // default to true
1966+ let useQuerySafeResponse = false // default to false
19651967
19661968 for ( let i = 0 ; i < optionArgs . length ; i ++ ) {
19671969 if ( optionArgs [ i ] === '--no-exclude' ) {
@@ -1976,9 +1978,21 @@ async function main(): Promise<void> {
19761978 process . exit ( 1 )
19771979 }
19781980 } else if ( optionArgs [ i ] === '--use-query-safe-response' ) {
1979- useQuerySafeResponse = true
1980- } else if ( optionArgs [ i ] === '--no-use-query-safe-response' ) {
1981- useQuerySafeResponse = false
1981+ if ( i + 1 < optionArgs . length && [ 'true' , 'false' ] . includes ( optionArgs [ i + 1 ] ) ) {
1982+ useQuerySafeResponse = optionArgs [ i + 1 ] === 'true'
1983+ i ++ // Skip next arg since we consumed it
1984+ } else {
1985+ console . error ( '❌ Error: --use-query-safe-response requires a value (true or false)' )
1986+ printUsage ( )
1987+ process . exit ( 1 )
1988+ }
1989+ } else if ( optionArgs [ i ] === '--help' || optionArgs [ i ] === '-h' ) {
1990+ printUsage ( )
1991+ process . exit ( 0 )
1992+ } else {
1993+ console . error ( `❌ Error: Unknown option '${ optionArgs [ i ] } '` )
1994+ printUsage ( )
1995+ process . exit ( 1 )
19821996 }
19831997 }
19841998
@@ -1998,9 +2012,9 @@ async function main(): Promise<void> {
19982012
19992013 // Log query safe response setting
20002014 if ( useQuerySafeResponse ) {
2001- console . log ( `✅ Using ApiResponseSafe for GET operations (readonly fields only required) ` )
2015+ console . log ( `✅ SafeResponse enabled for GET operations` )
20022016 } else {
2003- console . log ( `⚠️ Using ApiResponse for all operations (all fields required) ` )
2017+ console . log ( `ℹ️ SafeResponse not enabled ` )
20042018 }
20052019
20062020 // Fetch and parse OpenAPI spec once
0 commit comments