How to group multiple parameters in Swagger 2.0?
Asked Answered
C

2

22

Is it possible to group multiple parameters to reference them in multiple routes?

For example I have a combination of parameters which I need in every route. They are defined as global parameters. How can I group them?

I think about a definition like this:

parameters:
  MetaDataParameters:
    # Meta Data Properties
    - name: id
      in: query
      description: Entry identification number
      required: false
      type: integer
    
    - name: time_start
      in: query
      description: Start time of flare
      required: false
      type: string
    
    - name: nar
      in: query
      description: Active region number
      required: false
      type: string

And then reference the whole group in my route:

/test/:
  get:
    tags:
      - TEST
    operationId: routes.test
    parameters:
      - $ref: "#/parameters/MetaDataParameters"
    responses:
        200:
          description: OK

Is this possible with Swagger 2.0?

Congregationalist answered 19/8, 2015 at 9:21 Comment(2)
Based on my knowledge, it's not possible to group parameters and reference the whole group in a route but feel free to make the suggestion here for future enhancementCountrywoman
Ok thank you, it was my intention to create an suggestion, but I wanted to be clear that it does not exist already.Congregationalist
C
23

This is not possible with Swagger 2.0, OpenAPI 3.0 or 3.1. I've opened a feature request for this and it is proposed for a future version:

https://github.com/OAI/OpenAPI-Specification/issues/445

Congregationalist answered 20/8, 2015 at 9:30 Comment(0)
I
2

You can point your $ref to middle .yaml file, like this:

    //middle.yaml  <-----
    
    - $ref: 'Default.yaml#/components/parameters/meta_id'
    - $ref: 'Default.yaml#/components/parameters/meta_time_start'
    - $ref: 'Default.yaml#/components/parameters/meta_nar'

Your Default.yaml file should be like this:

    //Default.yaml  <-----

    components:
      parameters:
        meta_id:
          name: id
          in: query
          description: Entry identification number
          schema:
            type: integer
            example: 1
        meta_time_start:
          name: time_start
          in: query
          schema:
            type: string

Finally, your main file should be looks like this:

    /test/:
      get:
        tags:
          - TEST
        operationId: routes.test
        parameters:
          $ref: "../parameters/middle.yaml"  <---- external yaml file
        responses:
            200:
              description: OK

NOTE: Your $ref should be without -. like in my example

Involuntary answered 8/7, 2021 at 6:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.