@@ -513,6 +513,42 @@ func (enum *DomainStatus) UnmarshalJSON(data []byte) error {
513513 return nil
514514}
515515
516+ type HostStatus string
517+
518+ const (
519+ // HostStatusUnknownStatus is [insert doc].
520+ HostStatusUnknownStatus = HostStatus ("unknown_status" )
521+ // HostStatusActive is [insert doc].
522+ HostStatusActive = HostStatus ("active" )
523+ // HostStatusUpdating is [insert doc].
524+ HostStatusUpdating = HostStatus ("updating" )
525+ // HostStatusDeleting is [insert doc].
526+ HostStatusDeleting = HostStatus ("deleting" )
527+ )
528+
529+ func (enum HostStatus ) String () string {
530+ if enum == "" {
531+ // return default value if empty
532+ return "unknown_status"
533+ }
534+ return string (enum )
535+ }
536+
537+ func (enum HostStatus ) MarshalJSON () ([]byte , error ) {
538+ return []byte (fmt .Sprintf (`"%s"` , enum )), nil
539+ }
540+
541+ func (enum * HostStatus ) UnmarshalJSON (data []byte ) error {
542+ tmp := ""
543+
544+ if err := json .Unmarshal (data , & tmp ); err != nil {
545+ return err
546+ }
547+
548+ * enum = HostStatus (HostStatus (tmp ).String ())
549+ return nil
550+ }
551+
516552type LanguageCode string
517553
518554const (
@@ -968,6 +1004,12 @@ const (
9681004 TaskTypeDeleteDomainExpired = TaskType ("delete_domain_expired" )
9691005 // TaskTypeDeleteExternalDomain is [insert doc].
9701006 TaskTypeDeleteExternalDomain = TaskType ("delete_external_domain" )
1007+ // TaskTypeCreateHost is [insert doc].
1008+ TaskTypeCreateHost = TaskType ("create_host" )
1009+ // TaskTypeUpdateHost is [insert doc].
1010+ TaskTypeUpdateHost = TaskType ("update_host" )
1011+ // TaskTypeDeleteHost is [insert doc].
1012+ TaskTypeDeleteHost = TaskType ("delete_host" )
9711013)
9721014
9731015func (enum TaskType ) String () string {
@@ -1351,6 +1393,18 @@ type GetDomainAuthCodeResponse struct {
13511393 AuthCode string `json:"auth_code"`
13521394}
13531395
1396+ type Host struct {
1397+ Domain string `json:"domain"`
1398+
1399+ Name string `json:"name"`
1400+
1401+ IPs []net.IP `json:"ips"`
1402+ // Status:
1403+ //
1404+ // Default value: unknown_status
1405+ Status HostStatus `json:"status"`
1406+ }
1407+
13541408type ImportProviderDNSZoneRequestOnlineV1 struct {
13551409 Token string `json:"token"`
13561410}
@@ -1428,6 +1482,13 @@ type ListDNSZonesResponse struct {
14281482 DNSZones []* DNSZone `json:"dns_zones"`
14291483}
14301484
1485+ // ListDomainHostsResponse: list domain hosts response
1486+ type ListDomainHostsResponse struct {
1487+ TotalCount uint32 `json:"total_count"`
1488+
1489+ Hosts []* Host `json:"hosts"`
1490+ }
1491+
14311492// ListDomainsResponse: list domains response
14321493type ListDomainsResponse struct {
14331494 TotalCount uint32 `json:"total_count"`
@@ -3751,6 +3812,156 @@ func (s *RegistrarAPI) SearchAvailableDomains(req *RegistrarAPISearchAvailableDo
37513812 return & resp , nil
37523813}
37533814
3815+ type RegistrarAPICreateDomainHostRequest struct {
3816+ Domain string `json:"-"`
3817+
3818+ Name string `json:"name"`
3819+
3820+ IPs []net.IP `json:"ips"`
3821+ }
3822+
3823+ // CreateDomainHost: create domain hostname with glue IPs
3824+ func (s * RegistrarAPI ) CreateDomainHost (req * RegistrarAPICreateDomainHostRequest , opts ... scw.RequestOption ) (* Host , error ) {
3825+ var err error
3826+
3827+ if fmt .Sprint (req .Domain ) == "" {
3828+ return nil , errors .New ("field Domain cannot be empty in request" )
3829+ }
3830+
3831+ scwReq := & scw.ScalewayRequest {
3832+ Method : "POST" ,
3833+ Path : "/domain/v2beta1/domains/" + fmt .Sprint (req .Domain ) + "/hosts" ,
3834+ Headers : http.Header {},
3835+ }
3836+
3837+ err = scwReq .SetBody (req )
3838+ if err != nil {
3839+ return nil , err
3840+ }
3841+
3842+ var resp Host
3843+
3844+ err = s .client .Do (scwReq , & resp , opts ... )
3845+ if err != nil {
3846+ return nil , err
3847+ }
3848+ return & resp , nil
3849+ }
3850+
3851+ type RegistrarAPIListDomainHostsRequest struct {
3852+ Domain string `json:"-"`
3853+
3854+ Page * int32 `json:"-"`
3855+
3856+ PageSize * uint32 `json:"-"`
3857+ }
3858+
3859+ // ListDomainHosts: list domain hostnames with they glue IPs
3860+ func (s * RegistrarAPI ) ListDomainHosts (req * RegistrarAPIListDomainHostsRequest , opts ... scw.RequestOption ) (* ListDomainHostsResponse , error ) {
3861+ var err error
3862+
3863+ defaultPageSize , exist := s .client .GetDefaultPageSize ()
3864+ if (req .PageSize == nil || * req .PageSize == 0 ) && exist {
3865+ req .PageSize = & defaultPageSize
3866+ }
3867+
3868+ query := url.Values {}
3869+ parameter .AddToQuery (query , "page" , req .Page )
3870+ parameter .AddToQuery (query , "page_size" , req .PageSize )
3871+
3872+ if fmt .Sprint (req .Domain ) == "" {
3873+ return nil , errors .New ("field Domain cannot be empty in request" )
3874+ }
3875+
3876+ scwReq := & scw.ScalewayRequest {
3877+ Method : "GET" ,
3878+ Path : "/domain/v2beta1/domains/" + fmt .Sprint (req .Domain ) + "/hosts" ,
3879+ Query : query ,
3880+ Headers : http.Header {},
3881+ }
3882+
3883+ var resp ListDomainHostsResponse
3884+
3885+ err = s .client .Do (scwReq , & resp , opts ... )
3886+ if err != nil {
3887+ return nil , err
3888+ }
3889+ return & resp , nil
3890+ }
3891+
3892+ type RegistrarAPIUpdateDomainHostRequest struct {
3893+ Domain string `json:"-"`
3894+
3895+ Name string `json:"-"`
3896+
3897+ IPs * []string `json:"ips"`
3898+ }
3899+
3900+ // UpdateDomainHost: update domain hostname with glue IPs
3901+ func (s * RegistrarAPI ) UpdateDomainHost (req * RegistrarAPIUpdateDomainHostRequest , opts ... scw.RequestOption ) (* Host , error ) {
3902+ var err error
3903+
3904+ if fmt .Sprint (req .Domain ) == "" {
3905+ return nil , errors .New ("field Domain cannot be empty in request" )
3906+ }
3907+
3908+ if fmt .Sprint (req .Name ) == "" {
3909+ return nil , errors .New ("field Name cannot be empty in request" )
3910+ }
3911+
3912+ scwReq := & scw.ScalewayRequest {
3913+ Method : "PATCH" ,
3914+ Path : "/domain/v2beta1/domains/" + fmt .Sprint (req .Domain ) + "/hosts/" + fmt .Sprint (req .Name ) + "" ,
3915+ Headers : http.Header {},
3916+ }
3917+
3918+ err = scwReq .SetBody (req )
3919+ if err != nil {
3920+ return nil , err
3921+ }
3922+
3923+ var resp Host
3924+
3925+ err = s .client .Do (scwReq , & resp , opts ... )
3926+ if err != nil {
3927+ return nil , err
3928+ }
3929+ return & resp , nil
3930+ }
3931+
3932+ type RegistrarAPIDeleteDomainHostRequest struct {
3933+ Domain string `json:"-"`
3934+
3935+ Name string `json:"-"`
3936+ }
3937+
3938+ // DeleteDomainHost: delete domain hostname
3939+ func (s * RegistrarAPI ) DeleteDomainHost (req * RegistrarAPIDeleteDomainHostRequest , opts ... scw.RequestOption ) (* Host , error ) {
3940+ var err error
3941+
3942+ if fmt .Sprint (req .Domain ) == "" {
3943+ return nil , errors .New ("field Domain cannot be empty in request" )
3944+ }
3945+
3946+ if fmt .Sprint (req .Name ) == "" {
3947+ return nil , errors .New ("field Name cannot be empty in request" )
3948+ }
3949+
3950+ scwReq := & scw.ScalewayRequest {
3951+ Method : "DELETE" ,
3952+ Path : "/domain/v2beta1/domains/" + fmt .Sprint (req .Domain ) + "/hosts/" + fmt .Sprint (req .Name ) + "" ,
3953+ Headers : http.Header {},
3954+ }
3955+
3956+ var resp Host
3957+
3958+ err = s .client .Do (scwReq , & resp , opts ... )
3959+ if err != nil {
3960+ return nil , err
3961+ }
3962+ return & resp , nil
3963+ }
3964+
37543965// UnsafeGetTotalCount should not be used
37553966// Internal usage only
37563967func (r * ListDNSZonesResponse ) UnsafeGetTotalCount () uint32 {
@@ -3921,3 +4132,22 @@ func (r *ListRenewableDomainsResponse) UnsafeAppend(res interface{}) (uint32, er
39214132 r .TotalCount += uint32 (len (results .Domains ))
39224133 return uint32 (len (results .Domains )), nil
39234134}
4135+
4136+ // UnsafeGetTotalCount should not be used
4137+ // Internal usage only
4138+ func (r * ListDomainHostsResponse ) UnsafeGetTotalCount () uint32 {
4139+ return r .TotalCount
4140+ }
4141+
4142+ // UnsafeAppend should not be used
4143+ // Internal usage only
4144+ func (r * ListDomainHostsResponse ) UnsafeAppend (res interface {}) (uint32 , error ) {
4145+ results , ok := res .(* ListDomainHostsResponse )
4146+ if ! ok {
4147+ return 0 , errors .New ("%T type cannot be appended to type %T" , res , r )
4148+ }
4149+
4150+ r .Hosts = append (r .Hosts , results .Hosts ... )
4151+ r .TotalCount += uint32 (len (results .Hosts ))
4152+ return uint32 (len (results .Hosts )), nil
4153+ }
0 commit comments