@@ -156,6 +156,11 @@ func ToV3Parameter(parameter *openapi2.Parameter) (*openapi3.ParameterRef, *open
156156 if parameter == nil {
157157 return nil , nil , nil
158158 }
159+ if ref := parameter .Ref ; len (ref ) > 0 {
160+ return & openapi3.ParameterRef {
161+ Ref : ToV3Ref (ref ),
162+ }, nil , nil
163+ }
159164 in := parameter .In
160165 if in == "body" {
161166 result := & openapi3.RequestBody {
@@ -251,6 +256,7 @@ func ToV3SchemaRef(schema *openapi3.SchemaRef) *openapi3.SchemaRef {
251256var ref2To3 = map [string ]string {
252257 "#/definitions/" : "#/components/schemas/" ,
253258 "#/responses/" : "#/components/responses/" ,
259+ "#/parameters/" : "#/components/parameters/" ,
254260}
255261
256262func ToV3Ref (ref string ) string {
@@ -367,6 +373,7 @@ func FromV3Swagger(swagger *openapi3.Swagger) (*openapi2.Swagger, error) {
367373 if pathItem == nil {
368374 continue
369375 }
376+ result .AddOperation (path , "GET" , nil )
370377 for method , operation := range pathItem .Operations () {
371378 if operation == nil {
372379 continue
@@ -377,6 +384,22 @@ func FromV3Swagger(swagger *openapi3.Swagger) (*openapi2.Swagger, error) {
377384 }
378385 result .AddOperation (path , method , resultOperation )
379386 }
387+ params := openapi2.Parameters {}
388+ for _ , param := range pathItem .Parameters {
389+ p , err := FromV3Parameter (param )
390+ if err != nil {
391+ return nil , err
392+ }
393+ params = append (params , p )
394+ }
395+ result .Paths [path ].Parameters = params
396+ }
397+ result .Parameters = map [string ]* openapi2.Parameter {}
398+ for name , param := range swagger .Components .Parameters {
399+ result .Parameters [name ], err = FromV3Parameter (param )
400+ if err != nil {
401+ return nil , err
402+ }
380403 }
381404 if m := swagger .Components .SecuritySchemes ; m != nil {
382405 resultSecuritySchemes := make (map [string ]* openapi2.SecurityScheme )
0 commit comments