Skip to content

Commit 3b25f60

Browse files
authored
feat(dom): add endpoint to list Tlds Offers (#313)
1 parent 0f3de1f commit 3b25f60

File tree

8 files changed

+292
-0
lines changed

8 files changed

+292
-0
lines changed

scaleway-async/scaleway_async/domain/v2beta1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .types import ListDomainsRequestOrderBy
2121
from .types import ListRenewableDomainsRequestOrderBy
2222
from .types import ListTasksRequestOrderBy
23+
from .types import ListTldsRequestOrderBy
2324
from .types import RawFormat
2425
from .types import RenewableDomainStatus
2526
from .types import SSLCertificateStatus
@@ -83,6 +84,7 @@
8384
from .types import ListRenewableDomainsResponse
8485
from .types import ListSSLCertificatesResponse
8586
from .types import ListTasksResponse
87+
from .types import ListTldsResponse
8688
from .types import Nameserver
8789
from .types import NewContact
8890
from .types import OrderResponse
@@ -136,6 +138,7 @@
136138
"ListDomainsRequestOrderBy",
137139
"ListRenewableDomainsRequestOrderBy",
138140
"ListTasksRequestOrderBy",
141+
"ListTldsRequestOrderBy",
139142
"RawFormat",
140143
"RenewableDomainStatus",
141144
"SSLCertificateStatus",
@@ -199,6 +202,7 @@
199202
"ListRenewableDomainsResponse",
200203
"ListSSLCertificatesResponse",
201204
"ListTasksResponse",
205+
"ListTldsResponse",
202206
"Nameserver",
203207
"NewContact",
204208
"OrderResponse",

scaleway-async/scaleway_async/domain/v2beta1/api.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
ListDomainsRequestOrderBy,
2727
ListRenewableDomainsRequestOrderBy,
2828
ListTasksRequestOrderBy,
29+
ListTldsRequestOrderBy,
2930
RawFormat,
3031
TaskStatus,
3132
TaskType,
@@ -65,6 +66,7 @@
6566
ListRenewableDomainsResponse,
6667
ListSSLCertificatesResponse,
6768
ListTasksResponse,
69+
ListTldsResponse,
6870
Nameserver,
6971
NewContact,
7072
OrderResponse,
@@ -76,6 +78,7 @@
7678
SSLCertificate,
7779
SearchAvailableDomainsResponse,
7880
Task,
81+
Tld,
7982
TransferInDomainRequestTransferRequest,
8083
UpdateContactRequestQuestion,
8184
UpdateDNSZoneNameserversResponse,
@@ -152,6 +155,7 @@
152155
unmarshal_ListRenewableDomainsResponse,
153156
unmarshal_ListSSLCertificatesResponse,
154157
unmarshal_ListTasksResponse,
158+
unmarshal_ListTldsResponse,
155159
unmarshal_OrderResponse,
156160
unmarshal_RefreshDNSZoneResponse,
157161
unmarshal_RegisterExternalDomainResponse,
@@ -2487,6 +2491,78 @@ async def search_available_domains(
24872491
self._throw_on_error(res)
24882492
return unmarshal_SearchAvailableDomainsResponse(res.json())
24892493

2494+
async def list_tlds(
2495+
self,
2496+
*,
2497+
tlds: Optional[List[str]] = None,
2498+
page: Optional[int] = None,
2499+
page_size: Optional[int] = None,
2500+
order_by: ListTldsRequestOrderBy = ListTldsRequestOrderBy.NAME_ASC,
2501+
) -> ListTldsResponse:
2502+
"""
2503+
List TLD offers.
2504+
Retrieve the list of TLDs and offers associated with them.
2505+
:param tlds: Array of TLDs to return.
2506+
:param page: Page number for the returned Projects.
2507+
:param page_size: Maximum number of Project per page.
2508+
:param order_by: Sort order of the returned TLDs.
2509+
:return: :class:`ListTldsResponse <ListTldsResponse>`
2510+
2511+
Usage:
2512+
::
2513+
2514+
result = await api.list_tlds()
2515+
"""
2516+
2517+
res = self._request(
2518+
"GET",
2519+
f"/domain/v2beta1/tlds",
2520+
params={
2521+
"order_by": order_by,
2522+
"page": page,
2523+
"page_size": page_size or self.client.default_page_size,
2524+
"tlds": tlds,
2525+
},
2526+
)
2527+
2528+
self._throw_on_error(res)
2529+
return unmarshal_ListTldsResponse(res.json())
2530+
2531+
async def list_tlds_all(
2532+
self,
2533+
*,
2534+
tlds: Optional[List[str]] = None,
2535+
page: Optional[int] = None,
2536+
page_size: Optional[int] = None,
2537+
order_by: Optional[ListTldsRequestOrderBy] = None,
2538+
) -> List[Tld]:
2539+
"""
2540+
List TLD offers.
2541+
Retrieve the list of TLDs and offers associated with them.
2542+
:param tlds: Array of TLDs to return.
2543+
:param page: Page number for the returned Projects.
2544+
:param page_size: Maximum number of Project per page.
2545+
:param order_by: Sort order of the returned TLDs.
2546+
:return: :class:`List[ListTldsResponse] <List[ListTldsResponse]>`
2547+
2548+
Usage:
2549+
::
2550+
2551+
result = await api.list_tlds_all()
2552+
"""
2553+
2554+
return await fetch_all_pages_async(
2555+
type=ListTldsResponse,
2556+
key="tlds",
2557+
fetcher=self.list_tlds,
2558+
args={
2559+
"tlds": tlds,
2560+
"page": page,
2561+
"page_size": page_size,
2562+
"order_by": order_by,
2563+
},
2564+
)
2565+
24902566
async def create_domain_host(
24912567
self,
24922568
*,

scaleway-async/scaleway_async/domain/v2beta1/marshalling.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
ListRenewableDomainsResponse,
8181
ListSSLCertificatesResponse,
8282
ListTasksResponse,
83+
ListTldsResponse,
8384
Nameserver,
8485
NewContact,
8586
OrderResponse,
@@ -1659,6 +1660,23 @@ def unmarshal_ListTasksResponse(data: Any) -> ListTasksResponse:
16591660
return ListTasksResponse(**args)
16601661

16611662

1663+
def unmarshal_ListTldsResponse(data: Any) -> ListTldsResponse:
1664+
if type(data) is not dict:
1665+
raise TypeError(
1666+
f"Unmarshalling the type 'ListTldsResponse' failed as data isn't a dictionary."
1667+
)
1668+
1669+
args: Dict[str, Any] = {}
1670+
1671+
field = data.get("tlds", None)
1672+
args["tlds"] = [unmarshal_Tld(v) for v in field] if field is not None else None
1673+
1674+
field = data.get("total_count", None)
1675+
args["total_count"] = field
1676+
1677+
return ListTldsResponse(**args)
1678+
1679+
16621680
def unmarshal_OrderResponse(data: Any) -> OrderResponse:
16631681
if type(data) is not dict:
16641682
raise TypeError(

scaleway-async/scaleway_async/domain/v2beta1/types.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,14 @@ def __str__(self) -> str:
278278
return str(self.value)
279279

280280

281+
class ListTldsRequestOrderBy(str, Enum, metaclass=StrEnumMeta):
282+
NAME_ASC = "name_asc"
283+
NAME_DESC = "name_desc"
284+
285+
def __str__(self) -> str:
286+
return str(self.value)
287+
288+
281289
class RawFormat(str, Enum, metaclass=StrEnumMeta):
282290
UNKNOWN_RAW_FORMAT = "unknown_raw_format"
283291
BIND = "bind"
@@ -1049,6 +1057,23 @@ class ListTasksResponse:
10491057
tasks: List[Task]
10501058

10511059

1060+
@dataclass
1061+
class ListTldsResponse:
1062+
"""
1063+
List tlds response.
1064+
"""
1065+
1066+
tlds: List[Tld]
1067+
"""
1068+
Array of TLDs.
1069+
"""
1070+
1071+
total_count: int
1072+
"""
1073+
Total count of TLDs returned.
1074+
"""
1075+
1076+
10521077
@dataclass
10531078
class Nameserver:
10541079
name: str
@@ -2123,6 +2148,29 @@ class RegistrarApiSearchAvailableDomainsRequest:
21232148
"""
21242149

21252150

2151+
@dataclass
2152+
class RegistrarApiListTldsRequest:
2153+
tlds: Optional[List[str]]
2154+
"""
2155+
Array of TLDs to return.
2156+
"""
2157+
2158+
page: Optional[int]
2159+
"""
2160+
Page number for the returned Projects.
2161+
"""
2162+
2163+
page_size: Optional[int]
2164+
"""
2165+
Maximum number of Project per page.
2166+
"""
2167+
2168+
order_by: Optional[ListTldsRequestOrderBy]
2169+
"""
2170+
Sort order of the returned TLDs.
2171+
"""
2172+
2173+
21262174
@dataclass
21272175
class RegistrarApiCreateDomainHostRequest:
21282176
domain: str

scaleway/scaleway/domain/v2beta1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .types import ListDomainsRequestOrderBy
2121
from .types import ListRenewableDomainsRequestOrderBy
2222
from .types import ListTasksRequestOrderBy
23+
from .types import ListTldsRequestOrderBy
2324
from .types import RawFormat
2425
from .types import RenewableDomainStatus
2526
from .types import SSLCertificateStatus
@@ -83,6 +84,7 @@
8384
from .types import ListRenewableDomainsResponse
8485
from .types import ListSSLCertificatesResponse
8586
from .types import ListTasksResponse
87+
from .types import ListTldsResponse
8688
from .types import Nameserver
8789
from .types import NewContact
8890
from .types import OrderResponse
@@ -136,6 +138,7 @@
136138
"ListDomainsRequestOrderBy",
137139
"ListRenewableDomainsRequestOrderBy",
138140
"ListTasksRequestOrderBy",
141+
"ListTldsRequestOrderBy",
139142
"RawFormat",
140143
"RenewableDomainStatus",
141144
"SSLCertificateStatus",
@@ -199,6 +202,7 @@
199202
"ListRenewableDomainsResponse",
200203
"ListSSLCertificatesResponse",
201204
"ListTasksResponse",
205+
"ListTldsResponse",
202206
"Nameserver",
203207
"NewContact",
204208
"OrderResponse",

scaleway/scaleway/domain/v2beta1/api.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
ListDomainsRequestOrderBy,
2727
ListRenewableDomainsRequestOrderBy,
2828
ListTasksRequestOrderBy,
29+
ListTldsRequestOrderBy,
2930
RawFormat,
3031
TaskStatus,
3132
TaskType,
@@ -65,6 +66,7 @@
6566
ListRenewableDomainsResponse,
6667
ListSSLCertificatesResponse,
6768
ListTasksResponse,
69+
ListTldsResponse,
6870
Nameserver,
6971
NewContact,
7072
OrderResponse,
@@ -76,6 +78,7 @@
7678
SSLCertificate,
7779
SearchAvailableDomainsResponse,
7880
Task,
81+
Tld,
7982
TransferInDomainRequestTransferRequest,
8083
UpdateContactRequestQuestion,
8184
UpdateDNSZoneNameserversResponse,
@@ -152,6 +155,7 @@
152155
unmarshal_ListRenewableDomainsResponse,
153156
unmarshal_ListSSLCertificatesResponse,
154157
unmarshal_ListTasksResponse,
158+
unmarshal_ListTldsResponse,
155159
unmarshal_OrderResponse,
156160
unmarshal_RefreshDNSZoneResponse,
157161
unmarshal_RegisterExternalDomainResponse,
@@ -2485,6 +2489,78 @@ def search_available_domains(
24852489
self._throw_on_error(res)
24862490
return unmarshal_SearchAvailableDomainsResponse(res.json())
24872491

2492+
def list_tlds(
2493+
self,
2494+
*,
2495+
tlds: Optional[List[str]] = None,
2496+
page: Optional[int] = None,
2497+
page_size: Optional[int] = None,
2498+
order_by: ListTldsRequestOrderBy = ListTldsRequestOrderBy.NAME_ASC,
2499+
) -> ListTldsResponse:
2500+
"""
2501+
List TLD offers.
2502+
Retrieve the list of TLDs and offers associated with them.
2503+
:param tlds: Array of TLDs to return.
2504+
:param page: Page number for the returned Projects.
2505+
:param page_size: Maximum number of Project per page.
2506+
:param order_by: Sort order of the returned TLDs.
2507+
:return: :class:`ListTldsResponse <ListTldsResponse>`
2508+
2509+
Usage:
2510+
::
2511+
2512+
result = api.list_tlds()
2513+
"""
2514+
2515+
res = self._request(
2516+
"GET",
2517+
f"/domain/v2beta1/tlds",
2518+
params={
2519+
"order_by": order_by,
2520+
"page": page,
2521+
"page_size": page_size or self.client.default_page_size,
2522+
"tlds": tlds,
2523+
},
2524+
)
2525+
2526+
self._throw_on_error(res)
2527+
return unmarshal_ListTldsResponse(res.json())
2528+
2529+
def list_tlds_all(
2530+
self,
2531+
*,
2532+
tlds: Optional[List[str]] = None,
2533+
page: Optional[int] = None,
2534+
page_size: Optional[int] = None,
2535+
order_by: Optional[ListTldsRequestOrderBy] = None,
2536+
) -> List[Tld]:
2537+
"""
2538+
List TLD offers.
2539+
Retrieve the list of TLDs and offers associated with them.
2540+
:param tlds: Array of TLDs to return.
2541+
:param page: Page number for the returned Projects.
2542+
:param page_size: Maximum number of Project per page.
2543+
:param order_by: Sort order of the returned TLDs.
2544+
:return: :class:`List[ListTldsResponse] <List[ListTldsResponse]>`
2545+
2546+
Usage:
2547+
::
2548+
2549+
result = api.list_tlds_all()
2550+
"""
2551+
2552+
return fetch_all_pages(
2553+
type=ListTldsResponse,
2554+
key="tlds",
2555+
fetcher=self.list_tlds,
2556+
args={
2557+
"tlds": tlds,
2558+
"page": page,
2559+
"page_size": page_size,
2560+
"order_by": order_by,
2561+
},
2562+
)
2563+
24882564
def create_domain_host(
24892565
self,
24902566
*,

0 commit comments

Comments
 (0)