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.

Merge pull request #3458 from hey-api/copilot/fix-requestbody-object-properties

authored by

Lubos and committed by
GitHub
75d98339 11f54705

+68 -63
+5
.changeset/kind-poets-lay.md
··· 1 + --- 2 + "@hey-api/openapi-ts": patch 3 + --- 4 + 5 + **plugin(@hey-api/sdk)**: fix: correctly set required flat parameters
+31 -31
packages/openapi-ts-tests/sdks/__snapshots__/opencode/export-all/sdk.gen.ts
··· 529 529 export const sessionInit = <ThrowOnError extends boolean = false>(parameters: { 530 530 sessionID: string; 531 531 directory?: string; 532 - modelID?: string; 533 - providerID?: string; 534 - messageID?: string; 532 + modelID: string; 533 + providerID: string; 534 + messageID: string; 535 535 }, options?: Options<never, ThrowOnError>) => { 536 536 const params = buildClientParams([parameters], [{ args: [ 537 537 { in: 'path', key: 'sessionID' }, ··· 660 660 export const sessionSummarize = <ThrowOnError extends boolean = false>(parameters: { 661 661 sessionID: string; 662 662 directory?: string; 663 - providerID?: string; 664 - modelID?: string; 663 + providerID: string; 664 + modelID: string; 665 665 auto?: boolean; 666 666 }, options?: Options<never, ThrowOnError>) => { 667 667 const params = buildClientParams([parameters], [{ args: [ ··· 725 725 }; 726 726 system?: string; 727 727 variant?: string; 728 - parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 728 + parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 729 729 }, options?: Options<never, ThrowOnError>) => { 730 730 const params = buildClientParams([parameters], [{ args: [ 731 731 { in: 'path', key: 'sessionID' }, ··· 844 844 }; 845 845 system?: string; 846 846 variant?: string; 847 - parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 847 + parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 848 848 }, options?: Options<never, ThrowOnError>) => { 849 849 const params = buildClientParams([parameters], [{ args: [ 850 850 { in: 'path', key: 'sessionID' }, ··· 881 881 messageID?: string; 882 882 agent?: string; 883 883 model?: string; 884 - arguments?: string; 885 - command?: string; 884 + arguments: string; 885 + command: string; 886 886 variant?: string; 887 887 }, options?: Options<never, ThrowOnError>) => { 888 888 const params = buildClientParams([parameters], [{ args: [ ··· 915 915 export const sessionShell = <ThrowOnError extends boolean = false>(parameters: { 916 916 sessionID: string; 917 917 directory?: string; 918 - agent?: string; 918 + agent: string; 919 919 model?: { 920 920 providerID: string; 921 921 modelID: string; 922 922 }; 923 - command?: string; 923 + command: string; 924 924 }, options?: Options<never, ThrowOnError>) => { 925 925 const params = buildClientParams([parameters], [{ args: [ 926 926 { in: 'path', key: 'sessionID' }, ··· 949 949 export const sessionRevert = <ThrowOnError extends boolean = false>(parameters: { 950 950 sessionID: string; 951 951 directory?: string; 952 - messageID?: string; 952 + messageID: string; 953 953 partID?: string; 954 954 }, options?: Options<never, ThrowOnError>) => { 955 955 const params = buildClientParams([parameters], [{ args: [ ··· 998 998 sessionID: string; 999 999 permissionID: string; 1000 1000 directory?: string; 1001 - response?: 'once' | 'always' | 'reject'; 1001 + response: 'once' | 'always' | 'reject'; 1002 1002 }, options?: Options<never, ThrowOnError>) => { 1003 1003 const params = buildClientParams([parameters], [{ args: [ 1004 1004 { in: 'path', key: 'sessionID' }, ··· 1026 1026 export const permissionReply = <ThrowOnError extends boolean = false>(parameters: { 1027 1027 requestID: string; 1028 1028 directory?: string; 1029 - reply?: 'once' | 'always' | 'reject'; 1029 + reply: 'once' | 'always' | 'reject'; 1030 1030 }, options?: Options<never, ThrowOnError>) => { 1031 1031 const params = buildClientParams([parameters], [{ args: [ 1032 1032 { in: 'path', key: 'requestID' }, ··· 1133 1133 export const providerOauthAuthorize = <ThrowOnError extends boolean = false>(parameters: { 1134 1134 providerID: string; 1135 1135 directory?: string; 1136 - method?: number; 1136 + method: number; 1137 1137 }, options?: Options<never, ThrowOnError>) => { 1138 1138 const params = buildClientParams([parameters], [{ args: [ 1139 1139 { in: 'path', key: 'providerID' }, ··· 1160 1160 export const providerOauthCallback = <ThrowOnError extends boolean = false>(parameters: { 1161 1161 providerID: string; 1162 1162 directory?: string; 1163 - method?: number; 1163 + method: number; 1164 1164 code?: string; 1165 1165 }, options?: Options<never, ThrowOnError>) => { 1166 1166 const params = buildClientParams([parameters], [{ args: [ ··· 1296 1296 * 1297 1297 * Write a log entry to the server logs with specified level and metadata. 1298 1298 */ 1299 - export const appLog = <ThrowOnError extends boolean = false>(parameters?: { 1299 + export const appLog = <ThrowOnError extends boolean = false>(parameters: { 1300 1300 directory?: string; 1301 - service?: string; 1302 - level?: 'debug' | 'info' | 'error' | 'warn'; 1303 - message?: string; 1301 + service: string; 1302 + level: 'debug' | 'info' | 'error' | 'warn'; 1303 + message: string; 1304 1304 extra?: { 1305 1305 [key: string]: unknown; 1306 1306 }; ··· 1361 1361 * 1362 1362 * Dynamically add a new Model Context Protocol (MCP) server to the system. 1363 1363 */ 1364 - export const mcpAdd = <ThrowOnError extends boolean = false>(parameters?: { 1364 + export const mcpAdd = <ThrowOnError extends boolean = false>(parameters: { 1365 1365 directory?: string; 1366 - name?: string; 1367 - config?: McpLocalConfig | McpRemoteConfig; 1366 + name: string; 1367 + config: McpLocalConfig | McpRemoteConfig; 1368 1368 }, options?: Options<never, ThrowOnError>) => { 1369 1369 const params = buildClientParams([parameters], [{ args: [ 1370 1370 { in: 'query', key: 'directory' }, ··· 1425 1425 export const mcpAuthCallback = <ThrowOnError extends boolean = false>(parameters: { 1426 1426 name: string; 1427 1427 directory?: string; 1428 - code?: string; 1428 + code: string; 1429 1429 }, options?: Options<never, ThrowOnError>) => { 1430 1430 const params = buildClientParams([parameters], [{ args: [ 1431 1431 { in: 'path', key: 'name' }, ··· 1528 1528 * 1529 1529 * Append prompt to the TUI 1530 1530 */ 1531 - export const tuiAppendPrompt = <ThrowOnError extends boolean = false>(parameters?: { 1531 + export const tuiAppendPrompt = <ThrowOnError extends boolean = false>(parameters: { 1532 1532 directory?: string; 1533 - text?: string; 1533 + text: string; 1534 1534 }, options?: Options<never, ThrowOnError>) => { 1535 1535 const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'directory' }, { in: 'body', key: 'text' }] }]); 1536 1536 return (options?.client ?? client).post<TuiAppendPromptResponses, TuiAppendPromptErrors, ThrowOnError>({ ··· 1646 1646 * 1647 1647 * Execute a TUI command (e.g. agent_cycle) 1648 1648 */ 1649 - export const tuiExecuteCommand = <ThrowOnError extends boolean = false>(parameters?: { 1649 + export const tuiExecuteCommand = <ThrowOnError extends boolean = false>(parameters: { 1650 1650 directory?: string; 1651 - command?: string; 1651 + command: string; 1652 1652 }, options?: Options<never, ThrowOnError>) => { 1653 1653 const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'directory' }, { in: 'body', key: 'command' }] }]); 1654 1654 return (options?.client ?? client).post<TuiExecuteCommandResponses, TuiExecuteCommandErrors, ThrowOnError>({ ··· 1668 1668 * 1669 1669 * Show a toast notification in the TUI 1670 1670 */ 1671 - export const tuiShowToast = <ThrowOnError extends boolean = false>(parameters?: { 1671 + export const tuiShowToast = <ThrowOnError extends boolean = false>(parameters: { 1672 1672 directory?: string; 1673 1673 title?: string; 1674 - message?: string; 1675 - variant?: 'info' | 'success' | 'warning' | 'error'; 1674 + message: string; 1675 + variant: 'info' | 'success' | 'warning' | 'error'; 1676 1676 duration?: number; 1677 1677 }, options?: Options<never, ThrowOnError>) => { 1678 1678 const params = buildClientParams([parameters], [{ args: [
+31 -31
packages/openapi-ts-tests/sdks/__snapshots__/opencode/flat/sdk.gen.ts
··· 529 529 export const sessionInit = <ThrowOnError extends boolean = false>(parameters: { 530 530 sessionID: string; 531 531 directory?: string; 532 - modelID?: string; 533 - providerID?: string; 534 - messageID?: string; 532 + modelID: string; 533 + providerID: string; 534 + messageID: string; 535 535 }, options?: Options<never, ThrowOnError>) => { 536 536 const params = buildClientParams([parameters], [{ args: [ 537 537 { in: 'path', key: 'sessionID' }, ··· 660 660 export const sessionSummarize = <ThrowOnError extends boolean = false>(parameters: { 661 661 sessionID: string; 662 662 directory?: string; 663 - providerID?: string; 664 - modelID?: string; 663 + providerID: string; 664 + modelID: string; 665 665 auto?: boolean; 666 666 }, options?: Options<never, ThrowOnError>) => { 667 667 const params = buildClientParams([parameters], [{ args: [ ··· 725 725 }; 726 726 system?: string; 727 727 variant?: string; 728 - parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 728 + parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 729 729 }, options?: Options<never, ThrowOnError>) => { 730 730 const params = buildClientParams([parameters], [{ args: [ 731 731 { in: 'path', key: 'sessionID' }, ··· 844 844 }; 845 845 system?: string; 846 846 variant?: string; 847 - parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 847 + parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>; 848 848 }, options?: Options<never, ThrowOnError>) => { 849 849 const params = buildClientParams([parameters], [{ args: [ 850 850 { in: 'path', key: 'sessionID' }, ··· 881 881 messageID?: string; 882 882 agent?: string; 883 883 model?: string; 884 - arguments?: string; 885 - command?: string; 884 + arguments: string; 885 + command: string; 886 886 variant?: string; 887 887 }, options?: Options<never, ThrowOnError>) => { 888 888 const params = buildClientParams([parameters], [{ args: [ ··· 915 915 export const sessionShell = <ThrowOnError extends boolean = false>(parameters: { 916 916 sessionID: string; 917 917 directory?: string; 918 - agent?: string; 918 + agent: string; 919 919 model?: { 920 920 providerID: string; 921 921 modelID: string; 922 922 }; 923 - command?: string; 923 + command: string; 924 924 }, options?: Options<never, ThrowOnError>) => { 925 925 const params = buildClientParams([parameters], [{ args: [ 926 926 { in: 'path', key: 'sessionID' }, ··· 949 949 export const sessionRevert = <ThrowOnError extends boolean = false>(parameters: { 950 950 sessionID: string; 951 951 directory?: string; 952 - messageID?: string; 952 + messageID: string; 953 953 partID?: string; 954 954 }, options?: Options<never, ThrowOnError>) => { 955 955 const params = buildClientParams([parameters], [{ args: [ ··· 998 998 sessionID: string; 999 999 permissionID: string; 1000 1000 directory?: string; 1001 - response?: 'once' | 'always' | 'reject'; 1001 + response: 'once' | 'always' | 'reject'; 1002 1002 }, options?: Options<never, ThrowOnError>) => { 1003 1003 const params = buildClientParams([parameters], [{ args: [ 1004 1004 { in: 'path', key: 'sessionID' }, ··· 1026 1026 export const permissionReply = <ThrowOnError extends boolean = false>(parameters: { 1027 1027 requestID: string; 1028 1028 directory?: string; 1029 - reply?: 'once' | 'always' | 'reject'; 1029 + reply: 'once' | 'always' | 'reject'; 1030 1030 }, options?: Options<never, ThrowOnError>) => { 1031 1031 const params = buildClientParams([parameters], [{ args: [ 1032 1032 { in: 'path', key: 'requestID' }, ··· 1133 1133 export const providerOauthAuthorize = <ThrowOnError extends boolean = false>(parameters: { 1134 1134 providerID: string; 1135 1135 directory?: string; 1136 - method?: number; 1136 + method: number; 1137 1137 }, options?: Options<never, ThrowOnError>) => { 1138 1138 const params = buildClientParams([parameters], [{ args: [ 1139 1139 { in: 'path', key: 'providerID' }, ··· 1160 1160 export const providerOauthCallback = <ThrowOnError extends boolean = false>(parameters: { 1161 1161 providerID: string; 1162 1162 directory?: string; 1163 - method?: number; 1163 + method: number; 1164 1164 code?: string; 1165 1165 }, options?: Options<never, ThrowOnError>) => { 1166 1166 const params = buildClientParams([parameters], [{ args: [ ··· 1296 1296 * 1297 1297 * Write a log entry to the server logs with specified level and metadata. 1298 1298 */ 1299 - export const appLog = <ThrowOnError extends boolean = false>(parameters?: { 1299 + export const appLog = <ThrowOnError extends boolean = false>(parameters: { 1300 1300 directory?: string; 1301 - service?: string; 1302 - level?: 'debug' | 'info' | 'error' | 'warn'; 1303 - message?: string; 1301 + service: string; 1302 + level: 'debug' | 'info' | 'error' | 'warn'; 1303 + message: string; 1304 1304 extra?: { 1305 1305 [key: string]: unknown; 1306 1306 }; ··· 1361 1361 * 1362 1362 * Dynamically add a new Model Context Protocol (MCP) server to the system. 1363 1363 */ 1364 - export const mcpAdd = <ThrowOnError extends boolean = false>(parameters?: { 1364 + export const mcpAdd = <ThrowOnError extends boolean = false>(parameters: { 1365 1365 directory?: string; 1366 - name?: string; 1367 - config?: McpLocalConfig | McpRemoteConfig; 1366 + name: string; 1367 + config: McpLocalConfig | McpRemoteConfig; 1368 1368 }, options?: Options<never, ThrowOnError>) => { 1369 1369 const params = buildClientParams([parameters], [{ args: [ 1370 1370 { in: 'query', key: 'directory' }, ··· 1425 1425 export const mcpAuthCallback = <ThrowOnError extends boolean = false>(parameters: { 1426 1426 name: string; 1427 1427 directory?: string; 1428 - code?: string; 1428 + code: string; 1429 1429 }, options?: Options<never, ThrowOnError>) => { 1430 1430 const params = buildClientParams([parameters], [{ args: [ 1431 1431 { in: 'path', key: 'name' }, ··· 1528 1528 * 1529 1529 * Append prompt to the TUI 1530 1530 */ 1531 - export const tuiAppendPrompt = <ThrowOnError extends boolean = false>(parameters?: { 1531 + export const tuiAppendPrompt = <ThrowOnError extends boolean = false>(parameters: { 1532 1532 directory?: string; 1533 - text?: string; 1533 + text: string; 1534 1534 }, options?: Options<never, ThrowOnError>) => { 1535 1535 const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'directory' }, { in: 'body', key: 'text' }] }]); 1536 1536 return (options?.client ?? client).post<TuiAppendPromptResponses, TuiAppendPromptErrors, ThrowOnError>({ ··· 1646 1646 * 1647 1647 * Execute a TUI command (e.g. agent_cycle) 1648 1648 */ 1649 - export const tuiExecuteCommand = <ThrowOnError extends boolean = false>(parameters?: { 1649 + export const tuiExecuteCommand = <ThrowOnError extends boolean = false>(parameters: { 1650 1650 directory?: string; 1651 - command?: string; 1651 + command: string; 1652 1652 }, options?: Options<never, ThrowOnError>) => { 1653 1653 const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'directory' }, { in: 'body', key: 'command' }] }]); 1654 1654 return (options?.client ?? client).post<TuiExecuteCommandResponses, TuiExecuteCommandErrors, ThrowOnError>({ ··· 1668 1668 * 1669 1669 * Show a toast notification in the TUI 1670 1670 */ 1671 - export const tuiShowToast = <ThrowOnError extends boolean = false>(parameters?: { 1671 + export const tuiShowToast = <ThrowOnError extends boolean = false>(parameters: { 1672 1672 directory?: string; 1673 1673 title?: string; 1674 - message?: string; 1675 - variant?: 'info' | 'success' | 'warning' | 'error'; 1674 + message: string; 1675 + variant: 'info' | 'success' | 'warning' | 'error'; 1676 1676 duration?: number; 1677 1677 }, options?: Options<never, ThrowOnError>) => { 1678 1678 const params = buildClientParams([parameters], [{ args: [
+1 -1
packages/openapi-ts/src/plugins/@hey-api/sdk/shared/signature.ts
··· 131 131 const property = properties[originalName]!; 132 132 const name = conflicts.has(originalName) ? `${location}_${originalName}` : originalName; 133 133 const signatureParameter: SignatureParameter = { 134 - isRequired: property.required?.includes(originalName) ?? false, 134 + isRequired: operation.body.schema.required?.includes(originalName) ?? false, 135 135 name, 136 136 schema: property, 137 137 };