openapi: 3.0.0
info:
  title:  Dynamic Form Params 
  version: 1.0.0
  description: >
    Following OpenAPI spec demonstrate various ways to pass form params.
      - You may pass predefined form params
      - You may create dynamic form params by defining a form-param as an object, 
paths:
  /dynamic-form-parameters:
    post:
      tags:
        - Form Params
      summary: Dynamic Params
      description: |
        ```yaml
        /dynamic-form-parameters:
          post:
            summary: Dynamic Params
            requestBody:
              content:
                multipart/form-data:
                  schema:
                    type: object
            responses:
              '200':
                description: successful operation
        ```
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              description: >
                This param is defined as a dynamic param, this accepts data in a strict object notation (JSON)
                and its each `key`, `value` pairs is treated as a seperate form parameter. In this case the example will send 5 form parameters as shown below 

                ```
                 a = 1
                 b = 2
                 c = [ "red", "black" ]
                 d = { "d1":1, "d2":2 }
                 e = 3
                ```
            example: >
              {
                "a":1,
                "b":2,
                "c":[
                  "red",
                  "black"
                ],
                "d":{ "d1":1, "d2":2 },
                "e":3
              }
      responses:
        '200':
          description: OK                    
  /fixed-form-parameters:
    post:
      tags:
        - Form Params
      summary: Fixed Params  
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              description: name and age are fixed form params
              properties:
                name:
                  type: string
                  description: name of person
                  examples:
                    example1: 
                      summary: Fullname
                      value: Nikola Tesla
                    example2:
                      summary: Name with prefix
                      value: Dr. Albert Einstein
                age:
                  type: integer
                  description: age of person
                  example: 28
      responses:
        '200':
          description: OK