19

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?

Helen
  • 87,344
  • 17
  • 243
  • 314
cansik
  • 1,924
  • 4
  • 19
  • 39
  • 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](https://github.com/swagger-api/swagger-spec/issues) for future enhancement – William Cheng Aug 19 '15 at 14:10
  • Ok thank you, it was my intention to create an suggestion, but I wanted to be clear that it does not exist already. – cansik Aug 19 '15 at 14:25

2 Answers2

20

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

Helen
  • 87,344
  • 17
  • 243
  • 314
cansik
  • 1,924
  • 4
  • 19
  • 39
1

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

//middle.yaml  <-----

- $ref: 'Defaul.yaml#/components/parameters/meta_id'
- $ref: 'Defaul.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

igorb0214
  • 67
  • 2
  • 2
  • 9