Skip to content

Commit 40df91a

Browse files
authored
Deduplicate path parameters from OpenAPI spec (#3264)
1 parent af66ff7 commit 40df91a

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

.changeset/violet-schools-care.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@gitbook/react-openapi': patch
3+
---
4+
5+
Deduplicate path parameters from OpenAPI spec

packages/react-openapi/src/OpenAPISpec.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export function OpenAPISpec(props: {
1818

1919
const { operation } = data;
2020

21-
const parameters = operation.parameters ?? [];
21+
const parameters = deduplicateParameters(operation.parameters ?? []);
2222
const parameterGroups = groupParameters(parameters, context);
2323

2424
const securities = 'securities' in data ? data.securities : [];
@@ -113,3 +113,23 @@ function getParameterGroupName(paramIn: string, context: OpenAPIClientContext):
113113
return paramIn;
114114
}
115115
}
116+
117+
/** Deduplicate parameters by name and in.
118+
* Some specs have both parameters define at path and operation level.
119+
* We only want to display one of them.
120+
*/
121+
function deduplicateParameters(parameters: OpenAPI.Parameters): OpenAPI.Parameters {
122+
const seen = new Set();
123+
124+
return parameters.filter((param) => {
125+
const key = `${param.name}:${param.in}`;
126+
127+
if (seen.has(key)) {
128+
return false;
129+
}
130+
131+
seen.add(key);
132+
133+
return true;
134+
});
135+
}

0 commit comments

Comments
 (0)