1// This file was automatically generated. DO NOT EDIT. 2// If you have any remark or suggestion do not hesitate to open an issue. 3 4// Package domain provides methods and message types of the domain v2beta1 API. 5package domain 6 7import ( 8 "bytes" 9 "encoding/json" 10 "fmt" 11 "net" 12 "net/http" 13 "net/url" 14 "strings" 15 "time" 16 17 "github.com/scaleway/scaleway-sdk-go/internal/errors" 18 "github.com/scaleway/scaleway-sdk-go/internal/marshaler" 19 "github.com/scaleway/scaleway-sdk-go/internal/parameter" 20 "github.com/scaleway/scaleway-sdk-go/namegenerator" 21 "github.com/scaleway/scaleway-sdk-go/scw" 22) 23 24// always import dependencies 25var ( 26 _ fmt.Stringer 27 _ json.Unmarshaler 28 _ url.URL 29 _ net.IP 30 _ http.Header 31 _ bytes.Reader 32 _ time.Time 33 _ = strings.Join 34 35 _ scw.ScalewayRequest 36 _ marshaler.Duration 37 _ scw.File 38 _ = parameter.AddToQuery 39 _ = namegenerator.GetRandomName 40) 41 42// API: DNS API 43// 44// Manage your DNS zones and records. 45type API struct { 46 client *scw.Client 47} 48 49// NewAPI returns a API object from a Scaleway client. 50func NewAPI(client *scw.Client) *API { 51 return &API{ 52 client: client, 53 } 54} 55 56// RegistrarAPI: domains registrar API 57// 58// Manage your domains and contacts. 59type RegistrarAPI struct { 60 client *scw.Client 61} 62 63// NewRegistrarAPI returns a RegistrarAPI object from a Scaleway client. 64func NewRegistrarAPI(client *scw.Client) *RegistrarAPI { 65 return &RegistrarAPI{ 66 client: client, 67 } 68} 69 70type ContactCivility string 71 72const ( 73 // ContactCivilityCivilityUnknown is [insert doc]. 74 ContactCivilityCivilityUnknown = ContactCivility("civility_unknown") 75 // ContactCivilityMr is [insert doc]. 76 ContactCivilityMr = ContactCivility("mr") 77 // ContactCivilityMrs is [insert doc]. 78 ContactCivilityMrs = ContactCivility("mrs") 79) 80 81func (enum ContactCivility) String() string { 82 if enum == "" { 83 // return default value if empty 84 return "civility_unknown" 85 } 86 return string(enum) 87} 88 89func (enum ContactCivility) MarshalJSON() ([]byte, error) { 90 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 91} 92 93func (enum *ContactCivility) UnmarshalJSON(data []byte) error { 94 tmp := "" 95 96 if err := json.Unmarshal(data, &tmp); err != nil { 97 return err 98 } 99 100 *enum = ContactCivility(ContactCivility(tmp).String()) 101 return nil 102} 103 104type ContactEmailStatus string 105 106const ( 107 // ContactEmailStatusEmailStatusUnknown is [insert doc]. 108 ContactEmailStatusEmailStatusUnknown = ContactEmailStatus("email_status_unknown") 109 // ContactEmailStatusValidated is [insert doc]. 110 ContactEmailStatusValidated = ContactEmailStatus("validated") 111 // ContactEmailStatusNotValidated is [insert doc]. 112 ContactEmailStatusNotValidated = ContactEmailStatus("not_validated") 113 // ContactEmailStatusInvalidEmail is [insert doc]. 114 ContactEmailStatusInvalidEmail = ContactEmailStatus("invalid_email") 115) 116 117func (enum ContactEmailStatus) String() string { 118 if enum == "" { 119 // return default value if empty 120 return "email_status_unknown" 121 } 122 return string(enum) 123} 124 125func (enum ContactEmailStatus) MarshalJSON() ([]byte, error) { 126 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 127} 128 129func (enum *ContactEmailStatus) UnmarshalJSON(data []byte) error { 130 tmp := "" 131 132 if err := json.Unmarshal(data, &tmp); err != nil { 133 return err 134 } 135 136 *enum = ContactEmailStatus(ContactEmailStatus(tmp).String()) 137 return nil 138} 139 140type ContactExtensionFRMode string 141 142const ( 143 // ContactExtensionFRModeModeUnknown is [insert doc]. 144 ContactExtensionFRModeModeUnknown = ContactExtensionFRMode("mode_unknown") 145 // ContactExtensionFRModeParticular is [insert doc]. 146 ContactExtensionFRModeParticular = ContactExtensionFRMode("particular") 147 // ContactExtensionFRModeCompanyIdentificationCode is [insert doc]. 148 ContactExtensionFRModeCompanyIdentificationCode = ContactExtensionFRMode("company_identification_code") 149 // ContactExtensionFRModeDuns is [insert doc]. 150 ContactExtensionFRModeDuns = ContactExtensionFRMode("duns") 151 // ContactExtensionFRModeLocal is [insert doc]. 152 ContactExtensionFRModeLocal = ContactExtensionFRMode("local") 153 // ContactExtensionFRModeAssociation is [insert doc]. 154 ContactExtensionFRModeAssociation = ContactExtensionFRMode("association") 155 // ContactExtensionFRModeBrand is [insert doc]. 156 ContactExtensionFRModeBrand = ContactExtensionFRMode("brand") 157 // ContactExtensionFRModeCodeAuthAfnic is [insert doc]. 158 ContactExtensionFRModeCodeAuthAfnic = ContactExtensionFRMode("code_auth_afnic") 159) 160 161func (enum ContactExtensionFRMode) String() string { 162 if enum == "" { 163 // return default value if empty 164 return "mode_unknown" 165 } 166 return string(enum) 167} 168 169func (enum ContactExtensionFRMode) MarshalJSON() ([]byte, error) { 170 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 171} 172 173func (enum *ContactExtensionFRMode) UnmarshalJSON(data []byte) error { 174 tmp := "" 175 176 if err := json.Unmarshal(data, &tmp); err != nil { 177 return err 178 } 179 180 *enum = ContactExtensionFRMode(ContactExtensionFRMode(tmp).String()) 181 return nil 182} 183 184type ContactLegalForm string 185 186const ( 187 // ContactLegalFormLegalFormUnknown is [insert doc]. 188 ContactLegalFormLegalFormUnknown = ContactLegalForm("legal_form_unknown") 189 // ContactLegalFormParticular is [insert doc]. 190 ContactLegalFormParticular = ContactLegalForm("particular") 191 // ContactLegalFormSociety is [insert doc]. 192 ContactLegalFormSociety = ContactLegalForm("society") 193 // ContactLegalFormAssociation is [insert doc]. 194 ContactLegalFormAssociation = ContactLegalForm("association") 195 // ContactLegalFormOther is [insert doc]. 196 ContactLegalFormOther = ContactLegalForm("other") 197) 198 199func (enum ContactLegalForm) String() string { 200 if enum == "" { 201 // return default value if empty 202 return "legal_form_unknown" 203 } 204 return string(enum) 205} 206 207func (enum ContactLegalForm) MarshalJSON() ([]byte, error) { 208 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 209} 210 211func (enum *ContactLegalForm) UnmarshalJSON(data []byte) error { 212 tmp := "" 213 214 if err := json.Unmarshal(data, &tmp); err != nil { 215 return err 216 } 217 218 *enum = ContactLegalForm(ContactLegalForm(tmp).String()) 219 return nil 220} 221 222type DNSZoneStatus string 223 224const ( 225 // DNSZoneStatusUnknown is [insert doc]. 226 DNSZoneStatusUnknown = DNSZoneStatus("unknown") 227 // DNSZoneStatusActive is [insert doc]. 228 DNSZoneStatusActive = DNSZoneStatus("active") 229 // DNSZoneStatusPending is [insert doc]. 230 DNSZoneStatusPending = DNSZoneStatus("pending") 231 // DNSZoneStatusError is [insert doc]. 232 DNSZoneStatusError = DNSZoneStatus("error") 233 // DNSZoneStatusLocked is [insert doc]. 234 DNSZoneStatusLocked = DNSZoneStatus("locked") 235) 236 237func (enum DNSZoneStatus) String() string { 238 if enum == "" { 239 // return default value if empty 240 return "unknown" 241 } 242 return string(enum) 243} 244 245func (enum DNSZoneStatus) MarshalJSON() ([]byte, error) { 246 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 247} 248 249func (enum *DNSZoneStatus) UnmarshalJSON(data []byte) error { 250 tmp := "" 251 252 if err := json.Unmarshal(data, &tmp); err != nil { 253 return err 254 } 255 256 *enum = DNSZoneStatus(DNSZoneStatus(tmp).String()) 257 return nil 258} 259 260type DSRecordAlgorithm string 261 262const ( 263 // DSRecordAlgorithmRsamd5 is [insert doc]. 264 DSRecordAlgorithmRsamd5 = DSRecordAlgorithm("rsamd5") 265 // DSRecordAlgorithmDh is [insert doc]. 266 DSRecordAlgorithmDh = DSRecordAlgorithm("dh") 267 // DSRecordAlgorithmDsa is [insert doc]. 268 DSRecordAlgorithmDsa = DSRecordAlgorithm("dsa") 269 // DSRecordAlgorithmRsasha1 is [insert doc]. 270 DSRecordAlgorithmRsasha1 = DSRecordAlgorithm("rsasha1") 271 // DSRecordAlgorithmDsaNsec3Sha1 is [insert doc]. 272 DSRecordAlgorithmDsaNsec3Sha1 = DSRecordAlgorithm("dsa_nsec3_sha1") 273 // DSRecordAlgorithmRsasha1Nsec3Sha1 is [insert doc]. 274 DSRecordAlgorithmRsasha1Nsec3Sha1 = DSRecordAlgorithm("rsasha1_nsec3_sha1") 275 // DSRecordAlgorithmRsasha256 is [insert doc]. 276 DSRecordAlgorithmRsasha256 = DSRecordAlgorithm("rsasha256") 277 // DSRecordAlgorithmRsasha512 is [insert doc]. 278 DSRecordAlgorithmRsasha512 = DSRecordAlgorithm("rsasha512") 279 // DSRecordAlgorithmEccGost is [insert doc]. 280 DSRecordAlgorithmEccGost = DSRecordAlgorithm("ecc_gost") 281 // DSRecordAlgorithmEcdsap256sha256 is [insert doc]. 282 DSRecordAlgorithmEcdsap256sha256 = DSRecordAlgorithm("ecdsap256sha256") 283 // DSRecordAlgorithmEcdsap384sha384 is [insert doc]. 284 DSRecordAlgorithmEcdsap384sha384 = DSRecordAlgorithm("ecdsap384sha384") 285 // DSRecordAlgorithmEd25519 is [insert doc]. 286 DSRecordAlgorithmEd25519 = DSRecordAlgorithm("ed25519") 287 // DSRecordAlgorithmEd448 is [insert doc]. 288 DSRecordAlgorithmEd448 = DSRecordAlgorithm("ed448") 289) 290 291func (enum DSRecordAlgorithm) String() string { 292 if enum == "" { 293 // return default value if empty 294 return "rsamd5" 295 } 296 return string(enum) 297} 298 299func (enum DSRecordAlgorithm) MarshalJSON() ([]byte, error) { 300 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 301} 302 303func (enum *DSRecordAlgorithm) UnmarshalJSON(data []byte) error { 304 tmp := "" 305 306 if err := json.Unmarshal(data, &tmp); err != nil { 307 return err 308 } 309 310 *enum = DSRecordAlgorithm(DSRecordAlgorithm(tmp).String()) 311 return nil 312} 313 314type DSRecordDigestType string 315 316const ( 317 // DSRecordDigestTypeSha1 is [insert doc]. 318 DSRecordDigestTypeSha1 = DSRecordDigestType("sha_1") 319 // DSRecordDigestTypeSha256 is [insert doc]. 320 DSRecordDigestTypeSha256 = DSRecordDigestType("sha_256") 321 // DSRecordDigestTypeGostR34_11_94 is [insert doc]. 322 DSRecordDigestTypeGostR34_11_94 = DSRecordDigestType("gost_r_34_11_94") 323 // DSRecordDigestTypeSha384 is [insert doc]. 324 DSRecordDigestTypeSha384 = DSRecordDigestType("sha_384") 325) 326 327func (enum DSRecordDigestType) String() string { 328 if enum == "" { 329 // return default value if empty 330 return "sha_1" 331 } 332 return string(enum) 333} 334 335func (enum DSRecordDigestType) MarshalJSON() ([]byte, error) { 336 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 337} 338 339func (enum *DSRecordDigestType) UnmarshalJSON(data []byte) error { 340 tmp := "" 341 342 if err := json.Unmarshal(data, &tmp); err != nil { 343 return err 344 } 345 346 *enum = DSRecordDigestType(DSRecordDigestType(tmp).String()) 347 return nil 348} 349 350type DomainFeatureStatus string 351 352const ( 353 // DomainFeatureStatusFeatureStatusUnknown is [insert doc]. 354 DomainFeatureStatusFeatureStatusUnknown = DomainFeatureStatus("feature_status_unknown") 355 // DomainFeatureStatusEnabling is [insert doc]. 356 DomainFeatureStatusEnabling = DomainFeatureStatus("enabling") 357 // DomainFeatureStatusEnabled is [insert doc]. 358 DomainFeatureStatusEnabled = DomainFeatureStatus("enabled") 359 // DomainFeatureStatusDisabling is [insert doc]. 360 DomainFeatureStatusDisabling = DomainFeatureStatus("disabling") 361 // DomainFeatureStatusDisabled is [insert doc]. 362 DomainFeatureStatusDisabled = DomainFeatureStatus("disabled") 363) 364 365func (enum DomainFeatureStatus) String() string { 366 if enum == "" { 367 // return default value if empty 368 return "feature_status_unknown" 369 } 370 return string(enum) 371} 372 373func (enum DomainFeatureStatus) MarshalJSON() ([]byte, error) { 374 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 375} 376 377func (enum *DomainFeatureStatus) UnmarshalJSON(data []byte) error { 378 tmp := "" 379 380 if err := json.Unmarshal(data, &tmp); err != nil { 381 return err 382 } 383 384 *enum = DomainFeatureStatus(DomainFeatureStatus(tmp).String()) 385 return nil 386} 387 388type DomainRegistrationStatusTransferStatus string 389 390const ( 391 // DomainRegistrationStatusTransferStatusStatusUnknown is [insert doc]. 392 DomainRegistrationStatusTransferStatusStatusUnknown = DomainRegistrationStatusTransferStatus("status_unknown") 393 // DomainRegistrationStatusTransferStatusPending is [insert doc]. 394 DomainRegistrationStatusTransferStatusPending = DomainRegistrationStatusTransferStatus("pending") 395 // DomainRegistrationStatusTransferStatusWaitingVote is [insert doc]. 396 DomainRegistrationStatusTransferStatusWaitingVote = DomainRegistrationStatusTransferStatus("waiting_vote") 397 // DomainRegistrationStatusTransferStatusRejected is [insert doc]. 398 DomainRegistrationStatusTransferStatusRejected = DomainRegistrationStatusTransferStatus("rejected") 399 // DomainRegistrationStatusTransferStatusProcessing is [insert doc]. 400 DomainRegistrationStatusTransferStatusProcessing = DomainRegistrationStatusTransferStatus("processing") 401 // DomainRegistrationStatusTransferStatusDone is [insert doc]. 402 DomainRegistrationStatusTransferStatusDone = DomainRegistrationStatusTransferStatus("done") 403) 404 405func (enum DomainRegistrationStatusTransferStatus) String() string { 406 if enum == "" { 407 // return default value if empty 408 return "status_unknown" 409 } 410 return string(enum) 411} 412 413func (enum DomainRegistrationStatusTransferStatus) MarshalJSON() ([]byte, error) { 414 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 415} 416 417func (enum *DomainRegistrationStatusTransferStatus) UnmarshalJSON(data []byte) error { 418 tmp := "" 419 420 if err := json.Unmarshal(data, &tmp); err != nil { 421 return err 422 } 423 424 *enum = DomainRegistrationStatusTransferStatus(DomainRegistrationStatusTransferStatus(tmp).String()) 425 return nil 426} 427 428type DomainStatus string 429 430const ( 431 // DomainStatusStatusUnknown is [insert doc]. 432 DomainStatusStatusUnknown = DomainStatus("status_unknown") 433 // DomainStatusActive is [insert doc]. 434 DomainStatusActive = DomainStatus("active") 435 // DomainStatusCreating is [insert doc]. 436 DomainStatusCreating = DomainStatus("creating") 437 // DomainStatusCreateError is [insert doc]. 438 DomainStatusCreateError = DomainStatus("create_error") 439 // DomainStatusRenewing is [insert doc]. 440 DomainStatusRenewing = DomainStatus("renewing") 441 // DomainStatusRenewError is [insert doc]. 442 DomainStatusRenewError = DomainStatus("renew_error") 443 // DomainStatusXfering is [insert doc]. 444 DomainStatusXfering = DomainStatus("xfering") 445 // DomainStatusXferError is [insert doc]. 446 DomainStatusXferError = DomainStatus("xfer_error") 447 // DomainStatusRestoring is [insert doc]. 448 DomainStatusRestoring = DomainStatus("restoring") 449 // DomainStatusRestoreError is [insert doc]. 450 DomainStatusRestoreError = DomainStatus("restore_error") 451 // DomainStatusExpired is [insert doc]. 452 DomainStatusExpired = DomainStatus("expired") 453 // DomainStatusExpiring is [insert doc]. 454 DomainStatusExpiring = DomainStatus("expiring") 455 // DomainStatusUpdating is [insert doc]. 456 DomainStatusUpdating = DomainStatus("updating") 457 // DomainStatusChecking is [insert doc]. 458 DomainStatusChecking = DomainStatus("checking") 459 // DomainStatusLocked is [insert doc]. 460 DomainStatusLocked = DomainStatus("locked") 461 // DomainStatusDeleting is [insert doc]. 462 DomainStatusDeleting = DomainStatus("deleting") 463) 464 465func (enum DomainStatus) String() string { 466 if enum == "" { 467 // return default value if empty 468 return "status_unknown" 469 } 470 return string(enum) 471} 472 473func (enum DomainStatus) MarshalJSON() ([]byte, error) { 474 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 475} 476 477func (enum *DomainStatus) UnmarshalJSON(data []byte) error { 478 tmp := "" 479 480 if err := json.Unmarshal(data, &tmp); err != nil { 481 return err 482 } 483 484 *enum = DomainStatus(DomainStatus(tmp).String()) 485 return nil 486} 487 488type LanguageCode string 489 490const ( 491 // LanguageCodeUnknownLanguageCode is [insert doc]. 492 LanguageCodeUnknownLanguageCode = LanguageCode("unknown_language_code") 493 // LanguageCodeEnUS is [insert doc]. 494 LanguageCodeEnUS = LanguageCode("en_US") 495 // LanguageCodeFrFR is [insert doc]. 496 LanguageCodeFrFR = LanguageCode("fr_FR") 497) 498 499func (enum LanguageCode) String() string { 500 if enum == "" { 501 // return default value if empty 502 return "unknown_language_code" 503 } 504 return string(enum) 505} 506 507func (enum LanguageCode) MarshalJSON() ([]byte, error) { 508 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 509} 510 511func (enum *LanguageCode) UnmarshalJSON(data []byte) error { 512 tmp := "" 513 514 if err := json.Unmarshal(data, &tmp); err != nil { 515 return err 516 } 517 518 *enum = LanguageCode(LanguageCode(tmp).String()) 519 return nil 520} 521 522type ListDNSZoneRecordsRequestOrderBy string 523 524const ( 525 // ListDNSZoneRecordsRequestOrderByNameAsc is [insert doc]. 526 ListDNSZoneRecordsRequestOrderByNameAsc = ListDNSZoneRecordsRequestOrderBy("name_asc") 527 // ListDNSZoneRecordsRequestOrderByNameDesc is [insert doc]. 528 ListDNSZoneRecordsRequestOrderByNameDesc = ListDNSZoneRecordsRequestOrderBy("name_desc") 529) 530 531func (enum ListDNSZoneRecordsRequestOrderBy) String() string { 532 if enum == "" { 533 // return default value if empty 534 return "name_asc" 535 } 536 return string(enum) 537} 538 539func (enum ListDNSZoneRecordsRequestOrderBy) MarshalJSON() ([]byte, error) { 540 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 541} 542 543func (enum *ListDNSZoneRecordsRequestOrderBy) UnmarshalJSON(data []byte) error { 544 tmp := "" 545 546 if err := json.Unmarshal(data, &tmp); err != nil { 547 return err 548 } 549 550 *enum = ListDNSZoneRecordsRequestOrderBy(ListDNSZoneRecordsRequestOrderBy(tmp).String()) 551 return nil 552} 553 554type ListDNSZonesRequestOrderBy string 555 556const ( 557 // ListDNSZonesRequestOrderByDomainAsc is [insert doc]. 558 ListDNSZonesRequestOrderByDomainAsc = ListDNSZonesRequestOrderBy("domain_asc") 559 // ListDNSZonesRequestOrderByDomainDesc is [insert doc]. 560 ListDNSZonesRequestOrderByDomainDesc = ListDNSZonesRequestOrderBy("domain_desc") 561 // ListDNSZonesRequestOrderBySubdomainAsc is [insert doc]. 562 ListDNSZonesRequestOrderBySubdomainAsc = ListDNSZonesRequestOrderBy("subdomain_asc") 563 // ListDNSZonesRequestOrderBySubdomainDesc is [insert doc]. 564 ListDNSZonesRequestOrderBySubdomainDesc = ListDNSZonesRequestOrderBy("subdomain_desc") 565) 566 567func (enum ListDNSZonesRequestOrderBy) String() string { 568 if enum == "" { 569 // return default value if empty 570 return "domain_asc" 571 } 572 return string(enum) 573} 574 575func (enum ListDNSZonesRequestOrderBy) MarshalJSON() ([]byte, error) { 576 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 577} 578 579func (enum *ListDNSZonesRequestOrderBy) UnmarshalJSON(data []byte) error { 580 tmp := "" 581 582 if err := json.Unmarshal(data, &tmp); err != nil { 583 return err 584 } 585 586 *enum = ListDNSZonesRequestOrderBy(ListDNSZonesRequestOrderBy(tmp).String()) 587 return nil 588} 589 590type ListDomainsRequestOrderBy string 591 592const ( 593 // ListDomainsRequestOrderByDomainAsc is [insert doc]. 594 ListDomainsRequestOrderByDomainAsc = ListDomainsRequestOrderBy("domain_asc") 595 // ListDomainsRequestOrderByDomainDesc is [insert doc]. 596 ListDomainsRequestOrderByDomainDesc = ListDomainsRequestOrderBy("domain_desc") 597) 598 599func (enum ListDomainsRequestOrderBy) String() string { 600 if enum == "" { 601 // return default value if empty 602 return "domain_asc" 603 } 604 return string(enum) 605} 606 607func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { 608 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 609} 610 611func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { 612 tmp := "" 613 614 if err := json.Unmarshal(data, &tmp); err != nil { 615 return err 616 } 617 618 *enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String()) 619 return nil 620} 621 622type RawFormat string 623 624const ( 625 // RawFormatUnknownRawFormat is [insert doc]. 626 RawFormatUnknownRawFormat = RawFormat("unknown_raw_format") 627 // RawFormatBind is [insert doc]. 628 RawFormatBind = RawFormat("bind") 629) 630 631func (enum RawFormat) String() string { 632 if enum == "" { 633 // return default value if empty 634 return "unknown_raw_format" 635 } 636 return string(enum) 637} 638 639func (enum RawFormat) MarshalJSON() ([]byte, error) { 640 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 641} 642 643func (enum *RawFormat) UnmarshalJSON(data []byte) error { 644 tmp := "" 645 646 if err := json.Unmarshal(data, &tmp); err != nil { 647 return err 648 } 649 650 *enum = RawFormat(RawFormat(tmp).String()) 651 return nil 652} 653 654type RecordHTTPServiceConfigStrategy string 655 656const ( 657 // RecordHTTPServiceConfigStrategyRandom is [insert doc]. 658 RecordHTTPServiceConfigStrategyRandom = RecordHTTPServiceConfigStrategy("random") 659 // RecordHTTPServiceConfigStrategyHashed is [insert doc]. 660 RecordHTTPServiceConfigStrategyHashed = RecordHTTPServiceConfigStrategy("hashed") 661) 662 663func (enum RecordHTTPServiceConfigStrategy) String() string { 664 if enum == "" { 665 // return default value if empty 666 return "random" 667 } 668 return string(enum) 669} 670 671func (enum RecordHTTPServiceConfigStrategy) MarshalJSON() ([]byte, error) { 672 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 673} 674 675func (enum *RecordHTTPServiceConfigStrategy) UnmarshalJSON(data []byte) error { 676 tmp := "" 677 678 if err := json.Unmarshal(data, &tmp); err != nil { 679 return err 680 } 681 682 *enum = RecordHTTPServiceConfigStrategy(RecordHTTPServiceConfigStrategy(tmp).String()) 683 return nil 684} 685 686type RecordType string 687 688const ( 689 // RecordTypeUnknown is [insert doc]. 690 RecordTypeUnknown = RecordType("unknown") 691 // RecordTypeA is [insert doc]. 692 RecordTypeA = RecordType("A") 693 // RecordTypeAAAA is [insert doc]. 694 RecordTypeAAAA = RecordType("AAAA") 695 // RecordTypeCNAME is [insert doc]. 696 RecordTypeCNAME = RecordType("CNAME") 697 // RecordTypeTXT is [insert doc]. 698 RecordTypeTXT = RecordType("TXT") 699 // RecordTypeSRV is [insert doc]. 700 RecordTypeSRV = RecordType("SRV") 701 // RecordTypeTLSA is [insert doc]. 702 RecordTypeTLSA = RecordType("TLSA") 703 // RecordTypeMX is [insert doc]. 704 RecordTypeMX = RecordType("MX") 705 // RecordTypeNS is [insert doc]. 706 RecordTypeNS = RecordType("NS") 707 // RecordTypePTR is [insert doc]. 708 RecordTypePTR = RecordType("PTR") 709 // RecordTypeCAA is [insert doc]. 710 RecordTypeCAA = RecordType("CAA") 711 // RecordTypeALIAS is [insert doc]. 712 RecordTypeALIAS = RecordType("ALIAS") 713) 714 715func (enum RecordType) String() string { 716 if enum == "" { 717 // return default value if empty 718 return "unknown" 719 } 720 return string(enum) 721} 722 723func (enum RecordType) MarshalJSON() ([]byte, error) { 724 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 725} 726 727func (enum *RecordType) UnmarshalJSON(data []byte) error { 728 tmp := "" 729 730 if err := json.Unmarshal(data, &tmp); err != nil { 731 return err 732 } 733 734 *enum = RecordType(RecordType(tmp).String()) 735 return nil 736} 737 738type SSLCertificateStatus string 739 740const ( 741 // SSLCertificateStatusUnknown is [insert doc]. 742 SSLCertificateStatusUnknown = SSLCertificateStatus("unknown") 743 // SSLCertificateStatusNew is [insert doc]. 744 SSLCertificateStatusNew = SSLCertificateStatus("new") 745 // SSLCertificateStatusPending is [insert doc]. 746 SSLCertificateStatusPending = SSLCertificateStatus("pending") 747 // SSLCertificateStatusSuccess is [insert doc]. 748 SSLCertificateStatusSuccess = SSLCertificateStatus("success") 749 // SSLCertificateStatusError is [insert doc]. 750 SSLCertificateStatusError = SSLCertificateStatus("error") 751) 752 753func (enum SSLCertificateStatus) String() string { 754 if enum == "" { 755 // return default value if empty 756 return "unknown" 757 } 758 return string(enum) 759} 760 761func (enum SSLCertificateStatus) MarshalJSON() ([]byte, error) { 762 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 763} 764 765func (enum *SSLCertificateStatus) UnmarshalJSON(data []byte) error { 766 tmp := "" 767 768 if err := json.Unmarshal(data, &tmp); err != nil { 769 return err 770 } 771 772 *enum = SSLCertificateStatus(SSLCertificateStatus(tmp).String()) 773 return nil 774} 775 776type TaskStatus string 777 778const ( 779 // TaskStatusUnavailable is [insert doc]. 780 TaskStatusUnavailable = TaskStatus("unavailable") 781 // TaskStatusNew is [insert doc]. 782 TaskStatusNew = TaskStatus("new") 783 // TaskStatusWaitingPayment is [insert doc]. 784 TaskStatusWaitingPayment = TaskStatus("waiting_payment") 785 // TaskStatusPending is [insert doc]. 786 TaskStatusPending = TaskStatus("pending") 787 // TaskStatusSuccess is [insert doc]. 788 TaskStatusSuccess = TaskStatus("success") 789 // TaskStatusError is [insert doc]. 790 TaskStatusError = TaskStatus("error") 791) 792 793func (enum TaskStatus) String() string { 794 if enum == "" { 795 // return default value if empty 796 return "unavailable" 797 } 798 return string(enum) 799} 800 801func (enum TaskStatus) MarshalJSON() ([]byte, error) { 802 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 803} 804 805func (enum *TaskStatus) UnmarshalJSON(data []byte) error { 806 tmp := "" 807 808 if err := json.Unmarshal(data, &tmp); err != nil { 809 return err 810 } 811 812 *enum = TaskStatus(TaskStatus(tmp).String()) 813 return nil 814} 815 816type TaskType string 817 818const ( 819 // TaskTypeUnknown is [insert doc]. 820 TaskTypeUnknown = TaskType("unknown") 821 // TaskTypeCreateDomain is [insert doc]. 822 TaskTypeCreateDomain = TaskType("create_domain") 823 // TaskTypeCreateExternalDomain is [insert doc]. 824 TaskTypeCreateExternalDomain = TaskType("create_external_domain") 825 // TaskTypeRenewDomain is [insert doc]. 826 TaskTypeRenewDomain = TaskType("renew_domain") 827 // TaskTypeRestoreDomain is [insert doc]. 828 TaskTypeRestoreDomain = TaskType("restore_domain") 829 // TaskTypeTransferDomain is [insert doc]. 830 TaskTypeTransferDomain = TaskType("transfer_domain") 831 // TaskTypeTradeDomain is [insert doc]. 832 TaskTypeTradeDomain = TaskType("trade_domain") 833 // TaskTypeLockDomainTransfer is [insert doc]. 834 TaskTypeLockDomainTransfer = TaskType("lock_domain_transfer") 835 // TaskTypeUnlockDomainTransfer is [insert doc]. 836 TaskTypeUnlockDomainTransfer = TaskType("unlock_domain_transfer") 837 // TaskTypeEnableDnssec is [insert doc]. 838 TaskTypeEnableDnssec = TaskType("enable_dnssec") 839 // TaskTypeDisableDnssec is [insert doc]. 840 TaskTypeDisableDnssec = TaskType("disable_dnssec") 841 // TaskTypeUpdateDomain is [insert doc]. 842 TaskTypeUpdateDomain = TaskType("update_domain") 843 // TaskTypeUpdateContact is [insert doc]. 844 TaskTypeUpdateContact = TaskType("update_contact") 845 // TaskTypeDeleteDomain is [insert doc]. 846 TaskTypeDeleteDomain = TaskType("delete_domain") 847 // TaskTypeCancelTask is [insert doc]. 848 TaskTypeCancelTask = TaskType("cancel_task") 849 // TaskTypeGenerateSslCertificate is [insert doc]. 850 TaskTypeGenerateSslCertificate = TaskType("generate_ssl_certificate") 851 // TaskTypeRenewSslCertificate is [insert doc]. 852 TaskTypeRenewSslCertificate = TaskType("renew_ssl_certificate") 853 // TaskTypeSendMessage is [insert doc]. 854 TaskTypeSendMessage = TaskType("send_message") 855 // TaskTypeDeleteDomainExpired is [insert doc]. 856 TaskTypeDeleteDomainExpired = TaskType("delete_domain_expired") 857 // TaskTypeDeleteExternalDomain is [insert doc]. 858 TaskTypeDeleteExternalDomain = TaskType("delete_external_domain") 859) 860 861func (enum TaskType) String() string { 862 if enum == "" { 863 // return default value if empty 864 return "unknown" 865 } 866 return string(enum) 867} 868 869func (enum TaskType) MarshalJSON() ([]byte, error) { 870 return []byte(fmt.Sprintf(`"%s"`, enum)), nil 871} 872 873func (enum *TaskType) UnmarshalJSON(data []byte) error { 874 tmp := "" 875 876 if err := json.Unmarshal(data, &tmp); err != nil { 877 return err 878 } 879 880 *enum = TaskType(TaskType(tmp).String()) 881 return nil 882} 883 884// ClearDNSZoneRecordsResponse: clear dns zone records response 885type ClearDNSZoneRecordsResponse struct { 886} 887 888// Contact: contact 889type Contact struct { 890 ID string `json:"id"` 891 // LegalForm: 892 // 893 // Default value: legal_form_unknown 894 LegalForm ContactLegalForm `json:"legal_form"` 895 // Civility: 896 // 897 // Default value: civility_unknown 898 Civility ContactCivility `json:"civility"` 899 900 Firstname string `json:"firstname"` 901 902 Lastname string `json:"lastname"` 903 904 CompanyName string `json:"company_name"` 905 906 Email string `json:"email"` 907 908 EmailAlt string `json:"email_alt"` 909 910 PhoneNumber string `json:"phone_number"` 911 912 FaxNumber string `json:"fax_number"` 913 914 AddressLine1 string `json:"address_line_1"` 915 916 AddressLine2 string `json:"address_line_2"` 917 918 Zip string `json:"zip"` 919 920 City string `json:"city"` 921 922 Country string `json:"country"` 923 924 VatIdentificationCode string `json:"vat_identification_code"` 925 926 CompanyIdentificationCode string `json:"company_identification_code"` 927 // Lang: 928 // 929 // Default value: unknown_language_code 930 Lang LanguageCode `json:"lang"` 931 932 Resale bool `json:"resale"` 933 934 Questions []*ContactQuestion `json:"questions"` 935 936 ExtensionFr *ContactExtensionFR `json:"extension_fr"` 937 938 ExtensionEu *ContactExtensionEU `json:"extension_eu"` 939 940 WhoisOptIn bool `json:"whois_opt_in"` 941 // EmailStatus: 942 // 943 // Default value: email_status_unknown 944 EmailStatus ContactEmailStatus `json:"email_status"` 945} 946 947type ContactExtensionEU struct { 948 EuropeanCitizenship string `json:"european_citizenship"` 949} 950 951type ContactExtensionFR struct { 952 // Mode: 953 // 954 // Default value: mode_unknown 955 Mode ContactExtensionFRMode `json:"mode"` 956 957 // Precisely one of AssociationInfos, BrandInfos, CodeAuthAfnicInfos, DunsInfos, ParticularInfos must be set. 958 ParticularInfos *ContactExtensionFRParticularInfos `json:"particular_infos,omitempty"` 959 960 // Precisely one of AssociationInfos, BrandInfos, CodeAuthAfnicInfos, DunsInfos, ParticularInfos must be set. 961 DunsInfos *ContactExtensionFRDunsInfos `json:"duns_infos,omitempty"` 962 963 // Precisely one of AssociationInfos, BrandInfos, CodeAuthAfnicInfos, DunsInfos, ParticularInfos must be set. 964 AssociationInfos *ContactExtensionFRAssociationInfos `json:"association_infos,omitempty"` 965 966 // Precisely one of AssociationInfos, BrandInfos, CodeAuthAfnicInfos, DunsInfos, ParticularInfos must be set. 967 BrandInfos *ContactExtensionFRBrandInfos `json:"brand_infos,omitempty"` 968 969 // Precisely one of AssociationInfos, BrandInfos, CodeAuthAfnicInfos, DunsInfos, ParticularInfos must be set. 970 CodeAuthAfnicInfos *ContactExtensionFRCodeAuthAfnicInfos `json:"code_auth_afnic_infos,omitempty"` 971} 972 973type ContactExtensionFRAssociationInfos struct { 974 PublicationJo *time.Time `json:"publication_jo"` 975 976 PublicationJoPage uint32 `json:"publication_jo_page"` 977} 978 979type ContactExtensionFRBrandInfos struct { 980 BrandInpi string `json:"brand_inpi"` 981} 982 983type ContactExtensionFRCodeAuthAfnicInfos struct { 984 CodeAuthAfnic string `json:"code_auth_afnic"` 985} 986 987type ContactExtensionFRDunsInfos struct { 988 DunsID string `json:"duns_id"` 989 990 LocalID string `json:"local_id"` 991} 992 993type ContactExtensionFRParticularInfos struct { 994 WhoisOptIn bool `json:"whois_opt_in"` 995} 996 997type ContactQuestion struct { 998 Question string `json:"question"` 999 1000 Answer string `json:"answer"` 1001} 1002 1003type ContactRoles struct { 1004 Contact *Contact `json:"contact"` 1005 1006 Roles map[string]*ContactRolesRoles `json:"roles"` 1007} 1008 1009type ContactRolesRoles struct { 1010 IsOwner bool `json:"is_owner"` 1011 1012 IsAdministrative bool `json:"is_administrative"` 1013 1014 IsTechnical bool `json:"is_technical"` 1015} 1016 1017type DNSZone struct { 1018 Domain string `json:"domain"` 1019 1020 Subdomain string `json:"subdomain"` 1021 1022 Ns []string `json:"ns"` 1023 1024 NsDefault []string `json:"ns_default"` 1025 1026 NsMaster []string `json:"ns_master"` 1027 // Status: 1028 // 1029 // Default value: unknown 1030 Status DNSZoneStatus `json:"status"` 1031 1032 Message *string `json:"message"` 1033 1034 UpdatedAt *time.Time `json:"updated_at"` 1035 1036 ProjectID string `json:"project_id"` 1037} 1038 1039type DNSZoneVersion struct { 1040 ID string `json:"id"` 1041 1042 CreatedAt *time.Time `json:"created_at"` 1043} 1044 1045type DSRecord struct { 1046 KeyID uint32 `json:"key_id"` 1047 // Algorithm: 1048 // 1049 // Default value: rsamd5 1050 Algorithm DSRecordAlgorithm `json:"algorithm"` 1051 1052 // Precisely one of Digest, PublicKey must be set. 1053 Digest *DSRecordDigest `json:"digest,omitempty"` 1054 1055 // Precisely one of Digest, PublicKey must be set. 1056 PublicKey *DSRecordPublicKey `json:"public_key,omitempty"` 1057} 1058 1059type DSRecordDigest struct { 1060 // Type: 1061 // 1062 // Default value: sha_1 1063 Type DSRecordDigestType `json:"type"` 1064 1065 Digest string `json:"digest"` 1066} 1067 1068type DSRecordPublicKey struct { 1069 Key string `json:"key"` 1070} 1071 1072// DeleteDNSZoneResponse: delete dns zone response 1073type DeleteDNSZoneResponse struct { 1074} 1075 1076// DeleteExternalDomainResponse: delete external domain response 1077type DeleteExternalDomainResponse struct { 1078} 1079 1080// DeleteSSLCertificateResponse: delete ssl certificate response 1081type DeleteSSLCertificateResponse struct { 1082} 1083 1084// Domain: domain 1085type Domain struct { 1086 Domain string `json:"domain"` 1087 1088 OrganizationID string `json:"organization_id"` 1089 1090 ProjectID string `json:"project_id"` 1091 // AutoRenewStatus: 1092 // 1093 // Default value: feature_status_unknown 1094 AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` 1095 1096 Dnssec *DomainDNSSEC `json:"dnssec"` 1097 1098 EppCode []string `json:"epp_code"` 1099 1100 ExpiredAt *time.Time `json:"expired_at"` 1101 1102 UpdatedAt *time.Time `json:"updated_at"` 1103 1104 Registrar string `json:"registrar"` 1105 1106 IsExternal bool `json:"is_external"` 1107 // Status: 1108 // 1109 // Default value: status_unknown 1110 Status DomainStatus `json:"status"` 1111 1112 DNSZones []*DNSZone `json:"dns_zones"` 1113 1114 OwnerContact *Contact `json:"owner_contact"` 1115 1116 TechnicalContact *Contact `json:"technical_contact"` 1117 1118 AdministrativeContact *Contact `json:"administrative_contact"` 1119 1120 // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. 1121 ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` 1122 1123 // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. 1124 TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` 1125} 1126 1127type DomainDNSSEC struct { 1128 // Status: 1129 // 1130 // Default value: feature_status_unknown 1131 Status DomainFeatureStatus `json:"status"` 1132 1133 DsRecords []*DSRecord `json:"ds_records"` 1134} 1135 1136type DomainRegistrationStatusExternalDomain struct { 1137 ValidationToken string `json:"validation_token"` 1138} 1139 1140type DomainRegistrationStatusTransfer struct { 1141 // Status: 1142 // 1143 // Default value: status_unknown 1144 Status DomainRegistrationStatusTransferStatus `json:"status"` 1145 1146 VoteCurrentOwner bool `json:"vote_current_owner"` 1147 1148 VoteNewOwner bool `json:"vote_new_owner"` 1149} 1150 1151type DomainSummary struct { 1152 Domain string `json:"domain"` 1153 1154 ProjectID string `json:"project_id"` 1155 // AutoRenewStatus: 1156 // 1157 // Default value: feature_status_unknown 1158 AutoRenewStatus DomainFeatureStatus `json:"auto_renew_status"` 1159 // DnssecStatus: 1160 // 1161 // Default value: feature_status_unknown 1162 DnssecStatus DomainFeatureStatus `json:"dnssec_status"` 1163 1164 EppCode []string `json:"epp_code"` 1165 1166 ExpiredAt *time.Time `json:"expired_at"` 1167 1168 UpdatedAt *time.Time `json:"updated_at"` 1169 1170 Registrar string `json:"registrar"` 1171 1172 IsExternal bool `json:"is_external"` 1173 // Status: 1174 // 1175 // Default value: status_unknown 1176 Status DomainStatus `json:"status"` 1177 1178 // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. 1179 ExternalDomainRegistrationStatus *DomainRegistrationStatusExternalDomain `json:"external_domain_registration_status,omitempty"` 1180 1181 // Precisely one of ExternalDomainRegistrationStatus, TransferRegistrationStatus must be set. 1182 TransferRegistrationStatus *DomainRegistrationStatusTransfer `json:"transfer_registration_status,omitempty"` 1183} 1184 1185// GetDNSZoneTsigKeyResponse: get dns zone tsig key response 1186type GetDNSZoneTsigKeyResponse struct { 1187 Name string `json:"name"` 1188 1189 Key string `json:"key"` 1190 1191 Algorithm string `json:"algorithm"` 1192} 1193 1194// GetDNSZoneVersionDiffResponse: get dns zone version diff response 1195type GetDNSZoneVersionDiffResponse struct { 1196 Changes []*RecordChange `json:"changes"` 1197} 1198 1199// GetDomainAuthCodeResponse: get domain auth code response 1200type GetDomainAuthCodeResponse struct { 1201 AuthCode string `json:"auth_code"` 1202} 1203 1204type ImportProviderDNSZoneRequestOnlineV1 struct { 1205 Token string `json:"token"` 1206} 1207 1208// ImportProviderDNSZoneResponse: import provider dns zone response 1209type ImportProviderDNSZoneResponse struct { 1210 Records []*Record `json:"records"` 1211} 1212 1213// ImportRawDNSZoneResponse: import raw dns zone response 1214type ImportRawDNSZoneResponse struct { 1215 Records []*Record `json:"records"` 1216} 1217 1218// ListContactsResponse: list contacts response 1219type ListContactsResponse struct { 1220 TotalCount uint32 `json:"total_count"` 1221 1222 Contacts []*ContactRoles `json:"contacts"` 1223} 1224 1225// ListDNSZoneNameserversResponse: list dns zone nameservers response 1226type ListDNSZoneNameserversResponse struct { 1227 Ns []*Nameserver `json:"ns"` 1228} 1229 1230// ListDNSZoneRecordsResponse: list dns zone records response 1231type ListDNSZoneRecordsResponse struct { 1232 TotalCount uint32 `json:"total_count"` 1233 1234 Records []*Record `json:"records"` 1235} 1236 1237// ListDNSZoneVersionRecordsResponse: list dns zone version records response 1238type ListDNSZoneVersionRecordsResponse struct { 1239 Records []*Record `json:"records"` 1240} 1241 1242// ListDNSZoneVersionsResponse: list dns zone versions response 1243type ListDNSZoneVersionsResponse struct { 1244 Versions []*DNSZoneVersion `json:"versions"` 1245} 1246 1247// ListDNSZonesResponse: list dns zones response 1248type ListDNSZonesResponse struct { 1249 TotalCount uint32 `json:"total_count"` 1250 1251 DNSZones []*DNSZone `json:"dns_zones"` 1252} 1253 1254// ListDomainsResponse: list domains response 1255type ListDomainsResponse struct { 1256 TotalCount uint32 `json:"total_count"` 1257 1258 Domains []*DomainSummary `json:"domains"` 1259} 1260 1261// ListSSLCertificatesResponse: list ssl certificates response 1262type ListSSLCertificatesResponse struct { 1263 TotalCount uint32 `json:"total_count"` 1264 1265 Certificates []*SSLCertificate `json:"certificates"` 1266} 1267 1268// ListTasksResponse: list tasks response 1269type ListTasksResponse struct { 1270 TotalCount uint32 `json:"total_count"` 1271 1272 Tasks []*Task `json:"tasks"` 1273} 1274 1275type Nameserver struct { 1276 Name string `json:"name"` 1277 1278 IP []string `json:"ip"` 1279} 1280 1281type NewContact struct { 1282 // LegalForm: 1283 // 1284 // Default value: legal_form_unknown 1285 LegalForm ContactLegalForm `json:"legal_form"` 1286 // Civility: 1287 // 1288 // Default value: civility_unknown 1289 Civility ContactCivility `json:"civility"` 1290 1291 Firstname string `json:"firstname"` 1292 1293 Lastname string `json:"lastname"` 1294 1295 CompanyName *string `json:"company_name"` 1296 1297 Email string `json:"email"` 1298 1299 EmailAlt *string `json:"email_alt"` 1300 1301 PhoneNumber string `json:"phone_number"` 1302 1303 FaxNumber *string `json:"fax_number"` 1304 1305 AddressLine1 string `json:"address_line_1"` 1306 1307 AddressLine2 *string `json:"address_line_2"` 1308 1309 Zip string `json:"zip"` 1310 1311 City string `json:"city"` 1312 1313 Country string `json:"country"` 1314 1315 VatIdentificationCode *string `json:"vat_identification_code"` 1316 1317 CompanyIdentificationCode *string `json:"company_identification_code"` 1318 // Lang: 1319 // 1320 // Default value: unknown_language_code 1321 Lang LanguageCode `json:"lang"` 1322 1323 Resale bool `json:"resale"` 1324 1325 Questions []*ContactQuestion `json:"questions"` 1326 1327 ExtensionFr *ContactExtensionFR `json:"extension_fr"` 1328 1329 ExtensionEu *ContactExtensionEU `json:"extension_eu"` 1330 1331 WhoisOptIn bool `json:"whois_opt_in"` 1332} 1333 1334type Record struct { 1335 Data string `json:"data"` 1336 1337 Name string `json:"name"` 1338 1339 Priority uint32 `json:"priority"` 1340 1341 TTL uint32 `json:"ttl"` 1342 // Type: 1343 // 1344 // Default value: unknown 1345 Type RecordType `json:"type"` 1346 1347 Comment *string `json:"comment"` 1348 1349 // Precisely one of GeoIPConfig, HTTPServiceConfig, ViewConfig, WeightedConfig must be set. 1350 GeoIPConfig *RecordGeoIPConfig `json:"geo_ip_config,omitempty"` 1351 1352 // Precisely one of GeoIPConfig, HTTPServiceConfig, ViewConfig, WeightedConfig must be set. 1353 HTTPServiceConfig *RecordHTTPServiceConfig `json:"http_service_config,omitempty"` 1354 1355 // Precisely one of GeoIPConfig, HTTPServiceConfig, ViewConfig, WeightedConfig must be set. 1356 WeightedConfig *RecordWeightedConfig `json:"weighted_config,omitempty"` 1357 1358 // Precisely one of GeoIPConfig, HTTPServiceConfig, ViewConfig, WeightedConfig must be set. 1359 ViewConfig *RecordViewConfig `json:"view_config,omitempty"` 1360 1361 ID string `json:"id"` 1362} 1363 1364type RecordChange struct { 1365 1366 // Precisely one of Add, Clear, Delete, Set must be set. 1367 Add *RecordChangeAdd `json:"add,omitempty"` 1368 1369 // Precisely one of Add, Clear, Delete, Set must be set. 1370 Set *RecordChangeSet `json:"set,omitempty"` 1371 1372 // Precisely one of Add, Clear, Delete, Set must be set. 1373 Delete *RecordChangeDelete `json:"delete,omitempty"` 1374 1375 // Precisely one of Add, Clear, Delete, Set must be set. 1376 Clear *RecordChangeClear `json:"clear,omitempty"` 1377} 1378 1379type RecordChangeAdd struct { 1380 Records []*Record `json:"records"` 1381} 1382 1383type RecordChangeClear struct { 1384} 1385 1386type RecordChangeDelete struct { 1387 1388 // Precisely one of ID, IDFields must be set. 1389 ID *string `json:"id,omitempty"` 1390 1391 // Precisely one of ID, IDFields must be set. 1392 IDFields *RecordIdentifier `json:"id_fields,omitempty"` 1393} 1394 1395type RecordChangeSet struct { 1396 1397 // Precisely one of ID, IDFields must be set. 1398 ID *string `json:"id,omitempty"` 1399 1400 // Precisely one of ID, IDFields must be set. 1401 IDFields *RecordIdentifier `json:"id_fields,omitempty"` 1402 1403 Records []*Record `json:"records"` 1404} 1405 1406type RecordGeoIPConfig struct { 1407 Matches []*RecordGeoIPConfigMatch `json:"matches"` 1408 1409 Default string `json:"default"` 1410} 1411 1412type RecordGeoIPConfigMatch struct { 1413 Countries []string `json:"countries"` 1414 1415 Continents []string `json:"continents"` 1416 1417 Data string `json:"data"` 1418} 1419 1420type RecordHTTPServiceConfig struct { 1421 IPs []net.IP `json:"ips"` 1422 1423 MustContain *string `json:"must_contain"` 1424 1425 URL string `json:"url"` 1426 1427 UserAgent *string `json:"user_agent"` 1428 // Strategy: 1429 // 1430 // Default value: random 1431 Strategy RecordHTTPServiceConfigStrategy `json:"strategy"` 1432} 1433 1434type RecordIdentifier struct { 1435 Name string `json:"name"` 1436 // Type: 1437 // 1438 // Default value: unknown 1439 Type RecordType `json:"type"` 1440 1441 Data *string `json:"data"` 1442 1443 TTL *uint32 `json:"ttl"` 1444} 1445 1446type RecordViewConfig struct { 1447 Views []*RecordViewConfigView `json:"views"` 1448} 1449 1450type RecordViewConfigView struct { 1451 Subnet string `json:"subnet"` 1452 1453 Data string `json:"data"` 1454} 1455 1456type RecordWeightedConfig struct { 1457 WeightedIPs []*RecordWeightedConfigWeightedIP `json:"weighted_ips"` 1458} 1459 1460type RecordWeightedConfigWeightedIP struct { 1461 IP net.IP `json:"ip"` 1462 1463 Weight uint32 `json:"weight"` 1464} 1465 1466// RefreshDNSZoneResponse: refresh dns zone response 1467type RefreshDNSZoneResponse struct { 1468 DNSZones []*DNSZone `json:"dns_zones"` 1469} 1470 1471type RegisterExternalDomainResponse struct { 1472 Domain string `json:"domain"` 1473 1474 OrganizationID string `json:"organization_id"` 1475 1476 ValidationToken string `json:"validation_token"` 1477 1478 CreatedAt *time.Time `json:"created_at"` 1479 1480 ProjectID string `json:"project_id"` 1481} 1482 1483// RestoreDNSZoneVersionResponse: restore dns zone version response 1484type RestoreDNSZoneVersionResponse struct { 1485} 1486 1487type SSLCertificate struct { 1488 DNSZone string `json:"dns_zone"` 1489 1490 AlternativeDNSZones []string `json:"alternative_dns_zones"` 1491 // Status: 1492 // 1493 // Default value: unknown 1494 Status SSLCertificateStatus `json:"status"` 1495 1496 PrivateKey string `json:"private_key"` 1497 1498 CertificateChain string `json:"certificate_chain"` 1499 1500 CreatedAt *time.Time `json:"created_at"` 1501 1502 ExpiredAt *time.Time `json:"expired_at"` 1503} 1504 1505type Task struct { 1506 ID string `json:"id"` 1507 1508 ProjectID string `json:"project_id"` 1509 1510 OrganizationID string `json:"organization_id"` 1511 1512 Domain *string `json:"domain"` 1513 // Type: 1514 // 1515 // Default value: unknown 1516 Type TaskType `json:"type"` 1517 // Status: 1518 // 1519 // Default value: unavailable 1520 Status TaskStatus `json:"status"` 1521 1522 StartedAt *time.Time `json:"started_at"` 1523 1524 UpdatedAt *time.Time `json:"updated_at"` 1525 1526 Message *string `json:"message"` 1527} 1528 1529type UpdateContactRequestQuestion struct { 1530 Question *string `json:"question"` 1531 1532 Answer *string `json:"answer"` 1533} 1534 1535// UpdateDNSZoneNameserversResponse: update dns zone nameservers response 1536type UpdateDNSZoneNameserversResponse struct { 1537 Ns []*Nameserver `json:"ns"` 1538} 1539 1540// UpdateDNSZoneRecordsResponse: update dns zone records response 1541type UpdateDNSZoneRecordsResponse struct { 1542 Records []*Record `json:"records"` 1543} 1544 1545// Service API 1546 1547type ListDNSZonesRequest struct { 1548 Page *int32 `json:"-"` 1549 1550 PageSize *uint32 `json:"-"` 1551 // OrderBy: 1552 // 1553 // Default value: domain_asc 1554 OrderBy ListDNSZonesRequestOrderBy `json:"-"` 1555 1556 Domain string `json:"-"` 1557 1558 DNSZone string `json:"-"` 1559 1560 ProjectID *string `json:"-"` 1561 1562 OrganizationID *string `json:"-"` 1563} 1564 1565// ListDNSZones: list DNS zones 1566// 1567// Returns a list of manageable DNS zones. 1568// You can filter the DNS zones by domain name. 1569// 1570func (s *API) ListDNSZones(req *ListDNSZonesRequest, opts ...scw.RequestOption) (*ListDNSZonesResponse, error) { 1571 var err error 1572 1573 defaultPageSize, exist := s.client.GetDefaultPageSize() 1574 if (req.PageSize == nil || *req.PageSize == 0) && exist { 1575 req.PageSize = &defaultPageSize 1576 } 1577 1578 query := url.Values{} 1579 parameter.AddToQuery(query, "page", req.Page) 1580 parameter.AddToQuery(query, "page_size", req.PageSize) 1581 parameter.AddToQuery(query, "order_by", req.OrderBy) 1582 parameter.AddToQuery(query, "domain", req.Domain) 1583 parameter.AddToQuery(query, "dns_zone", req.DNSZone) 1584 parameter.AddToQuery(query, "project_id", req.ProjectID) 1585 parameter.AddToQuery(query, "organization_id", req.OrganizationID) 1586 1587 scwReq := &scw.ScalewayRequest{ 1588 Method: "GET", 1589 Path: "/domain/v2beta1/dns-zones", 1590 Query: query, 1591 Headers: http.Header{}, 1592 } 1593 1594 var resp ListDNSZonesResponse 1595 1596 err = s.client.Do(scwReq, &resp, opts...) 1597 if err != nil { 1598 return nil, err 1599 } 1600 return &resp, nil 1601} 1602 1603// UnsafeGetTotalCount should not be used 1604// Internal usage only 1605func (r *ListDNSZonesResponse) UnsafeGetTotalCount() uint32 { 1606 return r.TotalCount 1607} 1608 1609// UnsafeAppend should not be used 1610// Internal usage only 1611func (r *ListDNSZonesResponse) UnsafeAppend(res interface{}) (uint32, error) { 1612 results, ok := res.(*ListDNSZonesResponse) 1613 if !ok { 1614 return 0, errors.New("%T type cannot be appended to type %T", res, r) 1615 } 1616 1617 r.DNSZones = append(r.DNSZones, results.DNSZones...) 1618 r.TotalCount += uint32(len(results.DNSZones)) 1619 return uint32(len(results.DNSZones)), nil 1620} 1621 1622type CreateDNSZoneRequest struct { 1623 Domain string `json:"domain"` 1624 1625 Subdomain string `json:"subdomain"` 1626 1627 ProjectID string `json:"project_id"` 1628} 1629 1630// CreateDNSZone: create a DNS zone 1631// 1632// Create a new DNS zone. 1633func (s *API) CreateDNSZone(req *CreateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { 1634 var err error 1635 1636 if req.ProjectID == "" { 1637 defaultProjectID, _ := s.client.GetDefaultProjectID() 1638 req.ProjectID = defaultProjectID 1639 } 1640 1641 scwReq := &scw.ScalewayRequest{ 1642 Method: "POST", 1643 Path: "/domain/v2beta1/dns-zones", 1644 Headers: http.Header{}, 1645 } 1646 1647 err = scwReq.SetBody(req) 1648 if err != nil { 1649 return nil, err 1650 } 1651 1652 var resp DNSZone 1653 1654 err = s.client.Do(scwReq, &resp, opts...) 1655 if err != nil { 1656 return nil, err 1657 } 1658 return &resp, nil 1659} 1660 1661type UpdateDNSZoneRequest struct { 1662 DNSZone string `json:"-"` 1663 1664 NewDNSZone *string `json:"new_dns_zone"` 1665 1666 ProjectID string `json:"project_id"` 1667} 1668 1669// UpdateDNSZone: update a DNS zone 1670// 1671// Update the name and/or the organizations for a DNS zone. 1672func (s *API) UpdateDNSZone(req *UpdateDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { 1673 var err error 1674 1675 if req.ProjectID == "" { 1676 defaultProjectID, _ := s.client.GetDefaultProjectID() 1677 req.ProjectID = defaultProjectID 1678 } 1679 1680 if fmt.Sprint(req.DNSZone) == "" { 1681 return nil, errors.New("field DNSZone cannot be empty in request") 1682 } 1683 1684 scwReq := &scw.ScalewayRequest{ 1685 Method: "PATCH", 1686 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", 1687 Headers: http.Header{}, 1688 } 1689 1690 err = scwReq.SetBody(req) 1691 if err != nil { 1692 return nil, err 1693 } 1694 1695 var resp DNSZone 1696 1697 err = s.client.Do(scwReq, &resp, opts...) 1698 if err != nil { 1699 return nil, err 1700 } 1701 return &resp, nil 1702} 1703 1704type CloneDNSZoneRequest struct { 1705 DNSZone string `json:"-"` 1706 1707 DestDNSZone string `json:"dest_dns_zone"` 1708 1709 Overwrite bool `json:"overwrite"` 1710 1711 ProjectID *string `json:"project_id"` 1712} 1713 1714// CloneDNSZone: clone a DNS zone 1715// 1716// Clone an existed DNS zone with all its records into a new one. 1717func (s *API) CloneDNSZone(req *CloneDNSZoneRequest, opts ...scw.RequestOption) (*DNSZone, error) { 1718 var err error 1719 1720 if fmt.Sprint(req.DNSZone) == "" { 1721 return nil, errors.New("field DNSZone cannot be empty in request") 1722 } 1723 1724 scwReq := &scw.ScalewayRequest{ 1725 Method: "POST", 1726 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/clone", 1727 Headers: http.Header{}, 1728 } 1729 1730 err = scwReq.SetBody(req) 1731 if err != nil { 1732 return nil, err 1733 } 1734 1735 var resp DNSZone 1736 1737 err = s.client.Do(scwReq, &resp, opts...) 1738 if err != nil { 1739 return nil, err 1740 } 1741 return &resp, nil 1742} 1743 1744type DeleteDNSZoneRequest struct { 1745 DNSZone string `json:"-"` 1746 1747 ProjectID string `json:"-"` 1748} 1749 1750// DeleteDNSZone: delete DNS zone 1751// 1752// Delete a DNS zone and all it's records. 1753func (s *API) DeleteDNSZone(req *DeleteDNSZoneRequest, opts ...scw.RequestOption) (*DeleteDNSZoneResponse, error) { 1754 var err error 1755 1756 if req.ProjectID == "" { 1757 defaultProjectID, _ := s.client.GetDefaultProjectID() 1758 req.ProjectID = defaultProjectID 1759 } 1760 1761 query := url.Values{} 1762 parameter.AddToQuery(query, "project_id", req.ProjectID) 1763 1764 if fmt.Sprint(req.DNSZone) == "" { 1765 return nil, errors.New("field DNSZone cannot be empty in request") 1766 } 1767 1768 scwReq := &scw.ScalewayRequest{ 1769 Method: "DELETE", 1770 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "", 1771 Query: query, 1772 Headers: http.Header{}, 1773 } 1774 1775 var resp DeleteDNSZoneResponse 1776 1777 err = s.client.Do(scwReq, &resp, opts...) 1778 if err != nil { 1779 return nil, err 1780 } 1781 return &resp, nil 1782} 1783 1784type ListDNSZoneRecordsRequest struct { 1785 DNSZone string `json:"-"` 1786 1787 Page *int32 `json:"-"` 1788 1789 PageSize *uint32 `json:"-"` 1790 // OrderBy: 1791 // 1792 // Default value: name_asc 1793 OrderBy ListDNSZoneRecordsRequestOrderBy `json:"-"` 1794 1795 Name string `json:"-"` 1796 // Type: 1797 // 1798 // Default value: unknown 1799 Type RecordType `json:"-"` 1800 1801 ProjectID *string `json:"-"` 1802} 1803 1804// ListDNSZoneRecords: list DNS zone records 1805// 1806// Returns a list of DNS records of a DNS zone with default NS. 1807// You can filter the records by type and name. 1808// 1809func (s *API) ListDNSZoneRecords(req *ListDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneRecordsResponse, error) { 1810 var err error 1811 1812 defaultPageSize, exist := s.client.GetDefaultPageSize() 1813 if (req.PageSize == nil || *req.PageSize == 0) && exist { 1814 req.PageSize = &defaultPageSize 1815 } 1816 1817 query := url.Values{} 1818 parameter.AddToQuery(query, "page", req.Page) 1819 parameter.AddToQuery(query, "page_size", req.PageSize) 1820 parameter.AddToQuery(query, "order_by", req.OrderBy) 1821 parameter.AddToQuery(query, "name", req.Name) 1822 parameter.AddToQuery(query, "type", req.Type) 1823 parameter.AddToQuery(query, "project_id", req.ProjectID) 1824 1825 if fmt.Sprint(req.DNSZone) == "" { 1826 return nil, errors.New("field DNSZone cannot be empty in request") 1827 } 1828 1829 scwReq := &scw.ScalewayRequest{ 1830 Method: "GET", 1831 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", 1832 Query: query, 1833 Headers: http.Header{}, 1834 } 1835 1836 var resp ListDNSZoneRecordsResponse 1837 1838 err = s.client.Do(scwReq, &resp, opts...) 1839 if err != nil { 1840 return nil, err 1841 } 1842 return &resp, nil 1843} 1844 1845// UnsafeGetTotalCount should not be used 1846// Internal usage only 1847func (r *ListDNSZoneRecordsResponse) UnsafeGetTotalCount() uint32 { 1848 return r.TotalCount 1849} 1850 1851// UnsafeAppend should not be used 1852// Internal usage only 1853func (r *ListDNSZoneRecordsResponse) UnsafeAppend(res interface{}) (uint32, error) { 1854 results, ok := res.(*ListDNSZoneRecordsResponse) 1855 if !ok { 1856 return 0, errors.New("%T type cannot be appended to type %T", res, r) 1857 } 1858 1859 r.Records = append(r.Records, results.Records...) 1860 r.TotalCount += uint32(len(results.Records)) 1861 return uint32(len(results.Records)), nil 1862} 1863 1864type UpdateDNSZoneRecordsRequest struct { 1865 DNSZone string `json:"-"` 1866 1867 Changes []*RecordChange `json:"changes"` 1868 1869 ReturnAllRecords *bool `json:"return_all_records"` 1870} 1871 1872// UpdateDNSZoneRecords: update DNS zone records 1873// 1874// Only available with default NS.<br/> 1875// Send a list of actions and records. 1876// 1877// Action can be: 1878// - add: 1879// - Add new record 1880// - Can be more specific and add a new IP to an existing A record for example 1881// - set: 1882// - Edit a record 1883// - Can be more specific and edit an IP from an existing A record for example 1884// - delete: 1885// - Delete a record 1886// - Can be more specific and delete an IP from an existing A record for example 1887// - clear: 1888// - Delete all records from a DNS zone 1889// 1890// All edits will be versioned. 1891// 1892func (s *API) UpdateDNSZoneRecords(req *UpdateDNSZoneRecordsRequest, opts ...scw.RequestOption) (*UpdateDNSZoneRecordsResponse, error) { 1893 var err error 1894 1895 if fmt.Sprint(req.DNSZone) == "" { 1896 return nil, errors.New("field DNSZone cannot be empty in request") 1897 } 1898 1899 scwReq := &scw.ScalewayRequest{ 1900 Method: "PATCH", 1901 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", 1902 Headers: http.Header{}, 1903 } 1904 1905 err = scwReq.SetBody(req) 1906 if err != nil { 1907 return nil, err 1908 } 1909 1910 var resp UpdateDNSZoneRecordsResponse 1911 1912 err = s.client.Do(scwReq, &resp, opts...) 1913 if err != nil { 1914 return nil, err 1915 } 1916 return &resp, nil 1917} 1918 1919type ListDNSZoneNameserversRequest struct { 1920 DNSZone string `json:"-"` 1921 1922 ProjectID *string `json:"-"` 1923} 1924 1925// ListDNSZoneNameservers: list DNS zone nameservers 1926// 1927// Returns a list of Nameservers and their optional glue records for a DNS zone. 1928func (s *API) ListDNSZoneNameservers(req *ListDNSZoneNameserversRequest, opts ...scw.RequestOption) (*ListDNSZoneNameserversResponse, error) { 1929 var err error 1930 1931 query := url.Values{} 1932 parameter.AddToQuery(query, "project_id", req.ProjectID) 1933 1934 if fmt.Sprint(req.DNSZone) == "" { 1935 return nil, errors.New("field DNSZone cannot be empty in request") 1936 } 1937 1938 scwReq := &scw.ScalewayRequest{ 1939 Method: "GET", 1940 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", 1941 Query: query, 1942 Headers: http.Header{}, 1943 } 1944 1945 var resp ListDNSZoneNameserversResponse 1946 1947 err = s.client.Do(scwReq, &resp, opts...) 1948 if err != nil { 1949 return nil, err 1950 } 1951 return &resp, nil 1952} 1953 1954type UpdateDNSZoneNameserversRequest struct { 1955 DNSZone string `json:"-"` 1956 1957 Ns []*Nameserver `json:"ns"` 1958} 1959 1960// UpdateDNSZoneNameservers: update DNS zone nameservers 1961// 1962// Update DNS zone nameservers and set optional glue records. 1963func (s *API) UpdateDNSZoneNameservers(req *UpdateDNSZoneNameserversRequest, opts ...scw.RequestOption) (*UpdateDNSZoneNameserversResponse, error) { 1964 var err error 1965 1966 if fmt.Sprint(req.DNSZone) == "" { 1967 return nil, errors.New("field DNSZone cannot be empty in request") 1968 } 1969 1970 scwReq := &scw.ScalewayRequest{ 1971 Method: "PUT", 1972 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/nameservers", 1973 Headers: http.Header{}, 1974 } 1975 1976 err = scwReq.SetBody(req) 1977 if err != nil { 1978 return nil, err 1979 } 1980 1981 var resp UpdateDNSZoneNameserversResponse 1982 1983 err = s.client.Do(scwReq, &resp, opts...) 1984 if err != nil { 1985 return nil, err 1986 } 1987 return &resp, nil 1988} 1989 1990type ClearDNSZoneRecordsRequest struct { 1991 DNSZone string `json:"-"` 1992} 1993 1994// ClearDNSZoneRecords: clear DNS zone records 1995// 1996// Only available with default NS.<br/> 1997// Delete all the records from a DNS zone. 1998// All edits will be versioned. 1999// 2000func (s *API) ClearDNSZoneRecords(req *ClearDNSZoneRecordsRequest, opts ...scw.RequestOption) (*ClearDNSZoneRecordsResponse, error) { 2001 var err error 2002 2003 if fmt.Sprint(req.DNSZone) == "" { 2004 return nil, errors.New("field DNSZone cannot be empty in request") 2005 } 2006 2007 scwReq := &scw.ScalewayRequest{ 2008 Method: "DELETE", 2009 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/records", 2010 Headers: http.Header{}, 2011 } 2012 2013 var resp ClearDNSZoneRecordsResponse 2014 2015 err = s.client.Do(scwReq, &resp, opts...) 2016 if err != nil { 2017 return nil, err 2018 } 2019 return &resp, nil 2020} 2021 2022type ExportRawDNSZoneRequest struct { 2023 DNSZone string `json:"-"` 2024 // Format: 2025 // 2026 // Default value: unknown_raw_format 2027 Format RawFormat `json:"-"` 2028} 2029 2030// ExportRawDNSZone: export raw DNS zone 2031// 2032// Get a DNS zone in a given format with default NS. 2033func (s *API) ExportRawDNSZone(req *ExportRawDNSZoneRequest, opts ...scw.RequestOption) (*scw.File, error) { 2034 var err error 2035 2036 query := url.Values{} 2037 parameter.AddToQuery(query, "format", req.Format) 2038 2039 if fmt.Sprint(req.DNSZone) == "" { 2040 return nil, errors.New("field DNSZone cannot be empty in request") 2041 } 2042 2043 scwReq := &scw.ScalewayRequest{ 2044 Method: "GET", 2045 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", 2046 Query: query, 2047 Headers: http.Header{}, 2048 } 2049 2050 var resp scw.File 2051 2052 err = s.client.Do(scwReq, &resp, opts...) 2053 if err != nil { 2054 return nil, err 2055 } 2056 return &resp, nil 2057} 2058 2059type ImportRawDNSZoneRequest struct { 2060 DNSZone string `json:"-"` 2061 // Format: 2062 // 2063 // Default value: unknown_raw_format 2064 Format RawFormat `json:"format"` 2065 2066 Content string `json:"content"` 2067 2068 ProjectID string `json:"project_id"` 2069} 2070 2071// ImportRawDNSZone: import raw DNS zone 2072// 2073// Import and replace records from a given provider format with default NS. 2074func (s *API) ImportRawDNSZone(req *ImportRawDNSZoneRequest, opts ...scw.RequestOption) (*ImportRawDNSZoneResponse, error) { 2075 var err error 2076 2077 if req.ProjectID == "" { 2078 defaultProjectID, _ := s.client.GetDefaultProjectID() 2079 req.ProjectID = defaultProjectID 2080 } 2081 2082 if fmt.Sprint(req.DNSZone) == "" { 2083 return nil, errors.New("field DNSZone cannot be empty in request") 2084 } 2085 2086 scwReq := &scw.ScalewayRequest{ 2087 Method: "POST", 2088 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/raw", 2089 Headers: http.Header{}, 2090 } 2091 2092 err = scwReq.SetBody(req) 2093 if err != nil { 2094 return nil, err 2095 } 2096 2097 var resp ImportRawDNSZoneResponse 2098 2099 err = s.client.Do(scwReq, &resp, opts...) 2100 if err != nil { 2101 return nil, err 2102 } 2103 return &resp, nil 2104} 2105 2106type ImportProviderDNSZoneRequest struct { 2107 DNSZone string `json:"-"` 2108 2109 // Precisely one of OnlineV1 must be set. 2110 OnlineV1 *ImportProviderDNSZoneRequestOnlineV1 `json:"online_v1,omitempty"` 2111} 2112 2113// ImportProviderDNSZone: import provider DNS zone 2114// 2115// Import and replace records from a given provider format with default NS. 2116func (s *API) ImportProviderDNSZone(req *ImportProviderDNSZoneRequest, opts ...scw.RequestOption) (*ImportProviderDNSZoneResponse, error) { 2117 var err error 2118 2119 if fmt.Sprint(req.DNSZone) == "" { 2120 return nil, errors.New("field DNSZone cannot be empty in request") 2121 } 2122 2123 scwReq := &scw.ScalewayRequest{ 2124 Method: "POST", 2125 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/import-provider", 2126 Headers: http.Header{}, 2127 } 2128 2129 err = scwReq.SetBody(req) 2130 if err != nil { 2131 return nil, err 2132 } 2133 2134 var resp ImportProviderDNSZoneResponse 2135 2136 err = s.client.Do(scwReq, &resp, opts...) 2137 if err != nil { 2138 return nil, err 2139 } 2140 return &resp, nil 2141} 2142 2143type RefreshDNSZoneRequest struct { 2144 DNSZone string `json:"-"` 2145 2146 RecreateDNSZone bool `json:"recreate_dns_zone"` 2147 2148 RecreateSubDNSZone bool `json:"recreate_sub_dns_zone"` 2149} 2150 2151// RefreshDNSZone: refresh DNS zone 2152// 2153// Refresh SOA DNS zone. 2154// You can recreate the given DNS zone and its sub DNS zone if needed. 2155// 2156func (s *API) RefreshDNSZone(req *RefreshDNSZoneRequest, opts ...scw.RequestOption) (*RefreshDNSZoneResponse, error) { 2157 var err error 2158 2159 if fmt.Sprint(req.DNSZone) == "" { 2160 return nil, errors.New("field DNSZone cannot be empty in request") 2161 } 2162 2163 scwReq := &scw.ScalewayRequest{ 2164 Method: "POST", 2165 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/refresh", 2166 Headers: http.Header{}, 2167 } 2168 2169 err = scwReq.SetBody(req) 2170 if err != nil { 2171 return nil, err 2172 } 2173 2174 var resp RefreshDNSZoneResponse 2175 2176 err = s.client.Do(scwReq, &resp, opts...) 2177 if err != nil { 2178 return nil, err 2179 } 2180 return &resp, nil 2181} 2182 2183type ListDNSZoneVersionsRequest struct { 2184 DNSZone string `json:"-"` 2185} 2186 2187// ListDNSZoneVersions: list DNS zone versions 2188// 2189// Get a list of DNS zone versions.<br/> 2190// The maximum version count is 100.<br/> 2191// If the count reaches this limit, the oldest version will be deleted after each new modification. 2192// 2193func (s *API) ListDNSZoneVersions(req *ListDNSZoneVersionsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionsResponse, error) { 2194 var err error 2195 2196 if fmt.Sprint(req.DNSZone) == "" { 2197 return nil, errors.New("field DNSZone cannot be empty in request") 2198 } 2199 2200 scwReq := &scw.ScalewayRequest{ 2201 Method: "GET", 2202 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/versions", 2203 Headers: http.Header{}, 2204 } 2205 2206 var resp ListDNSZoneVersionsResponse 2207 2208 err = s.client.Do(scwReq, &resp, opts...) 2209 if err != nil { 2210 return nil, err 2211 } 2212 return &resp, nil 2213} 2214 2215type ListDNSZoneVersionRecordsRequest struct { 2216 DNSZoneVersionID string `json:"-"` 2217} 2218 2219// ListDNSZoneVersionRecords: list DNS zone version records 2220// 2221// Get a list of records from a previous DNS zone version. 2222func (s *API) ListDNSZoneVersionRecords(req *ListDNSZoneVersionRecordsRequest, opts ...scw.RequestOption) (*ListDNSZoneVersionRecordsResponse, error) { 2223 var err error 2224 2225 if fmt.Sprint(req.DNSZoneVersionID) == "" { 2226 return nil, errors.New("field DNSZoneVersionID cannot be empty in request") 2227 } 2228 2229 scwReq := &scw.ScalewayRequest{ 2230 Method: "GET", 2231 Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "", 2232 Headers: http.Header{}, 2233 } 2234 2235 var resp ListDNSZoneVersionRecordsResponse 2236 2237 err = s.client.Do(scwReq, &resp, opts...) 2238 if err != nil { 2239 return nil, err 2240 } 2241 return &resp, nil 2242} 2243 2244type GetDNSZoneVersionDiffRequest struct { 2245 DNSZoneVersionID string `json:"-"` 2246} 2247 2248// GetDNSZoneVersionDiff: get DNS zone version diff 2249// 2250// Get all differences from a previous DNS zone version. 2251func (s *API) GetDNSZoneVersionDiff(req *GetDNSZoneVersionDiffRequest, opts ...scw.RequestOption) (*GetDNSZoneVersionDiffResponse, error) { 2252 var err error 2253 2254 if fmt.Sprint(req.DNSZoneVersionID) == "" { 2255 return nil, errors.New("field DNSZoneVersionID cannot be empty in request") 2256 } 2257 2258 scwReq := &scw.ScalewayRequest{ 2259 Method: "GET", 2260 Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/diff", 2261 Headers: http.Header{}, 2262 } 2263 2264 var resp GetDNSZoneVersionDiffResponse 2265 2266 err = s.client.Do(scwReq, &resp, opts...) 2267 if err != nil { 2268 return nil, err 2269 } 2270 return &resp, nil 2271} 2272 2273type RestoreDNSZoneVersionRequest struct { 2274 DNSZoneVersionID string `json:"-"` 2275} 2276 2277// RestoreDNSZoneVersion: restore DNS zone version 2278// 2279// Restore and activate a previous DNS zone version. 2280func (s *API) RestoreDNSZoneVersion(req *RestoreDNSZoneVersionRequest, opts ...scw.RequestOption) (*RestoreDNSZoneVersionResponse, error) { 2281 var err error 2282 2283 if fmt.Sprint(req.DNSZoneVersionID) == "" { 2284 return nil, errors.New("field DNSZoneVersionID cannot be empty in request") 2285 } 2286 2287 scwReq := &scw.ScalewayRequest{ 2288 Method: "POST", 2289 Path: "/domain/v2beta1/dns-zones/version/" + fmt.Sprint(req.DNSZoneVersionID) + "/restore", 2290 Headers: http.Header{}, 2291 } 2292 2293 err = scwReq.SetBody(req) 2294 if err != nil { 2295 return nil, err 2296 } 2297 2298 var resp RestoreDNSZoneVersionResponse 2299 2300 err = s.client.Do(scwReq, &resp, opts...) 2301 if err != nil { 2302 return nil, err 2303 } 2304 return &resp, nil 2305} 2306 2307type GetSSLCertificateRequest struct { 2308 DNSZone string `json:"-"` 2309} 2310 2311// GetSSLCertificate: get the zone SSL certificate if it exists 2312func (s *API) GetSSLCertificate(req *GetSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { 2313 var err error 2314 2315 if fmt.Sprint(req.DNSZone) == "" { 2316 return nil, errors.New("field DNSZone cannot be empty in request") 2317 } 2318 2319 scwReq := &scw.ScalewayRequest{ 2320 Method: "GET", 2321 Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", 2322 Headers: http.Header{}, 2323 } 2324 2325 var resp SSLCertificate 2326 2327 err = s.client.Do(scwReq, &resp, opts...) 2328 if err != nil { 2329 return nil, err 2330 } 2331 return &resp, nil 2332} 2333 2334type CreateSSLCertificateRequest struct { 2335 DNSZone string `json:"dns_zone"` 2336 2337 AlternativeDNSZones []string `json:"alternative_dns_zones"` 2338} 2339 2340// CreateSSLCertificate: create or return the zone SSL certificate 2341func (s *API) CreateSSLCertificate(req *CreateSSLCertificateRequest, opts ...scw.RequestOption) (*SSLCertificate, error) { 2342 var err error 2343 2344 scwReq := &scw.ScalewayRequest{ 2345 Method: "POST", 2346 Path: "/domain/v2beta1/ssl-certificates", 2347 Headers: http.Header{}, 2348 } 2349 2350 err = scwReq.SetBody(req) 2351 if err != nil { 2352 return nil, err 2353 } 2354 2355 var resp SSLCertificate 2356 2357 err = s.client.Do(scwReq, &resp, opts...) 2358 if err != nil { 2359 return nil, err 2360 } 2361 return &resp, nil 2362} 2363 2364type ListSSLCertificatesRequest struct { 2365 Page *int32 `json:"-"` 2366 2367 PageSize *uint32 `json:"-"` 2368 2369 DNSZone string `json:"-"` 2370 2371 ProjectID *string `json:"-"` 2372} 2373 2374// ListSSLCertificates: list all user SSL certificates 2375func (s *API) ListSSLCertificates(req *ListSSLCertificatesRequest, opts ...scw.RequestOption) (*ListSSLCertificatesResponse, error) { 2376 var err error 2377 2378 defaultPageSize, exist := s.client.GetDefaultPageSize() 2379 if (req.PageSize == nil || *req.PageSize == 0) && exist { 2380 req.PageSize = &defaultPageSize 2381 } 2382 2383 query := url.Values{} 2384 parameter.AddToQuery(query, "page", req.Page) 2385 parameter.AddToQuery(query, "page_size", req.PageSize) 2386 parameter.AddToQuery(query, "dns_zone", req.DNSZone) 2387 parameter.AddToQuery(query, "project_id", req.ProjectID) 2388 2389 scwReq := &scw.ScalewayRequest{ 2390 Method: "GET", 2391 Path: "/domain/v2beta1/ssl-certificates", 2392 Query: query, 2393 Headers: http.Header{}, 2394 } 2395 2396 var resp ListSSLCertificatesResponse 2397 2398 err = s.client.Do(scwReq, &resp, opts...) 2399 if err != nil { 2400 return nil, err 2401 } 2402 return &resp, nil 2403} 2404 2405// UnsafeGetTotalCount should not be used 2406// Internal usage only 2407func (r *ListSSLCertificatesResponse) UnsafeGetTotalCount() uint32 { 2408 return r.TotalCount 2409} 2410 2411// UnsafeAppend should not be used 2412// Internal usage only 2413func (r *ListSSLCertificatesResponse) UnsafeAppend(res interface{}) (uint32, error) { 2414 results, ok := res.(*ListSSLCertificatesResponse) 2415 if !ok { 2416 return 0, errors.New("%T type cannot be appended to type %T", res, r) 2417 } 2418 2419 r.Certificates = append(r.Certificates, results.Certificates...) 2420 r.TotalCount += uint32(len(results.Certificates)) 2421 return uint32(len(results.Certificates)), nil 2422} 2423 2424type DeleteSSLCertificateRequest struct { 2425 DNSZone string `json:"-"` 2426} 2427 2428// DeleteSSLCertificate: delete an SSL certificate 2429func (s *API) DeleteSSLCertificate(req *DeleteSSLCertificateRequest, opts ...scw.RequestOption) (*DeleteSSLCertificateResponse, error) { 2430 var err error 2431 2432 if fmt.Sprint(req.DNSZone) == "" { 2433 return nil, errors.New("field DNSZone cannot be empty in request") 2434 } 2435 2436 scwReq := &scw.ScalewayRequest{ 2437 Method: "DELETE", 2438 Path: "/domain/v2beta1/ssl-certificates/" + fmt.Sprint(req.DNSZone) + "", 2439 Headers: http.Header{}, 2440 } 2441 2442 var resp DeleteSSLCertificateResponse 2443 2444 err = s.client.Do(scwReq, &resp, opts...) 2445 if err != nil { 2446 return nil, err 2447 } 2448 return &resp, nil 2449} 2450 2451type GetDNSZoneTsigKeyRequest struct { 2452 DNSZone string `json:"-"` 2453} 2454 2455// GetDNSZoneTsigKey: get the DNS zone TSIG Key 2456// 2457// Get the DNS zone TSIG Key to allow AXFR request. 2458func (s *API) GetDNSZoneTsigKey(req *GetDNSZoneTsigKeyRequest, opts ...scw.RequestOption) (*GetDNSZoneTsigKeyResponse, error) { 2459 var err error 2460 2461 if fmt.Sprint(req.DNSZone) == "" { 2462 return nil, errors.New("field DNSZone cannot be empty in request") 2463 } 2464 2465 scwReq := &scw.ScalewayRequest{ 2466 Method: "GET", 2467 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", 2468 Headers: http.Header{}, 2469 } 2470 2471 var resp GetDNSZoneTsigKeyResponse 2472 2473 err = s.client.Do(scwReq, &resp, opts...) 2474 if err != nil { 2475 return nil, err 2476 } 2477 return &resp, nil 2478} 2479 2480type DeleteDNSZoneTsigKeyRequest struct { 2481 DNSZone string `json:"-"` 2482} 2483 2484// DeleteDNSZoneTsigKey: delete the DNS zone TSIG Key 2485func (s *API) DeleteDNSZoneTsigKey(req *DeleteDNSZoneTsigKeyRequest, opts ...scw.RequestOption) error { 2486 var err error 2487 2488 if fmt.Sprint(req.DNSZone) == "" { 2489 return errors.New("field DNSZone cannot be empty in request") 2490 } 2491 2492 scwReq := &scw.ScalewayRequest{ 2493 Method: "DELETE", 2494 Path: "/domain/v2beta1/dns-zones/" + fmt.Sprint(req.DNSZone) + "/tsig-key", 2495 Headers: http.Header{}, 2496 } 2497 2498 err = s.client.Do(scwReq, nil, opts...) 2499 if err != nil { 2500 return err 2501 } 2502 return nil 2503} 2504 2505// Service RegistrarAPI 2506 2507type RegistrarAPIListTasksRequest struct { 2508 Page *int32 `json:"-"` 2509 2510 PageSize *uint32 `json:"-"` 2511 2512 Domain string `json:"-"` 2513 2514 ProjectID *string `json:"-"` 2515 2516 OrganizationID *string `json:"-"` 2517} 2518 2519// ListTasks: list tasks 2520// 2521// List all account tasks. 2522// You can filter the list by domain name. 2523// 2524func (s *RegistrarAPI) ListTasks(req *RegistrarAPIListTasksRequest, opts ...scw.RequestOption) (*ListTasksResponse, error) { 2525 var err error 2526 2527 defaultPageSize, exist := s.client.GetDefaultPageSize() 2528 if (req.PageSize == nil || *req.PageSize == 0) && exist { 2529 req.PageSize = &defaultPageSize 2530 } 2531 2532 query := url.Values{} 2533 parameter.AddToQuery(query, "page", req.Page) 2534 parameter.AddToQuery(query, "page_size", req.PageSize) 2535 parameter.AddToQuery(query, "domain", req.Domain) 2536 parameter.AddToQuery(query, "project_id", req.ProjectID) 2537 parameter.AddToQuery(query, "organization_id", req.OrganizationID) 2538 2539 scwReq := &scw.ScalewayRequest{ 2540 Method: "GET", 2541 Path: "/domain/v2beta1/tasks", 2542 Query: query, 2543 Headers: http.Header{}, 2544 } 2545 2546 var resp ListTasksResponse 2547 2548 err = s.client.Do(scwReq, &resp, opts...) 2549 if err != nil { 2550 return nil, err 2551 } 2552 return &resp, nil 2553} 2554 2555// UnsafeGetTotalCount should not be used 2556// Internal usage only 2557func (r *ListTasksResponse) UnsafeGetTotalCount() uint32 { 2558 return r.TotalCount 2559} 2560 2561// UnsafeAppend should not be used 2562// Internal usage only 2563func (r *ListTasksResponse) UnsafeAppend(res interface{}) (uint32, error) { 2564 results, ok := res.(*ListTasksResponse) 2565 if !ok { 2566 return 0, errors.New("%T type cannot be appended to type %T", res, r) 2567 } 2568 2569 r.Tasks = append(r.Tasks, results.Tasks...) 2570 r.TotalCount += uint32(len(results.Tasks)) 2571 return uint32(len(results.Tasks)), nil 2572} 2573 2574type RegistrarAPIBuyDomainRequest struct { 2575 Domain string `json:"domain"` 2576 2577 DurationInYears uint32 `json:"duration_in_years"` 2578 2579 ProjectID string `json:"project_id"` 2580 2581 // Precisely one of OwnerContact, OwnerContactID must be set. 2582 OwnerContactID *string `json:"owner_contact_id,omitempty"` 2583 2584 // Precisely one of OwnerContact, OwnerContactID must be set. 2585 OwnerContact *NewContact `json:"owner_contact,omitempty"` 2586 2587 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 2588 AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` 2589 2590 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 2591 AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` 2592 2593 // Precisely one of TechnicalContact, TechnicalContactID must be set. 2594 TechnicalContactID *string `json:"technical_contact_id,omitempty"` 2595 2596 // Precisely one of TechnicalContact, TechnicalContactID must be set. 2597 TechnicalContact *NewContact `json:"technical_contact,omitempty"` 2598} 2599 2600// BuyDomain: buy a domain 2601// 2602// Request the registration of a domain name. 2603// You can provide an already existing domain's contact or a new contact. 2604// 2605func (s *RegistrarAPI) BuyDomain(req *RegistrarAPIBuyDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 2606 var err error 2607 2608 if req.ProjectID == "" { 2609 defaultProjectID, _ := s.client.GetDefaultProjectID() 2610 req.ProjectID = defaultProjectID 2611 } 2612 2613 scwReq := &scw.ScalewayRequest{ 2614 Method: "POST", 2615 Path: "/domain/v2beta1/domains", 2616 Headers: http.Header{}, 2617 } 2618 2619 err = scwReq.SetBody(req) 2620 if err != nil { 2621 return nil, err 2622 } 2623 2624 var resp Domain 2625 2626 err = s.client.Do(scwReq, &resp, opts...) 2627 if err != nil { 2628 return nil, err 2629 } 2630 return &resp, nil 2631} 2632 2633type RegistrarAPIRenewDomainRequest struct { 2634 Domain string `json:"-"` 2635 2636 DurationInYears uint32 `json:"duration_in_years"` 2637} 2638 2639// RenewDomain: renew a domain 2640// 2641// Request the renewal of a domain name. 2642// 2643func (s *RegistrarAPI) RenewDomain(req *RegistrarAPIRenewDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 2644 var err error 2645 2646 if fmt.Sprint(req.Domain) == "" { 2647 return nil, errors.New("field Domain cannot be empty in request") 2648 } 2649 2650 scwReq := &scw.ScalewayRequest{ 2651 Method: "POST", 2652 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/renew", 2653 Headers: http.Header{}, 2654 } 2655 2656 err = scwReq.SetBody(req) 2657 if err != nil { 2658 return nil, err 2659 } 2660 2661 var resp Domain 2662 2663 err = s.client.Do(scwReq, &resp, opts...) 2664 if err != nil { 2665 return nil, err 2666 } 2667 return &resp, nil 2668} 2669 2670type RegistrarAPITransferInDomainRequest struct { 2671 Domain string `json:"domain"` 2672 2673 AuthCode string `json:"auth_code"` 2674 2675 ProjectID string `json:"project_id"` 2676 2677 // Precisely one of OwnerContact, OwnerContactID must be set. 2678 OwnerContactID *string `json:"owner_contact_id,omitempty"` 2679 2680 // Precisely one of OwnerContact, OwnerContactID must be set. 2681 OwnerContact *NewContact `json:"owner_contact,omitempty"` 2682 2683 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 2684 AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` 2685 2686 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 2687 AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` 2688 2689 // Precisely one of TechnicalContact, TechnicalContactID must be set. 2690 TechnicalContactID *string `json:"technical_contact_id,omitempty"` 2691 2692 // Precisely one of TechnicalContact, TechnicalContactID must be set. 2693 TechnicalContact *NewContact `json:"technical_contact,omitempty"` 2694} 2695 2696// TransferInDomain: transfer a domain 2697// 2698// Request the transfer from another registrar domain to Scaleway. 2699// 2700func (s *RegistrarAPI) TransferInDomain(req *RegistrarAPITransferInDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 2701 var err error 2702 2703 if req.ProjectID == "" { 2704 defaultProjectID, _ := s.client.GetDefaultProjectID() 2705 req.ProjectID = defaultProjectID 2706 } 2707 2708 scwReq := &scw.ScalewayRequest{ 2709 Method: "POST", 2710 Path: "/domain/v2beta1/domains/domain-transfers", 2711 Headers: http.Header{}, 2712 } 2713 2714 err = scwReq.SetBody(req) 2715 if err != nil { 2716 return nil, err 2717 } 2718 2719 var resp Domain 2720 2721 err = s.client.Do(scwReq, &resp, opts...) 2722 if err != nil { 2723 return nil, err 2724 } 2725 return &resp, nil 2726} 2727 2728type RegistrarAPITradeDomainRequest struct { 2729 Domain string `json:"-"` 2730 2731 ProjectID *string `json:"project_id"` 2732 2733 // Precisely one of NewOwnerContact, NewOwnerContactID must be set. 2734 NewOwnerContactID *string `json:"new_owner_contact_id,omitempty"` 2735 2736 // Precisely one of NewOwnerContact, NewOwnerContactID must be set. 2737 NewOwnerContact *NewContact `json:"new_owner_contact,omitempty"` 2738} 2739 2740// TradeDomain: trade a domain contact 2741// 2742// Request a trade for the contact owner.<br/> 2743// If an `organization_id` is given, the change is from the current Scaleway account to another Scaleway account.<br/> 2744// If no contact is given, the first contact of the other Scaleway account is taken.<br/> 2745// If the other Scaleway account has no contact. An error occurs. 2746// 2747func (s *RegistrarAPI) TradeDomain(req *RegistrarAPITradeDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 2748 var err error 2749 2750 if fmt.Sprint(req.Domain) == "" { 2751 return nil, errors.New("field Domain cannot be empty in request") 2752 } 2753 2754 scwReq := &scw.ScalewayRequest{ 2755 Method: "POST", 2756 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/trade", 2757 Headers: http.Header{}, 2758 } 2759 2760 err = scwReq.SetBody(req) 2761 if err != nil { 2762 return nil, err 2763 } 2764 2765 var resp Domain 2766 2767 err = s.client.Do(scwReq, &resp, opts...) 2768 if err != nil { 2769 return nil, err 2770 } 2771 return &resp, nil 2772} 2773 2774type RegistrarAPIRegisterExternalDomainRequest struct { 2775 Domain string `json:"domain"` 2776 2777 ProjectID string `json:"project_id"` 2778} 2779 2780// RegisterExternalDomain: register an external domain 2781// 2782// Request the registration of an external domain name. 2783// 2784func (s *RegistrarAPI) RegisterExternalDomain(req *RegistrarAPIRegisterExternalDomainRequest, opts ...scw.RequestOption) (*RegisterExternalDomainResponse, error) { 2785 var err error 2786 2787 if req.ProjectID == "" { 2788 defaultProjectID, _ := s.client.GetDefaultProjectID() 2789 req.ProjectID = defaultProjectID 2790 } 2791 2792 scwReq := &scw.ScalewayRequest{ 2793 Method: "POST", 2794 Path: "/domain/v2beta1/external-domains", 2795 Headers: http.Header{}, 2796 } 2797 2798 err = scwReq.SetBody(req) 2799 if err != nil { 2800 return nil, err 2801 } 2802 2803 var resp RegisterExternalDomainResponse 2804 2805 err = s.client.Do(scwReq, &resp, opts...) 2806 if err != nil { 2807 return nil, err 2808 } 2809 return &resp, nil 2810} 2811 2812type RegistrarAPIDeleteExternalDomainRequest struct { 2813 Domain string `json:"-"` 2814} 2815 2816// DeleteExternalDomain: delete an external domain 2817// 2818// Delete an external domain name. 2819// 2820func (s *RegistrarAPI) DeleteExternalDomain(req *RegistrarAPIDeleteExternalDomainRequest, opts ...scw.RequestOption) (*DeleteExternalDomainResponse, error) { 2821 var err error 2822 2823 if fmt.Sprint(req.Domain) == "" { 2824 return nil, errors.New("field Domain cannot be empty in request") 2825 } 2826 2827 scwReq := &scw.ScalewayRequest{ 2828 Method: "DELETE", 2829 Path: "/domain/v2beta1/external-domains/" + fmt.Sprint(req.Domain) + "", 2830 Headers: http.Header{}, 2831 } 2832 2833 var resp DeleteExternalDomainResponse 2834 2835 err = s.client.Do(scwReq, &resp, opts...) 2836 if err != nil { 2837 return nil, err 2838 } 2839 return &resp, nil 2840} 2841 2842type RegistrarAPIListContactsRequest struct { 2843 Page *int32 `json:"-"` 2844 2845 PageSize *uint32 `json:"-"` 2846 2847 Domain *string `json:"-"` 2848 2849 ProjectID *string `json:"-"` 2850 2851 OrganizationID *string `json:"-"` 2852} 2853 2854// ListContacts: list contacts 2855// 2856// Return a list of contacts with their domains and roles. 2857// You can filter the list by domain name. 2858// 2859func (s *RegistrarAPI) ListContacts(req *RegistrarAPIListContactsRequest, opts ...scw.RequestOption) (*ListContactsResponse, error) { 2860 var err error 2861 2862 defaultPageSize, exist := s.client.GetDefaultPageSize() 2863 if (req.PageSize == nil || *req.PageSize == 0) && exist { 2864 req.PageSize = &defaultPageSize 2865 } 2866 2867 query := url.Values{} 2868 parameter.AddToQuery(query, "page", req.Page) 2869 parameter.AddToQuery(query, "page_size", req.PageSize) 2870 parameter.AddToQuery(query, "domain", req.Domain) 2871 parameter.AddToQuery(query, "project_id", req.ProjectID) 2872 parameter.AddToQuery(query, "organization_id", req.OrganizationID) 2873 2874 scwReq := &scw.ScalewayRequest{ 2875 Method: "GET", 2876 Path: "/domain/v2beta1/contacts", 2877 Query: query, 2878 Headers: http.Header{}, 2879 } 2880 2881 var resp ListContactsResponse 2882 2883 err = s.client.Do(scwReq, &resp, opts...) 2884 if err != nil { 2885 return nil, err 2886 } 2887 return &resp, nil 2888} 2889 2890// UnsafeGetTotalCount should not be used 2891// Internal usage only 2892func (r *ListContactsResponse) UnsafeGetTotalCount() uint32 { 2893 return r.TotalCount 2894} 2895 2896// UnsafeAppend should not be used 2897// Internal usage only 2898func (r *ListContactsResponse) UnsafeAppend(res interface{}) (uint32, error) { 2899 results, ok := res.(*ListContactsResponse) 2900 if !ok { 2901 return 0, errors.New("%T type cannot be appended to type %T", res, r) 2902 } 2903 2904 r.Contacts = append(r.Contacts, results.Contacts...) 2905 r.TotalCount += uint32(len(results.Contacts)) 2906 return uint32(len(results.Contacts)), nil 2907} 2908 2909type RegistrarAPIGetContactRequest struct { 2910 ContactID string `json:"-"` 2911} 2912 2913// GetContact: get a contact 2914// 2915// Return a contact details retrieved from the registrar using a given contact ID. 2916func (s *RegistrarAPI) GetContact(req *RegistrarAPIGetContactRequest, opts ...scw.RequestOption) (*Contact, error) { 2917 var err error 2918 2919 if fmt.Sprint(req.ContactID) == "" { 2920 return nil, errors.New("field ContactID cannot be empty in request") 2921 } 2922 2923 scwReq := &scw.ScalewayRequest{ 2924 Method: "GET", 2925 Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", 2926 Headers: http.Header{}, 2927 } 2928 2929 var resp Contact 2930 2931 err = s.client.Do(scwReq, &resp, opts...) 2932 if err != nil { 2933 return nil, err 2934 } 2935 return &resp, nil 2936} 2937 2938type RegistrarAPIUpdateContactRequest struct { 2939 ContactID string `json:"-"` 2940 2941 Email *string `json:"email"` 2942 2943 EmailAlt *string `json:"email_alt"` 2944 2945 PhoneNumber *string `json:"phone_number"` 2946 2947 FaxNumber *string `json:"fax_number"` 2948 2949 AddressLine1 *string `json:"address_line_1"` 2950 2951 AddressLine2 *string `json:"address_line_2"` 2952 2953 Zip *string `json:"zip"` 2954 2955 City *string `json:"city"` 2956 2957 Country *string `json:"country"` 2958 2959 VatIdentificationCode *string `json:"vat_identification_code"` 2960 2961 CompanyIdentificationCode *string `json:"company_identification_code"` 2962 // Lang: 2963 // 2964 // Default value: unknown_language_code 2965 Lang LanguageCode `json:"lang"` 2966 2967 Resale *bool `json:"resale"` 2968 2969 Questions []*UpdateContactRequestQuestion `json:"questions"` 2970 2971 ExtensionFr *ContactExtensionFR `json:"extension_fr"` 2972 2973 ExtensionEu *ContactExtensionEU `json:"extension_eu"` 2974 2975 WhoisOptIn *bool `json:"whois_opt_in"` 2976} 2977 2978// UpdateContact: update contact 2979// 2980// You can edit the contact coordinates. 2981func (s *RegistrarAPI) UpdateContact(req *RegistrarAPIUpdateContactRequest, opts ...scw.RequestOption) (*Contact, error) { 2982 var err error 2983 2984 if fmt.Sprint(req.ContactID) == "" { 2985 return nil, errors.New("field ContactID cannot be empty in request") 2986 } 2987 2988 scwReq := &scw.ScalewayRequest{ 2989 Method: "PATCH", 2990 Path: "/domain/v2beta1/contacts/" + fmt.Sprint(req.ContactID) + "", 2991 Headers: http.Header{}, 2992 } 2993 2994 err = scwReq.SetBody(req) 2995 if err != nil { 2996 return nil, err 2997 } 2998 2999 var resp Contact 3000 3001 err = s.client.Do(scwReq, &resp, opts...) 3002 if err != nil { 3003 return nil, err 3004 } 3005 return &resp, nil 3006} 3007 3008type RegistrarAPIListDomainsRequest struct { 3009 Page *int32 `json:"-"` 3010 3011 PageSize *uint32 `json:"-"` 3012 // OrderBy: 3013 // 3014 // Default value: domain_asc 3015 OrderBy ListDomainsRequestOrderBy `json:"-"` 3016 3017 Registrar *string `json:"-"` 3018 // Status: 3019 // 3020 // Default value: status_unknown 3021 Status DomainStatus `json:"-"` 3022 3023 ProjectID *string `json:"-"` 3024 3025 OrganizationID *string `json:"-"` 3026 3027 IsExternal *bool `json:"-"` 3028} 3029 3030// ListDomains: list domains 3031// 3032// Returns a list of domains owned by the user. 3033func (s *RegistrarAPI) ListDomains(req *RegistrarAPIListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) { 3034 var err error 3035 3036 defaultPageSize, exist := s.client.GetDefaultPageSize() 3037 if (req.PageSize == nil || *req.PageSize == 0) && exist { 3038 req.PageSize = &defaultPageSize 3039 } 3040 3041 query := url.Values{} 3042 parameter.AddToQuery(query, "page", req.Page) 3043 parameter.AddToQuery(query, "page_size", req.PageSize) 3044 parameter.AddToQuery(query, "order_by", req.OrderBy) 3045 parameter.AddToQuery(query, "registrar", req.Registrar) 3046 parameter.AddToQuery(query, "status", req.Status) 3047 parameter.AddToQuery(query, "project_id", req.ProjectID) 3048 parameter.AddToQuery(query, "organization_id", req.OrganizationID) 3049 parameter.AddToQuery(query, "is_external", req.IsExternal) 3050 3051 scwReq := &scw.ScalewayRequest{ 3052 Method: "GET", 3053 Path: "/domain/v2beta1/domains", 3054 Query: query, 3055 Headers: http.Header{}, 3056 } 3057 3058 var resp ListDomainsResponse 3059 3060 err = s.client.Do(scwReq, &resp, opts...) 3061 if err != nil { 3062 return nil, err 3063 } 3064 return &resp, nil 3065} 3066 3067// UnsafeGetTotalCount should not be used 3068// Internal usage only 3069func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 { 3070 return r.TotalCount 3071} 3072 3073// UnsafeAppend should not be used 3074// Internal usage only 3075func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { 3076 results, ok := res.(*ListDomainsResponse) 3077 if !ok { 3078 return 0, errors.New("%T type cannot be appended to type %T", res, r) 3079 } 3080 3081 r.Domains = append(r.Domains, results.Domains...) 3082 r.TotalCount += uint32(len(results.Domains)) 3083 return uint32(len(results.Domains)), nil 3084} 3085 3086type RegistrarAPIGetDomainRequest struct { 3087 Domain string `json:"-"` 3088} 3089 3090// GetDomain: get domain 3091// 3092// Returns a the domain with more informations. 3093func (s *RegistrarAPI) GetDomain(req *RegistrarAPIGetDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 3094 var err error 3095 3096 if fmt.Sprint(req.Domain) == "" { 3097 return nil, errors.New("field Domain cannot be empty in request") 3098 } 3099 3100 scwReq := &scw.ScalewayRequest{ 3101 Method: "GET", 3102 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", 3103 Headers: http.Header{}, 3104 } 3105 3106 var resp Domain 3107 3108 err = s.client.Do(scwReq, &resp, opts...) 3109 if err != nil { 3110 return nil, err 3111 } 3112 return &resp, nil 3113} 3114 3115type RegistrarAPIUpdateDomainRequest struct { 3116 Domain string `json:"-"` 3117 3118 // Precisely one of TechnicalContact, TechnicalContactID must be set. 3119 TechnicalContactID *string `json:"technical_contact_id,omitempty"` 3120 3121 // Precisely one of TechnicalContact, TechnicalContactID must be set. 3122 TechnicalContact *NewContact `json:"technical_contact,omitempty"` 3123 3124 // Precisely one of OwnerContact, OwnerContactID must be set. 3125 OwnerContactID *string `json:"owner_contact_id,omitempty"` 3126 3127 // Precisely one of OwnerContact, OwnerContactID must be set. 3128 OwnerContact *NewContact `json:"owner_contact,omitempty"` 3129 3130 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 3131 AdministrativeContactID *string `json:"administrative_contact_id,omitempty"` 3132 3133 // Precisely one of AdministrativeContact, AdministrativeContactID must be set. 3134 AdministrativeContact *NewContact `json:"administrative_contact,omitempty"` 3135} 3136 3137// UpdateDomain: update a domain 3138// 3139// Update the domain contacts or create a new one.<br/> 3140// If you add the same contact for multiple roles. Only one ID will be created and used for all of them. 3141// 3142func (s *RegistrarAPI) UpdateDomain(req *RegistrarAPIUpdateDomainRequest, opts ...scw.RequestOption) (*Domain, error) { 3143 var err error 3144 3145 if fmt.Sprint(req.Domain) == "" { 3146 return nil, errors.New("field Domain cannot be empty in request") 3147 } 3148 3149 scwReq := &scw.ScalewayRequest{ 3150 Method: "PATCH", 3151 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "", 3152 Headers: http.Header{}, 3153 } 3154 3155 err = scwReq.SetBody(req) 3156 if err != nil { 3157 return nil, err 3158 } 3159 3160 var resp Domain 3161 3162 err = s.client.Do(scwReq, &resp, opts...) 3163 if err != nil { 3164 return nil, err 3165 } 3166 return &resp, nil 3167} 3168 3169type RegistrarAPILockDomainTransferRequest struct { 3170 Domain string `json:"-"` 3171} 3172 3173// LockDomainTransfer: lock domain transfer 3174// 3175// Lock domain transfer. A locked domain transfer can't be transferred and the auth code can't be requested. 3176// 3177func (s *RegistrarAPI) LockDomainTransfer(req *RegistrarAPILockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { 3178 var err error 3179 3180 if fmt.Sprint(req.Domain) == "" { 3181 return nil, errors.New("field Domain cannot be empty in request") 3182 } 3183 3184 scwReq := &scw.ScalewayRequest{ 3185 Method: "POST", 3186 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/lock-transfer", 3187 Headers: http.Header{}, 3188 } 3189 3190 err = scwReq.SetBody(req) 3191 if err != nil { 3192 return nil, err 3193 } 3194 3195 var resp Domain 3196 3197 err = s.client.Do(scwReq, &resp, opts...) 3198 if err != nil { 3199 return nil, err 3200 } 3201 return &resp, nil 3202} 3203 3204type RegistrarAPIUnlockDomainTransferRequest struct { 3205 Domain string `json:"-"` 3206} 3207 3208// UnlockDomainTransfer: unlock domain transfer 3209// 3210// Unlock domain transfer. An unlocked domain can be transferred and the auth code can be requested for this. 3211// 3212func (s *RegistrarAPI) UnlockDomainTransfer(req *RegistrarAPIUnlockDomainTransferRequest, opts ...scw.RequestOption) (*Domain, error) { 3213 var err error 3214 3215 if fmt.Sprint(req.Domain) == "" { 3216 return nil, errors.New("field Domain cannot be empty in request") 3217 } 3218 3219 scwReq := &scw.ScalewayRequest{ 3220 Method: "POST", 3221 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/unlock-transfer", 3222 Headers: http.Header{}, 3223 } 3224 3225 err = scwReq.SetBody(req) 3226 if err != nil { 3227 return nil, err 3228 } 3229 3230 var resp Domain 3231 3232 err = s.client.Do(scwReq, &resp, opts...) 3233 if err != nil { 3234 return nil, err 3235 } 3236 return &resp, nil 3237} 3238 3239type RegistrarAPIEnableDomainAutoRenewRequest struct { 3240 Domain string `json:"-"` 3241} 3242 3243// EnableDomainAutoRenew: enable domain auto renew 3244func (s *RegistrarAPI) EnableDomainAutoRenew(req *RegistrarAPIEnableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { 3245 var err error 3246 3247 if fmt.Sprint(req.Domain) == "" { 3248 return nil, errors.New("field Domain cannot be empty in request") 3249 } 3250 3251 scwReq := &scw.ScalewayRequest{ 3252 Method: "POST", 3253 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-auto-renew", 3254 Headers: http.Header{}, 3255 } 3256 3257 err = scwReq.SetBody(req) 3258 if err != nil { 3259 return nil, err 3260 } 3261 3262 var resp Domain 3263 3264 err = s.client.Do(scwReq, &resp, opts...) 3265 if err != nil { 3266 return nil, err 3267 } 3268 return &resp, nil 3269} 3270 3271type RegistrarAPIDisableDomainAutoRenewRequest struct { 3272 Domain string `json:"-"` 3273} 3274 3275// DisableDomainAutoRenew: disable domain auto renew 3276func (s *RegistrarAPI) DisableDomainAutoRenew(req *RegistrarAPIDisableDomainAutoRenewRequest, opts ...scw.RequestOption) (*Domain, error) { 3277 var err error 3278 3279 if fmt.Sprint(req.Domain) == "" { 3280 return nil, errors.New("field Domain cannot be empty in request") 3281 } 3282 3283 scwReq := &scw.ScalewayRequest{ 3284 Method: "POST", 3285 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-auto-renew", 3286 Headers: http.Header{}, 3287 } 3288 3289 err = scwReq.SetBody(req) 3290 if err != nil { 3291 return nil, err 3292 } 3293 3294 var resp Domain 3295 3296 err = s.client.Do(scwReq, &resp, opts...) 3297 if err != nil { 3298 return nil, err 3299 } 3300 return &resp, nil 3301} 3302 3303type RegistrarAPIGetDomainAuthCodeRequest struct { 3304 Domain string `json:"-"` 3305} 3306 3307// GetDomainAuthCode: return domain auth code 3308// 3309// If possible, return the auth code for an unlocked domain transfer, or an error if the domain is locked. 3310// Some TLD may have a different procedure to retrieve the auth code, in that case, the information is given in the message field. 3311// 3312func (s *RegistrarAPI) GetDomainAuthCode(req *RegistrarAPIGetDomainAuthCodeRequest, opts ...scw.RequestOption) (*GetDomainAuthCodeResponse, error) { 3313 var err error 3314 3315 if fmt.Sprint(req.Domain) == "" { 3316 return nil, errors.New("field Domain cannot be empty in request") 3317 } 3318 3319 scwReq := &scw.ScalewayRequest{ 3320 Method: "GET", 3321 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/auth-code", 3322 Headers: http.Header{}, 3323 } 3324 3325 var resp GetDomainAuthCodeResponse 3326 3327 err = s.client.Do(scwReq, &resp, opts...) 3328 if err != nil { 3329 return nil, err 3330 } 3331 return &resp, nil 3332} 3333 3334type RegistrarAPIEnableDomainDNSSECRequest struct { 3335 Domain string `json:"-"` 3336 3337 DsRecord *DSRecord `json:"ds_record"` 3338} 3339 3340// EnableDomainDNSSEC: update domain DNSSEC 3341// 3342// If your domain has the default Scaleway NS and uses another registrar, you have to update the DS record manually. 3343// For the algorithm, here are the code numbers for each type: 3344// - 1: RSAMD5 3345// - 2: DIFFIE_HELLMAN 3346// - 3: DSA_SHA1 3347// - 5: RSA_SHA1 3348// - 6: DSA_NSEC3_SHA1 3349// - 7: RSASHA1_NSEC3_SHA1 3350// - 8: RSASHA256 3351// - 10: RSASHA512 3352// - 12: ECC_GOST 3353// - 13: ECDSAP256SHA256 3354// - 14: ECDSAP384SHA384 3355// 3356// And for the digest type: 3357// - 1: SHA_1 3358// - 2: SHA_256 3359// - 3: GOST_R_34_11_94 3360// - 4: SHA_384 3361// 3362func (s *RegistrarAPI) EnableDomainDNSSEC(req *RegistrarAPIEnableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { 3363 var err error 3364 3365 if fmt.Sprint(req.Domain) == "" { 3366 return nil, errors.New("field Domain cannot be empty in request") 3367 } 3368 3369 scwReq := &scw.ScalewayRequest{ 3370 Method: "POST", 3371 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/enable-dnssec", 3372 Headers: http.Header{}, 3373 } 3374 3375 err = scwReq.SetBody(req) 3376 if err != nil { 3377 return nil, err 3378 } 3379 3380 var resp Domain 3381 3382 err = s.client.Do(scwReq, &resp, opts...) 3383 if err != nil { 3384 return nil, err 3385 } 3386 return &resp, nil 3387} 3388 3389type RegistrarAPIDisableDomainDNSSECRequest struct { 3390 Domain string `json:"-"` 3391} 3392 3393// DisableDomainDNSSEC: disable domain DNSSEC 3394func (s *RegistrarAPI) DisableDomainDNSSEC(req *RegistrarAPIDisableDomainDNSSECRequest, opts ...scw.RequestOption) (*Domain, error) { 3395 var err error 3396 3397 if fmt.Sprint(req.Domain) == "" { 3398 return nil, errors.New("field Domain cannot be empty in request") 3399 } 3400 3401 scwReq := &scw.ScalewayRequest{ 3402 Method: "POST", 3403 Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/disable-dnssec", 3404 Headers: http.Header{}, 3405 } 3406 3407 err = scwReq.SetBody(req) 3408 if err != nil { 3409 return nil, err 3410 } 3411 3412 var resp Domain 3413 3414 err = s.client.Do(scwReq, &resp, opts...) 3415 if err != nil { 3416 return nil, err 3417 } 3418 return &resp, nil 3419} 3420