code: def __request_message_descriptor(self, request_kind, message_type, method_id,
                                     path):
      
      descriptor = {}
  
      params, param_order = self.__params_descriptor(message_type, request_kind,
                                                     path, method_id)
  
      if isinstance(message_type, resource_container.ResourceContainer):
        message_type = message_type.body_message_class()
  
      if (request_kind == self.__NO_BODY or
          message_type == message_types.VoidMessage()):
        descriptor['body'] = 'empty'
      else:
        descriptor['body'] = 'autoTemplate(backendRequest)'
        descriptor['bodyName'] = 'resource'
        self.__request_schema[method_id] = self.__parser.add_message(
            message_type.__class__)
  
      if params:
        descriptor['parameters'] = params
  
      if param_order:
        descriptor['parameterOrder'] = param_order
  
      return descriptor
docs: Describes the parameters and body of the request.
  
      Args:
        request_kind: The type of request being made.
        message_type: messages.Message or ResourceContainer class. The message to
            describe.
        method_id: string, Unique method identifier (e.g. 'myapi.items.method')
        path: string, HTTP path to method.
  
      Returns:
        Dictionary describing the request.
  
      Raises:
        ValueError: if the method path and request required fields do not match