// This file was automatically generated. DO NOT EDIT. // If you have any remark or suggestion do not hesitate to open an issue. // Package domain provides methods and message types of the domain v2beta1 API. package domain import ( "bytes" "encoding/json" "fmt" "net" "net/http" "net/url" "strings" "time" "github.com/scaleway/scaleway-sdk-go/internal/errors" "github.com/scaleway/scaleway-sdk-go/internal/marshaler" "github.com/scaleway/scaleway-sdk-go/internal/parameter" "github.com/scaleway/scaleway-sdk-go/namegenerator" "github.com/scaleway/scaleway-sdk-go/scw" std "github.com/scaleway/scaleway-sdk-go/api/std" ) // always import dependencies var ( _ fmt.Stringer _ json.Unmarshaler _ url.URL _ net.IP _ http.Header _ bytes.Reader _ time.Time _ = strings.Join _ scw.ScalewayRequest _ marshaler.Duration _ scw.File _ = parameter.AddToQuery _ = namegenerator.GetRandomName ) type ContactEmailStatus string const ( // If unspecified, the status is unknown by default. ContactEmailStatusEmailStatusUnknown = ContactEmailStatus("email_status_unknown") // The contact email has been validated. ContactEmailStatusValidated = ContactEmailStatus("validated") // The contact email has not been validated. ContactEmailStatusNotValidated = ContactEmailStatus("not_validated") // The contact email is invalid. ContactEmailStatusInvalidEmail = ContactEmailStatus("invalid_email") ) func (enum ContactEmailStatus) String() string { if enum == "" { // return default value if empty return "email_status_unknown" } return string(enum) } func (enum ContactEmailStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ContactEmailStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ContactEmailStatus(ContactEmailStatus(tmp).String()) return nil } type ContactExtensionFRMode string const ( // If unspecified, the status is unknown by default. ContactExtensionFRModeModeUnknown = ContactExtensionFRMode("mode_unknown") // The contact is a physical person (only for .fr domains). ContactExtensionFRModeIndividual = ContactExtensionFRMode("individual") // The contact is a company with a SIRET/SIREN code (only for .fr domains). ContactExtensionFRModeCompanyIdentificationCode = ContactExtensionFRMode("company_identification_code") // The contact has a Data Universal Numbering System code (only for .fr domains). ContactExtensionFRModeDuns = ContactExtensionFRMode("duns") // The contact has a local or a country ID (only for .fr domains). ContactExtensionFRModeLocal = ContactExtensionFRMode("local") // The contact is an association (only for .fr domains). ContactExtensionFRModeAssociation = ContactExtensionFRMode("association") // The contact is a brand (only for .fr domains). ContactExtensionFRModeTrademark = ContactExtensionFRMode("trademark") // The contact has an intervention code (DSIA) from AFNIC (only for .fr domains). ContactExtensionFRModeCodeAuthAfnic = ContactExtensionFRMode("code_auth_afnic") ) func (enum ContactExtensionFRMode) String() string { if enum == "" { // return default value if empty return "mode_unknown" } return string(enum) } func (enum ContactExtensionFRMode) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ContactExtensionFRMode) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ContactExtensionFRMode(ContactExtensionFRMode(tmp).String()) return nil } type ContactExtensionNLLegalForm string const ( // If unspecified, the status is unknown by default. ContactExtensionNLLegalFormLegalFormUnknown = ContactExtensionNLLegalForm("legal_form_unknown") // The contact's legal form is not listed below (only for .nl domains). ContactExtensionNLLegalFormOther = ContactExtensionNLLegalForm("other") // The contact is a non-Dutch EC company (only for .nl domains). ContactExtensionNLLegalFormNonDutchEuCompany = ContactExtensionNLLegalForm("non_dutch_eu_company") // The contact is a non-Dutch legal form/enterprise/subsidiary (only for .nl domains). ContactExtensionNLLegalFormNonDutchLegalFormEnterpriseSubsidiary = ContactExtensionNLLegalForm("non_dutch_legal_form_enterprise_subsidiary") // The contact is a limited company (only for .nl domains). ContactExtensionNLLegalFormLimitedCompany = ContactExtensionNLLegalForm("limited_company") // The contact is a limited company in formation (only for .nl domains). ContactExtensionNLLegalFormLimitedCompanyInFormation = ContactExtensionNLLegalForm("limited_company_in_formation") // The contact is a cooperative (only for .nl domains). ContactExtensionNLLegalFormCooperative = ContactExtensionNLLegalForm("cooperative") // The contact is a limited Partnership (only for .nl domains). ContactExtensionNLLegalFormLimitedPartnership = ContactExtensionNLLegalForm("limited_partnership") // The contact is a sole trader (only for .nl domains). ContactExtensionNLLegalFormSoleCompany = ContactExtensionNLLegalForm("sole_company") // The contact is a European Economic Interest Group (only for .nl domains). ContactExtensionNLLegalFormEuropeanEconomicInterestGroup = ContactExtensionNLLegalForm("european_economic_interest_group") // The contact is a religious society (only for .nl domains). ContactExtensionNLLegalFormReligiousEntity = ContactExtensionNLLegalForm("religious_entity") // The contact is a partnership (only for .nl domains). ContactExtensionNLLegalFormPartnership = ContactExtensionNLLegalForm("partnership") // The contact is a public Company (only for .nl domains). ContactExtensionNLLegalFormPublicCompany = ContactExtensionNLLegalForm("public_company") // The contact is a mutual benefit company (only for .nl domains). ContactExtensionNLLegalFormMutualBenefitCompany = ContactExtensionNLLegalForm("mutual_benefit_company") // The contact is a natural person (only for .nl domains). ContactExtensionNLLegalFormResidential = ContactExtensionNLLegalForm("residential") // The contact is a shipping company (only for .nl domains). ContactExtensionNLLegalFormShippingCompany = ContactExtensionNLLegalForm("shipping_company") // The contact is a foundation (only for .nl domains). ContactExtensionNLLegalFormFoundation = ContactExtensionNLLegalForm("foundation") // The contact is a association (only for .nl domains). ContactExtensionNLLegalFormAssociation = ContactExtensionNLLegalForm("association") // The contact is a trading partnership (only for .nl domains). ContactExtensionNLLegalFormTradingPartnership = ContactExtensionNLLegalForm("trading_partnership") // The contact is a physical person (only for .nl domains). ContactExtensionNLLegalFormNaturalPerson = ContactExtensionNLLegalForm("natural_person") ) func (enum ContactExtensionNLLegalForm) String() string { if enum == "" { // return default value if empty return "legal_form_unknown" } return string(enum) } func (enum ContactExtensionNLLegalForm) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ContactExtensionNLLegalForm) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ContactExtensionNLLegalForm(ContactExtensionNLLegalForm(tmp).String()) return nil } type ContactLegalForm string const ( // If unspecified, the status is unknown by default. ContactLegalFormLegalFormUnknown = ContactLegalForm("legal_form_unknown") // The contact is a physical person. ContactLegalFormIndividual = ContactLegalForm("individual") // The contact is a corporate or a society. ContactLegalFormCorporate = ContactLegalForm("corporate") // The contact is an association. ContactLegalFormAssociation = ContactLegalForm("association") // The contact is not represented by a physical person, a corporate or an association. ContactLegalFormOther = ContactLegalForm("other") ) func (enum ContactLegalForm) String() string { if enum == "" { // return default value if empty return "legal_form_unknown" } return string(enum) } func (enum ContactLegalForm) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ContactLegalForm) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ContactLegalForm(ContactLegalForm(tmp).String()) return nil } type ContactStatus string const ( // If unspecified, the status is unknown by default. ContactStatusStatusUnknown = ContactStatus("status_unknown") // The contact is active and can be edited. ContactStatusActive = ContactStatus("active") // The contact is temporarily locked (ie. while being edited). ContactStatusPending = ContactStatus("pending") ) func (enum ContactStatus) String() string { if enum == "" { // return default value if empty return "status_unknown" } return string(enum) } func (enum ContactStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ContactStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ContactStatus(ContactStatus(tmp).String()) return nil } type DNSZoneStatus string const ( // If unspecified, the DNS zone's status is unknown by default. DNSZoneStatusUnknown = DNSZoneStatus("unknown") // The DNS zone is active and healthy. DNSZoneStatusActive = DNSZoneStatus("active") // The DNS zone is updating. DNSZoneStatusPending = DNSZoneStatus("pending") // An error occurred after updating the DNS zone. DNSZoneStatusError = DNSZoneStatus("error") // The DNS zone is locked and cannot be updated anymore. DNSZoneStatusLocked = DNSZoneStatus("locked") ) func (enum DNSZoneStatus) String() string { if enum == "" { // return default value if empty return "unknown" } return string(enum) } func (enum DNSZoneStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DNSZoneStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DNSZoneStatus(DNSZoneStatus(tmp).String()) return nil } type DSRecordAlgorithm string const ( // Code 1, algorithm: 'RSAMD5'. DSRecordAlgorithmRsamd5 = DSRecordAlgorithm("rsamd5") // Code 2, algorithm: 'DIFFIE_HELLMAN'. DSRecordAlgorithmDh = DSRecordAlgorithm("dh") // Code 3, algorithm: 'DSA_SHA1'. DSRecordAlgorithmDsa = DSRecordAlgorithm("dsa") // Code 5, algorithm: 'RSA_SHA1'. DSRecordAlgorithmRsasha1 = DSRecordAlgorithm("rsasha1") // Code 6, algorithm: 'DSA_NSEC3_SHA1'. DSRecordAlgorithmDsaNsec3Sha1 = DSRecordAlgorithm("dsa_nsec3_sha1") // Code 7, algorithm: 'RSASHA1_NSEC3_SHA1'. DSRecordAlgorithmRsasha1Nsec3Sha1 = DSRecordAlgorithm("rsasha1_nsec3_sha1") // Code 8, algorithm: 'RSASHA256'. DSRecordAlgorithmRsasha256 = DSRecordAlgorithm("rsasha256") // Code 10, algorithm: 'RSASHA512'. DSRecordAlgorithmRsasha512 = DSRecordAlgorithm("rsasha512") // Code 12, algorithm: 'ECC_GOST'. DSRecordAlgorithmEccGost = DSRecordAlgorithm("ecc_gost") // Code 13, algorithm: 'ECDSAP256SHA256'. DSRecordAlgorithmEcdsap256sha256 = DSRecordAlgorithm("ecdsap256sha256") // Code 14, algorithm: 'ECDSAP384SHA384'. DSRecordAlgorithmEcdsap384sha384 = DSRecordAlgorithm("ecdsap384sha384") // Code 15, algorithm: 'ED25519'. DSRecordAlgorithmEd25519 = DSRecordAlgorithm("ed25519") // Code 16, algorithm: 'ED448'. DSRecordAlgorithmEd448 = DSRecordAlgorithm("ed448") ) func (enum DSRecordAlgorithm) String() string { if enum == "" { // return default value if empty return "rsamd5" } return string(enum) } func (enum DSRecordAlgorithm) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DSRecordAlgorithm) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DSRecordAlgorithm(DSRecordAlgorithm(tmp).String()) return nil } type DSRecordDigestType string const ( // Code 1, digest type: 'SHA_1'. DSRecordDigestTypeSha1 = DSRecordDigestType("sha_1") // Code 2, digest type: 'SHA_256'. DSRecordDigestTypeSha256 = DSRecordDigestType("sha_256") // Code 3, digest type: 'GOST_R_34_11_94'. DSRecordDigestTypeGostR34_11_94 = DSRecordDigestType("gost_r_34_11_94") // Code 4, digest type: 'SHA_384'. DSRecordDigestTypeSha384 = DSRecordDigestType("sha_384") ) func (enum DSRecordDigestType) String() string { if enum == "" { // return default value if empty return "sha_1" } return string(enum) } func (enum DSRecordDigestType) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DSRecordDigestType) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DSRecordDigestType(DSRecordDigestType(tmp).String()) return nil } type DomainFeatureStatus string const ( // Default unknown status. DomainFeatureStatusFeatureStatusUnknown = DomainFeatureStatus("feature_status_unknown") // A feature (auto renew, DNSSEC) is being enabled. DomainFeatureStatusEnabling = DomainFeatureStatus("enabling") // A feature (auto renew, DNSSEC) has been enabled. DomainFeatureStatusEnabled = DomainFeatureStatus("enabled") // A feature (auto renew, DNSSEC) is being disabled. DomainFeatureStatusDisabling = DomainFeatureStatus("disabling") // A feature (auto renew, DNSSEC) has been disabled. DomainFeatureStatusDisabled = DomainFeatureStatus("disabled") ) func (enum DomainFeatureStatus) String() string { if enum == "" { // return default value if empty return "feature_status_unknown" } return string(enum) } func (enum DomainFeatureStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DomainFeatureStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DomainFeatureStatus(DomainFeatureStatus(tmp).String()) return nil } type DomainRegistrationStatusTransferStatus string const ( // If unspecified, the status is unknown by default. DomainRegistrationStatusTransferStatusStatusUnknown = DomainRegistrationStatusTransferStatus("status_unknown") // The domain transfer is being initialized. DomainRegistrationStatusTransferStatusPending = DomainRegistrationStatusTransferStatus("pending") // The domain transfer has started. The process can be accelerated if you accept the vote. DomainRegistrationStatusTransferStatusWaitingVote = DomainRegistrationStatusTransferStatus("waiting_vote") // The domain transfer has been rejected. DomainRegistrationStatusTransferStatusRejected = DomainRegistrationStatusTransferStatus("rejected") // The domain transfer has been accepted. Your resources are being created. DomainRegistrationStatusTransferStatusProcessing = DomainRegistrationStatusTransferStatus("processing") // The domain transfer is complete. DomainRegistrationStatusTransferStatusDone = DomainRegistrationStatusTransferStatus("done") ) func (enum DomainRegistrationStatusTransferStatus) String() string { if enum == "" { // return default value if empty return "status_unknown" } return string(enum) } func (enum DomainRegistrationStatusTransferStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DomainRegistrationStatusTransferStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DomainRegistrationStatusTransferStatus(DomainRegistrationStatusTransferStatus(tmp).String()) return nil } type DomainStatus string const ( // If unspecified, the status is unknown by default. DomainStatusStatusUnknown = DomainStatus("status_unknown") // The domain is active. DomainStatusActive = DomainStatus("active") // The domain is in the process of being created. DomainStatusCreating = DomainStatus("creating") // An error occurred during the domain's creation process. DomainStatusCreateError = DomainStatus("create_error") // The domain is being renewed. DomainStatusRenewing = DomainStatus("renewing") // An error occurred during the domain's renewal process. DomainStatusRenewError = DomainStatus("renew_error") // The domain is being transferred to Scaleway Domains and DNS. DomainStatusXfering = DomainStatus("xfering") // An error occurred during the domain's transfer process. DomainStatusXferError = DomainStatus("xfer_error") // The domain is expired but it can be renewed. DomainStatusExpired = DomainStatus("expired") // The domain is expiring but it is still renewable. DomainStatusExpiring = DomainStatus("expiring") // The domain's information is updating. DomainStatusUpdating = DomainStatus("updating") // The external domain has not yet been validated. It will be automatically removed after 48 hours if it still has not been validated by then. DomainStatusChecking = DomainStatus("checking") // The domain is locked. Contact Scaleway's support team for more information. DomainStatusLocked = DomainStatus("locked") // The domain will be deleted soon. This process cannot be canceled. DomainStatusDeleting = DomainStatus("deleting") ) func (enum DomainStatus) String() string { if enum == "" { // return default value if empty return "status_unknown" } return string(enum) } func (enum DomainStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *DomainStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = DomainStatus(DomainStatus(tmp).String()) return nil } type HostStatus string const ( // If unspecified, the status is unknown by default. HostStatusUnknownStatus = HostStatus("unknown_status") // The host is active. HostStatusActive = HostStatus("active") // The host is being updated. HostStatusUpdating = HostStatus("updating") // The host is being deleted. HostStatusDeleting = HostStatus("deleting") ) func (enum HostStatus) String() string { if enum == "" { // return default value if empty return "unknown_status" } return string(enum) } func (enum HostStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *HostStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = HostStatus(HostStatus(tmp).String()) return nil } type LinkedProduct string const ( // If unspecified, no Scaleway product uses the resources. LinkedProductUnknownProduct = LinkedProduct("unknown_product") // Resources are used by Scaleway VPC. LinkedProductVpc = LinkedProduct("vpc") ) func (enum LinkedProduct) String() string { if enum == "" { // return default value if empty return "unknown_product" } return string(enum) } func (enum LinkedProduct) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *LinkedProduct) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = LinkedProduct(LinkedProduct(tmp).String()) return nil } type ListContactsRequestRole string const ( ListContactsRequestRoleUnknownRole = ListContactsRequestRole("unknown_role") // The contact is a domain's owner. ListContactsRequestRoleOwner = ListContactsRequestRole("owner") // The contact is a domain's administrative contact. ListContactsRequestRoleAdministrative = ListContactsRequestRole("administrative") // The contact is a domain's technical contact. ListContactsRequestRoleTechnical = ListContactsRequestRole("technical") ) func (enum ListContactsRequestRole) String() string { if enum == "" { // return default value if empty return "unknown_role" } return string(enum) } func (enum ListContactsRequestRole) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListContactsRequestRole) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListContactsRequestRole(ListContactsRequestRole(tmp).String()) return nil } type ListDNSZoneRecordsRequestOrderBy string const ( // Order by record name (ascending). ListDNSZoneRecordsRequestOrderByNameAsc = ListDNSZoneRecordsRequestOrderBy("name_asc") // Order by record name (descending). ListDNSZoneRecordsRequestOrderByNameDesc = ListDNSZoneRecordsRequestOrderBy("name_desc") ) func (enum ListDNSZoneRecordsRequestOrderBy) String() string { if enum == "" { // return default value if empty return "name_asc" } return string(enum) } func (enum ListDNSZoneRecordsRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListDNSZoneRecordsRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListDNSZoneRecordsRequestOrderBy(ListDNSZoneRecordsRequestOrderBy(tmp).String()) return nil } type ListDNSZonesRequestOrderBy string const ( // Order by domain name (ascending). ListDNSZonesRequestOrderByDomainAsc = ListDNSZonesRequestOrderBy("domain_asc") // Order by domain name (descending). ListDNSZonesRequestOrderByDomainDesc = ListDNSZonesRequestOrderBy("domain_desc") // Order by subdomain name (ascending). ListDNSZonesRequestOrderBySubdomainAsc = ListDNSZonesRequestOrderBy("subdomain_asc") // Order by subdomain name (descending). ListDNSZonesRequestOrderBySubdomainDesc = ListDNSZonesRequestOrderBy("subdomain_desc") // Order by created date (ascending). ListDNSZonesRequestOrderByCreatedAtAsc = ListDNSZonesRequestOrderBy("created_at_asc") // Order by created date (descending). ListDNSZonesRequestOrderByCreatedAtDesc = ListDNSZonesRequestOrderBy("created_at_desc") // Order by updated date (ascending). ListDNSZonesRequestOrderByUpdatedAtAsc = ListDNSZonesRequestOrderBy("updated_at_asc") // Order by updated date (descending). ListDNSZonesRequestOrderByUpdatedAtDesc = ListDNSZonesRequestOrderBy("updated_at_desc") ) func (enum ListDNSZonesRequestOrderBy) String() string { if enum == "" { // return default value if empty return "domain_asc" } return string(enum) } func (enum ListDNSZonesRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListDNSZonesRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListDNSZonesRequestOrderBy(ListDNSZonesRequestOrderBy(tmp).String()) return nil } type ListDomainsRequestOrderBy string const ( // Order by domain name (ascending). ListDomainsRequestOrderByDomainAsc = ListDomainsRequestOrderBy("domain_asc") // Order by domain name (descending). ListDomainsRequestOrderByDomainDesc = ListDomainsRequestOrderBy("domain_desc") ) func (enum ListDomainsRequestOrderBy) String() string { if enum == "" { // return default value if empty return "domain_asc" } return string(enum) } func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String()) return nil } type ListRenewableDomainsRequestOrderBy string const ( // Order by domain name (ascending). ListRenewableDomainsRequestOrderByDomainAsc = ListRenewableDomainsRequestOrderBy("domain_asc") // Order by domain name (descending). ListRenewableDomainsRequestOrderByDomainDesc = ListRenewableDomainsRequestOrderBy("domain_desc") ) func (enum ListRenewableDomainsRequestOrderBy) String() string { if enum == "" { // return default value if empty return "domain_asc" } return string(enum) } func (enum ListRenewableDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListRenewableDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListRenewableDomainsRequestOrderBy(ListRenewableDomainsRequestOrderBy(tmp).String()) return nil } type ListTasksRequestOrderBy string const ( // Order by domain name (descending). ListTasksRequestOrderByDomainDesc = ListTasksRequestOrderBy("domain_desc") // Order by domain name (ascending). ListTasksRequestOrderByDomainAsc = ListTasksRequestOrderBy("domain_asc") // Order by type (ascending). ListTasksRequestOrderByTypeAsc = ListTasksRequestOrderBy("type_asc") // Order by type (descending). ListTasksRequestOrderByTypeDesc = ListTasksRequestOrderBy("type_desc") // Order by status (ascending). ListTasksRequestOrderByStatusAsc = ListTasksRequestOrderBy("status_asc") // Order by status (descending). ListTasksRequestOrderByStatusDesc = ListTasksRequestOrderBy("status_desc") // Order by updated date (ascending). ListTasksRequestOrderByUpdatedAtAsc = ListTasksRequestOrderBy("updated_at_asc") // Order by updated date (descending). ListTasksRequestOrderByUpdatedAtDesc = ListTasksRequestOrderBy("updated_at_desc") ) func (enum ListTasksRequestOrderBy) String() string { if enum == "" { // return default value if empty return "domain_desc" } return string(enum) } func (enum ListTasksRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListTasksRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListTasksRequestOrderBy(ListTasksRequestOrderBy(tmp).String()) return nil } type ListTldsRequestOrderBy string const ( // Order by TLD name (ascending). ListTldsRequestOrderByNameAsc = ListTldsRequestOrderBy("name_asc") // Order by TLD name (descending). ListTldsRequestOrderByNameDesc = ListTldsRequestOrderBy("name_desc") ) func (enum ListTldsRequestOrderBy) String() string { if enum == "" { // return default value if empty return "name_asc" } return string(enum) } func (enum ListTldsRequestOrderBy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *ListTldsRequestOrderBy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = ListTldsRequestOrderBy(ListTldsRequestOrderBy(tmp).String()) return nil } type RawFormat string const ( // If unspecified, the format is unknown by default. RawFormatUnknownRawFormat = RawFormat("unknown_raw_format") // Export the DNS zone in text bind format. RawFormatBind = RawFormat("bind") ) func (enum RawFormat) String() string { if enum == "" { // return default value if empty return "unknown_raw_format" } return string(enum) } func (enum RawFormat) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *RawFormat) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = RawFormat(RawFormat(tmp).String()) return nil } type RecordHTTPServiceConfigStrategy string const ( // Returns a random IP based of the list of IPs available. RecordHTTPServiceConfigStrategyRandom = RecordHTTPServiceConfigStrategy("random") // Based on the hash of bestwho, returns a random functioning IP out of the best IPs available. RecordHTTPServiceConfigStrategyHashed = RecordHTTPServiceConfigStrategy("hashed") // Return all functioning IPs available. RecordHTTPServiceConfigStrategyAll = RecordHTTPServiceConfigStrategy("all") ) func (enum RecordHTTPServiceConfigStrategy) String() string { if enum == "" { // return default value if empty return "random" } return string(enum) } func (enum RecordHTTPServiceConfigStrategy) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *RecordHTTPServiceConfigStrategy) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = RecordHTTPServiceConfigStrategy(RecordHTTPServiceConfigStrategy(tmp).String()) return nil } type RecordType string const ( // If unspecified, the record's type is unknown by default. RecordTypeUnknown = RecordType("unknown") // An A record contains an IP address. Example: '203.0.113.210'. RecordTypeA = RecordType("A") // An AAAA record contains an IPv6 address. Example: '2001:DB8:2000:bf0::1'. RecordTypeAAAA = RecordType("AAAA") // A CNAME record specifies the canonical name of a record. Example 'webserver-01.yourcompany.com'. RecordTypeCNAME = RecordType("CNAME") // A TXT record can be used to attach textual data to a domain. Example 'v=spf1 include:_spf.tem.scw.cloud -all'. RecordTypeTXT = RecordType("TXT") // SRV records can be used to encode the location and port of services on a domain name. Example : '20 443 sipdir.scaleway.example.com'. RecordTypeSRV = RecordType("SRV") // TLSA records are used to bind SSL/TLS certificates to named hosts and ports. RecordTypeTLSA = RecordType("TLSA") // An MX record specifies a mail exchanger host for a domain. Example '10 mx.example.net.'. RecordTypeMX = RecordType("MX") // Specifies nameservers for a domain. Example: 'ns1.yourcompany.com'. RecordTypeNS = RecordType("NS") // A reverse pointer is used to specify the hostname that belongs to an IP or an IPv6 address. Example: 'www.yourcompany.com.'. RecordTypePTR = RecordType("PTR") // A 'Certification Authority Authorization' record is used to specify certificate authorities that may issue certificates for a domain. Example: '0 issue ca.yourcompany.com'. RecordTypeCAA = RecordType("CAA") // The ALIAS pseudo-record type is supported to provide CNAME-like mechanisms on a zone's apex. RecordTypeALIAS = RecordType("ALIAS") // A LOC record is a way of expressing geographic location information for a domain name. It contains WGS84 latitude, longitude and altitude. Example: '51 56 0.123 N 5 54 0.000 E 4.00m 1.00m 10000.00m 10.00m'. RecordTypeLOC = RecordType("LOC") // An SSHFP record type is used for storing Secure Shell (SSH) fingerprints. Example: '2 1 123456789abcdef67890123456789abcdef67890'. RecordTypeSSHFP = RecordType("SSHFP") // A Hardware Info record is used to specify the CPU and operating system you are using. Example: 'i386 Linux'. RecordTypeHINFO = RecordType("HINFO") // A Responsible Person record stores the mailbox name and the more-information pointer. Example: 'michel.yourcompany.com michel.people.yourcompany.com', to indicate that michel@yourcompany.com is responsible and that more information about Michel is available by querying the `TXT` record of 'michel.people.yourcompany.com'. RecordTypeRP = RecordType("RP") // A URI record, is used to publish mappings from hostnames to URIs. Example: '10 1 'ftp://ftp.yourcompany.com/public'. RecordTypeURI = RecordType("URI") // DS records (Delegation Signer) are used to secure delegations (DNSSEC). Example: '2371 13 2 1F987CC6583E92DF0890718C42'. RecordTypeDS = RecordType("DS") // A Naming Authority Pointer record is used to set rules for how websites process requests. Example: '100 50 "s" "z3950+I2L+I2C" "" _z3950._tcp.yourcompany.com'. RecordTypeNAPTR = RecordType("NAPTR") // A DNAME record provides redirection from one part of the DNS name tree to another part of the DNS name tree. DNAME and CNAME records both cause a lookup to (potentially) return data corresponding to a different domain name from the queried domain name. Example: 'yourcompany.com'. RecordTypeDNAME = RecordType("DNAME") ) func (enum RecordType) String() string { if enum == "" { // return default value if empty return "unknown" } return string(enum) } func (enum RecordType) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *RecordType) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = RecordType(RecordType(tmp).String()) return nil } type RenewableDomainStatus string const ( // If unspecified, the status is unknown by default. RenewableDomainStatusUnknown = RenewableDomainStatus("unknown") // The domain can be renewed. RenewableDomainStatusRenewable = RenewableDomainStatus("renewable") // The domain is expired, but it still can be late renewed. RenewableDomainStatusLateReneweable = RenewableDomainStatus("late_reneweable") // The domain cannot be renewed. RenewableDomainStatusNotRenewable = RenewableDomainStatus("not_renewable") ) func (enum RenewableDomainStatus) String() string { if enum == "" { // return default value if empty return "unknown" } return string(enum) } func (enum RenewableDomainStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *RenewableDomainStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = RenewableDomainStatus(RenewableDomainStatus(tmp).String()) return nil } type SSLCertificateStatus string const ( // If unspecified, the SSL certificate's status is unknown by default. SSLCertificateStatusUnknown = SSLCertificateStatus("unknown") // The SSL certificate has been created but it has not been processed yet. SSLCertificateStatusNew = SSLCertificateStatus("new") // The SSL certificate's status is pending. SSLCertificateStatusPending = SSLCertificateStatus("pending") // The SSL certificate has been created and processed. SSLCertificateStatusSuccess = SSLCertificateStatus("success") // An error occurred during the SSL certificate's creation. SSLCertificateStatusError = SSLCertificateStatus("error") ) func (enum SSLCertificateStatus) String() string { if enum == "" { // return default value if empty return "unknown" } return string(enum) } func (enum SSLCertificateStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *SSLCertificateStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = SSLCertificateStatus(SSLCertificateStatus(tmp).String()) return nil } type TaskStatus string const ( // If unspecified, the status is unavailable by default. TaskStatusUnavailable = TaskStatus("unavailable") // The task has been created but it has not yet started. TaskStatusNew = TaskStatus("new") // The task is waiting for a payment to be validated. TaskStatusWaitingPayment = TaskStatus("waiting_payment") // The task is pending. TaskStatusPending = TaskStatus("pending") // The task has been completed. TaskStatusSuccess = TaskStatus("success") // The task is in an error state. TaskStatusError = TaskStatus("error") ) func (enum TaskStatus) String() string { if enum == "" { // return default value if empty return "unavailable" } return string(enum) } func (enum TaskStatus) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *TaskStatus) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = TaskStatus(TaskStatus(tmp).String()) return nil } type TaskType string const ( // If unspecified, the status is unknown by default. TaskTypeUnknown = TaskType("unknown") // Create a new internal domain. TaskTypeCreateDomain = TaskType("create_domain") // Create a new external domain. TaskTypeCreateExternalDomain = TaskType("create_external_domain") // Renew a domain. TaskTypeRenewDomain = TaskType("renew_domain") // Transfer a domain to Scaleway Domains and DNS. TaskTypeTransferDomain = TaskType("transfer_domain") // Trade a domain to a new owner. TaskTypeTradeDomain = TaskType("trade_domain") // Lock the transfer of a domain for protection. TaskTypeLockDomainTransfer = TaskType("lock_domain_transfer") // Unlock the transfer of a domain. TaskTypeUnlockDomainTransfer = TaskType("unlock_domain_transfer") // Enable DNSSEC for a domain. TaskTypeEnableDnssec = TaskType("enable_dnssec") // Disable DNSSEC for a domain. TaskTypeDisableDnssec = TaskType("disable_dnssec") // Update the domain's information. TaskTypeUpdateDomain = TaskType("update_domain") // Change the technical or administrative contact. TaskTypeUpdateContact = TaskType("update_contact") // Delete a domain and destroy its zone versions, zones, and SSL certificates. TaskTypeDeleteDomain = TaskType("delete_domain") // Cancel a task that has not yet started. TaskTypeCancelTask = TaskType("cancel_task") // Generate a new SSL certificate. TaskTypeGenerateSslCertificate = TaskType("generate_ssl_certificate") // Renew an SSL certificate. TaskTypeRenewSslCertificate = TaskType("renew_ssl_certificate") // Send a message. For most cases, it will be followed by an email. TaskTypeSendMessage = TaskType("send_message") // Delete a domain that has expired and not been restored for at least 3 months. TaskTypeDeleteDomainExpired = TaskType("delete_domain_expired") // Delete a newly registered external domain that has not been validated after 48 hours or when the external domain fails to point to our name servers for more than 14 days. TaskTypeDeleteExternalDomain = TaskType("delete_external_domain") // Create domain's hostname with glue IPs. TaskTypeCreateHost = TaskType("create_host") // Update domain's hostname with glue IPs. TaskTypeUpdateHost = TaskType("update_host") // Delete domain's hostname. TaskTypeDeleteHost = TaskType("delete_host") // Move a domain to another Project. TaskTypeMoveProject = TaskType("move_project") // Transfer a domain from Online to Scaleway Domains and DNS. TaskTypeTransferOnlineDomain = TaskType("transfer_online_domain") ) func (enum TaskType) String() string { if enum == "" { // return default value if empty return "unknown" } return string(enum) } func (enum TaskType) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`"%s"`, enum)), nil } func (enum *TaskType) UnmarshalJSON(data []byte) error { tmp := "" if err := json.Unmarshal(data, &tmp); err != nil { return err } *enum = TaskType(TaskType(tmp).String()) return nil } // RecordGeoIPConfigMatch: record geo ip config match. type RecordGeoIPConfigMatch struct { Countries []string `json:"countries"` Continents []string `json:"continents"` Data string `json:"data"` } // RecordViewConfigView: record view config view. type RecordViewConfigView struct { Subnet string `json:"subnet"` Data string `json:"data"` } // RecordWeightedConfigWeightedIP: record weighted config weighted ip. type RecordWeightedConfigWeightedIP struct { IP net.IP `json:"ip"` Weight uint32 `json:"weight"` } // DSRecordPublicKey: ds record public key. type DSRecordPublicKey struct { Key string `json:"key"` } // RecordGeoIPConfig: record geo ip config. type RecordGeoIPConfig struct { Matches []*RecordGeoIPConfigMatch `json:"matches"` Default string `json:"default"` } // RecordHTTPServiceConfig: record http service config. type RecordHTTPServiceConfig struct { IPs []net.IP `json:"ips"` MustContain *string `json:"must_contain"` URL string `json:"url"` UserAgent *string `json:"user_agent"` // Strategy: default value: random Strategy RecordHTTPServiceConfigStrategy `json:"strategy"` } // RecordViewConfig: record view config. type RecordViewConfig struct { Views []*RecordViewConfigView `json:"views"` } // RecordWeightedConfig: record weighted config. type RecordWeightedConfig struct { WeightedIPs []*RecordWeightedConfigWeightedIP `json:"weighted_ips"` } // ContactExtensionFRAssociationInfo: contact extension fr association info. type ContactExtensionFRAssociationInfo struct { PublicationJo *time.Time `json:"publication_jo"` PublicationJoPage uint32 `json:"publication_jo_page"` } // ContactExtensionFRCodeAuthAfnicInfo: contact extension fr code auth afnic info. type ContactExtensionFRCodeAuthAfnicInfo struct { CodeAuthAfnic string `json:"code_auth_afnic"` } // ContactExtensionFRDunsInfo: contact extension fr duns info. type ContactExtensionFRDunsInfo struct { DunsID string `json:"duns_id"` LocalID string `json:"local_id"` } // ContactExtensionFRIndividualInfo: contact extension fr individual info. type ContactExtensionFRIndividualInfo struct { WhoisOptIn bool `json:"whois_opt_in"` } // ContactExtensionFRTrademarkInfo: contact extension fr trademark info. type ContactExtensionFRTrademarkInfo struct { TrademarkInpi string `json:"trademark_inpi"` } // DSRecordDigest: ds record digest. type DSRecordDigest struct { // Type: default value: sha_1 Type DSRecordDigestType `json:"type"` Digest string `json:"digest"` PublicKey *DSRecordPublicKey `json:"public_key"` } // Record: record. type Record struct { Data string `json:"data"` Name string `json:"name"` Priority uint32 `json:"priority"` TTL uint32 `json:"ttl"` // Type: default value: unknown Type RecordType `json:"type"` Comment *string `json:"comment"` // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. GeoIPConfig *RecordGeoIPConfig `json:"geo_ip_config,omitempty"` // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. HTTPServiceConfig *RecordHTTPServiceConfig `json:"http_service_config,omitempty"` // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. WeightedConfig *RecordWeightedConfig `json:"weighted_config,omitempty"` // Precisely one of GeoIPConfig, HTTPServiceConfig, WeightedConfig, ViewConfig must be set. ViewConfig *RecordViewConfig `json:"view_config,omitempty"` ID string `json:"id"` } // RecordIdentifier: record identifier. type RecordIdentifier struct { Name string `json:"name"` // Type: default value: unknown Type RecordType `json:"type"` Data *string `json:"data"` TTL *uint32 `json:"ttl"` } // ContactExtensionEU: contact extension eu. type ContactExtensionEU struct { EuropeanCitizenship string `json:"european_citizenship"` } // ContactExtensionFR: contact extension fr. type ContactExtensionFR struct { // Mode: default value: mode_unknown Mode ContactExtensionFRMode `json:"mode"` // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. IndividualInfo *ContactExtensionFRIndividualInfo `json:"individual_info,omitempty"` // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. DunsInfo *ContactExtensionFRDunsInfo `json:"duns_info,omitempty"` // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. AssociationInfo *ContactExtensionFRAssociationInfo `json:"association_info,omitempty"` // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. TrademarkInfo *ContactExtensionFRTrademarkInfo `json:"trademark_info,omitempty"` // Precisely one of IndividualInfo, DunsInfo, AssociationInfo, TrademarkInfo, CodeAuthAfnicInfo must be set. CodeAuthAfnicInfo *ContactExtensionFRCodeAuthAfnicInfo `json:"code_auth_afnic_info,omitempty"` } // ContactExtensionNL: contact extension nl. type ContactExtensionNL struct { // LegalForm: default value: legal_form_unknown LegalForm ContactExtensionNLLegalForm `json:"legal_form"` LegalFormRegistrationNumber string `json:"legal_form_registration_number"` } // ContactQuestion: contact question. type ContactQuestion struct { Question string `json:"question"` Answer string `json:"answer"` } // TldOffer: tld offer. type TldOffer struct { Action string `json:"action"` OperationPath string `json:"operation_path"` Price *scw.Money `json:"price"` } // DSRecord: ds record. type DSRecord struct { KeyID uint32 `json:"key_id"` // Algorithm: default value: rsamd5 Algorithm DSRecordAlgorithm `json:"algorithm"` // Precisely one of Digest, PublicKey must be set. Digest *DSRecordDigest `json:"digest,omitempty"` // Precisely one of Digest, PublicKey must be set. PublicKey *DSRecordPublicKey `json:"public_key,omitempty"` } // RecordChangeAdd: record change add. type RecordChangeAdd struct { Records []*Record `json:"records"` } // RecordChangeClear: record change clear. type RecordChangeClear struct { } // RecordChangeDelete: record change delete. type RecordChangeDelete struct { // Precisely one of ID, IDFields must be set. ID *string `json:"id,omitempty"` // Precisely one of ID, IDFields must be set. IDFields *RecordIdentifier `json:"id_fields,omitempty"` } // RecordChangeSet: record change set. type RecordChangeSet struct { // Precisely one of ID, IDFields must be set. ID *string `json:"id,omitempty"` // Precisely one of ID, IDFields must be set. IDFields *RecordIdentifier `json:"id_fields,omitempty"` Records []*Record `json:"records"` } // ImportRawDNSZoneRequestTsigKey: import raw dns zone request tsig key. type ImportRawDNSZoneRequestTsigKey struct { Name string `json:"name"` Key string `json:"key"` Algorithm string `json:"algorithm"` } // Contact: contact. type Contact struct { ID string `json:"id"` // LegalForm: default value: legal_form_unknown LegalForm ContactLegalForm `json:"legal_form"` Firstname string `json:"firstname"` Lastname string `json:"lastname"` CompanyName string `json:"company_name"` Email string `json:"email"` EmailAlt string `json:"email_alt"` PhoneNumber string `json:"phone_number"` FaxNumber string `json:"fax_number"` AddressLine1 string `json:"address_line_1"` AddressLine2 string `json:"address_line_2"` Zip string `json:"zip"` City string `json:"city"` Country string `json:"country"` VatIDentificationCode string `json:"vat_identification_code"` CompanyIDentificationCode string `json:"company_identification_code"` // Lang: default value: unknown_language_code Lang std.LanguageCode `json:"lang"` Resale bool `json:"resale"` // Deprecated Questions *[]*ContactQuestion `json:"questions,omitempty"` ExtensionFr *ContactExtensionFR `json:"extension_fr"` ExtensionEu *ContactExtensionEU `json:"extension_eu"` WhoisOptIn bool `json:"whois_opt_in"` // EmailStatus: default value: email_status_unknown EmailStatus ContactEmailStatus `json:"email_status"` State string `json:"state"` ExtensionNl *ContactExtensionNL `json:"extension_nl"` // Status: default value: status_unknown Status ContactStatus `json:"status"` } // ContactRolesRoles: contact roles roles. type ContactRolesRoles struct { IsOwner bool `json:"is_owner"` IsAdministrative bool `json:"is_administrative"` IsTechnical bool `json:"is_technical"` } // DomainRegistrationStatusExternalDomain: domain registration status external domain. type DomainRegistrationStatusExternalDomain struct { ValidationToken string `json:"validation_token"` } // DomainRegistrationStatusTransfer: domain registration status transfer. type DomainRegistrationStatusTransfer struct { // Status: default value: status_unknown Status DomainRegistrationStatusTransferStatus `json:"status"` VoteCurrentOwner bool `json:"vote_current_owner"` VoteNewOwner bool `json:"vote_new_owner"` } // Tld: tld. type Tld struct { Name string `json:"name"` DnssecSupport bool `json:"dnssec_support"` DurationInYearsMin uint32 `json:"duration_in_years_min"` DurationInYearsMax uint32 `json:"duration_in_years_max"` IDnSupport bool `json:"idn_support"` Offers map[string]*TldOffer `json:"offers"` Specifications map[string]string `json:"specifications"` } // NewContact: new contact. type NewContact struct { // LegalForm: default value: legal_form_unknown LegalForm ContactLegalForm `json:"legal_form"` Firstname string `json:"firstname"` Lastname string `json:"lastname"` CompanyName *string `json:"company_name"` Email string `json:"email"` EmailAlt *string `json:"email_alt"` PhoneNumber string `json:"phone_number"` FaxNumber *string `json:"fax_number"` AddressLine1 string `json:"address_line_1"` AddressLine2 *string `json:"address_line_2"` Zip string `json:"zip"` City string `json:"city"` Country string `json:"country"` VatIDentificationCode *string `json:"vat_identification_code"` CompanyIDentificationCode *string `json:"company_identification_code"` // Lang: default value: unknown_language_code Lang std.LanguageCode `json:"lang"` Resale bool `json:"resale"` // Deprecated Questions *[]*ContactQuestion `json:"questions,omitempty"` ExtensionFr *ContactExtensionFR `json:"extension_fr"` ExtensionEu *ContactExtensionEU `json:"extension_eu"` WhoisOptIn bool `json:"whois_opt_in"` State *string `json:"state"` ExtensionNl *ContactExtensionNL `json:"extension_nl"` } // CheckContactsCompatibilityResponseContactCheckResult: check contacts compatibility response contact check result. type CheckContactsCompatibilityResponseContactCheckResult struct { Compatible bool `json:"compatible"` ErrorMessage *string `json:"error_message"` } // DNSZone: dns zone. type DNSZone struct { Domain string `json:"domain"` Subdomain string `json:"subdomain"` Ns []string `json:"ns"` NsDefault []string `json:"ns_default"` NsMaster []string `json:"ns_master"` // Status: default value: unknown Status DNSZoneStatus `json:"status"` Message *string `json:"message"` UpdatedAt *time.Time `json:"updated_at"` ProjectID string `json:"project_id"` LinkedProducts []LinkedProduct `json:"linked_products"` } // DomainDNSSEC: domain dnssec. type DomainDNSSEC struct { // Status: default value: feature_status_unknown Status DomainFeatureStatus `json:"status"` DsRecords []*DSRecord `json:"ds_records"` } // RecordChange: record change. type RecordChange struct { // Precisely one of Add, Set, Delete, Clear must be set. Add *RecordChangeAdd `json:"add,omitempty"` // Precisely one of Add, Set, Delete, Clear must be set. Set *RecordChangeSet `json:"set,omitempty"` // Precisely one of Add, Set, Delete, Clear must be set. Delete *RecordChangeDelete `json:"delete,omitempty"` // Precisely one of Add, Set, Delete, Clear must be set. Clear *RecordChangeClear `json:"clear,omitempty"` } // ImportProviderDNSZoneRequestOnlineV1: import provider dns zone request online v1. type ImportProviderDNSZoneRequestOnlineV1 struct { Token string `json:"token"` } // ImportRawDNSZoneRequestAXFRSource: import raw dns zone request axfr source. type ImportRawDNSZoneRequestAXFRSource struct { NameServer string `json:"name_server"` TsigKey *ImportRawDNSZoneRequestTsigKey `json:"tsig_key"` } // ImportRawDNSZoneRequestBindSource: import raw dns zone request bind source. type ImportRawDNSZoneRequestBindSource struct { Content string `json:"content"` } // ContactRoles: contact roles. type ContactRoles struct { Contact *Contact `json:"contact"` Roles map[string]*ContactRolesRoles `json:"roles"` } // Nameserver: nameserver. type Nameserver struct { Name string `json:"name"` IP []string `json:"ip"` } // DNSZoneVersion: dns zone version. type DNSZoneVersion struct { ID string `json:"id"` CreatedAt *time.Time `json:"created_at"` } // Host: host. type Host struct { Domain string `json:"domain"` Name string `json:"name"` IPs []net.IP `json:"ips"` // Status: default value: unknown_status Status HostStatus `json:"status"` } // DomainSummary: domain summary. type DomainSummary struct { Domain string `json:"domain"` ProjectID string `json:"project_id"` // AutoRenewStatus: default value: feature_status_unknown AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` // DnssecStatus: default value: feature_status_unknown DnssecStatus DomainFeatureStatus `json:"dnssec_status"` EppCode []string `json:"epp_code"` ExpiredAt *time.Time `json:"expired_at"` UpdatedAt *time.Time `json:"updated_at"` Registrar string `json:"registrar"` IsExternal bool `json:"is_external"` // Status: default value: status_unknown Status DomainStatus `json:"status"` // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` OrganizationID string `json:"organization_id"` CreatedAt *time.Time `json:"created_at"` PendingTrade bool `json:"pending_trade"` } // RenewableDomain: renewable domain. type RenewableDomain struct { Domain string `json:"domain"` ProjectID string `json:"project_id"` OrganizationID string `json:"organization_id"` // Status: default value: unknown Status RenewableDomainStatus `json:"status"` RenewableDurationInYears *int32 `json:"renewable_duration_in_years"` ExpiredAt *time.Time `json:"expired_at"` LimitRenewAt *time.Time `json:"limit_renew_at"` LimitRedemptionAt *time.Time `json:"limit_redemption_at"` EstimatedDeleteAt *time.Time `json:"estimated_delete_at"` Tld *Tld `json:"tld"` } // SSLCertificate: ssl certificate. type SSLCertificate struct { DNSZone string `json:"dns_zone"` AlternativeDNSZones []string `json:"alternative_dns_zones"` // Status: default value: unknown Status SSLCertificateStatus `json:"status"` PrivateKey string `json:"private_key"` CertificateChain string `json:"certificate_chain"` CreatedAt *time.Time `json:"created_at"` ExpiredAt *time.Time `json:"expired_at"` } // Task: task. type Task struct { // ID: the unique identifier of the task. ID string `json:"id"` // ProjectID: the project ID associated to the task. ProjectID string `json:"project_id"` // OrganizationID: the organization ID associated to the task. OrganizationID string `json:"organization_id"` // Domain: the domain name associated to the task. Domain *string `json:"domain"` // Type: the type of the task. // Default value: unknown Type TaskType `json:"type"` // Status: the status of the task. // Default value: unavailable Status TaskStatus `json:"status"` // StartedAt: start date of the task. StartedAt *time.Time `json:"started_at"` // UpdatedAt: last update of the task. UpdatedAt *time.Time `json:"updated_at"` // Message: error message associated to the task. Message *string `json:"message"` // ContactIDentifier: human-friendly contact identifier used when the task concerns a contact. ContactIDentifier *string `json:"contact_identifier"` } // TransferInDomainRequestTransferRequest: transfer in domain request transfer request. type TransferInDomainRequestTransferRequest struct { Domain string `json:"domain"` AuthCode string `json:"auth_code"` } // UpdateContactRequestQuestion: update contact request question. type UpdateContactRequestQuestion struct { Question *string `json:"question"` Answer *string `json:"answer"` } // AvailableDomain: available domain. type AvailableDomain struct { Domain string `json:"domain"` Available bool `json:"available"` Tld *Tld `json:"tld"` } // CheckContactsCompatibilityResponse: check contacts compatibility response. type CheckContactsCompatibilityResponse struct { Compatible bool `json:"compatible"` OwnerCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"owner_check_result"` AdministrativeCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"administrative_check_result"` TechnicalCheckResult *CheckContactsCompatibilityResponseContactCheckResult `json:"technical_check_result"` } // ClearDNSZoneRecordsRequest: clear dns zone records request. type ClearDNSZoneRecordsRequest struct { // DNSZone: DNS zone to clear. DNSZone string `json:"-"` } // ClearDNSZoneRecordsResponse: clear dns zone records response. type ClearDNSZoneRecordsResponse struct { } // CloneDNSZoneRequest: clone dns zone request. type CloneDNSZoneRequest struct { // DNSZone: DNS zone to clone. DNSZone string `json:"-"` // DestDNSZone: destination DNS zone in which to clone the chosen DNS zone. DestDNSZone string `json:"dest_dns_zone"` // Overwrite: specifies whether or not the destination DNS zone will be overwritten. Overwrite bool `json:"overwrite"` // ProjectID: project ID of the destination DNS zone. ProjectID *string `json:"project_id,omitempty"` } // CreateDNSZoneRequest: create dns zone request. type CreateDNSZoneRequest struct { // Domain: domain in which to crreate the DNS zone. Domain string `json:"domain"` // Subdomain: subdomain of the DNS zone to create. Subdomain string `json:"subdomain"` // ProjectID: project ID in which to create the DNS zone. ProjectID string `json:"project_id"` } // CreateSSLCertificateRequest: create ssl certificate request. type CreateSSLCertificateRequest struct { DNSZone string `json:"dns_zone"` AlternativeDNSZones []string `json:"alternative_dns_zones"` } // DeleteDNSZoneRequest: delete dns zone request. type DeleteDNSZoneRequest struct { // DNSZone: DNS zone to delete. DNSZone string `json:"-"` // ProjectID: project ID of the DNS zone to delete. ProjectID string `json:"-"` } // DeleteDNSZoneResponse: delete dns zone response. type DeleteDNSZoneResponse struct { } // DeleteDNSZoneTsigKeyRequest: delete dns zone tsig key request. type DeleteDNSZoneTsigKeyRequest struct { DNSZone string `json:"-"` } // DeleteExternalDomainResponse: delete external domain response. type DeleteExternalDomainResponse struct { } // DeleteSSLCertificateRequest: delete ssl certificate request. type DeleteSSLCertificateRequest struct { DNSZone string `json:"-"` } // DeleteSSLCertificateResponse: delete ssl certificate response. type DeleteSSLCertificateResponse struct { } // Domain: domain. type Domain struct { Domain string `json:"domain"` OrganizationID string `json:"organization_id"` ProjectID string `json:"project_id"` // AutoRenewStatus: status of the automatic renewal of the domain. // Default value: feature_status_unknown AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` // Dnssec: status of the DNSSEC configuration of the domain. Dnssec *DomainDNSSEC `json:"dnssec"` // EppCode: list of the domain's EPP codes. EppCode []string `json:"epp_code"` // ExpiredAt: date of expiration of the domain. ExpiredAt *time.Time `json:"expired_at"` // UpdatedAt: domain's last modification date. UpdatedAt *time.Time `json:"updated_at"` Registrar string `json:"registrar"` // IsExternal: indicates whether Scaleway is the domain's registrar. IsExternal bool `json:"is_external"` // Status: status of the domain. // Default value: status_unknown Status DomainStatus `json:"status"` // DNSZones: list of the domain's DNS zones. DNSZones []*DNSZone `json:"dns_zones"` // OwnerContact: contact information of the domain's owner. OwnerContact *Contact `json:"owner_contact"` // TechnicalContact: contact information of the domain's technical contact. TechnicalContact *Contact `json:"technical_contact"` // AdministrativeContact: contact information of the domain's administrative contact. AdministrativeContact *Contact `json:"administrative_contact"` // ExternalDomainRegistrationStatus: registration status of an external domain, if available. // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` // TransferRegistrationStatus: status of a domain, when available for transfer. // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` // Tld: domain's TLD information. Tld *Tld `json:"tld"` // LinkedProducts: list of Scaleway resources linked to the domain. LinkedProducts []LinkedProduct `json:"linked_products"` // PendingTrade: indicates if a trade is ongoing. PendingTrade bool `json:"pending_trade"` } // ExportRawDNSZoneRequest: export raw dns zone request. type ExportRawDNSZoneRequest struct { // DNSZone: DNS zone to export. DNSZone string `json:"-"` // Format: DNS zone format. // Default value: unknown_raw_format Format RawFormat `json:"-"` } // GetDNSZoneTsigKeyRequest: get dns zone tsig key request. type GetDNSZoneTsigKeyRequest struct { DNSZone string `json:"-"` } // GetDNSZoneTsigKeyResponse: get dns zone tsig key response. type GetDNSZoneTsigKeyResponse struct { Name string `json:"name"` Key string `json:"key"` Algorithm string `json:"algorithm"` } // GetDNSZoneVersionDiffRequest: get dns zone version diff request. type GetDNSZoneVersionDiffRequest struct { DNSZoneVersionID string `json:"-"` } // GetDNSZoneVersionDiffResponse: get dns zone version diff response. type GetDNSZoneVersionDiffResponse struct { Changes []*RecordChange `json:"changes"` } // GetDomainAuthCodeResponse: get domain auth code response. type GetDomainAuthCodeResponse struct { AuthCode string `json:"auth_code"` } // GetSSLCertificateRequest: get ssl certificate request. type GetSSLCertificateRequest struct { DNSZone string `json:"-"` } // ImportProviderDNSZoneRequest: import provider dns zone request. type ImportProviderDNSZoneRequest struct { DNSZone string `json:"-"` // Precisely one of OnlineV1 must be set. OnlineV1 *ImportProviderDNSZoneRequestOnlineV1 `json:"online_v1,omitempty"` } // ImportProviderDNSZoneResponse: import provider dns zone response. type ImportProviderDNSZoneResponse struct { Records []*Record `json:"records"` } // ImportRawDNSZoneRequest: import raw dns zone request. type ImportRawDNSZoneRequest struct { // DNSZone: DNS zone to import. DNSZone string `json:"-"` // Deprecated Content *string `json:"content,omitempty"` ProjectID string `json:"project_id"` // Deprecated: Format: default value: unknown_raw_format Format *RawFormat `json:"format,omitempty"` // BindSource: import a bind file format. // Precisely one of BindSource, AxfrSource must be set. BindSource *ImportRawDNSZoneRequestBindSource `json:"bind_source,omitempty"` // AxfrSource: import from the name server given with TSIG, to use or not. // Precisely one of BindSource, AxfrSource must be set. AxfrSource *ImportRawDNSZoneRequestAXFRSource `json:"axfr_source,omitempty"` } // ImportRawDNSZoneResponse: import raw dns zone response. type ImportRawDNSZoneResponse struct { Records []*Record `json:"records"` } // ListContactsResponse: list contacts response. type ListContactsResponse struct { TotalCount uint32 `json:"total_count"` Contacts []*ContactRoles `json:"contacts"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListContactsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListContactsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListContactsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Contacts = append(r.Contacts, results.Contacts...) r.TotalCount += uint32(len(results.Contacts)) return uint32(len(results.Contacts)), nil } // ListDNSZoneNameserversRequest: list dns zone nameservers request. type ListDNSZoneNameserversRequest struct { // DNSZone: DNS zone on which to filter the returned DNS zone name servers. DNSZone string `json:"-"` // ProjectID: project ID on which to filter the returned DNS zone name servers. ProjectID *string `json:"-"` } // ListDNSZoneNameserversResponse: list dns zone nameservers response. type ListDNSZoneNameserversResponse struct { // Ns: DNS zone name servers returned. Ns []*Nameserver `json:"ns"` } // ListDNSZoneRecordsRequest: list dns zone records request. type ListDNSZoneRecordsRequest struct { // DNSZone: DNS zone on which to filter the returned DNS zone records. DNSZone string `json:"-"` // ProjectID: project ID on which to filter the returned DNS zone records. ProjectID *string `json:"-"` // OrderBy: sort order of the returned DNS zone records. // Default value: name_asc OrderBy ListDNSZoneRecordsRequestOrderBy `json:"-"` // Page: page number to return, from the paginated results. Page *int32 `json:"-"` // PageSize: maximum number of DNS zone records per page. PageSize *uint32 `json:"-"` // Name: name on which to filter the returned DNS zone records. Name string `json:"-"` // Type: record type on which to filter the returned DNS zone records. // Default value: unknown Type RecordType `json:"-"` // ID: record ID on which to filter the returned DNS zone records. ID *string `json:"-"` } // ListDNSZoneRecordsResponse: list dns zone records response. type ListDNSZoneRecordsResponse struct { // TotalCount: total number of DNS zone records. TotalCount uint32 `json:"total_count"` // Records: paginated returned DNS zone records. Records []*Record `json:"records"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDNSZoneRecordsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDNSZoneRecordsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDNSZoneRecordsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Records = append(r.Records, results.Records...) r.TotalCount += uint32(len(results.Records)) return uint32(len(results.Records)), nil } // ListDNSZoneVersionRecordsRequest: list dns zone version records request. type ListDNSZoneVersionRecordsRequest struct { DNSZoneVersionID string `json:"-"` // Page: page number to return, from the paginated results. Page *int32 `json:"-"` // PageSize: maximum number of DNS zones versions records per page. PageSize *uint32 `json:"-"` } // ListDNSZoneVersionRecordsResponse: list dns zone version records response. type ListDNSZoneVersionRecordsResponse struct { // TotalCount: total number of DNS zones versions records. TotalCount uint32 `json:"total_count"` Records []*Record `json:"records"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDNSZoneVersionRecordsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDNSZoneVersionRecordsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDNSZoneVersionRecordsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Records = append(r.Records, results.Records...) r.TotalCount += uint32(len(results.Records)) return uint32(len(results.Records)), nil } // ListDNSZoneVersionsRequest: list dns zone versions request. type ListDNSZoneVersionsRequest struct { DNSZone string `json:"-"` // Page: page number to return, from the paginated results. Page *int32 `json:"-"` // PageSize: maximum number of DNS zones versions per page. PageSize *uint32 `json:"-"` } // ListDNSZoneVersionsResponse: list dns zone versions response. type ListDNSZoneVersionsResponse struct { // TotalCount: total number of DNS zones versions. TotalCount uint32 `json:"total_count"` Versions []*DNSZoneVersion `json:"versions"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDNSZoneVersionsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDNSZoneVersionsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDNSZoneVersionsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Versions = append(r.Versions, results.Versions...) r.TotalCount += uint32(len(results.Versions)) return uint32(len(results.Versions)), nil } // ListDNSZonesRequest: list dns zones request. type ListDNSZonesRequest struct { // OrganizationID: organization ID on which to filter the returned DNS zones. OrganizationID *string `json:"-"` // ProjectID: project ID on which to filter the returned DNS zones. ProjectID *string `json:"-"` // OrderBy: sort order of the returned DNS zones. // Default value: domain_asc OrderBy ListDNSZonesRequestOrderBy `json:"-"` // Page: page number to return, from the paginated results. Page *int32 `json:"-"` // PageSize: maximum number of DNS zones to return per page. PageSize *uint32 `json:"-"` // Domain: domain on which to filter the returned DNS zones. Domain string `json:"-"` // Deprecated: DNSZone: DNS zone on which to filter the returned DNS zones. DNSZone *string `json:"-"` // DNSZones: DNS zones on which to filter the returned DNS zones. DNSZones []string `json:"-"` // CreatedAfter: only list DNS zones created after this date. CreatedAfter *time.Time `json:"-"` // CreatedBefore: only list DNS zones created before this date. CreatedBefore *time.Time `json:"-"` // UpdatedAfter: only list DNS zones updated after this date. UpdatedAfter *time.Time `json:"-"` // UpdatedBefore: only list DNS zones updated before this date. UpdatedBefore *time.Time `json:"-"` } // ListDNSZonesResponse: list dns zones response. type ListDNSZonesResponse struct { // TotalCount: total number of DNS zones matching the requested criteria. TotalCount uint32 `json:"total_count"` // DNSZones: paginated returned DNS zones. DNSZones []*DNSZone `json:"dns_zones"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDNSZonesResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDNSZonesResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDNSZonesResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.DNSZones = append(r.DNSZones, results.DNSZones...) r.TotalCount += uint32(len(results.DNSZones)) return uint32(len(results.DNSZones)), nil } // ListDomainHostsResponse: list domain hosts response. type ListDomainHostsResponse struct { TotalCount uint32 `json:"total_count"` Hosts []*Host `json:"hosts"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDomainHostsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDomainHostsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDomainHostsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Hosts = append(r.Hosts, results.Hosts...) r.TotalCount += uint32(len(results.Hosts)) return uint32(len(results.Hosts)), nil } // ListDomainsResponse: list domains response. type ListDomainsResponse struct { TotalCount uint32 `json:"total_count"` Domains []*DomainSummary `json:"domains"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListDomainsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Domains = append(r.Domains, results.Domains...) r.TotalCount += uint32(len(results.Domains)) return uint32(len(results.Domains)), nil } // ListRenewableDomainsResponse: list renewable domains response. type ListRenewableDomainsResponse struct { TotalCount uint32 `json:"total_count"` Domains []*RenewableDomain `json:"domains"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListRenewableDomainsResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListRenewableDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListRenewableDomainsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Domains = append(r.Domains, results.Domains...) r.TotalCount += uint32(len(results.Domains)) return uint32(len(results.Domains)), nil } // ListSSLCertificatesRequest: list ssl certificates request. type ListSSLCertificatesRequest struct { DNSZone string `json:"-"` Page *int32 `json:"-"` PageSize *uint32 `json:"-"` ProjectID *string `json:"-"` } // ListSSLCertificatesResponse: list ssl certificates response. type ListSSLCertificatesResponse struct { TotalCount uint32 `json:"total_count"` Certificates []*SSLCertificate `json:"certificates"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListSSLCertificatesResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListSSLCertificatesResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListSSLCertificatesResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Certificates = append(r.Certificates, results.Certificates...) r.TotalCount += uint32(len(results.Certificates)) return uint32(len(results.Certificates)), nil } // ListTasksResponse: list tasks response. type ListTasksResponse struct { TotalCount uint32 `json:"total_count"` Tasks []*Task `json:"tasks"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListTasksResponse) UnsafeGetTotalCount() uint32 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListTasksResponse) UnsafeAppend(res interface{}) (uint32, error) { results, ok := res.(*ListTasksResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Tasks = append(r.Tasks, results.Tasks...) r.TotalCount += uint32(len(results.Tasks)) return uint32(len(results.Tasks)), nil } // ListTldsResponse: list tlds response. type ListTldsResponse struct { // Tlds: array of TLDs. Tlds []*Tld `json:"tlds"` // TotalCount: total count of TLDs returned. TotalCount uint64 `json:"total_count"` } // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListTldsResponse) UnsafeGetTotalCount() uint64 { return r.TotalCount } // UnsafeAppend should not be used // Internal usage only func (r *ListTldsResponse) UnsafeAppend(res interface{}) (uint64, error) { results, ok := res.(*ListTldsResponse) if !ok { return 0, errors.New("%T type cannot be appended to type %T", res, r) } r.Tlds = append(r.Tlds, results.Tlds...) r.TotalCount += uint64(len(results.Tlds)) return uint64(len(results.Tlds)), nil } // OrderResponse: order response. type OrderResponse struct { Domains []string `json:"domains"` OrganizationID string `json:"organization_id"` ProjectID string `json:"project_id"` TaskID string `json:"task_id"` CreatedAt *time.Time `json:"created_at"` } // RefreshDNSZoneRequest: refresh dns zone request. type RefreshDNSZoneRequest struct { // DNSZone: DNS zone to refresh. DNSZone string `json:"-"` // RecreateDNSZone: specifies whether or not to recreate the DNS zone. RecreateDNSZone bool `json:"recreate_dns_zone"` // RecreateSubDNSZone: specifies whether or not to recreate the sub DNS zone. RecreateSubDNSZone bool `json:"recreate_sub_dns_zone"` } // RefreshDNSZoneResponse: refresh dns zone response. type RefreshDNSZoneResponse struct { // DNSZones: DNS zones returned. DNSZones []*DNSZone `json:"dns_zones"` } // RegisterExternalDomainResponse: register external domain response. type RegisterExternalDomainResponse struct { Domain string `json:"domain"` OrganizationID string `json:"organization_id"` ValidationToken string `json:"validation_token"` CreatedAt *time.Time `json:"created_at"` ProjectID string `json:"project_id"` } // RegistrarAPIBuyDomainsRequest: registrar api buy domains request. type RegistrarAPIBuyDomainsRequest struct { Domains []string `json:"domains"` DurationInYears uint32 `json:"duration_in_years"` ProjectID string `json:"project_id"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContactID *string `json:"owner_contact_id,omitempty"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContact *NewContact `json:"owner_contact,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContactID *string `json:"technical_contact_id,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContact *NewContact `json:"technical_contact,omitempty"` } // RegistrarAPICheckContactsCompatibilityRequest: registrar api check contacts compatibility request. type RegistrarAPICheckContactsCompatibilityRequest struct { Domains []string `json:"domains"` Tlds []string `json:"tlds"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContactID *string `json:"owner_contact_id,omitempty"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContact *NewContact `json:"owner_contact,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContactID *string `json:"technical_contact_id,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContact *NewContact `json:"technical_contact,omitempty"` } // RegistrarAPICreateDomainHostRequest: registrar api create domain host request. type RegistrarAPICreateDomainHostRequest struct { Domain string `json:"-"` Name string `json:"name"` IPs []net.IP `json:"ips"` } // RegistrarAPIDeleteDomainHostRequest: registrar api delete domain host request. type RegistrarAPIDeleteDomainHostRequest struct { Domain string `json:"-"` Name string `json:"-"` } // RegistrarAPIDeleteExternalDomainRequest: registrar api delete external domain request. type RegistrarAPIDeleteExternalDomainRequest struct { Domain string `json:"-"` } // RegistrarAPIDisableDomainAutoRenewRequest: registrar api disable domain auto renew request. type RegistrarAPIDisableDomainAutoRenewRequest struct { Domain string `json:"-"` } // RegistrarAPIDisableDomainDNSSECRequest: registrar api disable domain dnssec request. type RegistrarAPIDisableDomainDNSSECRequest struct { Domain string `json:"-"` } // RegistrarAPIEnableDomainAutoRenewRequest: registrar api enable domain auto renew request. type RegistrarAPIEnableDomainAutoRenewRequest struct { Domain string `json:"-"` } // RegistrarAPIEnableDomainDNSSECRequest: registrar api enable domain dnssec request. type RegistrarAPIEnableDomainDNSSECRequest struct { Domain string `json:"-"` DsRecord *DSRecord `json:"ds_record,omitempty"` } // RegistrarAPIGetContactRequest: registrar api get contact request. type RegistrarAPIGetContactRequest struct { ContactID string `json:"-"` } // RegistrarAPIGetDomainAuthCodeRequest: registrar api get domain auth code request. type RegistrarAPIGetDomainAuthCodeRequest struct { Domain string `json:"-"` } // RegistrarAPIGetDomainRequest: registrar api get domain request. type RegistrarAPIGetDomainRequest struct { Domain string `json:"-"` } // RegistrarAPIListContactsRequest: registrar api list contacts request. type RegistrarAPIListContactsRequest struct { Page *int32 `json:"-"` PageSize *uint32 `json:"-"` Domain *string `json:"-"` ProjectID *string `json:"-"` OrganizationID *string `json:"-"` // Role: default value: unknown_role Role ListContactsRequestRole `json:"-"` // EmailStatus: default value: email_status_unknown EmailStatus ContactEmailStatus `json:"-"` } // RegistrarAPIListDomainHostsRequest: registrar api list domain hosts request. type RegistrarAPIListDomainHostsRequest struct { Domain string `json:"-"` Page *int32 `json:"-"` PageSize *uint32 `json:"-"` } // RegistrarAPIListDomainsRequest: registrar api list domains request. type RegistrarAPIListDomainsRequest struct { Page *int32 `json:"-"` PageSize *uint32 `json:"-"` // OrderBy: default value: domain_asc OrderBy ListDomainsRequestOrderBy `json:"-"` Registrar *string `json:"-"` // Status: default value: status_unknown Status DomainStatus `json:"-"` ProjectID *string `json:"-"` OrganizationID *string `json:"-"` IsExternal *bool `json:"-"` Domain *string `json:"-"` } // RegistrarAPIListRenewableDomainsRequest: registrar api list renewable domains request. type RegistrarAPIListRenewableDomainsRequest struct { Page *int32 `json:"-"` PageSize *uint32 `json:"-"` // OrderBy: default value: domain_asc OrderBy ListRenewableDomainsRequestOrderBy `json:"-"` ProjectID *string `json:"-"` OrganizationID *string `json:"-"` } // RegistrarAPIListTasksRequest: registrar api list tasks request. type RegistrarAPIListTasksRequest struct { Page *int32 `json:"-"` PageSize *uint32 `json:"-"` ProjectID *string `json:"-"` OrganizationID *string `json:"-"` Domain *string `json:"-"` Types []TaskType `json:"-"` Statuses []TaskStatus `json:"-"` // OrderBy: default value: domain_desc OrderBy ListTasksRequestOrderBy `json:"-"` } // RegistrarAPIListTldsRequest: registrar api list tlds request. type RegistrarAPIListTldsRequest struct { // Tlds: array of TLDs to return. Tlds []string `json:"-"` // Page: page number for the returned Projects. Page *int32 `json:"-"` // PageSize: maximum number of Project per page. PageSize *uint32 `json:"-"` // OrderBy: sort order of the returned TLDs. // Default value: name_asc OrderBy ListTldsRequestOrderBy `json:"-"` } // RegistrarAPILockDomainTransferRequest: registrar api lock domain transfer request. type RegistrarAPILockDomainTransferRequest struct { Domain string `json:"-"` } // RegistrarAPIRegisterExternalDomainRequest: registrar api register external domain request. type RegistrarAPIRegisterExternalDomainRequest struct { Domain string `json:"domain"` ProjectID string `json:"project_id"` } // RegistrarAPIRenewDomainsRequest: registrar api renew domains request. type RegistrarAPIRenewDomainsRequest struct { Domains []string `json:"domains"` DurationInYears uint32 `json:"duration_in_years"` ForceLateRenewal *bool `json:"force_late_renewal,omitempty"` } // RegistrarAPISearchAvailableDomainsRequest: registrar api search available domains request. type RegistrarAPISearchAvailableDomainsRequest struct { // Domains: a list of domain to search, TLD is optional. Domains []string `json:"-"` // Tlds: array of tlds to search on. Tlds []string `json:"-"` // StrictSearch: search exact match. StrictSearch bool `json:"-"` } // RegistrarAPITradeDomainRequest: registrar api trade domain request. type RegistrarAPITradeDomainRequest struct { Domain string `json:"-"` ProjectID *string `json:"project_id,omitempty"` // Precisely one of NewOwnerContactID, NewOwnerContact must be set. NewOwnerContactID *string `json:"new_owner_contact_id,omitempty"` // Precisely one of NewOwnerContactID, NewOwnerContact must be set. NewOwnerContact *NewContact `json:"new_owner_contact,omitempty"` } // RegistrarAPITransferInDomainRequest: registrar api transfer in domain request. type RegistrarAPITransferInDomainRequest struct { Domains []*TransferInDomainRequestTransferRequest `json:"domains"` ProjectID string `json:"project_id"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContactID *string `json:"owner_contact_id,omitempty"` // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContact *NewContact `json:"owner_contact,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContactID *string `json:"technical_contact_id,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContact *NewContact `json:"technical_contact,omitempty"` } // RegistrarAPIUnlockDomainTransferRequest: registrar api unlock domain transfer request. type RegistrarAPIUnlockDomainTransferRequest struct { Domain string `json:"-"` } // RegistrarAPIUpdateContactRequest: registrar api update contact request. type RegistrarAPIUpdateContactRequest struct { ContactID string `json:"-"` Email *string `json:"email,omitempty"` EmailAlt *string `json:"email_alt,omitempty"` PhoneNumber *string `json:"phone_number,omitempty"` FaxNumber *string `json:"fax_number,omitempty"` AddressLine1 *string `json:"address_line_1,omitempty"` AddressLine2 *string `json:"address_line_2,omitempty"` Zip *string `json:"zip,omitempty"` City *string `json:"city,omitempty"` Country *string `json:"country,omitempty"` VatIDentificationCode *string `json:"vat_identification_code,omitempty"` CompanyIDentificationCode *string `json:"company_identification_code,omitempty"` // Lang: default value: unknown_language_code Lang std.LanguageCode `json:"lang"` Resale *bool `json:"resale,omitempty"` // Deprecated Questions *[]*UpdateContactRequestQuestion `json:"questions,omitempty"` ExtensionFr *ContactExtensionFR `json:"extension_fr,omitempty"` ExtensionEu *ContactExtensionEU `json:"extension_eu,omitempty"` WhoisOptIn *bool `json:"whois_opt_in,omitempty"` State *string `json:"state,omitempty"` ExtensionNl *ContactExtensionNL `json:"extension_nl,omitempty"` } // RegistrarAPIUpdateDomainHostRequest: registrar api update domain host request. type RegistrarAPIUpdateDomainHostRequest struct { Domain string `json:"-"` Name string `json:"-"` IPs *[]string `json:"ips,omitempty"` } // RegistrarAPIUpdateDomainRequest: registrar api update domain request. type RegistrarAPIUpdateDomainRequest struct { Domain string `json:"-"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContactID *string `json:"technical_contact_id,omitempty"` // Precisely one of TechnicalContactID, TechnicalContact must be set. TechnicalContact *NewContact `json:"technical_contact,omitempty"` // Deprecated // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContactID *string `json:"owner_contact_id,omitempty"` // Deprecated // Precisely one of OwnerContactID, OwnerContact must be set. OwnerContact *NewContact `json:"owner_contact,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` // Precisely one of AdministrativeContactID, AdministrativeContact must be set. AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` } // RestoreDNSZoneVersionRequest: restore dns zone version request. type RestoreDNSZoneVersionRequest struct { DNSZoneVersionID string `json:"-"` } // RestoreDNSZoneVersionResponse: restore dns zone version response. type RestoreDNSZoneVersionResponse struct { } // SearchAvailableDomainsResponse: search available domains response. type SearchAvailableDomainsResponse struct { // AvailableDomains: array of available domains. AvailableDomains []*AvailableDomain `json:"available_domains"` } // UpdateDNSZoneNameserversRequest: update dns zone nameservers request. type UpdateDNSZoneNameserversRequest struct { // DNSZone: DNS zone in which to update the DNS zone name servers. DNSZone string `json:"-"` // Ns: new DNS zone name servers. Ns []*Nameserver `json:"ns"` } // UpdateDNSZoneNameserversResponse: update dns zone nameservers response. type UpdateDNSZoneNameserversResponse struct { // Ns: DNS zone name servers returned. Ns []*Nameserver `json:"ns"` } // UpdateDNSZoneRecordsRequest: update dns zone records request. type UpdateDNSZoneRecordsRequest struct { // DNSZone: DNS zone in which to update the DNS zone records. DNSZone string `json:"-"` // Changes: changes made to the records. Changes []*RecordChange `json:"changes"` // ReturnAllRecords: specifies whether or not to return all the records. ReturnAllRecords *bool `json:"return_all_records,omitempty"` // DisallowNewZoneCreation: disable the creation of the target zone if it does not exist. Target zone creation is disabled by default. DisallowNewZoneCreation bool `json:"disallow_new_zone_creation"` // Serial: use the provided serial (0) instead of the auto-increment serial. Serial *uint64 `json:"serial,omitempty"` } // UpdateDNSZoneRecordsResponse: update dns zone records response. type UpdateDNSZoneRecordsResponse struct { // Records: DNS zone records returned. Records []*Record `json:"records"` } // UpdateDNSZoneRequest: update dns zone request. type UpdateDNSZoneRequest struct { // DNSZone: DNS zone to update. DNSZone string `json:"-"` // NewDNSZone: name of the new DNS zone to create. NewDNSZone *string `json:"new_dns_zone,omitempty"` // ProjectID: project ID in which to create the new DNS zone. ProjectID string `json:"project_id"` } // Manage your domains, DNS zones and records with the Domains and DNS API. type API struct { client *scw.Client } // NewAPI returns a API object from a Scaleway client. func NewAPI(client *scw.Client) *API { return &API{ client: client, } } // ListDNSZones: Retrieve the list of DNS zones you can manage and filter DNS zones associated with specific domain names. func (s *API) ListDNSZones(req *ListDNSZonesRequest, opts ...scw.RequestOption) (*ListDNSZonesResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "organization_id", req.OrganizationID) parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "order_by", req.OrderBy) parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "domain", req.Domain) parameter.AddToQuery(query, "dns_zone", req.DNSZone) parameter.AddToQuery(query, "dns_zones", req.DNSZones) parameter.AddToQuery(query, "created_after", req.CreatedAfter) parameter.AddToQuery(query, "created_before", req.CreatedBefore) parameter.AddToQuery(query, "updated_after", req.UpdatedAfter) parameter.AddToQuery(query, "updated_before", req.UpdatedBefore) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones", Query: query, } var resp ListDNSZonesResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // CreateDNSZone: Create a new DNS zone specified by the domain name, the subdomain and the Project ID. func (s *API) CreateDNSZone(req *CreateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp DNSZone err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateDNSZone: Update the name and/or the Organizations for a DNS zone. func (s *API) UpdateDNSZone(req *UpdateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PATCH", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp DNSZone err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // CloneDNSZone: Clone an existing DNS zone with all its records into a new DNS zone. func (s *API) CloneDNSZone(req *CloneDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/clone", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp DNSZone err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DeleteDNSZone: Delete a DNS zone and all its records. func (s *API) DeleteDNSZone(req *DeleteDNSZoneRequest, opts ...scw.RequestOption) (*DeleteDNSZoneResponse, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } query := url.Values{} parameter.AddToQuery(query, "project_id", req.ProjectID) if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", Query: query, } var resp DeleteDNSZoneResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDNSZoneRecords: Retrieve a list of DNS records within a DNS zone that has default name servers. // You can filter records by type and name. func (s *API) ListDNSZoneRecords(req *ListDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneRecordsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "order_by", req.OrderBy) parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "name", req.Name) parameter.AddToQuery(query, "type", req.Type) parameter.AddToQuery(query, "id", req.ID) if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", Query: query, } var resp ListDNSZoneRecordsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateDNSZoneRecords: Update records within a DNS zone that has default name servers and perform several actions on your records. // // Actions include: // - add: allows you to add a new record or add a new IP to an existing A record, for example // - set: allows you to edit a record or edit an IP from an existing A record, for example // - delete: allows you to delete a record or delete an IP from an existing A record, for example // - clear: allows you to delete all records from a DNS zone // // All edits will be versioned. func (s *API) UpdateDNSZoneRecords(req *UpdateDNSZoneRecordsRequest, opts ...scw.RequestOption) (*UpdateDNSZoneRecordsResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PATCH", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp UpdateDNSZoneRecordsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDNSZoneNameservers: Retrieve a list of name servers within a DNS zone and their optional glue records. func (s *API) ListDNSZoneNameservers(req *ListDNSZoneNameserversRequest, opts ...scw.RequestOption) (*ListDNSZoneNameserversResponse, error) { var err error query := url.Values{} parameter.AddToQuery(query, "project_id", req.ProjectID) if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", Query: query, } var resp ListDNSZoneNameserversResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateDNSZoneNameservers: Update name servers within a DNS zone and set optional glue records. func (s *API) UpdateDNSZoneNameservers(req *UpdateDNSZoneNameserversRequest, opts ...scw.RequestOption) (*UpdateDNSZoneNameserversResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PUT", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp UpdateDNSZoneNameserversResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ClearDNSZoneRecords: Delete all records within a DNS zone that has default name servers.
// All edits will be versioned. func (s *API) ClearDNSZoneRecords(req *ClearDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ClearDNSZoneRecordsResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", } var resp ClearDNSZoneRecordsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ExportRawDNSZone: Export a DNS zone with default name servers, in a specific format. func (s *API) ExportRawDNSZone(req *ExportRawDNSZoneRequest, opts ...scw.RequestOption) (*scw.File, error) { var err error query := url.Values{} parameter.AddToQuery(query, "format", req.Format) if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", Query: query, } var resp scw.File err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ImportRawDNSZone: Import and replace the format of records from a given provider, with default name servers. func (s *API) ImportRawDNSZone(req *ImportRawDNSZoneRequest, opts ...scw.RequestOption) (*ImportRawDNSZoneResponse, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp ImportRawDNSZoneResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ImportProviderDNSZone: Import and replace the format of records from a given provider, with default name servers. func (s *API) ImportProviderDNSZone(req *ImportProviderDNSZoneRequest, opts ...scw.RequestOption) (*ImportProviderDNSZoneResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/import-provider", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp ImportProviderDNSZoneResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // RefreshDNSZone: Refresh an SOA DNS zone to reload the records in the DNS zone and update the SOA serial. // You can recreate the given DNS zone and its sub DNS zone if needed. func (s *API) RefreshDNSZone(req *RefreshDNSZoneRequest, opts ...scw.RequestOption) (*RefreshDNSZoneResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/refresh", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp RefreshDNSZoneResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDNSZoneVersions: Retrieve a list of a DNS zone's versions.
// The maximum version count is 100. If the count reaches this limit, the oldest version will be deleted after each new modification. func (s *API) ListDNSZoneVersions(req *ListDNSZoneVersionsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/versions", Query: query, } var resp ListDNSZoneVersionsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDNSZoneVersionRecords: Retrieve a list of records from a specific DNS zone version. func (s *API) ListDNSZoneVersionRecords(req *ListDNSZoneVersionRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionRecordsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) if fmt.Sprint(req.DNSZoneVersionID) == "" { return nil, errors.New("field DNSZoneVersionID cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "", Query: query, } var resp ListDNSZoneVersionRecordsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetDNSZoneVersionDiff: Access a previous DNS zone version to see the differences from another specific version. func (s *API) GetDNSZoneVersionDiff(req *GetDNSZoneVersionDiffRequest, opts ...scw.RequestOption) (*GetDNSZoneVersionDiffResponse, error) { var err error if fmt.Sprint(req.DNSZoneVersionID) == "" { return nil, errors.New("field DNSZoneVersionID cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/diff", } var resp GetDNSZoneVersionDiffResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // RestoreDNSZoneVersion: Restore and activate a version of a specific DNS zone. func (s *API) RestoreDNSZoneVersion(req *RestoreDNSZoneVersionRequest, opts ...scw.RequestOption) (*RestoreDNSZoneVersionResponse, error) { var err error if fmt.Sprint(req.DNSZoneVersionID) == "" { return nil, errors.New("field DNSZoneVersionID cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/restore", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp RestoreDNSZoneVersionResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetSSLCertificate: Get the DNS zone's TLS certificate. If you do not have a certificate, the ouptut returns `no certificate found`. func (s *API) GetSSLCertificate(req *GetSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", } var resp SSLCertificate err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // CreateSSLCertificate: Create a new TLS certificate or retrieve information about an existing TLS certificate. func (s *API) CreateSSLCertificate(req *CreateSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { var err error scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/ssl-certificates", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp SSLCertificate err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListSSLCertificates: List all the TLS certificates a user has created, specified by the user's Project ID and the DNS zone. func (s *API) ListSSLCertificates(req *ListSSLCertificatesRequest, opts ...scw.RequestOption) (*ListSSLCertificatesResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "dns_zone", req.DNSZone) parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "project_id", req.ProjectID) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/ssl-certificates", Query: query, } var resp ListSSLCertificatesResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DeleteSSLCertificate: Delete an existing TLS certificate specified by its DNS zone. Deleting a TLS certificate is permanent and cannot be undone. func (s *API) DeleteSSLCertificate(req *DeleteSSLCertificateRequest, opts ...scw.RequestOption) (*DeleteSSLCertificateResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", } var resp DeleteSSLCertificateResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetDNSZoneTsigKey: Retrieve information about the TSIG key of a given DNS zone to allow AXFR requests. func (s *API) GetDNSZoneTsigKey(req *GetDNSZoneTsigKeyRequest, opts ...scw.RequestOption) (*GetDNSZoneTsigKeyResponse, error) { var err error if fmt.Sprint(req.DNSZone) == "" { return nil, errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", } var resp GetDNSZoneTsigKeyResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DeleteDNSZoneTsigKey: Delete an existing TSIG key specified by its DNS zone. Deleting a TSIG key is permanent and cannot be undone. func (s *API) DeleteDNSZoneTsigKey(req *DeleteDNSZoneTsigKeyRequest, opts ...scw.RequestOption) error { var err error if fmt.Sprint(req.DNSZone) == "" { return errors.New("field DNSZone cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", } err = s.client.Do(scwReq, nil, opts...) if err != nil { return err } return nil } // Manage your domains and contacts. type RegistrarAPI struct { client *scw.Client } // NewRegistrarAPI returns a RegistrarAPI object from a Scaleway client. func NewRegistrarAPI(client *scw.Client) *RegistrarAPI { return &RegistrarAPI{ client: client, } } // ListTasks: List all operations performed on the account. // You can filter the list of tasks by domain name. func (s *RegistrarAPI) ListTasks(req *RegistrarAPIListTasksRequest, opts ...scw.RequestOption) (*ListTasksResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "organization_id", req.OrganizationID) parameter.AddToQuery(query, "domain", req.Domain) parameter.AddToQuery(query, "types", req.Types) parameter.AddToQuery(query, "statuses", req.Statuses) parameter.AddToQuery(query, "order_by", req.OrderBy) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/tasks", Query: query, } var resp ListTasksResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // BuyDomains: Request the registration of domain names. // You can provide a domain's already existing contact or a new contact. func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/buy-domains", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp OrderResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // RenewDomains: Request the renewal of one or more domain names. func (s *RegistrarAPI) RenewDomains(req *RegistrarAPIRenewDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/renew-domains", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp OrderResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // TransferInDomain: Request the transfer of a domain from another registrar to Scaleway Domains and DNS. func (s *RegistrarAPI) TransferInDomain(req *RegistrarAPITransferInDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/transfer-domains", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp OrderResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // TradeDomain: Request to change a domain's contact owner.
// If you specify the `organization_id` of the domain's new owner, the contact will change from the current owner's Scaleway account to the new owner's Scaleway account.
// If the new owner's current contact information is not available, the first ever contact they have created for previous domains is taken into account to operate the change.
// If the new owner has never created a contact to register domains before, an error message displays. func (s *RegistrarAPI) TradeDomain(req *RegistrarAPITradeDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/trade", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp OrderResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // RegisterExternalDomain: Request the registration of an external domain name. func (s *RegistrarAPI) RegisterExternalDomain(req *RegistrarAPIRegisterExternalDomainRequest, opts ...scw.RequestOption) (*RegisterExternalDomainResponse, error) { var err error if req.ProjectID == "" { defaultProjectID, _ := s.client.GetDefaultProjectID() req.ProjectID = defaultProjectID } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/external-domains", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp RegisterExternalDomainResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DeleteExternalDomain: Delete an external domain name. func (s *RegistrarAPI) DeleteExternalDomain(req *RegistrarAPIDeleteExternalDomainRequest, opts ...scw.RequestOption) (*DeleteExternalDomainResponse, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/external-domains/" + fmt.Sprint(req.Domain) + "", } var resp DeleteExternalDomainResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // CheckContactsCompatibility: Check whether contacts are compatible with a domain or a TLD. // If contacts are not compatible with either the domain or the TLD, the information that needs to be corrected is returned. func (s *RegistrarAPI) CheckContactsCompatibility(req *RegistrarAPICheckContactsCompatibilityRequest, opts ...scw.RequestOption) (*CheckContactsCompatibilityResponse, error) { var err error scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/check-contacts-compatibility", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp CheckContactsCompatibilityResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListContacts: Retrieve the list of contacts and their associated domains and roles. // You can filter the list by domain name. func (s *RegistrarAPI) ListContacts(req *RegistrarAPIListContactsRequest, opts ...scw.RequestOption) (*ListContactsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "domain", req.Domain) parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "organization_id", req.OrganizationID) parameter.AddToQuery(query, "role", req.Role) parameter.AddToQuery(query, "email_status", req.EmailStatus) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/contacts", Query: query, } var resp ListContactsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetContact: Retrieve a contact's details from the registrar using the given contact's ID. func (s *RegistrarAPI) GetContact(req *RegistrarAPIGetContactRequest, opts ...scw.RequestOption) (*Contact, error) { var err error if fmt.Sprint(req.ContactID) == "" { return nil, errors.New("field ContactID cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", } var resp Contact err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateContact: Edit the contact's information. func (s *RegistrarAPI) UpdateContact(req *RegistrarAPIUpdateContactRequest, opts ...scw.RequestOption) (*Contact, error) { var err error if fmt.Sprint(req.ContactID) == "" { return nil, errors.New("field ContactID cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PATCH", Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Contact err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDomains: Retrieve the list of domains you own. func (s *RegistrarAPI) ListDomains(req *RegistrarAPIListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "order_by", req.OrderBy) parameter.AddToQuery(query, "registrar", req.Registrar) parameter.AddToQuery(query, "status", req.Status) parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "organization_id", req.OrganizationID) parameter.AddToQuery(query, "is_external", req.IsExternal) parameter.AddToQuery(query, "domain", req.Domain) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/domains", Query: query, } var resp ListDomainsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListRenewableDomains: Retrieve the list of domains you own that can be renewed. You can also see the maximum renewal duration in years for your domains that are renewable. func (s *RegistrarAPI) ListRenewableDomains(req *RegistrarAPIListRenewableDomainsRequest, opts ...scw.RequestOption) (*ListRenewableDomainsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "order_by", req.OrderBy) parameter.AddToQuery(query, "project_id", req.ProjectID) parameter.AddToQuery(query, "organization_id", req.OrganizationID) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/renewable-domains", Query: query, } var resp ListRenewableDomainsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetDomain: Retrieve a specific domain and display the domain's information. func (s *RegistrarAPI) GetDomain(req *RegistrarAPIGetDomainRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateDomain: Update contacts for a specific domain or create a new contact.
// If you add the same contact for multiple roles (owner, administrative, technical), only one ID will be created and used for all of the roles. func (s *RegistrarAPI) UpdateDomain(req *RegistrarAPIUpdateDomainRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PATCH", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // LockDomainTransfer: Lock the transfer of a domain. This means that the domain cannot be transferred and the authorization code cannot be requested to your current registrar. func (s *RegistrarAPI) LockDomainTransfer(req *RegistrarAPILockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/lock-transfer", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UnlockDomainTransfer: Unlock the transfer of a domain. This means that the domain can be transferred and the authorization code can be requested to your current registrar. func (s *RegistrarAPI) UnlockDomainTransfer(req *RegistrarAPIUnlockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/unlock-transfer", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // EnableDomainAutoRenew: Enable the `auto renew` feature for a domain. This means the domain will be automatically renewed before its expiry date. func (s *RegistrarAPI) EnableDomainAutoRenew(req *RegistrarAPIEnableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-auto-renew", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DisableDomainAutoRenew: Disable the `auto renew` feature for a domain. This means the domain will not be renewed before its expiry date. func (s *RegistrarAPI) DisableDomainAutoRenew(req *RegistrarAPIDisableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-auto-renew", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // GetDomainAuthCode: Retrieve the authorization code to tranfer an unlocked domain. The output returns an error if the domain is locked. // Some TLDs may have a different procedure to retrieve the authorization code. In that case, the information displays in the message field. func (s *RegistrarAPI) GetDomainAuthCode(req *RegistrarAPIGetDomainAuthCodeRequest, opts ...scw.RequestOption) (*GetDomainAuthCodeResponse, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/auth-code", } var resp GetDomainAuthCodeResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // EnableDomainDNSSEC: If your domain has the default Scaleway NS and uses another registrar, you have to update the DS record manually. func (s *RegistrarAPI) EnableDomainDNSSEC(req *RegistrarAPIEnableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-dnssec", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DisableDomainDNSSEC: Disable DNSSEC for a domain. func (s *RegistrarAPI) DisableDomainDNSSEC(req *RegistrarAPIDisableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-dnssec", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Domain err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // SearchAvailableDomains: Search a domain or a maximum of 10 domains that are available. // // If the TLD list is empty or not set, the search returns the results from the most popular TLDs. func (s *RegistrarAPI) SearchAvailableDomains(req *RegistrarAPISearchAvailableDomainsRequest, opts ...scw.RequestOption) (*SearchAvailableDomainsResponse, error) { var err error query := url.Values{} parameter.AddToQuery(query, "domains", req.Domains) parameter.AddToQuery(query, "tlds", req.Tlds) parameter.AddToQuery(query, "strict_search", req.StrictSearch) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/search-domains", Query: query, } var resp SearchAvailableDomainsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListTlds: Retrieve the list of TLDs and offers associated with them. func (s *RegistrarAPI) ListTlds(req *RegistrarAPIListTldsRequest, opts ...scw.RequestOption) (*ListTldsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "tlds", req.Tlds) parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) parameter.AddToQuery(query, "order_by", req.OrderBy) scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/tlds", Query: query, } var resp ListTldsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // CreateDomainHost: Create a hostname for a domain with glue IPs. func (s *RegistrarAPI) CreateDomainHost(req *RegistrarAPICreateDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "POST", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Host err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // ListDomainHosts: List a domain's hostnames using their glue IPs. func (s *RegistrarAPI) ListDomainHosts(req *RegistrarAPIListDomainHostsRequest, opts ...scw.RequestOption) (*ListDomainHostsResponse, error) { var err error defaultPageSize, exist := s.client.GetDefaultPageSize() if (req.PageSize == nil || *req.PageSize == 0) && exist { req.PageSize = &defaultPageSize } query := url.Values{} parameter.AddToQuery(query, "page", req.Page) parameter.AddToQuery(query, "page_size", req.PageSize) if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "GET", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts", Query: query, } var resp ListDomainHostsResponse err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // UpdateDomainHost: Update a domain's hostname with glue IPs. func (s *RegistrarAPI) UpdateDomainHost(req *RegistrarAPIUpdateDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } if fmt.Sprint(req.Name) == "" { return nil, errors.New("field Name cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "PATCH", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts/" + fmt.Sprint(req.Name) + "", } err = scwReq.SetBody(req) if err != nil { return nil, err } var resp Host err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil } // DeleteDomainHost: Delete a domain's hostname. func (s *RegistrarAPI) DeleteDomainHost(req *RegistrarAPIDeleteDomainHostRequest, opts ...scw.RequestOption) (*Host, error) { var err error if fmt.Sprint(req.Domain) == "" { return nil, errors.New("field Domain cannot be empty in request") } if fmt.Sprint(req.Name) == "" { return nil, errors.New("field Name cannot be empty in request") } scwReq := &scw.ScalewayRequest{ Method: "DELETE", Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/hosts/" + fmt.Sprint(req.Name) + "", } var resp Host err = s.client.Do(scwReq, &resp, opts...) if err != nil { return nil, err } return &resp, nil }