docs: def gather_parameters(self, request, response, context, api_version=None, **input_parameters):
          """Gathers and returns all parameters that will be used for this endpoint"""
          input_parameters.update(request.params)
  
          if self.parse_body and request.content_length:
              body = request.stream
              content_type, content_params = parse_content_type(request.content_type)
              body_formatter = body and self.inputs.get(content_type, self.api.http.input_format(content_type))
              if body_formatter:
                  body = body_formatter(body, content_length=request.content_length, **content_params)
              if 'body' in self.all_parameters:
                  input_parameters['body'] = body
              if isinstance(body, dict):
                  input_parameters.update(body)
          elif 'body' in self.all_parameters:
              input_parameters['body'] = None
  
          if 'request' in self.all_parameters:
              input_parameters['request'] = request
          if 'response' in self.all_parameters:
              input_parameters['response'] = response
          if 'api_version' in self.all_parameters:
              input_parameters['api_version'] = api_version
          for parameter, directive in self.directives.items():
              arguments = (self.defaults[parameter], ) if parameter in self.defaults else ()
              input_parameters[parameter] = directive(*arguments, response=response, request=request,
                                                      api=self.api, api_version=api_version, context=context,
                                                      interface=self)
          return input_parameters