fork of hey-api/openapi-ts because I need some additional things
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: allow per field array parameters for serializeQuery

+430 -118
+10 -3
examples/openapi-ts-angular-common/src/client/client/utils.gen.ts
··· 104 104 allowReserved, 105 105 array, 106 106 object, 107 + parameters = {}, 107 108 }: QuerySerializerOptions = {}) => { 108 109 const querySerializer = (queryParams: T) => { 109 110 const search: string[] = []; ··· 115 116 continue; 116 117 } 117 118 119 + // Get parameter-specific settings or fall back to global 120 + const paramConfig = parameters[name] || {}; 121 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 122 + 118 123 if (Array.isArray(value)) { 119 124 const serializedArray = serializeArrayParam({ 120 - allowReserved, 125 + allowReserved: paramAllowReserved, 121 126 explode: true, 122 127 name, 123 128 style: 'form', 124 129 value, 125 130 ...array, 131 + ...paramConfig.array, 126 132 }); 127 133 if (serializedArray) search.push(serializedArray); 128 134 } else if (typeof value === 'object') { 129 135 const serializedObject = serializeObjectParam({ 130 - allowReserved, 136 + allowReserved: paramAllowReserved, 131 137 explode: true, 132 138 name, 133 139 style: 'deepObject', 134 140 value: value as Record<string, unknown>, 135 141 ...object, 142 + ...paramConfig.object, 136 143 }); 137 144 if (serializedObject) search.push(serializedObject); 138 145 } else { 139 146 const serializedPrimitive = serializePrimitiveParam({ 140 - allowReserved, 147 + allowReserved: paramAllowReserved, 141 148 name, 142 149 value: value as string, 143 150 });
+12
examples/openapi-ts-angular-common/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-angular/src/client/client/utils.gen.ts
··· 104 104 allowReserved, 105 105 array, 106 106 object, 107 + parameters = {}, 107 108 }: QuerySerializerOptions = {}) => { 108 109 const querySerializer = (queryParams: T) => { 109 110 const search: string[] = []; ··· 115 116 continue; 116 117 } 117 118 119 + // Get parameter-specific settings or fall back to global 120 + const paramConfig = parameters[name] || {}; 121 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 122 + 118 123 if (Array.isArray(value)) { 119 124 const serializedArray = serializeArrayParam({ 120 - allowReserved, 125 + allowReserved: paramAllowReserved, 121 126 explode: true, 122 127 name, 123 128 style: 'form', 124 129 value, 125 130 ...array, 131 + ...paramConfig.array, 126 132 }); 127 133 if (serializedArray) search.push(serializedArray); 128 134 } else if (typeof value === 'object') { 129 135 const serializedObject = serializeObjectParam({ 130 - allowReserved, 136 + allowReserved: paramAllowReserved, 131 137 explode: true, 132 138 name, 133 139 style: 'deepObject', 134 140 value: value as Record<string, unknown>, 135 141 ...object, 142 + ...paramConfig.object, 136 143 }); 137 144 if (serializedObject) search.push(serializedObject); 138 145 } else { 139 146 const serializedPrimitive = serializePrimitiveParam({ 140 - allowReserved, 147 + allowReserved: paramAllowReserved, 141 148 name, 142 149 value: value as string, 143 150 });
+12
examples/openapi-ts-angular/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-axios/src/client/client/utils.gen.ts
··· 19 19 allowReserved, 20 20 array, 21 21 object, 22 + parameters = {}, 22 23 }: QuerySerializerOptions = {}) => { 23 24 const querySerializer = (queryParams: T) => { 24 25 const search: string[] = []; ··· 30 31 continue; 31 32 } 32 33 34 + // Get parameter-specific settings or fall back to global 35 + const paramConfig = parameters[name] || {}; 36 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 37 + 33 38 if (Array.isArray(value)) { 34 39 const serializedArray = serializeArrayParam({ 35 - allowReserved, 40 + allowReserved: paramAllowReserved, 36 41 explode: true, 37 42 name, 38 43 style: 'form', 39 44 value, 40 45 ...array, 46 + ...paramConfig.array, 41 47 }); 42 48 if (serializedArray) search.push(serializedArray); 43 49 } else if (typeof value === 'object') { 44 50 const serializedObject = serializeObjectParam({ 45 - allowReserved, 51 + allowReserved: paramAllowReserved, 46 52 explode: true, 47 53 name, 48 54 style: 'deepObject', 49 55 value: value as Record<string, unknown>, 50 56 ...object, 57 + ...paramConfig.object, 51 58 }); 52 59 if (serializedObject) search.push(serializedObject); 53 60 } else { 54 61 const serializedPrimitive = serializePrimitiveParam({ 55 - allowReserved, 62 + allowReserved: paramAllowReserved, 56 63 name, 57 64 value: value as string, 58 65 });
+12
examples/openapi-ts-axios/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-fastify/src/client/client/utils.gen.ts
··· 20 20 allowReserved, 21 21 array, 22 22 object, 23 + parameters = {}, 23 24 }: QuerySerializerOptions = {}) => { 24 25 const querySerializer = (queryParams: T) => { 25 26 const search: string[] = []; ··· 31 32 continue; 32 33 } 33 34 35 + // Get parameter-specific settings or fall back to global 36 + const paramConfig = parameters[name] || {}; 37 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 38 + 34 39 if (Array.isArray(value)) { 35 40 const serializedArray = serializeArrayParam({ 36 - allowReserved, 41 + allowReserved: paramAllowReserved, 37 42 explode: true, 38 43 name, 39 44 style: 'form', 40 45 value, 41 46 ...array, 47 + ...paramConfig.array, 42 48 }); 43 49 if (serializedArray) search.push(serializedArray); 44 50 } else if (typeof value === 'object') { 45 51 const serializedObject = serializeObjectParam({ 46 - allowReserved, 52 + allowReserved: paramAllowReserved, 47 53 explode: true, 48 54 name, 49 55 style: 'deepObject', 50 56 value: value as Record<string, unknown>, 51 57 ...object, 58 + ...paramConfig.object, 52 59 }); 53 60 if (serializedObject) search.push(serializedObject); 54 61 } else { 55 62 const serializedPrimitive = serializePrimitiveParam({ 56 - allowReserved, 63 + allowReserved: paramAllowReserved, 57 64 name, 58 65 value: value as string, 59 66 });
+12
examples/openapi-ts-fastify/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-fetch/src/client/client/utils.gen.ts
··· 20 20 allowReserved, 21 21 array, 22 22 object, 23 + parameters = {}, 23 24 }: QuerySerializerOptions = {}) => { 24 25 const querySerializer = (queryParams: T) => { 25 26 const search: string[] = []; ··· 31 32 continue; 32 33 } 33 34 35 + // Get parameter-specific settings or fall back to global 36 + const paramConfig = parameters[name] || {}; 37 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 38 + 34 39 if (Array.isArray(value)) { 35 40 const serializedArray = serializeArrayParam({ 36 - allowReserved, 41 + allowReserved: paramAllowReserved, 37 42 explode: true, 38 43 name, 39 44 style: 'form', 40 45 value, 41 46 ...array, 47 + ...paramConfig.array, 42 48 }); 43 49 if (serializedArray) search.push(serializedArray); 44 50 } else if (typeof value === 'object') { 45 51 const serializedObject = serializeObjectParam({ 46 - allowReserved, 52 + allowReserved: paramAllowReserved, 47 53 explode: true, 48 54 name, 49 55 style: 'deepObject', 50 56 value: value as Record<string, unknown>, 51 57 ...object, 58 + ...paramConfig.object, 52 59 }); 53 60 if (serializedObject) search.push(serializedObject); 54 61 } else { 55 62 const serializedPrimitive = serializePrimitiveParam({ 56 - allowReserved, 63 + allowReserved: paramAllowReserved, 57 64 name, 58 65 value: value as string, 59 66 });
+12
examples/openapi-ts-fetch/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-next/src/client/client/utils.gen.ts
··· 103 103 allowReserved, 104 104 array, 105 105 object, 106 + parameters = {}, 106 107 }: QuerySerializerOptions = {}) => { 107 108 const querySerializer = (queryParams: T) => { 108 109 const search: string[] = []; ··· 114 115 continue; 115 116 } 116 117 118 + // Get parameter-specific settings or fall back to global 119 + const paramConfig = parameters[name] || {}; 120 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 121 + 117 122 if (Array.isArray(value)) { 118 123 const serializedArray = serializeArrayParam({ 119 - allowReserved, 124 + allowReserved: paramAllowReserved, 120 125 explode: true, 121 126 name, 122 127 style: 'form', 123 128 value, 124 129 ...array, 130 + ...paramConfig.array, 125 131 }); 126 132 if (serializedArray) search.push(serializedArray); 127 133 } else if (typeof value === 'object') { 128 134 const serializedObject = serializeObjectParam({ 129 - allowReserved, 135 + allowReserved: paramAllowReserved, 130 136 explode: true, 131 137 name, 132 138 style: 'deepObject', 133 139 value: value as Record<string, unknown>, 134 140 ...object, 141 + ...paramConfig.object, 135 142 }); 136 143 if (serializedObject) search.push(serializedObject); 137 144 } else { 138 145 const serializedPrimitive = serializePrimitiveParam({ 139 - allowReserved, 146 + allowReserved: paramAllowReserved, 140 147 name, 141 148 value: value as string, 142 149 });
+12
examples/openapi-ts-next/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-ofetch/src/client/client/utils.gen.ts
··· 27 27 allowReserved, 28 28 array, 29 29 object, 30 + parameters = {}, 30 31 }: QuerySerializerOptions = {}) => { 31 32 const querySerializer = (queryParams: T) => { 32 33 const search: string[] = []; ··· 38 39 continue; 39 40 } 40 41 42 + // Get parameter-specific settings or fall back to global 43 + const paramConfig = parameters[name] || {}; 44 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 45 + 41 46 if (Array.isArray(value)) { 42 47 const serializedArray = serializeArrayParam({ 43 - allowReserved, 48 + allowReserved: paramAllowReserved, 44 49 explode: true, 45 50 name, 46 51 style: 'form', 47 52 value, 48 53 ...array, 54 + ...paramConfig.array, 49 55 }); 50 56 if (serializedArray) search.push(serializedArray); 51 57 } else if (typeof value === 'object') { 52 58 const serializedObject = serializeObjectParam({ 53 - allowReserved, 59 + allowReserved: paramAllowReserved, 54 60 explode: true, 55 61 name, 56 62 style: 'deepObject', 57 63 value: value as Record<string, unknown>, 58 64 ...object, 65 + ...paramConfig.object, 59 66 }); 60 67 if (serializedObject) search.push(serializedObject); 61 68 } else { 62 69 const serializedPrimitive = serializePrimitiveParam({ 63 - allowReserved, 70 + allowReserved: paramAllowReserved, 64 71 name, 65 72 value: value as string, 66 73 });
+12
examples/openapi-ts-ofetch/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-openai/src/client/client/utils.gen.ts
··· 20 20 allowReserved, 21 21 array, 22 22 object, 23 + parameters = {}, 23 24 }: QuerySerializerOptions = {}) => { 24 25 const querySerializer = (queryParams: T) => { 25 26 const search: string[] = []; ··· 31 32 continue; 32 33 } 33 34 35 + // Get parameter-specific settings or fall back to global 36 + const paramConfig = parameters[name] || {}; 37 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 38 + 34 39 if (Array.isArray(value)) { 35 40 const serializedArray = serializeArrayParam({ 36 - allowReserved, 41 + allowReserved: paramAllowReserved, 37 42 explode: true, 38 43 name, 39 44 style: 'form', 40 45 value, 41 46 ...array, 47 + ...paramConfig.array, 42 48 }); 43 49 if (serializedArray) search.push(serializedArray); 44 50 } else if (typeof value === 'object') { 45 51 const serializedObject = serializeObjectParam({ 46 - allowReserved, 52 + allowReserved: paramAllowReserved, 47 53 explode: true, 48 54 name, 49 55 style: 'deepObject', 50 56 value: value as Record<string, unknown>, 51 57 ...object, 58 + ...paramConfig.object, 52 59 }); 53 60 if (serializedObject) search.push(serializedObject); 54 61 } else { 55 62 const serializedPrimitive = serializePrimitiveParam({ 56 - allowReserved, 63 + allowReserved: paramAllowReserved, 57 64 name, 58 65 value: value as string, 59 66 });
+12
examples/openapi-ts-openai/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10
examples/openapi-ts-openai/src/client/sdk.gen.ts
··· 2256 2256 unknown, 2257 2257 ThrowOnError 2258 2258 >({ 2259 + querySerializer: { 2260 + parameters: { 2261 + effective_at: { 2262 + object: { 2263 + explode: true, 2264 + style: 'form', 2265 + }, 2266 + }, 2267 + }, 2268 + }, 2259 2269 security: [ 2260 2270 { 2261 2271 scheme: 'bearer',
+42 -42
examples/openapi-ts-openai/src/client/types.gen.ts
··· 215 215 } & ErrorEvent); 216 216 217 217 export const AssistantSupportedModels = { 218 - GPT_3_5_TURBO: 'gpt-3.5-turbo', 219 - GPT_3_5_TURBO_0125: 'gpt-3.5-turbo-0125', 220 - GPT_3_5_TURBO_0613: 'gpt-3.5-turbo-0613', 221 - GPT_3_5_TURBO_1106: 'gpt-3.5-turbo-1106', 222 - GPT_4: 'gpt-4', 223 - GPT_3_5_TURBO_16K: 'gpt-3.5-turbo-16k', 224 218 GPT_4O: 'gpt-4o', 225 - GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', 219 + GPT_4: 'gpt-4', 226 220 GPT_4O_2024_05_13: 'gpt-4o-2024-05-13', 227 221 GPT_4O_2024_08_06: 'gpt-4o-2024-08-06', 228 222 GPT_4O_2024_11_20: 'gpt-4o-2024-11-20', 229 223 GPT_4O_MINI: 'gpt-4o-mini', 230 224 GPT_4O_MINI_2024_07_18: 'gpt-4o-mini-2024-07-18', 225 + GPT_3_5_TURBO: 'gpt-3.5-turbo', 231 226 GPT_4_0125_PREVIEW: 'gpt-4-0125-preview', 227 + GPT_3_5_TURBO_0613: 'gpt-3.5-turbo-0613', 232 228 GPT_4_0314: 'gpt-4-0314', 229 + GPT_3_5_TURBO_0125: 'gpt-3.5-turbo-0125', 233 230 GPT_4_0613: 'gpt-4-0613', 231 + GPT_3_5_TURBO_1106: 'gpt-3.5-turbo-1106', 234 232 GPT_4_1: 'gpt-4.1', 235 - GPT_4_1106_PREVIEW: 'gpt-4-1106-preview', 233 + GPT_3_5_TURBO_16K: 'gpt-3.5-turbo-16k', 236 234 GPT_4_1_2025_04_14: 'gpt-4.1-2025-04-14', 235 + GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', 237 236 GPT_4_1_MINI: 'gpt-4.1-mini', 237 + GPT_4_1106_PREVIEW: 'gpt-4-1106-preview', 238 238 GPT_4_1_MINI_2025_04_14: 'gpt-4.1-mini-2025-04-14', 239 239 GPT_4_1_NANO: 'gpt-4.1-nano', 240 240 GPT_4_1_NANO_2025_04_14: 'gpt-4.1-nano-2025-04-14', 241 241 GPT_4_32K: 'gpt-4-32k', 242 + GPT_5: 'gpt-5', 242 243 GPT_4_32K_0314: 'gpt-4-32k-0314', 244 + GPT_5_2025_08_07: 'gpt-5-2025-08-07', 243 245 GPT_4_32K_0613: 'gpt-4-32k-0613', 246 + GPT_5_MINI: 'gpt-5-mini', 244 247 GPT_4_5_PREVIEW: 'gpt-4.5-preview', 248 + GPT_5_MINI_2025_08_07: 'gpt-5-mini-2025-08-07', 245 249 GPT_4_5_PREVIEW_2025_02_27: 'gpt-4.5-preview-2025-02-27', 250 + GPT_5_NANO: 'gpt-5-nano', 246 251 GPT_4_TURBO: 'gpt-4-turbo', 247 252 GPT_4_TURBO_2024_04_09: 'gpt-4-turbo-2024-04-09', 253 + GPT_5_NANO_2025_08_07: 'gpt-5-nano-2025-08-07', 248 254 GPT_4_TURBO_PREVIEW: 'gpt-4-turbo-preview', 249 255 GPT_4_VISION_PREVIEW: 'gpt-4-vision-preview', 250 - GPT_5: 'gpt-5', 251 - GPT_5_2025_08_07: 'gpt-5-2025-08-07', 252 - GPT_5_MINI: 'gpt-5-mini', 253 - GPT_5_MINI_2025_08_07: 'gpt-5-mini-2025-08-07', 254 - GPT_5_NANO: 'gpt-5-nano', 255 - GPT_5_NANO_2025_08_07: 'gpt-5-nano-2025-08-07', 256 256 O1: 'o1', 257 257 O1_2024_12_17: 'o1-2024-12-17', 258 258 O3_MINI: 'o3-mini', ··· 18392 18392 18393 18393 export const ChatModel = { 18394 18394 GPT_4O: 'gpt-4o', 18395 - CHATGPT_4O_LATEST: 'chatgpt-4o-latest', 18396 18395 GPT_4O_2024_05_13: 'gpt-4o-2024-05-13', 18397 - CODEX_MINI_LATEST: 'codex-mini-latest', 18398 18396 GPT_4O_2024_08_06: 'gpt-4o-2024-08-06', 18399 18397 GPT_4O_2024_11_20: 'gpt-4o-2024-11-20', 18400 18398 GPT_4O_AUDIO_PREVIEW: 'gpt-4o-audio-preview', 18401 18399 GPT_4O_AUDIO_PREVIEW_2024_10_01: 'gpt-4o-audio-preview-2024-10-01', 18400 + GPT_4_1: 'gpt-4.1', 18402 18401 GPT_4O_AUDIO_PREVIEW_2024_12_17: 'gpt-4o-audio-preview-2024-12-17', 18403 - GPT_4: 'gpt-4', 18402 + GPT_4_1_2025_04_14: 'gpt-4.1-2025-04-14', 18404 18403 GPT_4O_AUDIO_PREVIEW_2025_06_03: 'gpt-4o-audio-preview-2025-06-03', 18404 + GPT_4_1_MINI: 'gpt-4.1-mini', 18405 + CHATGPT_4O_LATEST: 'chatgpt-4o-latest', 18406 + GPT_4_1_MINI_2025_04_14: 'gpt-4.1-mini-2025-04-14', 18407 + CODEX_MINI_LATEST: 'codex-mini-latest', 18408 + GPT_4_1_NANO: 'gpt-4.1-nano', 18405 18409 GPT_4O_MINI: 'gpt-4o-mini', 18410 + GPT_4_1_NANO_2025_04_14: 'gpt-4.1-nano-2025-04-14', 18406 18411 GPT_4O_MINI_2024_07_18: 'gpt-4o-mini-2024-07-18', 18412 + GPT_5: 'gpt-5', 18413 + GPT_4: 'gpt-4', 18414 + GPT_5_2025_08_07: 'gpt-5-2025-08-07', 18407 18415 GPT_4O_MINI_AUDIO_PREVIEW: 'gpt-4o-mini-audio-preview', 18416 + GPT_5_CHAT_LATEST: 'gpt-5-chat-latest', 18408 18417 GPT_4O_MINI_AUDIO_PREVIEW_2024_12_17: 'gpt-4o-mini-audio-preview-2024-12-17', 18418 + GPT_5_MINI: 'gpt-5-mini', 18409 18419 GPT_3_5_TURBO: 'gpt-3.5-turbo', 18410 - GPT_4_1: 'gpt-4.1', 18420 + GPT_5_MINI_2025_08_07: 'gpt-5-mini-2025-08-07', 18411 18421 GPT_3_5_TURBO_0301: 'gpt-3.5-turbo-0301', 18412 - GPT_4_1_2025_04_14: 'gpt-4.1-2025-04-14', 18422 + GPT_5_NANO: 'gpt-5-nano', 18413 18423 GPT_3_5_TURBO_0613: 'gpt-3.5-turbo-0613', 18414 - GPT_4_1_MINI: 'gpt-4.1-mini', 18424 + GPT_5_NANO_2025_08_07: 'gpt-5-nano-2025-08-07', 18415 18425 GPT_3_5_TURBO_0125: 'gpt-3.5-turbo-0125', 18416 - GPT_4_1_MINI_2025_04_14: 'gpt-4.1-mini-2025-04-14', 18426 + O1: 'o1', 18417 18427 GPT_3_5_TURBO_1106: 'gpt-3.5-turbo-1106', 18418 - GPT_4_1_NANO: 'gpt-4.1-nano', 18428 + O1_2024_12_17: 'o1-2024-12-17', 18419 18429 GPT_3_5_TURBO_16K: 'gpt-3.5-turbo-16k', 18420 - GPT_4_1_NANO_2025_04_14: 'gpt-4.1-nano-2025-04-14', 18430 + O1_MINI: 'o1-mini', 18421 18431 GPT_3_5_TURBO_16K_0613: 'gpt-3.5-turbo-16k-0613', 18422 - GPT_5: 'gpt-5', 18432 + O3: 'o3', 18423 18433 GPT_4O_MINI_SEARCH_PREVIEW: 'gpt-4o-mini-search-preview', 18424 - GPT_5_2025_08_07: 'gpt-5-2025-08-07', 18434 + O3_2025_04_16: 'o3-2025-04-16', 18425 18435 GPT_4O_MINI_SEARCH_PREVIEW_2025_03_11: 18426 18436 'gpt-4o-mini-search-preview-2025-03-11', 18427 - GPT_5_CHAT_LATEST: 'gpt-5-chat-latest', 18437 + O4_MINI: 'o4-mini', 18428 18438 GPT_4O_SEARCH_PREVIEW: 'gpt-4o-search-preview', 18429 - GPT_5_MINI: 'gpt-5-mini', 18439 + O4_MINI_2025_04_16: 'o4-mini-2025-04-16', 18430 18440 GPT_4O_SEARCH_PREVIEW_2025_03_11: 'gpt-4o-search-preview-2025-03-11', 18431 - GPT_5_MINI_2025_08_07: 'gpt-5-mini-2025-08-07', 18441 + O3_MINI: 'o3-mini', 18432 18442 GPT_4_0125_PREVIEW: 'gpt-4-0125-preview', 18433 - GPT_5_NANO: 'gpt-5-nano', 18443 + O3_MINI_2025_01_31: 'o3-mini-2025-01-31', 18434 18444 GPT_4_0314: 'gpt-4-0314', 18435 - GPT_5_NANO_2025_08_07: 'gpt-5-nano-2025-08-07', 18445 + O1_PREVIEW: 'o1-preview', 18436 18446 GPT_4_0613: 'gpt-4-0613', 18437 - O1: 'o1', 18447 + O1_PREVIEW_2024_09_12: 'o1-preview-2024-09-12', 18438 18448 GPT_4_1106_PREVIEW: 'gpt-4-1106-preview', 18439 - O1_2024_12_17: 'o1-2024-12-17', 18449 + O1_MINI_2024_09_12: 'o1-mini-2024-09-12', 18440 18450 GPT_4_32K: 'gpt-4-32k', 18441 - O1_MINI: 'o1-mini', 18442 18451 GPT_4_32K_0314: 'gpt-4-32k-0314', 18443 - O3: 'o3', 18444 18452 GPT_4_32K_0613: 'gpt-4-32k-0613', 18445 - O3_2025_04_16: 'o3-2025-04-16', 18446 18453 GPT_4_TURBO: 'gpt-4-turbo', 18447 - O4_MINI: 'o4-mini', 18448 18454 GPT_4_TURBO_2024_04_09: 'gpt-4-turbo-2024-04-09', 18449 - O4_MINI_2025_04_16: 'o4-mini-2025-04-16', 18450 18455 GPT_4_TURBO_PREVIEW: 'gpt-4-turbo-preview', 18451 - O3_MINI: 'o3-mini', 18452 18456 GPT_4_VISION_PREVIEW: 'gpt-4-vision-preview', 18453 - O3_MINI_2025_01_31: 'o3-mini-2025-01-31', 18454 - O1_MINI_2024_09_12: 'o1-mini-2024-09-12', 18455 - O1_PREVIEW: 'o1-preview', 18456 - O1_PREVIEW_2024_09_12: 'o1-preview-2024-09-12', 18457 18457 } as const; 18458 18458 18459 18459 export type ChatModel = (typeof ChatModel)[keyof typeof ChatModel];
+13 -6
examples/openapi-ts-pinia-colada/src/client/client/utils.gen.ts
··· 14 14 export const createQuerySerializer = <T = unknown>({ 15 15 allowReserved, 16 16 array, 17 - object 17 + object, 18 + parameters = {} 18 19 }: QuerySerializerOptions = {}) => { 19 20 const querySerializer = (queryParams: T) => { 20 21 const search: string[] = [] ··· 26 27 continue 27 28 } 28 29 30 + // Get parameter-specific settings or fall back to global 31 + const paramConfig = parameters[name] || {} 32 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved 33 + 29 34 if (Array.isArray(value)) { 30 35 const serializedArray = serializeArrayParam({ 31 - allowReserved, 36 + allowReserved: paramAllowReserved, 32 37 explode: true, 33 38 name, 34 39 style: 'form', 35 40 value, 36 - ...array 41 + ...array, 42 + ...paramConfig.array 37 43 }) 38 44 if (serializedArray) search.push(serializedArray) 39 45 } else if (typeof value === 'object') { 40 46 const serializedObject = serializeObjectParam({ 41 - allowReserved, 47 + allowReserved: paramAllowReserved, 42 48 explode: true, 43 49 name, 44 50 style: 'deepObject', 45 51 value: value as Record<string, unknown>, 46 - ...object 52 + ...object, 53 + ...paramConfig.object 47 54 }) 48 55 if (serializedObject) search.push(serializedObject) 49 56 } else { 50 57 const serializedPrimitive = serializePrimitiveParam({ 51 - allowReserved, 58 + allowReserved: paramAllowReserved, 52 59 name, 53 60 value: value as string 54 61 })
+12
examples/openapi-ts-pinia-colada/src/client/core/bodySerializer.gen.ts
··· 10 10 allowReserved?: boolean 11 11 array?: SerializerOptions<ArrayStyle> 12 12 object?: SerializerOptions<ObjectStyle> 13 + /** 14 + * Per-parameter serialization overrides. When provided, these settings 15 + * override the global array/object settings for specific parameter names. 16 + */ 17 + parameters?: Record< 18 + string, 19 + { 20 + allowReserved?: boolean 21 + array?: SerializerOptions<ArrayStyle> 22 + object?: SerializerOptions<ObjectStyle> 23 + } 24 + > 13 25 } 14 26 15 27 const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {
+10 -3
examples/openapi-ts-sample/src/client/client/utils.gen.ts
··· 20 20 allowReserved, 21 21 array, 22 22 object, 23 + parameters = {}, 23 24 }: QuerySerializerOptions = {}) => { 24 25 const querySerializer = (queryParams: T) => { 25 26 const search: string[] = []; ··· 31 32 continue; 32 33 } 33 34 35 + // Get parameter-specific settings or fall back to global 36 + const paramConfig = parameters[name] || {}; 37 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 38 + 34 39 if (Array.isArray(value)) { 35 40 const serializedArray = serializeArrayParam({ 36 - allowReserved, 41 + allowReserved: paramAllowReserved, 37 42 explode: true, 38 43 name, 39 44 style: 'form', 40 45 value, 41 46 ...array, 47 + ...paramConfig.array, 42 48 }); 43 49 if (serializedArray) search.push(serializedArray); 44 50 } else if (typeof value === 'object') { 45 51 const serializedObject = serializeObjectParam({ 46 - allowReserved, 52 + allowReserved: paramAllowReserved, 47 53 explode: true, 48 54 name, 49 55 style: 'deepObject', 50 56 value: value as Record<string, unknown>, 51 57 ...object, 58 + ...paramConfig.object, 52 59 }); 53 60 if (serializedObject) search.push(serializedObject); 54 61 } else { 55 62 const serializedPrimitive = serializePrimitiveParam({ 56 - allowReserved, 63 + allowReserved: paramAllowReserved, 57 64 name, 58 65 value: value as string, 59 66 });
+12
examples/openapi-ts-sample/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
examples/openapi-ts-tanstack-angular-query-experimental/src/client/client/utils.gen.ts
··· 104 104 allowReserved, 105 105 array, 106 106 object, 107 + parameters = {}, 107 108 }: QuerySerializerOptions = {}) => { 108 109 const querySerializer = (queryParams: T) => { 109 110 const search: string[] = []; ··· 115 116 continue; 116 117 } 117 118 119 + // Get parameter-specific settings or fall back to global 120 + const paramConfig = parameters[name] || {}; 121 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 122 + 118 123 if (Array.isArray(value)) { 119 124 const serializedArray = serializeArrayParam({ 120 - allowReserved, 125 + allowReserved: paramAllowReserved, 121 126 explode: true, 122 127 name, 123 128 style: 'form', 124 129 value, 125 130 ...array, 131 + ...paramConfig.array, 126 132 }); 127 133 if (serializedArray) search.push(serializedArray); 128 134 } else if (typeof value === 'object') { 129 135 const serializedObject = serializeObjectParam({ 130 - allowReserved, 136 + allowReserved: paramAllowReserved, 131 137 explode: true, 132 138 name, 133 139 style: 'deepObject', 134 140 value: value as Record<string, unknown>, 135 141 ...object, 142 + ...paramConfig.object, 136 143 }); 137 144 if (serializedObject) search.push(serializedObject); 138 145 } else { 139 146 const serializedPrimitive = serializePrimitiveParam({ 140 - allowReserved, 147 + allowReserved: paramAllowReserved, 141 148 name, 142 149 value: value as string, 143 150 });
+12
examples/openapi-ts-tanstack-angular-query-experimental/src/client/core/bodySerializer.gen.ts
··· 14 14 allowReserved?: boolean; 15 15 array?: SerializerOptions<ArrayStyle>; 16 16 object?: SerializerOptions<ObjectStyle>; 17 + /** 18 + * Per-parameter serialization overrides. When provided, these settings 19 + * override the global array/object settings for specific parameter names. 20 + */ 21 + parameters?: Record< 22 + string, 23 + { 24 + allowReserved?: boolean; 25 + array?: SerializerOptions<ArrayStyle>; 26 + object?: SerializerOptions<ObjectStyle>; 27 + } 28 + >; 17 29 } 18 30 19 31 const serializeFormDataPair = (
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-angular/bundle/utils.ts
··· 97 97 allowReserved, 98 98 array, 99 99 object, 100 + parameters = {}, 100 101 }: QuerySerializerOptions = {}) => { 101 102 const querySerializer = (queryParams: T) => { 102 103 const search: string[] = []; ··· 108 109 continue; 109 110 } 110 111 112 + // Get parameter-specific settings or fall back to global 113 + const paramConfig = parameters[name] || {}; 114 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 115 + 111 116 if (Array.isArray(value)) { 112 117 const serializedArray = serializeArrayParam({ 113 - allowReserved, 118 + allowReserved: paramAllowReserved, 114 119 explode: true, 115 120 name, 116 121 style: 'form', 117 122 value, 118 123 ...array, 124 + ...paramConfig.array, 119 125 }); 120 126 if (serializedArray) search.push(serializedArray); 121 127 } else if (typeof value === 'object') { 122 128 const serializedObject = serializeObjectParam({ 123 - allowReserved, 129 + allowReserved: paramAllowReserved, 124 130 explode: true, 125 131 name, 126 132 style: 'deepObject', 127 133 value: value as Record<string, unknown>, 128 134 ...object, 135 + ...paramConfig.object, 129 136 }); 130 137 if (serializedObject) search.push(serializedObject); 131 138 } else { 132 139 const serializedPrimitive = serializePrimitiveParam({ 133 - allowReserved, 140 + allowReserved: paramAllowReserved, 134 141 name, 135 142 value: value as string, 136 143 });
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-axios/bundle/utils.ts
··· 12 12 allowReserved, 13 13 array, 14 14 object, 15 + parameters = {}, 15 16 }: QuerySerializerOptions = {}) => { 16 17 const querySerializer = (queryParams: T) => { 17 18 const search: string[] = []; ··· 23 24 continue; 24 25 } 25 26 27 + // Get parameter-specific settings or fall back to global 28 + const paramConfig = parameters[name] || {}; 29 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 30 + 26 31 if (Array.isArray(value)) { 27 32 const serializedArray = serializeArrayParam({ 28 - allowReserved, 33 + allowReserved: paramAllowReserved, 29 34 explode: true, 30 35 name, 31 36 style: 'form', 32 37 value, 33 38 ...array, 39 + ...paramConfig.array, 34 40 }); 35 41 if (serializedArray) search.push(serializedArray); 36 42 } else if (typeof value === 'object') { 37 43 const serializedObject = serializeObjectParam({ 38 - allowReserved, 44 + allowReserved: paramAllowReserved, 39 45 explode: true, 40 46 name, 41 47 style: 'deepObject', 42 48 value: value as Record<string, unknown>, 43 49 ...object, 50 + ...paramConfig.object, 44 51 }); 45 52 if (serializedObject) search.push(serializedObject); 46 53 } else { 47 54 const serializedPrimitive = serializePrimitiveParam({ 48 - allowReserved, 55 + allowReserved: paramAllowReserved, 49 56 name, 50 57 value: value as string, 51 58 });
+12
packages/openapi-ts/src/plugins/@hey-api/client-core/bundle/bodySerializer.ts
··· 12 12 allowReserved?: boolean; 13 13 array?: SerializerOptions<ArrayStyle>; 14 14 object?: SerializerOptions<ObjectStyle>; 15 + /** 16 + * Per-parameter serialization overrides. When provided, these settings 17 + * override the global array/object settings for specific parameter names. 18 + */ 19 + parameters?: Record< 20 + string, 21 + { 22 + allowReserved?: boolean; 23 + array?: SerializerOptions<ArrayStyle>; 24 + object?: SerializerOptions<ObjectStyle>; 25 + } 26 + >; 15 27 } 16 28 17 29 const serializeFormDataPair = (
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-fetch/bundle/utils.ts
··· 13 13 allowReserved, 14 14 array, 15 15 object, 16 + parameters = {}, 16 17 }: QuerySerializerOptions = {}) => { 17 18 const querySerializer = (queryParams: T) => { 18 19 const search: string[] = []; ··· 24 25 continue; 25 26 } 26 27 28 + // Get parameter-specific settings or fall back to global 29 + const paramConfig = parameters[name] || {}; 30 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 31 + 27 32 if (Array.isArray(value)) { 28 33 const serializedArray = serializeArrayParam({ 29 - allowReserved, 34 + allowReserved: paramAllowReserved, 30 35 explode: true, 31 36 name, 32 37 style: 'form', 33 38 value, 34 39 ...array, 40 + ...paramConfig.array, 35 41 }); 36 42 if (serializedArray) search.push(serializedArray); 37 43 } else if (typeof value === 'object') { 38 44 const serializedObject = serializeObjectParam({ 39 - allowReserved, 45 + allowReserved: paramAllowReserved, 40 46 explode: true, 41 47 name, 42 48 style: 'deepObject', 43 49 value: value as Record<string, unknown>, 44 50 ...object, 51 + ...paramConfig.object, 45 52 }); 46 53 if (serializedObject) search.push(serializedObject); 47 54 } else { 48 55 const serializedPrimitive = serializePrimitiveParam({ 49 - allowReserved, 56 + allowReserved: paramAllowReserved, 50 57 name, 51 58 value: value as string, 52 59 });
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-next/bundle/utils.ts
··· 96 96 allowReserved, 97 97 array, 98 98 object, 99 + parameters = {}, 99 100 }: QuerySerializerOptions = {}) => { 100 101 const querySerializer = (queryParams: T) => { 101 102 const search: string[] = []; ··· 107 108 continue; 108 109 } 109 110 111 + // Get parameter-specific settings or fall back to global 112 + const paramConfig = parameters[name] || {}; 113 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 114 + 110 115 if (Array.isArray(value)) { 111 116 const serializedArray = serializeArrayParam({ 112 - allowReserved, 117 + allowReserved: paramAllowReserved, 113 118 explode: true, 114 119 name, 115 120 style: 'form', 116 121 value, 117 122 ...array, 123 + ...paramConfig.array, 118 124 }); 119 125 if (serializedArray) search.push(serializedArray); 120 126 } else if (typeof value === 'object') { 121 127 const serializedObject = serializeObjectParam({ 122 - allowReserved, 128 + allowReserved: paramAllowReserved, 123 129 explode: true, 124 130 name, 125 131 style: 'deepObject', 126 132 value: value as Record<string, unknown>, 127 133 ...object, 134 + ...paramConfig.object, 128 135 }); 129 136 if (serializedObject) search.push(serializedObject); 130 137 } else { 131 138 const serializedPrimitive = serializePrimitiveParam({ 132 - allowReserved, 139 + allowReserved: paramAllowReserved, 133 140 name, 134 141 value: value as string, 135 142 });
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-nuxt/bundle/utils.ts
··· 101 101 allowReserved, 102 102 array, 103 103 object, 104 + parameters = {}, 104 105 }: QuerySerializerOptions = {}) => { 105 106 const querySerializer = (queryParams: T) => { 106 107 const search: string[] = []; ··· 113 114 continue; 114 115 } 115 116 117 + // Get parameter-specific settings or fall back to global 118 + const paramConfig = parameters[name] || {}; 119 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 120 + 116 121 if (Array.isArray(value)) { 117 122 const serializedArray = serializeArrayParam({ 118 - allowReserved, 123 + allowReserved: paramAllowReserved, 119 124 explode: true, 120 125 name, 121 126 style: 'form', 122 127 value, 123 128 ...array, 129 + ...paramConfig.array, 124 130 }); 125 131 if (serializedArray) search.push(serializedArray); 126 132 } else if (typeof value === 'object') { 127 133 const serializedObject = serializeObjectParam({ 128 - allowReserved, 134 + allowReserved: paramAllowReserved, 129 135 explode: true, 130 136 name, 131 137 style: 'deepObject', 132 138 value: value as Record<string, unknown>, 133 139 ...object, 140 + ...paramConfig.object, 134 141 }); 135 142 if (serializedObject) search.push(serializedObject); 136 143 } else { 137 144 const serializedPrimitive = serializePrimitiveParam({ 138 - allowReserved, 145 + allowReserved: paramAllowReserved, 139 146 name, 140 147 value: value as string, 141 148 });
+10 -3
packages/openapi-ts/src/plugins/@hey-api/client-ofetch/bundle/utils.ts
··· 25 25 allowReserved, 26 26 array, 27 27 object, 28 + parameters = {}, 28 29 }: QuerySerializerOptions = {}) => { 29 30 const querySerializer = (queryParams: T) => { 30 31 const search: string[] = []; ··· 36 37 continue; 37 38 } 38 39 40 + // Get parameter-specific settings or fall back to global 41 + const paramConfig = parameters[name] || {}; 42 + const paramAllowReserved = paramConfig.allowReserved ?? allowReserved; 43 + 39 44 if (Array.isArray(value)) { 40 45 const serializedArray = serializeArrayParam({ 41 - allowReserved, 46 + allowReserved: paramAllowReserved, 42 47 explode: true, 43 48 name, 44 49 style: 'form', 45 50 value, 46 51 ...array, 52 + ...paramConfig.array, 47 53 }); 48 54 if (serializedArray) search.push(serializedArray); 49 55 } else if (typeof value === 'object') { 50 56 const serializedObject = serializeObjectParam({ 51 - allowReserved, 57 + allowReserved: paramAllowReserved, 52 58 explode: true, 53 59 name, 54 60 style: 'deepObject', 55 61 value: value as Record<string, unknown>, 56 62 ...object, 63 + ...paramConfig.object, 57 64 }); 58 65 if (serializedObject) search.push(serializedObject); 59 66 } else { 60 67 const serializedPrimitive = serializePrimitiveParam({ 61 - allowReserved, 68 + allowReserved: paramAllowReserved, 62 69 name, 63 70 value: value as string, 64 71 });
+61 -22
packages/openapi-ts/src/plugins/@hey-api/sdk/operation.ts
··· 424 424 // content type. currently impossible because successes do not contain 425 425 // header information 426 426 427 + // Build per-parameter serialization settings 428 + const parameterSerializers: Array<ObjectValue> = []; 429 + 427 430 for (const name in operation.parameters?.query) { 428 431 const parameter = operation.parameters.query[name]!; 429 - if ( 432 + 433 + const needsCustomArraySerialization = 430 434 (parameter.schema.type === 'array' || 431 435 parameter.schema.type === 'tuple') && 432 - (parameter.style !== 'form' || !parameter.explode) 433 - ) { 434 - // override the default settings for `querySerializer` 435 - requestOptions.push({ 436 - key: 'querySerializer', 437 - value: [ 438 - { 439 - key: 'array', 440 - value: [ 441 - { 442 - key: 'explode', 443 - value: false, 444 - }, 445 - { 446 - key: 'style', 447 - value: 'form', 448 - }, 449 - ], 450 - }, 451 - ], 436 + (parameter.style !== 'form' || parameter.explode !== true); 437 + 438 + const needsCustomObjectSerialization = 439 + parameter.schema.type === 'object' && 440 + (parameter.style !== 'deepObject' || parameter.explode !== true); 441 + 442 + if (needsCustomArraySerialization || needsCustomObjectSerialization) { 443 + const paramConfig: Array<ObjectValue> = []; 444 + 445 + if (needsCustomArraySerialization) { 446 + paramConfig.push({ 447 + key: 'array', 448 + value: [ 449 + { 450 + key: 'explode', 451 + value: parameter.explode ?? true, 452 + }, 453 + { 454 + key: 'style', 455 + value: parameter.style ?? 'form', 456 + }, 457 + ], 458 + }); 459 + } 460 + 461 + if (needsCustomObjectSerialization) { 462 + paramConfig.push({ 463 + key: 'object', 464 + value: [ 465 + { 466 + key: 'explode', 467 + value: parameter.explode ?? true, 468 + }, 469 + { 470 + key: 'style', 471 + value: parameter.style ?? 'deepObject', 472 + }, 473 + ], 474 + }); 475 + } 476 + 477 + parameterSerializers.push({ 478 + key: parameter.name, 479 + value: paramConfig, 452 480 }); 453 - break; 454 481 } 482 + } 483 + 484 + if (parameterSerializers.length > 0) { 485 + requestOptions.push({ 486 + key: 'querySerializer', 487 + value: [ 488 + { 489 + key: 'parameters', 490 + value: parameterSerializers, 491 + }, 492 + ], 493 + }); 455 494 } 456 495 457 496 const requestValidator = createRequestValidator({ operation, plugin });