func (s *ApisPluginsService) Patch(api string, plugin *Plugin) (*http.Response, error) {
	u := fmt.Sprintf("apis/%v/plugins/%v", api, plugin.ID)
	req, err := s.client.NewRequest("PATCH", u, plugin)
	if err != nil {
		return nil, err
	}
	resp, err := s.client.Do(req, nil)
	return resp, err
}
Patch modifies the configuration of the specified plugin object attached
to the specified api. plugin.ID must be provided.

Equivalent to PATCH /apis/{apiName}/plugins/{pluginID}
package kong
import (
	"errors"
	"fmt"
	"net/http"
)
type ApisService struct {
	*service
	Plugins *ApisPluginsService
}
type Apis struct {
	Data   []*Api `json:"data,omitempty"`
	Total  int    `json:"total,omitempty"`
	Next   string `json:"next,omitempty"`
	Offset string `json:"offset,omitempty"`
}
type ApiRequest struct {
	UpstreamURL            string   `json:"upstream_url,omitempty"`
	RequestPath            string   `json:"request_path,omitempty"`
	ID                     string   `json:"id,omitempty"`
	CreatedAt              int64    `json:"created_at,omitempty"`
	PreserveHost           bool     `json:"preserve_host,omitempty"`
	Name                   string   `json:"name,omitempty"`
	Hosts                  []string `json:"hosts,omitempty"`
	Uris                   []string `json:"uris"`
	StripUri               bool     `json:"strip_uri"`
	Retries                int      `json:"retries"`
	UpstreamConnectTimeout int      `json:"upstream_connect_timeout"`
	UpstreamSendTimeout    int      `json:"upstream_send_timeout"`
	UpstreamReadTimeout    int      `json:"upstream_read_timeout"`
	HttpsOnly              bool      `json:"https_only"`
	HttpIfTerminated       bool      `json:"http_if_terminated"`
}
type Api struct {
	UpstreamURL            string   `json:"upstream_url,omitempty"`
	RequestPath            string   `json:"request_path,omitempty"`
	ID                     string   `json:"id,omitempty"`
	CreatedAt              int64    `json:"created_at,omitempty"`
	PreserveHost           bool     `json:"preserve_host,omitempty"`
	Name                   string   `json:"name,omitempty"`
	Hosts                  []string `json:"hosts,omitempty"`
	Uris                   []string `json:"uris"`
	StripUri               bool     `json:"strip_uri"`
	Retries                int      `json:"retries"`
	UpstreamConnectTimeout int      `json:"upstream_connect_timeout"`
	UpstreamSendTimeout    int      `json:"upstream_send_timeout"`
	UpstreamReadTimeout    int      `json:"upstream_read_timeout"`
	HttpsOnly              bool      `json:"https_only"`
	HttpIfTerminated       bool      `json:"http_if_terminated"`
}
func (s *ApisService) Get(api string) (*Api, *http.Response, error) {
	u := fmt.Sprintf("apis/%v", api)
	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}
	uResp := new(Api)
	resp, err := s.client.Do(req, uResp)
	if err != nil {
		return nil, resp, err
	}
	return uResp, resp, err
}
func (s *ApisService) Patch(api *ApiRequest) (*http.Response, error) {
	var u string
	if api.Name != "" {
		u = fmt.Sprintf("apis/%v", api.Name)
	} else if api.ID != "" {
		u = fmt.Sprintf("apis/%v", api.ID)
	} else {
		return nil, errors.New("At least one of api.Name or api.ID must be specified")
	}
	req, err := s.client.NewRequest("PATCH", u, api)
	if err != nil {
		return nil, err
	}
	resp, err := s.client.Do(req, nil)
	return resp, err
}
func (s *ApisService) Delete(api string) (*http.Response, error) {
	u := fmt.Sprintf("apis/%v", api)
	req, err := s.client.NewRequest("DELETE", u, nil)
	if err != nil {
		return nil, err
	}
	resp, err := s.client.Do(req, nil)
	if err != nil {
		return resp, err
	}
	return resp, err
}
func (s *ApisService) Post(api *ApiRequest) (*http.Response, error) {
	req, err := s.client.NewRequest("POST", "apis", api)
	if err != nil {
		return nil, err
	}
	resp, err := s.client.Do(req, nil)
	return resp, err
}
type ApisGetAllOptions struct {
	ID          string `url:"id,omitempty"`            
	Name        string `url:"name,omitempty"`          
	RequestHost string `url:"request_host,omitempty"`  
	RequestPath string `url:"request_path,omitempty"`  
	UpstreamURL string `url:"upstream_url,omitempty"`  
	Size        int    `url:"size,omitempty"`          
	Offset      string `url:"offset,omitempty"`        
}
func (s *ApisService) GetAll(opt *ApisGetAllOptions) (*Apis, *http.Response, error) {
	u, err := addOptions("apis", opt)
	if err != nil {
		return nil, nil, err
	}
	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}
	apis := new(Apis)
	resp, err := s.client.Do(req, apis)
	if err != nil {
		return nil, resp, err
	}
	return apis, resp, err
}
type ApisPluginsService service
func (s *ApisPluginsService) GetAll(api string, opt *PluginsGetAllOptions) (*Plugins, *http.Response, error) {
	u, err := addOptions(fmt.Sprintf("apis/%v/plugins", api), opt)
	if err != nil {
		return nil, nil, err
	}
	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}
	plugins := new(Plugins)
	resp, err := s.client.Do(req, plugins)
	if err != nil {
		return nil, resp, err
	}
	return plugins, resp, err
}
func (s *ApisPluginsService) Post(api string, plugin *Plugin) (*http.Response, error) {
	u := fmt.Sprintf("apis/%v/plugins", api)
	req, err := s.client.NewRequest("POST", u, plugin)
	if err != nil {
		return nil, err
	}
	resp, err := s.client.Do(req, nil)
	return resp, err
}