cancel
Showing results for 
Search instead for 
Did you mean: 

Can I mix parameter types in a Swagger document

SOLVED
Highlighted
Occasional Contributor

Can I mix parameter types in a Swagger document

I've an API definition (https://app.swaggerhub.com/api/dunkc/Payment/1.0) which has a single path to post the resource defined in the message body but also allows a query parameter to be passed. This seems sensible and 'legal' according to the specification. However, I'm getting a syntax error on my parameters definition stating

 

Swagger Error

The parameters needed to send a valid API call

 

and the error message "Expected type array but found type object"

 

I can't see an issue with the parameters definition (below), but wanted to check it was valid. It could also be an issue with the data definition the schema is referencing but even if I remove the whole body parameter referencing the schema I have the same error

 

parameters:
        paymentrequest:
          name: paymentrequest
          in: body
          description: a request to make a transfer of money
          required: true
          schema:
            $ref: "#/definitions/Payment_Request_Full"
        brand:
          name: brand
          in: query
          description: blah, blah
          required: true
          type: string

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Moderator

Re: Can I mix parameter types in a Swagger document

Hi there, glad to see you've solved the issue.

 

There are two places parameters can be declared inside an API spec.

The first is at the top level, being referred to as the Parameters Definitions Object - http://swagger.io/specification/#parameters-definitions-object-103. There, you can define parameters that can be reused in your spec. For that reason, the structure is a map of names that you give to those parameters, and their actual structure.

 

The second place is under the operations themselves. In that case, `parameters` is an array of parameters, that can either be defined directly there or referenced to the parameters defined above for reuse.

 

The structure of `parameters` differs (object vs array), which is why you saw a different example than what you actually needed.


Did my reply answer your question? Give Kudos or Accept it as a Solution to help others.↓↓↓↓↓

View solution in original post

3 REPLIES 3
Highlighted
Occasional Contributor

Re: Can I mix parameter types in a Swagger document

After looking at this for sometime I've actually solved this by changing the syntax to

 

parameters:
        - name: paymentrequest
          in: body
          description: a request to make a transfer of money
          required: true
          schema:
            $ref: "#/definitions/Payment_Request_Full"
        - name: brand
          in: query
          description: blah, blah
          required: true
          type: string

 

This doesn't seem in keeping with the Open API specification and the examples shown in there for multiple parameters in YAML, see below

 

skipParam:
  name: skip
  in: query
  description: number of items to skip
  required: true
  type: integer
  format: int32
limitParam:
  name: limit
  in: query
  description: max records to return
  required: true
  type: integer
  format: int32

 

Highlighted
Moderator

Re: Can I mix parameter types in a Swagger document

Hi there, glad to see you've solved the issue.

 

There are two places parameters can be declared inside an API spec.

The first is at the top level, being referred to as the Parameters Definitions Object - http://swagger.io/specification/#parameters-definitions-object-103. There, you can define parameters that can be reused in your spec. For that reason, the structure is a map of names that you give to those parameters, and their actual structure.

 

The second place is under the operations themselves. In that case, `parameters` is an array of parameters, that can either be defined directly there or referenced to the parameters defined above for reuse.

 

The structure of `parameters` differs (object vs array), which is why you saw a different example than what you actually needed.


Did my reply answer your question? Give Kudos or Accept it as a Solution to help others.↓↓↓↓↓

View solution in original post

Highlighted
Occasional Contributor

Re: Can I mix parameter types in a Swagger document

That makes sense, thanks.

 

I'm not sure this is that clear in the specification though Smiley Happy

New Here?
Join us and watch the welcome video:
Announcements