-
{operation.toUpperCase()}
+
+
+ {operation.toUpperCase()}
+ {path}
-
-
{path}
- {summary && !isSelected && (
-
+ {summary && !isSelected && (
+
+
{summary}
- )}
-
+
+ )}
);
} else {
return 'Select an operation';
}
};
-
const categorizeOperations = (operation, path, acc, category) => {
const operationData = specJson.paths[path][operation];
const summary = operationData?.summary || '';
@@ -286,7 +289,14 @@ const ApiEndpointInput = (props) => {
request: props.options?.params?.request ?? {},
};
setLoadingSpec(true);
- setOptions({ ...props.options, params: queryParams });
+
+ // Initialize options with specType if multiSpec
+ const initialOptions = {
+ ...props.options,
+ params: queryParams,
+ ...(isMultiSpec && { specType: selectedSpecType }),
+ };
+ setOptions(initialOptions);
if (!isMultiSpec) {
fetchOpenApiSpec();
@@ -299,10 +309,30 @@ const ApiEndpointInput = (props) => {
}
}, [selectedSpecType]);
+ const handleSpecTypeChange = (val) => {
+ setSelectedSpecType(val);
+ // When spec type changes, immediately update options with new specType
+ const newOptions = {
+ ...options,
+ specType: val,
+ // Clear operation-specific data when changing spec type
+ operation: null,
+ path: null,
+ selectedOperation: null,
+ params: {
+ path: {},
+ query: {},
+ request: {},
+ },
+ };
+ setOptions(newOptions);
+ props.optionsChanged(newOptions);
+ };
+
const specTypeOptions = isMultiSpec
? Object.keys(props.specUrl).map((key) => ({
value: key,
- label: key,
+ label: key.charAt(0).toUpperCase() + key.slice(1),
}))
: [];
@@ -312,13 +342,16 @@ const ApiEndpointInput = (props) => {
{isMultiSpec && (
-
+