swagger-api/swagger-codegen
View on GitHubJson generated by `generate -l swagger` has duplicate path parameters
Open
#1,464 opened on Oct 29, 2015
Feature: DocumentationIssue: Bughelp wanted
Description
Here are examples:
Input
swagger: '2.0'
info:
version: 1.0.0
title: Swagger Petstore (Simple)
description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
termsOfService: 'http://helloreverb.com/terms/'
contact:
name: Swagger API team
email: foo@example.com
url: 'http://swagger.io'
license:
name: MIT
url: 'http://opensource.org/licenses/MIT'
host: petstore.swagger.io
basePath: /api
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/pets:
get:
description: Returns all pets from the system that the user has access to
operationId: findPets
produces:
- application/json
- application/xml
- text/xml
- text/html
parameters:
- name: tags
in: query
description: tags to filter by
required: false
type: array
items:
type: string
collectionFormat: csv
- name: limit
in: query
description: maximum number of results to return
required: false
type: integer
format: int32
responses:
'200':
description: pet response
schema:
type: array
items:
$ref: '#/definitions/pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/errorModel'
post:
description: Creates a new pet in the store. Duplicates are allowed
operationId: addPet
produces:
- application/json
parameters:
- name: pet
in: body
description: Pet to add to the store
required: true
schema:
$ref: '#/definitions/newPet'
responses:
'200':
description: pet response
schema:
$ref: '#/definitions/pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/errorModel'
parameters:
- name: path_parameter
in: query
description: |
This parameter is applicable for all the operations described under this path.
This can be overridden at the operation level, but cannot be removed there.
required: true
type: integer
format: int32
definitions:
pet:
type: object
required:
- id
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
newPet:
type: object
required:
- name
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
errorModel:
type: object
required:
- code
- message
properties:
code:
type: integer
format: int32
message:
type: string
output
{
"swagger" : "2.0",
"info" : {
"description" : "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
"version" : "1.0.0",
"title" : "Swagger Petstore (Simple)",
"termsOfService" : "http://helloreverb.com/terms/",
"contact" : {
"name" : "Swagger API team",
"url" : "http://swagger.io",
"email" : "foo@example.com"
},
"license" : {
"name" : "MIT",
"url" : "http://opensource.org/licenses/MIT"
}
},
"host" : "petstore.swagger.io",
"basePath" : "/api",
"schemes" : [ "http" ],
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"paths" : {
"/pets" : {
"get" : {
"description" : "Returns all pets from the system that the user has access to",
"operationId" : "findPets",
"produces" : [ "application/json", "application/xml", "text/xml", "text/html" ],
"parameters" : [ {
"name" : "tags",
"in" : "query",
"description" : "tags to filter by",
"required" : false,
"type" : "array",
"items" : {
"type" : "string"
},
"collectionFormat" : "multi"
}, {
"name" : "limit",
"in" : "query",
"description" : "maximum number of results to return",
"required" : false,
"type" : "integer",
"format" : "int32"
}, {
"name" : "path_parameter",
"in" : "query",
"description" : "This parameter is applicable for all the operations described under this path.\nThis can be overridden at the operation level, but cannot be removed there.\n",
"required" : true,
"type" : "integer",
"format" : "int32"
} ],
"responses" : {
"200" : {
"description" : "pet response",
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/pet"
}
}
},
"default" : {
"description" : "unexpected error",
"schema" : {
"$ref" : "#/definitions/errorModel"
}
}
}
},
"post" : {
"description" : "Creates a new pet in the store. Duplicates are allowed",
"operationId" : "addPet",
"produces" : [ "application/json" ],
"parameters" : [ {
"in" : "body",
"name" : "pet",
"description" : "Pet to add to the store",
"required" : true,
"schema" : {
"$ref" : "#/definitions/newPet"
}
}, {
"name" : "path_parameter",
"in" : "query",
"description" : "This parameter is applicable for all the operations described under this path.\nThis can be overridden at the operation level, but cannot be removed there.\n",
"required" : true,
"type" : "integer",
"format" : "int32"
} ],
"responses" : {
"200" : {
"description" : "pet response",
"schema" : {
"$ref" : "#/definitions/pet"
}
},
"default" : {
"description" : "unexpected error",
"schema" : {
"$ref" : "#/definitions/errorModel"
}
}
}
},
"parameters" : [ {
"name" : "path_parameter",
"in" : "query",
"description" : "This parameter is applicable for all the operations described under this path.\nThis can be overridden at the operation level, but cannot be removed there.\n",
"required" : true,
"type" : "integer",
"format" : "int32"
} ]
}
},
"definitions" : {
"pet" : {
"required" : [ "id", "name" ],
"properties" : {
"id" : {
"type" : "integer",
"format" : "int64"
},
"name" : {
"type" : "string"
},
"tag" : {
"type" : "string"
}
}
},
"newPet" : {
"required" : [ "name" ],
"properties" : {
"id" : {
"type" : "integer",
"format" : "int64"
},
"name" : {
"type" : "string"
},
"tag" : {
"type" : "string"
}
}
},
"errorModel" : {
"required" : [ "code", "message" ],
"properties" : {
"code" : {
"type" : "integer",
"format" : "int32"
},
"message" : {
"type" : "string"
}
}
}
}
}
As a result, every operation of /pets have two path_parameters :frowning: