code: func (i *GetWAFRuleStatusesInput) formatFilters() map[string]string {
  	input := i.Filters
  	result := map[string]string{}
  	pairings := map[string]interface{}{
  		"filter[status]":           input.Status,
  		"filter[rule][accuracy]":   input.Accuracy,
  		"filter[rule][maturity]":   input.Maturity,
  		"filter[rule][message]":    input.Message,
  		"filter[rule][revision]":   input.Revision,
  		"filter[rule][rule_id]":    input.RuleID,
  		"filter[rule][tags]":       input.TagID,
  		"filter[rule][tags][name]": input.TagName,
  		"filter[rule][version]":    input.Version,
  		"include":                  input.Tags,
  		"page[size]":               input.MaxResults,
  		"page[number]":             input.Page, // starts at 1, not 0
  	}
  	// NOTE: This setup means we will not be able to send the zero value
  	// of any of these filters. It doesn't appear we would need to at present.
  	for key, value := range pairings {
  		switch t := reflect.TypeOf(value).String(); t {
  		case "string":
  			if value != "" {
  				result[key] = value.(string)
  			}
  		case "int":
  			if value != 0 {
  				result[key] = strconv.Itoa(value.(int))
  			}
  		case "[]int":
  			// convert ints to strings
  			toStrings := []string{}
  			values := value.([]int)
  			for _, i := range values {
  				toStrings = append(toStrings, strconv.Itoa(i))
  			}
  			// concat strings
  			if len(values) > 0 {
  				result[key] = strings.Join(toStrings, ",")
  			}
  		}
  	}
  	return result
  }
docs: // formatFilters converts user input into query parameters for filtering
  // Fastly results for rules in a WAF.