func (c *Client) ListServiceHooks(ctx context.Context) ([]*ServiceHook, *Response, error) {
	u := "hooks"
	req, err := c.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}
	var hooks []*ServiceHook
	resp, err := c.Do(ctx, req, &hooks)
	if err != nil {
		return nil, resp, err
	}
	return hooks, resp, nil
}
ListServiceHooks lists all of the available service hooks.

GitHub API docs: https://developer.github.com/webhooks/#services
package github
import (
	"bytes"
	"context"
	"fmt"
	"net/url"
)
type MarkdownOptions struct {
	Mode string
	Context string
}
type markdownRequest struct {
	Text    *string `json:"text,omitempty"`
	Mode    *string `json:"mode,omitempty"`
	Context *string `json:"context,omitempty"`
}
func (c *Client) Markdown(ctx context.Context, text string, opt *MarkdownOptions) (string, *Response, error) {
	request := &markdownRequest{Text: String(text)}
	if opt != nil {
		if opt.Mode != "" {
			request.Mode = String(opt.Mode)
		}
		if opt.Context != "" {
			request.Context = String(opt.Context)
		}
	}
	req, err := c.NewRequest("POST", "markdown", request)
	if err != nil {
		return "", nil, err
	}
	buf := new(bytes.Buffer)
	resp, err := c.Do(ctx, req, buf)
	if err != nil {
		return "", resp, err
	}
	return buf.String(), resp, nil
}
func (c *Client) ListEmojis(ctx context.Context) (map[string]string, *Response, error) {
	req, err := c.NewRequest("GET", "emojis", nil)
	if err != nil {
		return nil, nil, err
	}
	var emoji map[string]string
	resp, err := c.Do(ctx, req, &emoji)
	if err != nil {
		return nil, resp, err
	}
	return emoji, resp, nil
}
type CodeOfConduct struct {
	Name *string `json:"name,omitempty"`
	Key  *string `json:"key,omitempty"`
	URL  *string `json:"url,omitempty"`
	Body *string `json:"body,omitempty"`
}
func (c *CodeOfConduct) String() string {
	return Stringify(c)
}
func (c *Client) ListCodesOfConduct(ctx context.Context) ([]*CodeOfConduct, *Response, error) {
	req, err := c.NewRequest("GET", "codes_of_conduct", nil)
	if err != nil {
		return nil, nil, err
	}
	req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
	var cs []*CodeOfConduct
	resp, err := c.Do(ctx, req, &cs)
	if err != nil {
		return nil, resp, err
	}
	return cs, resp, nil
}
func (c *Client) GetCodeOfConduct(ctx context.Context, key string) (*CodeOfConduct, *Response, error) {
	u := fmt.Sprintf("codes_of_conduct/%s", key)
	req, err := c.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}
	req.Header.Set("Accept", mediaTypeCodesOfConductPreview)
	coc := new(CodeOfConduct)
	resp, err := c.Do(ctx, req, coc)
	if err != nil {
		return nil, resp, err
	}
	return coc, resp, nil
}
type APIMeta struct {
	Hooks []string `json:"hooks,omitempty"`
	Git []string `json:"git,omitempty"`
	VerifiablePasswordAuthentication *bool `json:"verifiable_password_authentication,omitempty"`
	Pages []string `json:"pages,omitempty"`
	Importer []string `json:"importer,omitempty"`
}
func (c *Client) APIMeta(ctx context.Context) (*APIMeta, *Response, error) {
	req, err := c.NewRequest("GET", "meta", nil)
	if err != nil {
		return nil, nil, err
	}
	meta := new(APIMeta)
	resp, err := c.Do(ctx, req, meta)
	if err != nil {
		return nil, resp, err
	}
	return meta, resp, nil
}
func (c *Client) Octocat(ctx context.Context, message string) (string, *Response, error) {
	u := "octocat"
	if message != "" {
		u = fmt.Sprintf("%s?s=%s", u, url.QueryEscape(message))
	}
	req, err := c.NewRequest("GET", u, nil)
	if err != nil {
		return "", nil, err
	}
	buf := new(bytes.Buffer)
	resp, err := c.Do(ctx, req, buf)
	if err != nil {
		return "", resp, err
	}
	return buf.String(), resp, nil
}
func (c *Client) Zen(ctx context.Context) (string, *Response, error) {
	req, err := c.NewRequest("GET", "zen", nil)
	if err != nil {
		return "", nil, err
	}
	buf := new(bytes.Buffer)
	resp, err := c.Do(ctx, req, buf)
	if err != nil {
		return "", resp, err
	}
	return buf.String(), resp, nil
}
type ServiceHook struct {
	Name            *string    `json:"name,omitempty"`
	Events          []string   `json:"events,omitempty"`
	SupportedEvents []string   `json:"supported_events,omitempty"`
	Schema          [][]string `json:"schema,omitempty"`
}
func (s *ServiceHook) String() string {
	return Stringify(s)
}