Skip to content

Commit c861cb0

Browse files
Merge pull request #334 from cloudnautique/main
fix: openapi tools received random operationNums
2 parents 6f74c56 + bcc0706 commit c861cb0

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

pkg/loader/openapi.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"net/url"
77
"slices"
8+
"sort"
89
"strings"
910

1011
"github.com/getkin/kin-openapi/openapi3"
@@ -56,7 +57,18 @@ func getOpenAPITools(t *openapi3.T, defaultHost string) ([]types.Tool, error) {
5657
tools []types.Tool
5758
operationNum = 1 // Each tool gets an operation number, beginning with 1
5859
)
59-
for pathString, pathObj := range t.Paths.Map() {
60+
61+
pathMap := t.Paths.Map()
62+
63+
keys := make([]string, 0, len(pathMap))
64+
for k := range pathMap {
65+
keys = append(keys, k)
66+
}
67+
68+
sort.Strings(keys)
69+
70+
for _, pathString := range keys {
71+
pathObj := pathMap[pathString]
6072
// Handle path-level server override, if one exists
6173
pathServer := defaultServer
6274
if pathObj.Servers != nil && len(pathObj.Servers) > 0 {
@@ -66,8 +78,16 @@ func getOpenAPITools(t *openapi3.T, defaultHost string) ([]types.Tool, error) {
6678
}
6779
}
6880

81+
// Generate a tool for each operation in this path.
82+
operations := pathObj.Operations()
83+
methods := make([]string, 0, len(operations))
84+
for method := range operations {
85+
methods = append(methods, method)
86+
}
87+
sort.Strings(methods)
6988
operations:
70-
for method, operation := range pathObj.Operations() {
89+
for _, method := range methods {
90+
operation := operations[method]
7191
// Handle operation-level server override, if one exists
7292
operationServer := pathServer
7393
if operation.Servers != nil && len(*operation.Servers) > 0 {

0 commit comments

Comments
 (0)