func (c *ChangesCreateCall) Do(opts ...googleapi.CallOption) (*Change, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, &googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		}
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, err
	}
	ret := &Change{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	if err := json.NewDecoder(res.Body).Decode(target); err != nil {
		return nil, err
	}
	return ret, nil
}
Do executes the "dns.changes.create" call.
Exactly one of *Change or error will be non-nil. Any non-2xx status
code is an error. Response headers are in either
*Change.ServerResponse.Header or (if a response was returned at all)
in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
check whether the returned error was because http.StatusNotModified
was returned.
package dns  
import (
	"bytes"
	"encoding/json"
	"errors"
	"fmt"
	context "golang.org/x/net/context"
	ctxhttp "golang.org/x/net/context/ctxhttp"
	gensupport "google.golang.org/api/gensupport"
	googleapi "google.golang.org/api/googleapi"
	"io"
	"net/http"
	"net/url"
	"strconv"
	"strings"
)
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = ctxhttp.Do
const apiId = "dns:v1"
const apiName = "dns"
const apiVersion = "v1"
const basePath = "https://www.googleapis.com/dns/v1/projects/"
const (
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"
	NdevClouddnsReadonlyScope = "https://www.googleapis.com/auth/ndev.clouddns.readonly"
	NdevClouddnsReadwriteScope = "https://www.googleapis.com/auth/ndev.clouddns.readwrite"
)
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	s := &Service{client: client, BasePath: basePath}
	s.Changes = NewChangesService(s)
	s.ManagedZones = NewManagedZonesService(s)
	s.Projects = NewProjectsService(s)
	s.ResourceRecordSets = NewResourceRecordSetsService(s)
	return s, nil
}
type Service struct {
	client    *http.Client
	BasePath  string  
	UserAgent string  
	Changes *ChangesService
	ManagedZones *ManagedZonesService
	Projects *ProjectsService
	ResourceRecordSets *ResourceRecordSetsService
}
func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}
func NewChangesService(s *Service) *ChangesService {
	rs := &ChangesService{s: s}
	return rs
}
type ChangesService struct {
	s *Service
}
func NewManagedZonesService(s *Service) *ManagedZonesService {
	rs := &ManagedZonesService{s: s}
	return rs
}
type ManagedZonesService struct {
	s *Service
}
func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	return rs
}
type ProjectsService struct {
	s *Service
}
func NewResourceRecordSetsService(s *Service) *ResourceRecordSetsService {
	rs := &ResourceRecordSetsService{s: s}
	return rs
}
type ResourceRecordSetsService struct {
	s *Service
}
type Change struct {
	Additions []*ResourceRecordSet `json:"additions,omitempty"`
	Deletions []*ResourceRecordSet `json:"deletions,omitempty"`
	Id string `json:"id,omitempty"`
	Kind string `json:"kind,omitempty"`
	StartTime string `json:"startTime,omitempty"`
	Status string `json:"status,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *Change) MarshalJSON() ([]byte, error) {
	type noMethod Change
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ChangesListResponse struct {
	Changes []*Change `json:"changes,omitempty"`
	Kind string `json:"kind,omitempty"`
	NextPageToken string `json:"nextPageToken,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *ChangesListResponse) MarshalJSON() ([]byte, error) {
	type noMethod ChangesListResponse
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ManagedZone struct {
	CreationTime string `json:"creationTime,omitempty"`
	Description string `json:"description,omitempty"`
	DnsName string `json:"dnsName,omitempty"`
	Id uint64 `json:"id,omitempty,string"`
	Kind string `json:"kind,omitempty"`
	Name string `json:"name,omitempty"`
	NameServerSet string `json:"nameServerSet,omitempty"`
	NameServers []string `json:"nameServers,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *ManagedZone) MarshalJSON() ([]byte, error) {
	type noMethod ManagedZone
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ManagedZonesListResponse struct {
	Kind string `json:"kind,omitempty"`
	ManagedZones []*ManagedZone `json:"managedZones,omitempty"`
	NextPageToken string `json:"nextPageToken,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *ManagedZonesListResponse) MarshalJSON() ([]byte, error) {
	type noMethod ManagedZonesListResponse
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type Project struct {
	Id string `json:"id,omitempty"`
	Kind string `json:"kind,omitempty"`
	Number uint64 `json:"number,omitempty,string"`
	Quota *Quota `json:"quota,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *Project) MarshalJSON() ([]byte, error) {
	type noMethod Project
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type Quota struct {
	Kind string `json:"kind,omitempty"`
	ManagedZones int64 `json:"managedZones,omitempty"`
	ResourceRecordsPerRrset int64 `json:"resourceRecordsPerRrset,omitempty"`
	RrsetAdditionsPerChange int64 `json:"rrsetAdditionsPerChange,omitempty"`
	RrsetDeletionsPerChange int64 `json:"rrsetDeletionsPerChange,omitempty"`
	RrsetsPerManagedZone int64 `json:"rrsetsPerManagedZone,omitempty"`
	TotalRrdataSizePerChange int64 `json:"totalRrdataSizePerChange,omitempty"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *Quota) MarshalJSON() ([]byte, error) {
	type noMethod Quota
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ResourceRecordSet struct {
	Kind string `json:"kind,omitempty"`
	Name string `json:"name,omitempty"`
	Rrdatas []string `json:"rrdatas,omitempty"`
	Ttl int64 `json:"ttl,omitempty"`
	Type string `json:"type,omitempty"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *ResourceRecordSet) MarshalJSON() ([]byte, error) {
	type noMethod ResourceRecordSet
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ResourceRecordSetsListResponse struct {
	Kind string `json:"kind,omitempty"`
	NextPageToken string `json:"nextPageToken,omitempty"`
	Rrsets []*ResourceRecordSet `json:"rrsets,omitempty"`
	googleapi.ServerResponse `json:"-"`
	ForceSendFields []string `json:"-"`
	NullFields []string `json:"-"`
}
func (s *ResourceRecordSetsListResponse) MarshalJSON() ([]byte, error) {
	type noMethod ResourceRecordSetsListResponse
	raw := noMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
type ChangesCreateCall struct {
	s           *Service
	project     string
	managedZone string
	change      *Change
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}
func (r *ChangesService) Create(project string, managedZone string, change *Change) *ChangesCreateCall {
	c := &ChangesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.project = project
	c.managedZone = managedZone
	c.change = change
	return c
}
func (c *ChangesCreateCall) Fields(s ...googleapi.Field) *ChangesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}
func (c *ChangesCreateCall) Context(ctx context.Context) *ChangesCreateCall {
	c.ctx_ = ctx
	return c
}
func (c *ChangesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}
func (c *ChangesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.change)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/managedZones/{managedZone}/changes")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"project":     c.project,
		"managedZone": c.managedZone,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}