title: I need to parse and store list of values from json or yaml file
body: <p>I need to parse few of values from the provided yaml or json file.       Below is the content from my yaml file,</p>
  
  <pre><code>swagger: '2.0'
  info:
    description: &gt;-
      This is a sample server Petstore server.  You can find out more about    
      Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net,
      #swagger](http://swagger.io/irc/).      For this sample, you can use the api
      key `special-key` to test the authorization     filters.
    version: 1.0.0
    title: Swagger Petstore
    termsOfService: 'http://swagger.io/terms/'
    contact:
      email: apiteam@swagger.io
    license:
      name: Apache 2.0
      url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
  host: petstore.swagger.io
  basePath: /v2
  tags:
    - name: pet
      description: Everything about your Pets
      externalDocs:
        description: Find out more
        url: 'http://swagger.io'
    - name: store
      description: Access to Petstore orders
    - name: user
      description: Operations about user
      externalDocs:
        description: Find out more about our store
        url: 'http://swagger.io'
  schemes:
    - https
    - http
  paths:
    /pet:
      post:
        tags:
          - pet
        summary: Add a new pet to the store
        description: ''
        operationId: addPet
        consumes:
          - application/json
          - application/xml
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: Pet object that needs to be added to the store
            required: true
            schema:
              $ref: '#/definitions/Pet'
        responses:
          '405':
            description: Invalid input
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
      put:
        tags:
          - pet
        summary: Update an existing pet
        description: ''
        operationId: updatePet
        consumes:
          - application/json
          - application/xml
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: Pet object that needs to be added to the store
            required: true
            schema:
              $ref: '#/definitions/Pet'
        responses:
          '400':
            description: Invalid ID supplied
          '404':
            description: Pet not found
          '405':
            description: Validation exception
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
    /pet/findByStatus:
      get:
        tags:
          - pet
        summary: Finds Pets by status
        description: Multiple status values can be provided with comma separated strings
        operationId: findPetsByStatus
        produces:
          - application/xml
          - application/json
        parameters:
          - name: status
            in: query
            description: Status values that need to be considered for filter
            required: true
            type: array
            items:
              type: string
              enum:
                - available
                - pending
                - sold
              default: available
            collectionFormat: multi
        responses:
          '200':
            description: successful operation
            schema:
              type: array
              items:
                $ref: '#/definitions/Pet'
          '400':
            description: Invalid status value
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
    /pet/findByTags:
      get:
        tags:
          - pet
        summary: Finds Pets by tags
        description: &gt;-
          Muliple tags can be provided with comma separated strings. Use        
          tag1, tag2, tag3 for testing.
        operationId: findPetsByTags
        produces:
          - application/xml
          - application/json
        parameters:
          - name: tags
            in: query
            description: Tags to filter by
            required: true
            type: array
            items:
              type: string
            collectionFormat: multi
        responses:
          '200':
            description: successful operation
            schema:
              type: array
              items:
                $ref: '#/definitions/Pet'
          '400':
            description: Invalid tag value
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
        deprecated: true
    '/pet/{petId}':
      get:
        tags:
          - pet
        summary: Find pet by ID
        description: Returns a single pet
        operationId: getPetById
        produces:
          - application/xml
          - application/json
        parameters:
          - name: petId
            in: path
            description: ID of pet to return
            required: true
            type: integer
            format: int64
        responses:
          '200':
            description: successful operation
            schema:
              $ref: '#/definitions/Pet'
          '400':
            description: Invalid ID supplied
          '404':
            description: Pet not found
        security:
          - api_key: []
      post:
        tags:
          - pet
        summary: Updates a pet in the store with form data
        description: ''
        operationId: updatePetWithForm
        consumes:
          - application/x-www-form-urlencoded
        produces:
          - application/xml
          - application/json
        parameters:
          - name: petId
            in: path
            description: ID of pet that needs to be updated
            required: true
            type: integer
            format: int64
          - name: name
            in: formData
            description: Updated name of the pet
            required: false
            type: string
          - name: status
            in: formData
            description: Updated status of the pet
            required: false
            type: string
        responses:
          '405':
            description: Invalid input
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
      delete:
        tags:
          - pet
        summary: Deletes a pet
        description: ''
        operationId: deletePet
        produces:
          - application/xml
          - application/json
        parameters:
          - name: api_key
            in: header
            required: false
            type: string
          - name: petId
            in: path
            description: Pet id to delete
            required: true
            type: integer
            format: int64
        responses:
          '400':
            description: Invalid ID supplied
          '404':
            description: Pet not found
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
    '/pet/{petId}/uploadImage':
      post:
        tags:
          - pet
        summary: uploads an image
        description: ''
        operationId: uploadFile
        consumes:
          - multipart/form-data
        produces:
          - application/json
        parameters:
          - name: petId
            in: path
            description: ID of pet to update
            required: true
            type: integer
            format: int64
          - name: additionalMetadata
            in: formData
            description: Additional data to pass to server
            required: false
            type: string
          - name: file
            in: formData
            description: file to upload
            required: false
            type: file
        responses:
          '200':
            description: successful operation
            schema:
              $ref: '#/definitions/ApiResponse'
        security:
          - petstore_auth:
              - 'write:pets'
              - 'read:pets'
    /store/inventory:
      get:
        tags:
          - store
        summary: Returns pet inventories by status
        description: Returns a map of status codes to quantities
        operationId: getInventory
        produces:
          - application/json
        parameters: []
        responses:
          '200':
            description: successful operation
            schema:
              type: object
              additionalProperties:
                type: integer
                format: int32
        security:
          - api_key: []
    /store/order:
      post:
        tags:
          - store
        summary: Place an order for a pet
        description: ''
        operationId: placeOrder
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: order placed for purchasing the pet
            required: true
            schema:
              $ref: '#/definitions/Order'
        responses:
          '200':
            description: successful operation
            schema:
              $ref: '#/definitions/Order'
          '400':
            description: Invalid Order
    '/store/order/{orderId}':
      get:
        tags:
          - store
        summary: Find purchase order by ID
        description: &gt;-
          For valid response try integer IDs with value &gt;= 1 and &lt;= 10.        
          Other values will generated exceptions
        operationId: getOrderById
        produces:
          - application/xml
          - application/json
        parameters:
          - name: orderId
            in: path
            description: ID of pet that needs to be fetched
            required: true
            type: integer
            maximum: 10
            minimum: 1
            format: int64
        responses:
          '200':
            description: successful operation
            schema:
              $ref: '#/definitions/Order'
          '400':
            description: Invalid ID supplied
          '404':
            description: Order not found
      delete:
        tags:
          - store
        summary: Delete purchase order by ID
        description: &gt;-
          For valid response try integer IDs with positive integer value.        
          Negative or non-integer values will generate API errors
        operationId: deleteOrder
        produces:
          - application/xml
          - application/json
        parameters:
          - name: orderId
            in: path
            description: ID of the order that needs to be deleted
            required: true
            type: integer
            minimum: 1
            format: int64
        responses:
          '400':
            description: Invalid ID supplied
          '404':
            description: Order not found
    /user:
      post:
        tags:
          - user
        summary: Create user
        description: This can only be done by the logged in user.
        operationId: createUser
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: Created user object
            required: true
            schema:
              $ref: '#/definitions/User'
        responses:
          default:
            description: successful operation
    /user/createWithArray:
      post:
        tags:
          - user
        summary: Creates list of users with given input array
        description: ''
        operationId: createUsersWithArrayInput
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: List of user object
            required: true
            schema:
              type: array
              items:
                $ref: '#/definitions/User'
        responses:
          default:
            description: successful operation
    /user/createWithList:
      post:
        tags:
          - user
        summary: Creates list of users with given input array
        description: ''
        operationId: createUsersWithListInput
        produces:
          - application/xml
          - application/json
        parameters:
          - in: body
            name: body
            description: List of user object
            required: true
            schema:
              type: array
              items:
                $ref: '#/definitions/User'
        responses:
          default:
            description: successful operation
    /user/login:
      get:
        tags:
          - user
        summary: Logs user into the system
        description: ''
        operationId: loginUser
        produces:
          - application/xml
          - application/json
        parameters:
          - name: username
            in: query
            description: The user name for login
            required: true
            type: string
          - name: password
            in: query
            description: The password for login in clear text
            required: true
            type: string
        responses:
          '200':
            description: successful operation
            schema:
              type: string
            headers:
              X-Rate-Limit:
                type: integer
                format: int32
                description: calls per hour allowed by the user
              X-Expires-After:
                type: string
                format: date-time
                description: date in UTC when token expires
          '400':
            description: Invalid username/password supplied
    /user/logout:
      get:
        tags:
          - user
        summary: Logs out current logged in user session
        description: ''
        operationId: logoutUser
        produces:
          - application/xml
          - application/json
        parameters: []
        responses:
          default:
            description: successful operation
    '/user/{username}':
      get:
        tags:
          - user
        summary: Get user by user name
        description: ''
        operationId: getUserByName
        produces:
          - application/xml
          - application/json
        parameters:
          - name: username
            in: path
            description: 'The name that needs to be fetched. Use user1 for testing. '
            required: true
            type: string
        responses:
          '200':
            description: successful operation
            schema:
              $ref: '#/definitions/User'
          '400':
            description: Invalid username supplied
          '404':
            description: User not found
      put:
        tags:
          - user
        summary: Updated user
        description: This can only be done by the logged in user.
        operationId: updateUser
        produces:
          - application/xml
          - application/json
        parameters:
          - name: username
            in: path
            description: name that need to be updated
            required: true
            type: string
          - in: body
            name: body
            description: Updated user object
            required: true
            schema:
              $ref: '#/definitions/User'
        responses:
          '400':
            description: Invalid user supplied
          '404':
            description: User not found
      delete:
        tags:
          - user
        summary: Delete user
        description: This can only be done by the logged in user.
        operationId: deleteUser
        produces:
          - application/xml
          - application/json
        parameters:
          - name: username
            in: path
            description: The name that needs to be deleted
            required: true
            type: string
        responses:
          '400':
            description: Invalid username supplied
          '404':
            description: User not found
  securityDefinitions:
    petstore_auth:
      type: oauth2
      authorizationUrl: 'http://petstore.swagger.io/oauth/dialog'
      flow: implicit
      scopes:
        'write:pets': modify pets in your account
        'read:pets': read your pets
    api_key:
      type: apiKey
      name: api_key
      in: header
  definitions:
    Order:
      type: object
      properties:
        id:
          type: integer
          format: int64
        petId:
          type: integer
          format: int64
        quantity:
          type: integer
          format: int32
        shipDate:
          type: string
          format: date-time
        status:
          type: string
          description: Order Status
          enum:
            - placed
            - approved
            - delivered
        complete:
          type: boolean
          default: false
      xml:
        name: Order
    Category:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      xml:
        name: Category
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        username:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        password:
          type: string
        phone:
          type: string
        userStatus:
          type: integer
          format: int32
          description: User Status
      xml:
        name: User
    Tag:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      xml:
        name: Tag
    Pet:
      type: object
      required:
        - name
        - photoUrls
      properties:
        id:
          type: integer
          format: int64
        category:
          $ref: '#/definitions/Category'
        name:
          type: string
          example: doggie
        photoUrls:
          type: array
          xml:
            name: photoUrl
            wrapped: true
          items:
            type: string
        tags:
          type: array
          xml:
            name: tag
            wrapped: true
          items:
            $ref: '#/definitions/Tag'
        status:
          type: string
          description: pet status in the store
          enum:
            - available
            - pending
            - sold
      xml:
        name: Pet
    ApiResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
        type:
          type: string
        message:
          type: string
  externalDocs:
    description: Find out more about Swagger
    url: 'http://swagger.io'
  </code></pre>
  
  <p>I have written the below code to extract all the API endpoints (/pets, /pets/{petID}, ...) and the API type (GET, PUT, POST, etc,.).</p>
  
  <pre><code>        import yaml
          import json
          with open("swagger.yaml", 'r') as yaml_in, open("examplepets.json", "w") as json_out:
              yaml_object = yaml.safe_load(yaml_in)  # yaml_object will be a list or a dict - Converts the
              json.dump(yaml_object, json_out, indent=2)
  
          with open("examplepets.json", "r") as reading:
                  data = json.load(reading)
                  for path, values in data['paths'].items():
                      print(path.replace('{', '${'))  # If required used print statement
                      for value in values:
                          print(value)  # If required use print statement
  </code></pre>
  
  <p>I need to elaborate the code further to fetch the below values from swagger file, Values under the key "consumes:", "produces:"
  Under "Parameters:" i need to fetch values of the key -> "name", "in", "required", "Type" Values under the below key listed keys should be extracted and printed along with the corresponding API endpoints, API method type,
  "consumes:", "produces:"
  "Parameters:" i need to fetch values of the key -> "name", "in", "required", "Type"</p>
  
  <p>NOTE: i have already presented the code to fetch the API endpoints and API method type.</p>