func (z *ZonesService) Notify(ctx context.Context, domain string) (*NotifyResult, error) {
	req, err := z.client.newRequest(ctx, "PUT", fmt.Sprintf("servers/%s/zones/%s/notify", z.client.VHost, trimDomain(domain)), nil, nil)
	if err != nil {
		return nil, err
	}
	notifyResult := &NotifyResult{}
	_, err = z.client.do(req, notifyResult)
	return notifyResult, err
}
Notify sends a DNS notify packet to all slaves
package powerdns
import (
	"context"
	"fmt"
	"io/ioutil"
)
type ZonesService service
type Zone struct {
	ID               *string   `json:"id,omitempty"`
	Name             *string   `json:"name,omitempty"`
	Type             *ZoneType `json:"type,omitempty"`
	URL              *string   `json:"url,omitempty"`
	Kind             *ZoneKind `json:"kind,omitempty"`
	RRsets           []RRset   `json:"rrsets,omitempty"`
	Serial           *uint32   `json:"serial,omitempty"`
	NotifiedSerial   *uint32   `json:"notified_serial,omitempty"`
	Masters          []string  `json:"masters,omitempty"`
	DNSsec           *bool     `json:"dnssec,omitempty"`
	Nsec3Param       *string   `json:"nsec3param,omitempty"`
	Nsec3Narrow      *bool     `json:"nsec3narrow,omitempty"`
	Presigned        *bool     `json:"presigned,omitempty"`
	SOAEdit          *string   `json:"soa_edit,omitempty"`
	SOAEditAPI       *string   `json:"soa_edit_api,omitempty"`
	APIRectify       *bool     `json:"api_rectify,omitempty"`
	Zone             *string   `json:"zone,omitempty"`
	Account          *string   `json:"account,omitempty"`
	Nameservers      []string  `json:"nameservers,omitempty"`
	MasterTSIGKeyIDs []string  `json:"master_tsig_key_ids,omitempty"`
	SlaveTSIGKeyIDs  []string  `json:"slave_tsig_key_ids,omitempty"`
}
type NotifyResult struct {
	Result *string `json:"result,omitempty"`
}
type Export string
type ZoneType string
const ZoneZoneType ZoneType = "Zone"
func ZoneTypePtr(v ZoneType) *ZoneType {
	return &v
}
type ZoneKind string
func ZoneKindPtr(v ZoneKind) *ZoneKind {
	return &v
}
const (
	NativeZoneKind ZoneKind = "Native"
	MasterZoneKind ZoneKind = "Master"
	SlaveZoneKind ZoneKind = "Slave"
)
func (z *ZonesService) List(ctx context.Context) ([]Zone, error) {
	req, err := z.client.newRequest(ctx, "GET", fmt.Sprintf("servers/%s/zones", z.client.VHost), nil, nil)
	if err != nil {
		return nil, err
	}
	zones := make([]Zone, 0)
	_, err = z.client.do(req, &zones)
	return zones, err
}
func (z *ZonesService) Get(ctx context.Context, domain string) (*Zone, error) {
	req, err := z.client.newRequest(ctx, "GET", fmt.Sprintf("servers/%s/zones/%s", z.client.VHost, trimDomain(domain)), nil, nil)
	if err != nil {
		return nil, err
	}
	zone := &Zone{}
	_, err = z.client.do(req, &zone)
	return zone, err
}
func (z *ZonesService) AddNative(ctx context.Context, domain string, dnssec bool, nsec3Param string, nsec3Narrow bool, soaEdit, soaEditApi string, apiRectify bool, nameservers []string) (*Zone, error) {
	zone := Zone{
		Name:        String(domain),
		Kind:        ZoneKindPtr(NativeZoneKind),
		DNSsec:      Bool(dnssec),
		SOAEdit:     String(soaEdit),
		SOAEditAPI:  String(soaEditApi),
		APIRectify:  Bool(apiRectify),
		Nameservers: nameservers,
	}
	if dnssec {
		zone.Nsec3Param = String(nsec3Param)
		zone.Nsec3Narrow = Bool(nsec3Narrow)
	}
	return z.postZone(ctx, &zone)
}
func (z *ZonesService) AddMaster(ctx context.Context, domain string, dnssec bool, nsec3Param string, nsec3Narrow bool, soaEdit, soaEditApi string, apiRectify bool, nameservers []string) (*Zone, error) {
	zone := Zone{
		Name:        String(domain),
		Kind:        ZoneKindPtr(MasterZoneKind),
		DNSsec:      Bool(dnssec),
		SOAEdit:     String(soaEdit),
		SOAEditAPI:  String(soaEditApi),
		APIRectify:  Bool(apiRectify),
		Nameservers: nameservers,
	}
	if dnssec {
		zone.Nsec3Param = String(nsec3Param)
		zone.Nsec3Narrow = Bool(nsec3Narrow)
	}
	return z.postZone(ctx, &zone)
}
func (z *ZonesService) AddSlave(ctx context.Context, domain string, masters []string) (*Zone, error) {
	zone := Zone{
		Name:    String(domain),
		Kind:    ZoneKindPtr(SlaveZoneKind),
		Masters: masters,
	}
	return z.postZone(ctx, &zone)
}
func (z *ZonesService) Add(ctx context.Context, zone *Zone) (*Zone, error) {
	return z.postZone(ctx, zone)
}
func (z *ZonesService) postZone(ctx context.Context, zone *Zone) (*Zone, error) {
	zone.Name = String(makeDomainCanonical(*zone.Name))
	zone.Type = ZoneTypePtr(ZoneZoneType)
	req, err := z.client.newRequest(ctx, "POST", fmt.Sprintf("servers/%s/zones", z.client.VHost), nil, zone)
	if err != nil {
		return nil, err
	}
	createdZone := new(Zone)
	_, err = z.client.do(req, &createdZone)
	return createdZone, err
}
func (z *ZonesService) Change(ctx context.Context, domain string, zone *Zone) error {
	zone.ID = nil
	zone.Name = nil
	zone.Type = nil
	zone.URL = nil
	req, err := z.client.newRequest(ctx, "PUT", fmt.Sprintf("servers/%s/zones/%s", z.client.VHost, trimDomain(domain)), nil, zone)
	if err != nil {
		return err
	}
	_, err = z.client.do(req, nil)
	return err
}
func (z *ZonesService) Delete(ctx context.Context, domain string) error {
	req, err := z.client.newRequest(ctx, "DELETE", fmt.Sprintf("servers/%s/zones/%s", z.client.VHost, trimDomain(domain)), nil, nil)
	if err != nil {
		return err
	}
	_, err = z.client.do(req, nil)
	return err
}