Search code examples
apigeeswagger

Swagger:Issue with Path parameter


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]

Solution

  • 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.