Skip to content

Commit 41f967f

Browse files
authored
feat(domain): add host management (#122)
1 parent d86c1b7 commit 41f967f

File tree

4 files changed

+200
-1
lines changed

4 files changed

+200
-1
lines changed

packages/clients/src/api/domain/v2beta1/api.gen.ts

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ import {
1717
marshalRefreshDNSZoneRequest,
1818
marshalRegistrarApiBuyDomainsRequest,
1919
marshalRegistrarApiCheckContactsCompatibilityRequest,
20+
marshalRegistrarApiCreateDomainHostRequest,
2021
marshalRegistrarApiEnableDomainDNSSECRequest,
2122
marshalRegistrarApiRegisterExternalDomainRequest,
2223
marshalRegistrarApiRenewDomainsRequest,
2324
marshalRegistrarApiTradeDomainRequest,
2425
marshalRegistrarApiTransferInDomainRequest,
2526
marshalRegistrarApiUpdateContactRequest,
27+
marshalRegistrarApiUpdateDomainHostRequest,
2628
marshalRegistrarApiUpdateDomainRequest,
2729
marshalUpdateDNSZoneNameserversRequest,
2830
marshalUpdateDNSZoneRecordsRequest,
@@ -38,6 +40,7 @@ import {
3840
unmarshalGetDNSZoneTsigKeyResponse,
3941
unmarshalGetDNSZoneVersionDiffResponse,
4042
unmarshalGetDomainAuthCodeResponse,
43+
unmarshalHost,
4144
unmarshalImportProviderDNSZoneResponse,
4245
unmarshalImportRawDNSZoneResponse,
4346
unmarshalListContactsResponse,
@@ -46,6 +49,7 @@ import {
4649
unmarshalListDNSZoneVersionRecordsResponse,
4750
unmarshalListDNSZoneVersionsResponse,
4851
unmarshalListDNSZonesResponse,
52+
unmarshalListDomainHostsResponse,
4953
unmarshalListDomainsResponse,
5054
unmarshalListRenewableDomainsResponse,
5155
unmarshalListSSLCertificatesResponse,
@@ -82,6 +86,7 @@ import type {
8286
GetDNSZoneVersionDiffResponse,
8387
GetDomainAuthCodeResponse,
8488
GetSSLCertificateRequest,
89+
Host,
8590
ImportProviderDNSZoneRequest,
8691
ImportProviderDNSZoneResponse,
8792
ImportRawDNSZoneRequest,
@@ -97,6 +102,7 @@ import type {
97102
ListDNSZoneVersionsResponse,
98103
ListDNSZonesRequest,
99104
ListDNSZonesResponse,
105+
ListDomainHostsResponse,
100106
ListDomainsResponse,
101107
ListRenewableDomainsResponse,
102108
ListSSLCertificatesRequest,
@@ -108,6 +114,8 @@ import type {
108114
RegisterExternalDomainResponse,
109115
RegistrarApiBuyDomainsRequest,
110116
RegistrarApiCheckContactsCompatibilityRequest,
117+
RegistrarApiCreateDomainHostRequest,
118+
RegistrarApiDeleteDomainHostRequest,
111119
RegistrarApiDeleteExternalDomainRequest,
112120
RegistrarApiDisableDomainAutoRenewRequest,
113121
RegistrarApiDisableDomainDNSSECRequest,
@@ -117,6 +125,7 @@ import type {
117125
RegistrarApiGetDomainAuthCodeRequest,
118126
RegistrarApiGetDomainRequest,
119127
RegistrarApiListContactsRequest,
128+
RegistrarApiListDomainHostsRequest,
120129
RegistrarApiListDomainsRequest,
121130
RegistrarApiListRenewableDomainsRequest,
122131
RegistrarApiListTasksRequest,
@@ -128,6 +137,7 @@ import type {
128137
RegistrarApiTransferInDomainRequest,
129138
RegistrarApiUnlockDomainTransferRequest,
130139
RegistrarApiUpdateContactRequest,
140+
RegistrarApiUpdateDomainHostRequest,
131141
RegistrarApiUpdateDomainRequest,
132142
RestoreDNSZoneVersionRequest,
133143
RestoreDNSZoneVersionResponse,
@@ -1332,4 +1342,102 @@ export class DomainRegistrarV2Beta1GenAPI extends API {
13321342
},
13331343
unmarshalSearchAvailableDomainsResponse,
13341344
)
1345+
1346+
/**
1347+
* Create domain hostname with glue IPs
1348+
*
1349+
* @param request - The request {@link RegistrarApiCreateDomainHostRequest}
1350+
* @returns A Promise of Host
1351+
*/
1352+
createDomainHost = (request: Readonly<RegistrarApiCreateDomainHostRequest>) =>
1353+
this.client.fetch<Host>(
1354+
{
1355+
body: JSON.stringify(
1356+
marshalRegistrarApiCreateDomainHostRequest(
1357+
request,
1358+
this.client.settings,
1359+
),
1360+
),
1361+
headers: jsonContentHeaders,
1362+
method: 'POST',
1363+
path: `/domain/v2beta1/domains/${validatePathParam(
1364+
'domain',
1365+
request.domain,
1366+
)}/hosts`,
1367+
},
1368+
unmarshalHost,
1369+
)
1370+
1371+
protected pageOfListDomainHosts = (
1372+
request: Readonly<RegistrarApiListDomainHostsRequest>,
1373+
) =>
1374+
this.client.fetch<ListDomainHostsResponse>(
1375+
{
1376+
method: 'GET',
1377+
path: `/domain/v2beta1/domains/${validatePathParam(
1378+
'domain',
1379+
request.domain,
1380+
)}/hosts`,
1381+
urlParams: urlParams(
1382+
['page', request.page],
1383+
[
1384+
'page_size',
1385+
request.pageSize ?? this.client.settings.defaultPageSize,
1386+
],
1387+
),
1388+
},
1389+
unmarshalListDomainHostsResponse,
1390+
)
1391+
1392+
/**
1393+
* List domain hostnames with they glue IPs
1394+
*
1395+
* @param request - The request {@link RegistrarApiListDomainHostsRequest}
1396+
* @returns A Promise of ListDomainHostsResponse
1397+
*/
1398+
listDomainHosts = (request: Readonly<RegistrarApiListDomainHostsRequest>) =>
1399+
enrichForPagination('hosts', this.pageOfListDomainHosts, request)
1400+
1401+
/**
1402+
* Update domain hostname with glue IPs
1403+
*
1404+
* @param request - The request {@link RegistrarApiUpdateDomainHostRequest}
1405+
* @returns A Promise of Host
1406+
*/
1407+
updateDomainHost = (request: Readonly<RegistrarApiUpdateDomainHostRequest>) =>
1408+
this.client.fetch<Host>(
1409+
{
1410+
body: JSON.stringify(
1411+
marshalRegistrarApiUpdateDomainHostRequest(
1412+
request,
1413+
this.client.settings,
1414+
),
1415+
),
1416+
headers: jsonContentHeaders,
1417+
method: 'PATCH',
1418+
path: `/domain/v2beta1/domains/${validatePathParam(
1419+
'domain',
1420+
request.domain,
1421+
)}/hosts/${validatePathParam('name', request.name)}`,
1422+
},
1423+
unmarshalHost,
1424+
)
1425+
1426+
/**
1427+
* Delete domain hostname
1428+
*
1429+
* @param request - The request {@link RegistrarApiDeleteDomainHostRequest}
1430+
* @returns A Promise of Host
1431+
*/
1432+
deleteDomainHost = (request: Readonly<RegistrarApiDeleteDomainHostRequest>) =>
1433+
this.client.fetch<Host>(
1434+
{
1435+
method: 'DELETE',
1436+
path: `/domain/v2beta1/domains/${validatePathParam(
1437+
'domain',
1438+
request.domain,
1439+
)}/hosts/${validatePathParam('name', request.name)}`,
1440+
},
1441+
unmarshalHost,
1442+
)
13351443
}
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// This file was automatically generated. DO NOT EDIT.
22
// If you have any remark or suggestion do not hesitate to open an issue.
3-
import type { DNSZoneStatus } from './types.gen'
3+
import type { DNSZoneStatus, HostStatus } from './types.gen'
44

55
/** Lists transient statutes of the enum {@link DNSZoneStatus}. */
66
export const DNS_ZONE_TRANSIENT_STATUSES: DNSZoneStatus[] = ['pending']
7+
8+
/** Lists transient statutes of the enum {@link HostStatus}. */
9+
export const HOST_TRANSIENT_STATUSES: HostStatus[] = ['updating', 'deleting']

packages/clients/src/api/domain/v2beta1/marshalling.gen.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import type {
5353
GetDNSZoneTsigKeyResponse,
5454
GetDNSZoneVersionDiffResponse,
5555
GetDomainAuthCodeResponse,
56+
Host,
5657
ImportProviderDNSZoneRequest,
5758
ImportProviderDNSZoneRequestOnlineV1,
5859
ImportProviderDNSZoneResponse,
@@ -67,6 +68,7 @@ import type {
6768
ListDNSZoneVersionRecordsResponse,
6869
ListDNSZoneVersionsResponse,
6970
ListDNSZonesResponse,
71+
ListDomainHostsResponse,
7072
ListDomainsResponse,
7173
ListRenewableDomainsResponse,
7274
ListSSLCertificatesResponse,
@@ -85,12 +87,14 @@ import type {
8587
RegisterExternalDomainResponse,
8688
RegistrarApiBuyDomainsRequest,
8789
RegistrarApiCheckContactsCompatibilityRequest,
90+
RegistrarApiCreateDomainHostRequest,
8891
RegistrarApiEnableDomainDNSSECRequest,
8992
RegistrarApiRegisterExternalDomainRequest,
9093
RegistrarApiRenewDomainsRequest,
9194
RegistrarApiTradeDomainRequest,
9295
RegistrarApiTransferInDomainRequest,
9396
RegistrarApiUpdateContactRequest,
97+
RegistrarApiUpdateDomainHostRequest,
9498
RegistrarApiUpdateDomainRequest,
9599
RenewableDomain,
96100
RestoreDNSZoneVersionResponse,
@@ -708,6 +712,21 @@ const unmarshalDomainSummary = (data: unknown) => {
708712
} as DomainSummary
709713
}
710714

715+
export const unmarshalHost = (data: unknown) => {
716+
if (!isJSONObject(data)) {
717+
throw new TypeError(
718+
`Unmarshalling the type 'Host' failed as data isn't a dictionary.`,
719+
)
720+
}
721+
722+
return {
723+
domain: data.domain,
724+
ips: data.ips,
725+
name: data.name,
726+
status: data.status,
727+
} as Host
728+
}
729+
711730
const unmarshalNameserver = (data: unknown) => {
712731
if (!isJSONObject(data)) {
713732
throw new TypeError(
@@ -1034,6 +1053,19 @@ export const unmarshalListDNSZonesResponse = (data: unknown) => {
10341053
} as ListDNSZonesResponse
10351054
}
10361055

1056+
export const unmarshalListDomainHostsResponse = (data: unknown) => {
1057+
if (!isJSONObject(data)) {
1058+
throw new TypeError(
1059+
`Unmarshalling the type 'ListDomainHostsResponse' failed as data isn't a dictionary.`,
1060+
)
1061+
}
1062+
1063+
return {
1064+
hosts: unmarshalArrayOfObject(data.hosts, unmarshalHost),
1065+
totalCount: data.total_count,
1066+
} as ListDomainHostsResponse
1067+
}
1068+
10371069
export const unmarshalListDomainsResponse = (data: unknown) => {
10381070
if (!isJSONObject(data)) {
10391071
throw new TypeError(
@@ -1795,6 +1827,14 @@ export const marshalRegistrarApiCheckContactsCompatibilityRequest = (
17951827
]),
17961828
})
17971829

1830+
export const marshalRegistrarApiCreateDomainHostRequest = (
1831+
request: RegistrarApiCreateDomainHostRequest,
1832+
defaults: DefaultValues,
1833+
): Record<string, unknown> => ({
1834+
ips: request.ips,
1835+
name: request.name,
1836+
})
1837+
17981838
export const marshalRegistrarApiEnableDomainDNSSECRequest = (
17991839
request: RegistrarApiEnableDomainDNSSECRequest,
18001840
defaults: DefaultValues,
@@ -1921,6 +1961,13 @@ export const marshalRegistrarApiUpdateContactRequest = (
19211961
zip: request.zip,
19221962
})
19231963

1964+
export const marshalRegistrarApiUpdateDomainHostRequest = (
1965+
request: RegistrarApiUpdateDomainHostRequest,
1966+
defaults: DefaultValues,
1967+
): Record<string, unknown> => ({
1968+
ips: request.ips,
1969+
})
1970+
19241971
export const marshalRegistrarApiUpdateDomainRequest = (
19251972
request: RegistrarApiUpdateDomainRequest,
19261973
defaults: DefaultValues,

packages/clients/src/api/domain/v2beta1/types.gen.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ export type DomainStatus =
129129
| 'locked'
130130
| 'deleting'
131131

132+
export type HostStatus = 'unknown_status' | 'active' | 'updating' | 'deleting'
133+
132134
export type LanguageCode = 'unknown_language_code' | 'en_US' | 'fr_FR'
133135

134136
export type ListDNSZoneRecordsRequestOrderBy = 'name_asc' | 'name_desc'
@@ -186,6 +188,9 @@ export type TaskType =
186188
| 'send_message'
187189
| 'delete_domain_expired'
188190
| 'delete_external_domain'
191+
| 'create_host'
192+
| 'update_host'
193+
| 'delete_host'
189194

190195
export interface AvailableDomain {
191196
domain: string
@@ -512,6 +517,13 @@ export interface GetDomainAuthCodeResponse {
512517
authCode: string
513518
}
514519

520+
export interface Host {
521+
domain: string
522+
name: string
523+
ips: Array<string>
524+
status: HostStatus
525+
}
526+
515527
export interface ImportProviderDNSZoneRequestOnlineV1 {
516528
token: string
517529
}
@@ -583,6 +595,12 @@ export interface ListDNSZonesResponse {
583595
dnsZones: Array<DNSZone>
584596
}
585597

598+
/** List domain hosts response */
599+
export interface ListDomainHostsResponse {
600+
totalCount: number
601+
hosts: Array<Host>
602+
}
603+
586604
/** List domains response */
587605
export interface ListDomainsResponse {
588606
totalCount: number
@@ -1253,3 +1271,26 @@ export type RegistrarApiSearchAvailableDomainsRequest = {
12531271
/** Array of tlds to search on */
12541272
tlds?: Array<string>
12551273
}
1274+
1275+
export type RegistrarApiCreateDomainHostRequest = {
1276+
domain: string
1277+
name: string
1278+
ips?: Array<string>
1279+
}
1280+
1281+
export type RegistrarApiListDomainHostsRequest = {
1282+
domain: string
1283+
page?: number
1284+
pageSize?: number
1285+
}
1286+
1287+
export type RegistrarApiUpdateDomainHostRequest = {
1288+
domain: string
1289+
name: string
1290+
ips?: Array<string>
1291+
}
1292+
1293+
export type RegistrarApiDeleteDomainHostRequest = {
1294+
domain: string
1295+
name: string
1296+
}

0 commit comments

Comments
 (0)