code: func (api *API) ListWAFPackages(zoneID string) ([]WAFPackage, error) {
  	var p WAFPackagesResponse
  	var packages []WAFPackage
  	var res []byte
  	var err error
  	uri := "/zones/" + zoneID + "/firewall/waf/packages"
  	res, err = api.makeRequest("GET", uri, nil)
  	if err != nil {
  		return []WAFPackage{}, errors.Wrap(err, errMakeRequestError)
  	}
  	err = json.Unmarshal(res, &p)
  	if err != nil {
  		return []WAFPackage{}, errors.Wrap(err, errUnmarshalError)
  	}
  	if !p.Success {
  		// TODO: Provide an actual error message instead of always returning nil
  		return []WAFPackage{}, err
  	}
  	for pi := range p.Result {
  		packages = append(packages, p.Result[pi])
  	}
  	return packages, nil
  }
docs: // ListWAFPackages returns a slice of the WAF packages for the given zone.
  //
  // API Reference: https://api.cloudflare.com/#waf-rule-packages-list-firewall-packages