diff --git a/ionosDnsClient.go b/ionosDnsClient.go new file mode 100644 index 0000000..603e746 --- /dev/null +++ b/ionosDnsClient.go @@ -0,0 +1,2143 @@ +// Package ionosDnsClient provides primitives to interact with the openapi HTTP API. +// +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. +package ionosDnsClient + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "strings" + + "github.com/oapi-codegen/runtime" +) + +const ( + ApiKeyAuthScopes = "ApiKeyAuth.Scopes" +) + +// Defines values for RecordTypes. +const ( + A RecordTypes = "A" + AAAA RecordTypes = "AAAA" + CAA RecordTypes = "CAA" + CERT RecordTypes = "CERT" + CNAME RecordTypes = "CNAME" + DS RecordTypes = "DS" + HTTPS RecordTypes = "HTTPS" + LOC RecordTypes = "LOC" + MX RecordTypes = "MX" + NS RecordTypes = "NS" + OPENPGPKEY RecordTypes = "OPENPGPKEY" + RP RecordTypes = "RP" + SMIMEA RecordTypes = "SMIMEA" + SOA RecordTypes = "SOA" + SRV RecordTypes = "SRV" + SSHFP RecordTypes = "SSHFP" + SVCB RecordTypes = "SVCB" + TLSA RecordTypes = "TLSA" + TXT RecordTypes = "TXT" + URI RecordTypes = "URI" +) + +// Defines values for ZoneTypes. +const ( + NATIVE ZoneTypes = "NATIVE" + SLAVE ZoneTypes = "SLAVE" +) + +// CustomerZone defines model for customer-zone. +type CustomerZone struct { + // Id The zone id. + Id *string `json:"id,omitempty"` + + // Name The zone name + Name *string `json:"name,omitempty"` + Records *[]RecordResponse `json:"records,omitempty"` + + // Type Represents the possible zone types. + Type *ZoneTypes `json:"type,omitempty"` +} + +// DynDnsRequest defines model for dyn-dns-request. +type DynDnsRequest struct { + // Description Dynamic Dns description. + Description *string `json:"description,omitempty"` + Domains []string `json:"domains"` +} + +// DynamicDns defines model for dynamic-dns. +type DynamicDns struct { + // BulkId DynDns configuration identifier. + BulkId *string `json:"bulkId,omitempty"` + + // Description Dynamic Dns description. + Description *string `json:"description,omitempty"` + Domains *[]string `json:"domains,omitempty"` + + // UpdateUrl Use the url with GET to update the ips of (sub)domains. Query parameters: ipv4, ipv6. + UpdateUrl *string `json:"updateUrl,omitempty"` +} + +// Error defines model for error. +type Error struct { + // Code The error code. + Code *string `json:"code,omitempty"` + + // Message The error message. + Message *string `json:"message,omitempty"` +} + +// Errors defines model for errors. +type Errors = []struct { + ErrorRecord *Record `json:"errorRecord,omitempty"` + InputRecord *Record `json:"inputRecord,omitempty"` + Invalid *[]string `json:"invalid,omitempty"` + InvalidFields *[]string `json:"invalidFields,omitempty"` + RequiredFields *[]string `json:"requiredFields,omitempty"` +} + +// Record defines model for record. +type Record struct { + Content *string `json:"content,omitempty"` + + // Disabled When is true, the record is not visible for lookup. + Disabled *bool `json:"disabled,omitempty"` + Name *string `json:"name,omitempty"` + Prio *int `json:"prio,omitempty"` + + // Ttl Time to live for the record, recommended 3600. + Ttl *int `json:"ttl,omitempty"` + + // Type Holds supported dns record types. + Type *RecordTypes `json:"type,omitempty"` +} + +// RecordResponse defines model for record-response. +type RecordResponse struct { + // ChangeDate The date of the last change formatted as yyyy-MM-dd'T'HH:mm:ss.SSS'Z' + ChangeDate *string `json:"changeDate,omitempty"` + Content *string `json:"content,omitempty"` + + // Disabled When is true, the record is not visible for lookup. + Disabled *bool `json:"disabled,omitempty"` + Id *string `json:"id,omitempty"` + Name *string `json:"name,omitempty"` + Prio *int `json:"prio,omitempty"` + + // RootName Root zone name. + RootName *string `json:"rootName,omitempty"` + + // Ttl Time to live for the record, recommended 3600. + Ttl *int `json:"ttl,omitempty"` + + // Type Holds supported dns record types. + Type *RecordTypes `json:"type,omitempty"` +} + +// RecordUpdate defines model for record-update. +type RecordUpdate struct { + Content *string `json:"content,omitempty"` + + // Disabled When is true, the record is not visible for lookup. + Disabled *bool `json:"disabled,omitempty"` + Prio *int `json:"prio,omitempty"` + + // Ttl Time to live for the record, recommended 3600. + Ttl *int `json:"ttl,omitempty"` +} + +// RecordTypes Holds supported dns record types. +type RecordTypes string + +// Zone defines model for zone. +type Zone struct { + // Id The zone id. + Id *string `json:"id,omitempty"` + + // Name The zone name. + Name *string `json:"name,omitempty"` + + // Type Represents the possible zone types. + Type *ZoneTypes `json:"type,omitempty"` +} + +// ZoneTypes Represents the possible zone types. +type ZoneTypes string + +// GetZoneParams defines parameters for GetZone. +type GetZoneParams struct { + // Suffix The FQDN used to filter all the record names that end with it. + Suffix *string `form:"suffix,omitempty" json:"suffix,omitempty"` + + // RecordName The record names that should be included (same as name field of Record) + RecordName *string `form:"recordName,omitempty" json:"recordName,omitempty"` + + // RecordType A comma-separated list of record types that should be included + RecordType *string `form:"recordType,omitempty" json:"recordType,omitempty"` +} + +// PatchZoneJSONBody defines parameters for PatchZone. +type PatchZoneJSONBody = []Record + +// UpdateZoneJSONBody defines parameters for UpdateZone. +type UpdateZoneJSONBody = []Record + +// CreateRecordsJSONBody defines parameters for CreateRecords. +type CreateRecordsJSONBody = []Record + +// ActivateDynDnsJSONRequestBody defines body for ActivateDynDns for application/json ContentType. +type ActivateDynDnsJSONRequestBody = DynDnsRequest + +// UpdateDynDnsJSONRequestBody defines body for UpdateDynDns for application/json ContentType. +type UpdateDynDnsJSONRequestBody = DynDnsRequest + +// PatchZoneJSONRequestBody defines body for PatchZone for application/json ContentType. +type PatchZoneJSONRequestBody = PatchZoneJSONBody + +// UpdateZoneJSONRequestBody defines body for UpdateZone for application/json ContentType. +type UpdateZoneJSONRequestBody = UpdateZoneJSONBody + +// CreateRecordsJSONRequestBody defines body for CreateRecords for application/json ContentType. +type CreateRecordsJSONRequestBody = CreateRecordsJSONBody + +// UpdateRecordJSONRequestBody defines body for UpdateRecord for application/json ContentType. +type UpdateRecordJSONRequestBody = RecordUpdate + +// RequestEditorFn is the function signature for the RequestEditor callback function +type RequestEditorFn func(ctx context.Context, req *http.Request) error + +// Doer performs HTTP requests. +// +// The standard http.Client implements this interface. +type HttpRequestDoer interface { + Do(req *http.Request) (*http.Response, error) +} + +// Client which conforms to the OpenAPI3 specification for this service. +type Client struct { + // The endpoint of the server conforming to this interface, with scheme, + // https://api.deepmap.com for example. This can contain a path relative + // to the server, such as https://api.deepmap.com/dev-test, and all the + // paths in the swagger spec will be appended to the server. + Server string + + // Doer for performing requests, typically a *http.Client with any + // customized settings, such as certificate chains. + Client HttpRequestDoer + + // A list of callbacks for modifying requests which are generated before sending over + // the network. + RequestEditors []RequestEditorFn +} + +// ClientOption allows setting custom parameters during construction +type ClientOption func(*Client) error + +// Creates a new Client, with reasonable defaults +func NewClient(server string, opts ...ClientOption) (*Client, error) { + // create a client with sane default values + client := Client{ + Server: server, + } + // mutate client and add all optional params + for _, o := range opts { + if err := o(&client); err != nil { + return nil, err + } + } + // ensure the server URL always has a trailing slash + if !strings.HasSuffix(client.Server, "/") { + client.Server += "/" + } + // create httpClient, if not already present + if client.Client == nil { + client.Client = &http.Client{} + } + return &client, nil +} + +// WithHTTPClient allows overriding the default Doer, which is +// automatically created using http.Client. This is useful for tests. +func WithHTTPClient(doer HttpRequestDoer) ClientOption { + return func(c *Client) error { + c.Client = doer + return nil + } +} + +// WithRequestEditorFn allows setting up a callback function, which will be +// called right before sending the request. This can be used to mutate the request. +func WithRequestEditorFn(fn RequestEditorFn) ClientOption { + return func(c *Client) error { + c.RequestEditors = append(c.RequestEditors, fn) + return nil + } +} + +// The interface specification for the client above. +type ClientInterface interface { + // DisableDynDns request + DisableDynDns(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ActivateDynDnsWithBody request with any body + ActivateDynDnsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + ActivateDynDns(ctx context.Context, body ActivateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteDynDns request + DeleteDynDns(ctx context.Context, bulkId string, reqEditors ...RequestEditorFn) (*http.Response, error) + + // UpdateDynDnsWithBody request with any body + UpdateDynDnsWithBody(ctx context.Context, bulkId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + UpdateDynDns(ctx context.Context, bulkId string, body UpdateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetZones request + GetZones(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetZone request + GetZone(ctx context.Context, zoneId string, params *GetZoneParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // PatchZoneWithBody request with any body + PatchZoneWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + PatchZone(ctx context.Context, zoneId string, body PatchZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // UpdateZoneWithBody request with any body + UpdateZoneWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + UpdateZone(ctx context.Context, zoneId string, body UpdateZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // CreateRecordsWithBody request with any body + CreateRecordsWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CreateRecords(ctx context.Context, zoneId string, body CreateRecordsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // DeleteRecord request + DeleteRecord(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GetRecord request + GetRecord(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*http.Response, error) + + // UpdateRecordWithBody request with any body + UpdateRecordWithBody(ctx context.Context, zoneId string, recordId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + UpdateRecord(ctx context.Context, zoneId string, recordId string, body UpdateRecordJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) +} + +func (c *Client) DisableDynDns(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDisableDynDnsRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) ActivateDynDnsWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewActivateDynDnsRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) ActivateDynDns(ctx context.Context, body ActivateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewActivateDynDnsRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) DeleteDynDns(ctx context.Context, bulkId string, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteDynDnsRequest(c.Server, bulkId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateDynDnsWithBody(ctx context.Context, bulkId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateDynDnsRequestWithBody(c.Server, bulkId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateDynDns(ctx context.Context, bulkId string, body UpdateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateDynDnsRequest(c.Server, bulkId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetZones(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetZonesRequest(c.Server) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetZone(ctx context.Context, zoneId string, params *GetZoneParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetZoneRequest(c.Server, zoneId, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchZoneWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchZoneRequestWithBody(c.Server, zoneId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) PatchZone(ctx context.Context, zoneId string, body PatchZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewPatchZoneRequest(c.Server, zoneId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateZoneWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateZoneRequestWithBody(c.Server, zoneId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateZone(ctx context.Context, zoneId string, body UpdateZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateZoneRequest(c.Server, zoneId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateRecordsWithBody(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateRecordsRequestWithBody(c.Server, zoneId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CreateRecords(ctx context.Context, zoneId string, body CreateRecordsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCreateRecordsRequest(c.Server, zoneId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) DeleteRecord(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteRecordRequest(c.Server, zoneId, recordId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GetRecord(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetRecordRequest(c.Server, zoneId, recordId) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateRecordWithBody(ctx context.Context, zoneId string, recordId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateRecordRequestWithBody(c.Server, zoneId, recordId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) UpdateRecord(ctx context.Context, zoneId string, recordId string, body UpdateRecordJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewUpdateRecordRequest(c.Server, zoneId, recordId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +// NewDisableDynDnsRequest generates requests for DisableDynDns +func NewDisableDynDnsRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/dyndns") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewActivateDynDnsRequest calls the generic ActivateDynDns builder with application/json body +func NewActivateDynDnsRequest(server string, body ActivateDynDnsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewActivateDynDnsRequestWithBody(server, "application/json", bodyReader) +} + +// NewActivateDynDnsRequestWithBody generates requests for ActivateDynDns with any type of body +func NewActivateDynDnsRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/dyndns") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteDynDnsRequest generates requests for DeleteDynDns +func NewDeleteDynDnsRequest(server string, bulkId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bulkId", runtime.ParamLocationPath, bulkId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/dyndns/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateDynDnsRequest calls the generic UpdateDynDns builder with application/json body +func NewUpdateDynDnsRequest(server string, bulkId string, body UpdateDynDnsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateDynDnsRequestWithBody(server, bulkId, "application/json", bodyReader) +} + +// NewUpdateDynDnsRequestWithBody generates requests for UpdateDynDns with any type of body +func NewUpdateDynDnsRequestWithBody(server string, bulkId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "bulkId", runtime.ParamLocationPath, bulkId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/dyndns/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetZonesRequest generates requests for GetZones +func NewGetZonesRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetZoneRequest generates requests for GetZone +func NewGetZoneRequest(server string, zoneId string, params *GetZoneParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if params.Suffix != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "suffix", runtime.ParamLocationQuery, *params.Suffix); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.RecordName != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "recordName", runtime.ParamLocationQuery, *params.RecordName); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + if params.RecordType != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "recordType", runtime.ParamLocationQuery, *params.RecordType); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewPatchZoneRequest calls the generic PatchZone builder with application/json body +func NewPatchZoneRequest(server string, zoneId string, body PatchZoneJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewPatchZoneRequestWithBody(server, zoneId, "application/json", bodyReader) +} + +// NewPatchZoneRequestWithBody generates requests for PatchZone with any type of body +func NewPatchZoneRequestWithBody(server string, zoneId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PATCH", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewUpdateZoneRequest calls the generic UpdateZone builder with application/json body +func NewUpdateZoneRequest(server string, zoneId string, body UpdateZoneJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateZoneRequestWithBody(server, zoneId, "application/json", bodyReader) +} + +// NewUpdateZoneRequestWithBody generates requests for UpdateZone with any type of body +func NewUpdateZoneRequestWithBody(server string, zoneId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewCreateRecordsRequest calls the generic CreateRecords builder with application/json body +func NewCreateRecordsRequest(server string, zoneId string, body CreateRecordsJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateRecordsRequestWithBody(server, zoneId, "application/json", bodyReader) +} + +// NewCreateRecordsRequestWithBody generates requests for CreateRecords with any type of body +func NewCreateRecordsRequestWithBody(server string, zoneId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s/records", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewDeleteRecordRequest generates requests for DeleteRecord +func NewDeleteRecordRequest(server string, zoneId string, recordId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "recordId", runtime.ParamLocationPath, recordId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s/records/%s", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("DELETE", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewGetRecordRequest generates requests for GetRecord +func NewGetRecordRequest(server string, zoneId string, recordId string) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "recordId", runtime.ParamLocationPath, recordId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s/records/%s", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateRecordRequest calls the generic UpdateRecord builder with application/json body +func NewUpdateRecordRequest(server string, zoneId string, recordId string, body UpdateRecordJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateRecordRequestWithBody(server, zoneId, recordId, "application/json", bodyReader) +} + +// NewUpdateRecordRequestWithBody generates requests for UpdateRecord with any type of body +func NewUpdateRecordRequestWithBody(server string, zoneId string, recordId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "zoneId", runtime.ParamLocationPath, zoneId) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithLocation("simple", false, "recordId", runtime.ParamLocationPath, recordId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/zones/%s/records/%s", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("PUT", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { + for _, r := range c.RequestEditors { + if err := r(ctx, req); err != nil { + return err + } + } + for _, r := range additionalEditors { + if err := r(ctx, req); err != nil { + return err + } + } + return nil +} + +// ClientWithResponses builds on ClientInterface to offer response payloads +type ClientWithResponses struct { + ClientInterface +} + +// NewClientWithResponses creates a new ClientWithResponses, which wraps +// Client with return type handling +func NewClientWithResponses(server string, opts ...ClientOption) (*ClientWithResponses, error) { + client, err := NewClient(server, opts...) + if err != nil { + return nil, err + } + return &ClientWithResponses{client}, nil +} + +// WithBaseURL overrides the baseURL. +func WithBaseURL(baseURL string) ClientOption { + return func(c *Client) error { + newBaseURL, err := url.Parse(baseURL) + if err != nil { + return err + } + c.Server = newBaseURL.String() + return nil + } +} + +// ClientWithResponsesInterface is the interface specification for the client with responses above. +type ClientWithResponsesInterface interface { + // DisableDynDnsWithResponse request + DisableDynDnsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*DisableDynDnsResponse, error) + + // ActivateDynDnsWithBodyWithResponse request with any body + ActivateDynDnsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ActivateDynDnsResponse, error) + + ActivateDynDnsWithResponse(ctx context.Context, body ActivateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*ActivateDynDnsResponse, error) + + // DeleteDynDnsWithResponse request + DeleteDynDnsWithResponse(ctx context.Context, bulkId string, reqEditors ...RequestEditorFn) (*DeleteDynDnsResponse, error) + + // UpdateDynDnsWithBodyWithResponse request with any body + UpdateDynDnsWithBodyWithResponse(ctx context.Context, bulkId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateDynDnsResponse, error) + + UpdateDynDnsWithResponse(ctx context.Context, bulkId string, body UpdateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateDynDnsResponse, error) + + // GetZonesWithResponse request + GetZonesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetZonesResponse, error) + + // GetZoneWithResponse request + GetZoneWithResponse(ctx context.Context, zoneId string, params *GetZoneParams, reqEditors ...RequestEditorFn) (*GetZoneResponse, error) + + // PatchZoneWithBodyWithResponse request with any body + PatchZoneWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchZoneResponse, error) + + PatchZoneWithResponse(ctx context.Context, zoneId string, body PatchZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchZoneResponse, error) + + // UpdateZoneWithBodyWithResponse request with any body + UpdateZoneWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateZoneResponse, error) + + UpdateZoneWithResponse(ctx context.Context, zoneId string, body UpdateZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateZoneResponse, error) + + // CreateRecordsWithBodyWithResponse request with any body + CreateRecordsWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateRecordsResponse, error) + + CreateRecordsWithResponse(ctx context.Context, zoneId string, body CreateRecordsJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateRecordsResponse, error) + + // DeleteRecordWithResponse request + DeleteRecordWithResponse(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*DeleteRecordResponse, error) + + // GetRecordWithResponse request + GetRecordWithResponse(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*GetRecordResponse, error) + + // UpdateRecordWithBodyWithResponse request with any body + UpdateRecordWithBodyWithResponse(ctx context.Context, zoneId string, recordId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateRecordResponse, error) + + UpdateRecordWithResponse(ctx context.Context, zoneId string, recordId string, body UpdateRecordJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateRecordResponse, error) +} + +type DisableDynDnsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r DisableDynDnsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DisableDynDnsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type ActivateDynDnsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *DynamicDns + JSON400 *[]Error + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r ActivateDynDnsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ActivateDynDnsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteDynDnsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r DeleteDynDnsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteDynDnsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateDynDnsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *[]Error + JSON401 *[]Error + JSON403 *[]Error + JSON404 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r UpdateDynDnsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateDynDnsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetZonesResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]Zone + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r GetZonesResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetZonesResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetZoneResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *CustomerZone + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r GetZoneResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetZoneResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type PatchZoneResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *[]Errors + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r PatchZoneResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r PatchZoneResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateZoneResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *[]Errors + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r UpdateZoneResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateZoneResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type CreateRecordsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON201 *[]RecordResponse + JSON400 *[]Error + JSON401 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r CreateRecordsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CreateRecordsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type DeleteRecordResponse struct { + Body []byte + HTTPResponse *http.Response + JSON401 *[]Error + JSON404 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r DeleteRecordResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r DeleteRecordResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type GetRecordResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *RecordResponse + JSON401 *[]Error + JSON404 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r GetRecordResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetRecordResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +type UpdateRecordResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *RecordResponse + JSON400 *[]Errors + JSON401 *[]Error + JSON404 *[]Error + JSON500 *[]Error +} + +// Status returns HTTPResponse.Status +func (r UpdateRecordResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateRecordResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// DisableDynDnsWithResponse request returning *DisableDynDnsResponse +func (c *ClientWithResponses) DisableDynDnsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*DisableDynDnsResponse, error) { + rsp, err := c.DisableDynDns(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseDisableDynDnsResponse(rsp) +} + +// ActivateDynDnsWithBodyWithResponse request with arbitrary body returning *ActivateDynDnsResponse +func (c *ClientWithResponses) ActivateDynDnsWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ActivateDynDnsResponse, error) { + rsp, err := c.ActivateDynDnsWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseActivateDynDnsResponse(rsp) +} + +func (c *ClientWithResponses) ActivateDynDnsWithResponse(ctx context.Context, body ActivateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*ActivateDynDnsResponse, error) { + rsp, err := c.ActivateDynDns(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseActivateDynDnsResponse(rsp) +} + +// DeleteDynDnsWithResponse request returning *DeleteDynDnsResponse +func (c *ClientWithResponses) DeleteDynDnsWithResponse(ctx context.Context, bulkId string, reqEditors ...RequestEditorFn) (*DeleteDynDnsResponse, error) { + rsp, err := c.DeleteDynDns(ctx, bulkId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteDynDnsResponse(rsp) +} + +// UpdateDynDnsWithBodyWithResponse request with arbitrary body returning *UpdateDynDnsResponse +func (c *ClientWithResponses) UpdateDynDnsWithBodyWithResponse(ctx context.Context, bulkId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateDynDnsResponse, error) { + rsp, err := c.UpdateDynDnsWithBody(ctx, bulkId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateDynDnsResponse(rsp) +} + +func (c *ClientWithResponses) UpdateDynDnsWithResponse(ctx context.Context, bulkId string, body UpdateDynDnsJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateDynDnsResponse, error) { + rsp, err := c.UpdateDynDns(ctx, bulkId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateDynDnsResponse(rsp) +} + +// GetZonesWithResponse request returning *GetZonesResponse +func (c *ClientWithResponses) GetZonesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetZonesResponse, error) { + rsp, err := c.GetZones(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetZonesResponse(rsp) +} + +// GetZoneWithResponse request returning *GetZoneResponse +func (c *ClientWithResponses) GetZoneWithResponse(ctx context.Context, zoneId string, params *GetZoneParams, reqEditors ...RequestEditorFn) (*GetZoneResponse, error) { + rsp, err := c.GetZone(ctx, zoneId, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetZoneResponse(rsp) +} + +// PatchZoneWithBodyWithResponse request with arbitrary body returning *PatchZoneResponse +func (c *ClientWithResponses) PatchZoneWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*PatchZoneResponse, error) { + rsp, err := c.PatchZoneWithBody(ctx, zoneId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchZoneResponse(rsp) +} + +func (c *ClientWithResponses) PatchZoneWithResponse(ctx context.Context, zoneId string, body PatchZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*PatchZoneResponse, error) { + rsp, err := c.PatchZone(ctx, zoneId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParsePatchZoneResponse(rsp) +} + +// UpdateZoneWithBodyWithResponse request with arbitrary body returning *UpdateZoneResponse +func (c *ClientWithResponses) UpdateZoneWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateZoneResponse, error) { + rsp, err := c.UpdateZoneWithBody(ctx, zoneId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateZoneResponse(rsp) +} + +func (c *ClientWithResponses) UpdateZoneWithResponse(ctx context.Context, zoneId string, body UpdateZoneJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateZoneResponse, error) { + rsp, err := c.UpdateZone(ctx, zoneId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateZoneResponse(rsp) +} + +// CreateRecordsWithBodyWithResponse request with arbitrary body returning *CreateRecordsResponse +func (c *ClientWithResponses) CreateRecordsWithBodyWithResponse(ctx context.Context, zoneId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateRecordsResponse, error) { + rsp, err := c.CreateRecordsWithBody(ctx, zoneId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateRecordsResponse(rsp) +} + +func (c *ClientWithResponses) CreateRecordsWithResponse(ctx context.Context, zoneId string, body CreateRecordsJSONRequestBody, reqEditors ...RequestEditorFn) (*CreateRecordsResponse, error) { + rsp, err := c.CreateRecords(ctx, zoneId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCreateRecordsResponse(rsp) +} + +// DeleteRecordWithResponse request returning *DeleteRecordResponse +func (c *ClientWithResponses) DeleteRecordWithResponse(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*DeleteRecordResponse, error) { + rsp, err := c.DeleteRecord(ctx, zoneId, recordId, reqEditors...) + if err != nil { + return nil, err + } + return ParseDeleteRecordResponse(rsp) +} + +// GetRecordWithResponse request returning *GetRecordResponse +func (c *ClientWithResponses) GetRecordWithResponse(ctx context.Context, zoneId string, recordId string, reqEditors ...RequestEditorFn) (*GetRecordResponse, error) { + rsp, err := c.GetRecord(ctx, zoneId, recordId, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetRecordResponse(rsp) +} + +// UpdateRecordWithBodyWithResponse request with arbitrary body returning *UpdateRecordResponse +func (c *ClientWithResponses) UpdateRecordWithBodyWithResponse(ctx context.Context, zoneId string, recordId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*UpdateRecordResponse, error) { + rsp, err := c.UpdateRecordWithBody(ctx, zoneId, recordId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateRecordResponse(rsp) +} + +func (c *ClientWithResponses) UpdateRecordWithResponse(ctx context.Context, zoneId string, recordId string, body UpdateRecordJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateRecordResponse, error) { + rsp, err := c.UpdateRecord(ctx, zoneId, recordId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseUpdateRecordResponse(rsp) +} + +// ParseDisableDynDnsResponse parses an HTTP response from a DisableDynDnsWithResponse call +func ParseDisableDynDnsResponse(rsp *http.Response) (*DisableDynDnsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DisableDynDnsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseActivateDynDnsResponse parses an HTTP response from a ActivateDynDnsWithResponse call +func ParseActivateDynDnsResponse(rsp *http.Response) (*ActivateDynDnsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ActivateDynDnsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest DynamicDns + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseDeleteDynDnsResponse parses an HTTP response from a DeleteDynDnsWithResponse call +func ParseDeleteDynDnsResponse(rsp *http.Response) (*DeleteDynDnsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteDynDnsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseUpdateDynDnsResponse parses an HTTP response from a UpdateDynDnsWithResponse call +func ParseUpdateDynDnsResponse(rsp *http.Response) (*UpdateDynDnsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &UpdateDynDnsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseGetZonesResponse parses an HTTP response from a GetZonesWithResponse call +func ParseGetZonesResponse(rsp *http.Response) (*GetZonesResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetZonesResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []Zone + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseGetZoneResponse parses an HTTP response from a GetZoneWithResponse call +func ParseGetZoneResponse(rsp *http.Response) (*GetZoneResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetZoneResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest CustomerZone + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParsePatchZoneResponse parses an HTTP response from a PatchZoneWithResponse call +func ParsePatchZoneResponse(rsp *http.Response) (*PatchZoneResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &PatchZoneResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Errors + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseUpdateZoneResponse parses an HTTP response from a UpdateZoneWithResponse call +func ParseUpdateZoneResponse(rsp *http.Response) (*UpdateZoneResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &UpdateZoneResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Errors + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseCreateRecordsResponse parses an HTTP response from a CreateRecordsWithResponse call +func ParseCreateRecordsResponse(rsp *http.Response) (*CreateRecordsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CreateRecordsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest []RecordResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseDeleteRecordResponse parses an HTTP response from a DeleteRecordWithResponse call +func ParseDeleteRecordResponse(rsp *http.Response) (*DeleteRecordResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &DeleteRecordResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseGetRecordResponse parses an HTTP response from a GetRecordWithResponse call +func ParseGetRecordResponse(rsp *http.Response) (*GetRecordResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetRecordResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest RecordResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + +// ParseUpdateRecordResponse parses an HTTP response from a UpdateRecordWithResponse call +func ParseUpdateRecordResponse(rsp *http.Response) (*UpdateRecordResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &UpdateRecordResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest RecordResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest []Errors + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest []Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} diff --git a/openapi_spec.yaml b/openapi_spec.yaml new file mode 100644 index 0000000..50bb6cb --- /dev/null +++ b/openapi_spec.yaml @@ -0,0 +1,1141 @@ +openapi: 3.0.2 +info: + title: 'DNS API' + version: "1.0.2" + description: | + # Working with the API + Every endpoint uses the `X-API-Key` header for authorization, to obtain the key please see the [Official Documentation](/docs/getstarted). + + Please note that any zone or record updates might conflict with active services. In such cases, the DNS records belonging to the conflicting services will be deactivated. + + # Support + Support questions may be posted in English: API Support. + + Please note that we offer support in the business Hours Mo-Fri 9:00-17:00 EET. +