Swagger:Issue with Path parameter

user2825273 picture user2825273 · Nov 26, 2014 · Viewed 49.3k times · Source

I am try to create a swagger file with the following path: paths: /v1/customers/{id}/summary :

However I get the following error right off bat:

API requires path parameter but it is not defined: id at paths ▹ /v1/customers/{id}/summary

It does not seem to like the 'id' parameter. Could anybody tell me how I could rectify this?

If I drill down on this I see the following:

Details
 Object
 swaggerError: Object
 errors: Array [1]
 0: Object
code:  "MISSING_API_PATH_PARAMETER"
message:  "API requires path parameter but it is not defined: id"
data:  "/v1/customers/{id}/summary"
 path: Array [2]
 warnings: Array [0]

Answer

Ron picture Ron · Nov 26, 2014

Basically, you're declaring a path that has a path parameter in it, by using path templates. In this case {id} declares a path parameter called id.

When you declare such a path, it means that you have to declare that path parameter as part of the operation.

Take a look at this YAML example:

  /pets/{id}:
    get:
      description: Returns a user based on a single ID, if the user does not have access to the pet
      operationId: findPetById
      produces:
        - application/json
        - application/xml
        - text/xml
        - text/html
      parameters:
        - name: id
          in: path
          description: ID of pet to fetch
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: pet response
          schema:
            $ref: '#/definitions/pet'
        default:
          description: unexpected error
          schema:
            $ref: '#/definitions/errorModel'

You can see there's an {id} in the path, and a corresponding id parameter definition. Without it, the spec won't be valid.