code: func (c *Conn) IndexWithParameters(index string, _type string, id string, parentId string, version int, op_type string,
  	routing string, timestamp string, ttl int, percolate string, timeout string, refresh bool,
  	args map[string]interface{}, data interface{}) (BaseResponse, error) {
  	var url string
  	var retval BaseResponse
  	url, err := GetIndexUrl(index, _type, id, parentId, version, op_type, routing, timestamp, ttl, percolate, timeout, refresh)
  	if err != nil {
  		return retval, err
  	}
  	var method string
  	if len(id) == 0 {
  		method = "POST"
  	} else {
  		method = "PUT"
  	}
  	body, err := c.DoCommand(method, url, args, data)
  	if err != nil {
  		return retval, err
  	}
  	if err == nil {
  		// marshall into json
  		jsonErr := json.Unmarshal(body, &retval)
  		if jsonErr != nil {
  			return retval, jsonErr
  		}
  	}
  	return retval, err
  }
docs: // IndexWithParameters takes all the potential parameters available