@hostafrica/ha-sdk-typescript 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/apis/BillingApi.d.ts +45 -0
  2. package/dist/apis/BillingApi.js +122 -0
  3. package/dist/apis/DNSApi.d.ts +8 -8
  4. package/dist/apis/DNSApi.js +8 -8
  5. package/dist/apis/VPSManagementApi.d.ts +18 -3
  6. package/dist/apis/VPSManagementApi.js +49 -2
  7. package/dist/apis/index.d.ts +1 -0
  8. package/dist/apis/index.js +1 -0
  9. package/dist/esm/apis/BillingApi.d.ts +45 -0
  10. package/dist/esm/apis/BillingApi.js +118 -0
  11. package/dist/esm/apis/DNSApi.d.ts +8 -8
  12. package/dist/esm/apis/DNSApi.js +8 -8
  13. package/dist/esm/apis/VPSManagementApi.d.ts +18 -3
  14. package/dist/esm/apis/VPSManagementApi.js +50 -3
  15. package/dist/esm/apis/index.d.ts +1 -0
  16. package/dist/esm/apis/index.js +1 -0
  17. package/dist/esm/models/AddDnsRecordRequestContent.d.ts +22 -3
  18. package/dist/esm/models/AddDnsRecordRequestContent.js +8 -3
  19. package/dist/esm/models/DeleteDnsRecordRequestContent.d.ts +22 -3
  20. package/dist/esm/models/DeleteDnsRecordRequestContent.js +8 -3
  21. package/dist/esm/models/DnsBackend.d.ts +28 -0
  22. package/dist/esm/models/DnsBackend.js +46 -0
  23. package/dist/esm/models/DnsRecordMutationRecord.d.ts +3 -2
  24. package/dist/esm/models/DnsZoneInfo.d.ts +7 -0
  25. package/dist/esm/models/DnsZoneInfo.js +3 -0
  26. package/dist/esm/models/EditDnsRecordRequestContent.d.ts +22 -3
  27. package/dist/esm/models/EditDnsRecordRequestContent.js +8 -3
  28. package/dist/esm/models/EncryptedPasswordResponseData.d.ts +45 -0
  29. package/dist/esm/models/EncryptedPasswordResponseData.js +52 -0
  30. package/dist/esm/models/GetDnsZoneDetailsRequestContent.d.ts +7 -0
  31. package/dist/esm/models/GetDnsZoneDetailsRequestContent.js +3 -0
  32. package/dist/esm/models/GetEncryptedPasswordRequestContent.d.ts +38 -0
  33. package/dist/esm/models/GetEncryptedPasswordRequestContent.js +47 -0
  34. package/dist/esm/models/GetEncryptedPasswordResponseContent.d.ts +40 -0
  35. package/dist/esm/models/GetEncryptedPasswordResponseContent.js +49 -0
  36. package/dist/esm/models/GetInvoiceDetailsRequestContent.d.ts +32 -0
  37. package/dist/esm/models/GetInvoiceDetailsRequestContent.js +43 -0
  38. package/dist/esm/models/GetInvoiceDetailsResponseContent.d.ts +40 -0
  39. package/dist/esm/models/GetInvoiceDetailsResponseContent.js +49 -0
  40. package/dist/esm/models/GetInvoiceDetailsResponseData.d.ts +40 -0
  41. package/dist/esm/models/GetInvoiceDetailsResponseData.js +47 -0
  42. package/dist/esm/models/InvoiceDetails.d.ts +143 -0
  43. package/dist/esm/models/InvoiceDetails.js +112 -0
  44. package/dist/esm/models/InvoiceIssuedTo.d.ts +69 -0
  45. package/dist/esm/models/InvoiceIssuedTo.js +66 -0
  46. package/dist/esm/models/InvoiceIssuedToTax.d.ts +44 -0
  47. package/dist/esm/models/InvoiceIssuedToTax.js +51 -0
  48. package/dist/esm/models/InvoiceItem.d.ts +56 -0
  49. package/dist/esm/models/InvoiceItem.js +59 -0
  50. package/dist/esm/models/InvoiceSummary.d.ts +98 -0
  51. package/dist/esm/models/InvoiceSummary.js +83 -0
  52. package/dist/esm/models/InvoiceTransaction.d.ts +74 -0
  53. package/dist/esm/models/InvoiceTransaction.js +57 -0
  54. package/dist/esm/models/ListInvoicesResponseContent.d.ts +40 -0
  55. package/dist/esm/models/ListInvoicesResponseContent.js +49 -0
  56. package/dist/esm/models/ListInvoicesResponseData.d.ts +39 -0
  57. package/dist/esm/models/ListInvoicesResponseData.js +48 -0
  58. package/dist/esm/models/NoVncConsoleDetails.d.ts +19 -1
  59. package/dist/esm/models/NoVncConsoleDetails.js +7 -3
  60. package/dist/esm/models/PasswordEncryptionInfo.d.ts +50 -0
  61. package/dist/esm/models/PasswordEncryptionInfo.js +55 -0
  62. package/dist/esm/models/SelcomMetadata.d.ts +56 -0
  63. package/dist/esm/models/SelcomMetadata.js +59 -0
  64. package/dist/esm/models/VpsCredentials.d.ts +1 -1
  65. package/dist/esm/models/VpsDetailsResponse.d.ts +4 -3
  66. package/dist/esm/models/VpsDetailsResponse.js +3 -2
  67. package/dist/esm/models/VpsIpAddressDetail.d.ts +56 -0
  68. package/dist/esm/models/VpsIpAddressDetail.js +51 -0
  69. package/dist/esm/models/VpsVmInfo.d.ts +3 -3
  70. package/dist/esm/models/index.d.ts +18 -0
  71. package/dist/esm/models/index.js +18 -0
  72. package/dist/esm/retryablePaths.js +3 -0
  73. package/dist/models/AddDnsRecordRequestContent.d.ts +22 -3
  74. package/dist/models/AddDnsRecordRequestContent.js +8 -3
  75. package/dist/models/DeleteDnsRecordRequestContent.d.ts +22 -3
  76. package/dist/models/DeleteDnsRecordRequestContent.js +8 -3
  77. package/dist/models/DnsBackend.d.ts +28 -0
  78. package/dist/models/DnsBackend.js +54 -0
  79. package/dist/models/DnsRecordMutationRecord.d.ts +3 -2
  80. package/dist/models/DnsZoneInfo.d.ts +7 -0
  81. package/dist/models/DnsZoneInfo.js +3 -0
  82. package/dist/models/EditDnsRecordRequestContent.d.ts +22 -3
  83. package/dist/models/EditDnsRecordRequestContent.js +8 -3
  84. package/dist/models/EncryptedPasswordResponseData.d.ts +45 -0
  85. package/dist/models/EncryptedPasswordResponseData.js +59 -0
  86. package/dist/models/GetDnsZoneDetailsRequestContent.d.ts +7 -0
  87. package/dist/models/GetDnsZoneDetailsRequestContent.js +3 -0
  88. package/dist/models/GetEncryptedPasswordRequestContent.d.ts +38 -0
  89. package/dist/models/GetEncryptedPasswordRequestContent.js +54 -0
  90. package/dist/models/GetEncryptedPasswordResponseContent.d.ts +40 -0
  91. package/dist/models/GetEncryptedPasswordResponseContent.js +56 -0
  92. package/dist/models/GetInvoiceDetailsRequestContent.d.ts +32 -0
  93. package/dist/models/GetInvoiceDetailsRequestContent.js +50 -0
  94. package/dist/models/GetInvoiceDetailsResponseContent.d.ts +40 -0
  95. package/dist/models/GetInvoiceDetailsResponseContent.js +56 -0
  96. package/dist/models/GetInvoiceDetailsResponseData.d.ts +40 -0
  97. package/dist/models/GetInvoiceDetailsResponseData.js +54 -0
  98. package/dist/models/InvoiceDetails.d.ts +143 -0
  99. package/dist/models/InvoiceDetails.js +119 -0
  100. package/dist/models/InvoiceIssuedTo.d.ts +69 -0
  101. package/dist/models/InvoiceIssuedTo.js +73 -0
  102. package/dist/models/InvoiceIssuedToTax.d.ts +44 -0
  103. package/dist/models/InvoiceIssuedToTax.js +58 -0
  104. package/dist/models/InvoiceItem.d.ts +56 -0
  105. package/dist/models/InvoiceItem.js +66 -0
  106. package/dist/models/InvoiceSummary.d.ts +98 -0
  107. package/dist/models/InvoiceSummary.js +90 -0
  108. package/dist/models/InvoiceTransaction.d.ts +74 -0
  109. package/dist/models/InvoiceTransaction.js +64 -0
  110. package/dist/models/ListInvoicesResponseContent.d.ts +40 -0
  111. package/dist/models/ListInvoicesResponseContent.js +56 -0
  112. package/dist/models/ListInvoicesResponseData.d.ts +39 -0
  113. package/dist/models/ListInvoicesResponseData.js +55 -0
  114. package/dist/models/NoVncConsoleDetails.d.ts +19 -1
  115. package/dist/models/NoVncConsoleDetails.js +7 -3
  116. package/dist/models/PasswordEncryptionInfo.d.ts +50 -0
  117. package/dist/models/PasswordEncryptionInfo.js +62 -0
  118. package/dist/models/SelcomMetadata.d.ts +56 -0
  119. package/dist/models/SelcomMetadata.js +66 -0
  120. package/dist/models/VpsCredentials.d.ts +1 -1
  121. package/dist/models/VpsDetailsResponse.d.ts +4 -3
  122. package/dist/models/VpsDetailsResponse.js +3 -2
  123. package/dist/models/VpsIpAddressDetail.d.ts +56 -0
  124. package/dist/models/VpsIpAddressDetail.js +58 -0
  125. package/dist/models/VpsVmInfo.d.ts +3 -3
  126. package/dist/models/index.d.ts +18 -0
  127. package/dist/models/index.js +18 -0
  128. package/dist/retryablePaths.js +3 -0
  129. package/dist.zip +0 -0
  130. package/docs/AddDnsRecordRequestContent.md +6 -0
  131. package/docs/BillingApi.md +159 -0
  132. package/docs/DNSApi.md +4 -4
  133. package/docs/DeleteDnsRecordRequestContent.md +6 -0
  134. package/docs/DnsBackend.md +33 -0
  135. package/docs/DnsRecordMutationRecord.md +1 -1
  136. package/docs/DnsZoneInfo.md +2 -0
  137. package/docs/EditDnsRecordRequestContent.md +6 -0
  138. package/docs/EncryptedPasswordResponseData.md +39 -0
  139. package/docs/GetDnsZoneDetailsRequestContent.md +2 -0
  140. package/docs/GetEncryptedPasswordRequestContent.md +36 -0
  141. package/docs/GetEncryptedPasswordResponseContent.md +36 -0
  142. package/docs/GetInvoiceDetailsRequestContent.md +34 -0
  143. package/docs/GetInvoiceDetailsResponseContent.md +36 -0
  144. package/docs/GetInvoiceDetailsResponseData.md +37 -0
  145. package/docs/InvoiceDetails.md +71 -0
  146. package/docs/InvoiceIssuedTo.md +47 -0
  147. package/docs/InvoiceIssuedToTax.md +39 -0
  148. package/docs/InvoiceItem.md +43 -0
  149. package/docs/InvoiceSummary.md +57 -0
  150. package/docs/InvoiceTransaction.md +49 -0
  151. package/docs/ListInvoicesResponseContent.md +36 -0
  152. package/docs/ListInvoicesResponseData.md +37 -0
  153. package/docs/NoVncConsoleDetails.md +6 -0
  154. package/docs/PasswordEncryptionInfo.md +41 -0
  155. package/docs/SelcomMetadata.md +43 -0
  156. package/docs/VPSManagementApi.md +81 -1
  157. package/docs/VpsDetailsResponse.md +1 -1
  158. package/docs/VpsIpAddressDetail.md +43 -0
  159. package/docs/VpsVmInfo.md +1 -1
  160. package/package.json +1 -1
  161. package/src/apis/BillingApi.ts +164 -0
  162. package/src/apis/DNSApi.ts +8 -8
  163. package/src/apis/VPSManagementApi.ts +67 -2
  164. package/src/apis/index.ts +1 -0
  165. package/src/models/AddDnsRecordRequestContent.ts +37 -5
  166. package/src/models/DeleteDnsRecordRequestContent.ts +37 -5
  167. package/src/models/DnsBackend.ts +56 -0
  168. package/src/models/DnsRecordMutationRecord.ts +3 -2
  169. package/src/models/DnsZoneInfo.ts +17 -0
  170. package/src/models/EditDnsRecordRequestContent.ts +37 -5
  171. package/src/models/EncryptedPasswordResponseData.ts +92 -0
  172. package/src/models/GetDnsZoneDetailsRequestContent.ts +18 -0
  173. package/src/models/GetEncryptedPasswordRequestContent.ts +75 -0
  174. package/src/models/GetEncryptedPasswordResponseContent.ts +92 -0
  175. package/src/models/GetInvoiceDetailsRequestContent.ts +66 -0
  176. package/src/models/GetInvoiceDetailsResponseContent.ts +92 -0
  177. package/src/models/GetInvoiceDetailsResponseData.ts +89 -0
  178. package/src/models/InvoiceDetails.ts +247 -0
  179. package/src/models/InvoiceIssuedTo.ts +127 -0
  180. package/src/models/InvoiceIssuedToTax.ts +84 -0
  181. package/src/models/InvoiceItem.ts +102 -0
  182. package/src/models/InvoiceSummary.ts +163 -0
  183. package/src/models/InvoiceTransaction.ts +122 -0
  184. package/src/models/ListInvoicesResponseContent.ts +92 -0
  185. package/src/models/ListInvoicesResponseData.ts +83 -0
  186. package/src/models/NoVncConsoleDetails.ts +26 -3
  187. package/src/models/PasswordEncryptionInfo.ts +93 -0
  188. package/src/models/SelcomMetadata.ts +102 -0
  189. package/src/models/VpsCredentials.ts +1 -1
  190. package/src/models/VpsDetailsResponse.ts +12 -5
  191. package/src/models/VpsIpAddressDetail.ts +98 -0
  192. package/src/models/VpsVmInfo.ts +3 -3
  193. package/src/models/index.ts +18 -0
  194. package/src/retryablePaths.ts +3 -0
@@ -158,7 +158,7 @@ export class DNSApi extends runtime.BaseAPI {
158
158
  }
159
159
 
160
160
  /**
161
- * Adds a DNS record to a zone via DNSManager.
161
+ * Adds a DNS record to a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
162
162
  */
163
163
  async addDnsRecordRaw(requestParameters: AddDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AddDnsRecordResponseContent>> {
164
164
  const requestOptions = await this.addDnsRecordRequestOpts(requestParameters);
@@ -168,7 +168,7 @@ export class DNSApi extends runtime.BaseAPI {
168
168
  }
169
169
 
170
170
  /**
171
- * Adds a DNS record to a zone via DNSManager.
171
+ * Adds a DNS record to a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
172
172
  */
173
173
  async addDnsRecord(requestParameters: AddDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AddDnsRecordResponseContent> {
174
174
  const response = await this.addDnsRecordRaw(requestParameters, initOverrides);
@@ -268,7 +268,7 @@ export class DNSApi extends runtime.BaseAPI {
268
268
  }
269
269
 
270
270
  /**
271
- * Deletes a DNS record from a zone via DNSManager.
271
+ * Deletes a DNS record from a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
272
272
  */
273
273
  async deleteDnsRecordRaw(requestParameters: DeleteDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DeleteDnsRecordResponseContent>> {
274
274
  const requestOptions = await this.deleteDnsRecordRequestOpts(requestParameters);
@@ -278,7 +278,7 @@ export class DNSApi extends runtime.BaseAPI {
278
278
  }
279
279
 
280
280
  /**
281
- * Deletes a DNS record from a zone via DNSManager.
281
+ * Deletes a DNS record from a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
282
282
  */
283
283
  async deleteDnsRecord(requestParameters: DeleteDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DeleteDnsRecordResponseContent> {
284
284
  const response = await this.deleteDnsRecordRaw(requestParameters, initOverrides);
@@ -378,7 +378,7 @@ export class DNSApi extends runtime.BaseAPI {
378
378
  }
379
379
 
380
380
  /**
381
- * Edits a DNS record in a zone via DNSManager.
381
+ * Edits a DNS record in a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
382
382
  */
383
383
  async editDnsRecordRaw(requestParameters: EditDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<EditDnsRecordResponseContent>> {
384
384
  const requestOptions = await this.editDnsRecordRequestOpts(requestParameters);
@@ -388,7 +388,7 @@ export class DNSApi extends runtime.BaseAPI {
388
388
  }
389
389
 
390
390
  /**
391
- * Edits a DNS record in a zone via DNSManager.
391
+ * Edits a DNS record in a zone. Legacy callers pass zone_id only (DNS Manager v1). For DirectAdmin, pass backend=directadmin with domain_id; upstream v2 receives domain_id and record only.
392
392
  */
393
393
  async editDnsRecord(requestParameters: EditDnsRecordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<EditDnsRecordResponseContent> {
394
394
  const response = await this.editDnsRecordRaw(requestParameters, initOverrides);
@@ -433,7 +433,7 @@ export class DNSApi extends runtime.BaseAPI {
433
433
  }
434
434
 
435
435
  /**
436
- * Retrieves DNS zone details and records for an owned domain.
436
+ * Retrieves DNS zone details and records for an owned domain. Omit backend for the legacy DNS Manager (v1) path; set backend from list-dns-zones to route DirectAdmin zones to v2.
437
437
  */
438
438
  async getDnsZoneDetailsRaw(requestParameters: GetDnsZoneDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetDnsZoneDetailsResponseContent>> {
439
439
  const requestOptions = await this.getDnsZoneDetailsRequestOpts(requestParameters);
@@ -443,7 +443,7 @@ export class DNSApi extends runtime.BaseAPI {
443
443
  }
444
444
 
445
445
  /**
446
- * Retrieves DNS zone details and records for an owned domain.
446
+ * Retrieves DNS zone details and records for an owned domain. Omit backend for the legacy DNS Manager (v1) path; set backend from list-dns-zones to route DirectAdmin zones to v2.
447
447
  */
448
448
  async getDnsZoneDetails(requestParameters: GetDnsZoneDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetDnsZoneDetailsResponseContent> {
449
449
  const response = await this.getDnsZoneDetailsRaw(requestParameters, initOverrides);
@@ -17,6 +17,8 @@ import * as runtime from '../runtime.js';
17
17
  import type {
18
18
  BadRequestErrorResponseContent,
19
19
  ForbiddenErrorResponseContent,
20
+ GetEncryptedPasswordRequestContent,
21
+ GetEncryptedPasswordResponseContent,
20
22
  GetVpsConfigRequestContent,
21
23
  GetVpsConfigResponseContent,
22
24
  GetVpsDetailsRequestContent,
@@ -45,6 +47,10 @@ import {
45
47
  BadRequestErrorResponseContentToJSON,
46
48
  ForbiddenErrorResponseContentFromJSON,
47
49
  ForbiddenErrorResponseContentToJSON,
50
+ GetEncryptedPasswordRequestContentFromJSON,
51
+ GetEncryptedPasswordRequestContentToJSON,
52
+ GetEncryptedPasswordResponseContentFromJSON,
53
+ GetEncryptedPasswordResponseContentToJSON,
48
54
  GetVpsConfigRequestContentFromJSON,
49
55
  GetVpsConfigRequestContentToJSON,
50
56
  GetVpsConfigResponseContentFromJSON,
@@ -91,6 +97,10 @@ import {
91
97
  ValidationErrorResponseContentToJSON,
92
98
  } from '../models/index.js';
93
99
 
100
+ export interface GetEncryptedPasswordRequest {
101
+ getEncryptedPasswordRequestContent: GetEncryptedPasswordRequestContent;
102
+ }
103
+
94
104
  export interface GetVpsConfigRequest {
95
105
  getVpsConfigRequestContent: GetVpsConfigRequestContent;
96
106
  }
@@ -124,6 +134,61 @@ export interface UpdateVpsConfigRequest {
124
134
  */
125
135
  export class VPSManagementApi extends runtime.BaseAPI {
126
136
 
137
+ /**
138
+ * Creates request options for getEncryptedPassword without sending the request
139
+ */
140
+ async getEncryptedPasswordRequestOpts(requestParameters: GetEncryptedPasswordRequest): Promise<runtime.RequestOpts> {
141
+ if (requestParameters['getEncryptedPasswordRequestContent'] == null) {
142
+ throw new runtime.RequiredError(
143
+ 'getEncryptedPasswordRequestContent',
144
+ 'Required parameter "getEncryptedPasswordRequestContent" was null or undefined when calling getEncryptedPassword().'
145
+ );
146
+ }
147
+
148
+ const queryParameters: any = {};
149
+
150
+ const headerParameters: runtime.HTTPHeaders = {};
151
+
152
+ headerParameters['Content-Type'] = 'application/json';
153
+
154
+ if (this.configuration && this.configuration.accessToken) {
155
+ const token = this.configuration.accessToken;
156
+ const tokenString = await token("BearerAuth", []);
157
+
158
+ if (tokenString) {
159
+ headerParameters["Authorization"] = `Bearer ${tokenString}`;
160
+ }
161
+ }
162
+
163
+ let urlPath = `/vps/get-encrypted-password`;
164
+
165
+ return {
166
+ path: urlPath,
167
+ method: 'POST',
168
+ headers: headerParameters,
169
+ query: queryParameters,
170
+ body: GetEncryptedPasswordRequestContentToJSON(requestParameters['getEncryptedPasswordRequestContent']),
171
+ };
172
+ }
173
+
174
+ /**
175
+ * Retrieves the VPS username and root password without exposing plaintext over the API. Send a PEM-encoded RSA 4096-bit public key; the API encrypts the password with RSA-OAEP (SHA-256), and returns base64 ciphertext plus encryption metadata. Never send the private key. Invalid or non-4096-bit keys return HTTP 422 ValidationError. Generate a key with: openssl genrsa -out private.pem 4096 && openssl rsa -in private.pem -pubout -out public.pem. Decrypt with: echo CIPHERTEXT | base64 -d | openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256 (macOS: base64 -D).
176
+ */
177
+ async getEncryptedPasswordRaw(requestParameters: GetEncryptedPasswordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetEncryptedPasswordResponseContent>> {
178
+ const requestOptions = await this.getEncryptedPasswordRequestOpts(requestParameters);
179
+ const response = await this.request(requestOptions, initOverrides);
180
+
181
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetEncryptedPasswordResponseContentFromJSON(jsonValue));
182
+ }
183
+
184
+ /**
185
+ * Retrieves the VPS username and root password without exposing plaintext over the API. Send a PEM-encoded RSA 4096-bit public key; the API encrypts the password with RSA-OAEP (SHA-256), and returns base64 ciphertext plus encryption metadata. Never send the private key. Invalid or non-4096-bit keys return HTTP 422 ValidationError. Generate a key with: openssl genrsa -out private.pem 4096 && openssl rsa -in private.pem -pubout -out public.pem. Decrypt with: echo CIPHERTEXT | base64 -d | openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256 (macOS: base64 -D).
186
+ */
187
+ async getEncryptedPassword(requestParameters: GetEncryptedPasswordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetEncryptedPasswordResponseContent> {
188
+ const response = await this.getEncryptedPasswordRaw(requestParameters, initOverrides);
189
+ return await response.value();
190
+ }
191
+
127
192
  /**
128
193
  * Creates request options for getVpsConfig without sending the request
129
194
  */
@@ -217,7 +282,7 @@ export class VPSManagementApi extends runtime.BaseAPI {
217
282
  }
218
283
 
219
284
  /**
220
- * Gets detailed information about a VPS service including configuration, network settings, and statistics
285
+ * Gets detailed information about a VPS service including configuration, network settings, and statistics. Credentials.password is always \"<redacted>\"; plaintext passwords are never returned. To retrieve the password securely, use GetEncryptedPassword (/vps/get-encrypted-password).
221
286
  */
222
287
  async getVpsDetailsRaw(requestParameters: GetVpsDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetVpsDetailsResponseContent>> {
223
288
  const requestOptions = await this.getVpsDetailsRequestOpts(requestParameters);
@@ -227,7 +292,7 @@ export class VPSManagementApi extends runtime.BaseAPI {
227
292
  }
228
293
 
229
294
  /**
230
- * Gets detailed information about a VPS service including configuration, network settings, and statistics
295
+ * Gets detailed information about a VPS service including configuration, network settings, and statistics. Credentials.password is always \"<redacted>\"; plaintext passwords are never returned. To retrieve the password securely, use GetEncryptedPassword (/vps/get-encrypted-password).
231
296
  */
232
297
  async getVpsDetails(requestParameters: GetVpsDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetVpsDetailsResponseContent> {
233
298
  const response = await this.getVpsDetailsRaw(requestParameters, initOverrides);
package/src/apis/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export * from './BackupsApi.js';
4
+ export * from './BillingApi.js';
4
5
  export * from './ConsoleAccessApi.js';
5
6
  export * from './DNSApi.js';
6
7
  export * from './DomainsApi.js';
@@ -20,6 +20,13 @@ import {
20
20
  DnsRecordMutationRecordToJSON,
21
21
  DnsRecordMutationRecordToJSONTyped,
22
22
  } from './DnsRecordMutationRecord.js';
23
+ import type { DnsBackend } from './DnsBackend.js';
24
+ import {
25
+ DnsBackendFromJSON,
26
+ DnsBackendFromJSONTyped,
27
+ DnsBackendToJSON,
28
+ DnsBackendToJSONTyped,
29
+ } from './DnsBackend.js';
23
30
 
24
31
  /**
25
32
  *
@@ -28,17 +35,35 @@ import {
28
35
  */
29
36
  export interface AddDnsRecordRequestContent {
30
37
  /**
31
- * DNS zone domain name (FQDN); optional when zone_id is provided
38
+ * DNS zone domain name (FQDN); optional for dns_manager when zone_id is provided. Not forwarded on DirectAdmin mutations.
32
39
  * @type {string}
33
40
  * @memberof AddDnsRecordRequestContent
34
41
  */
35
42
  domainName?: string;
36
43
  /**
37
- * DNS zone identifier from list-dns-zones or get-dns-zone-details
44
+ * DNS zone identifier from list-dns-zones or get-dns-zone-details; required for dns_manager / legacy callers
38
45
  * @type {string}
39
46
  * @memberof AddDnsRecordRequestContent
40
47
  */
41
- zoneId: string;
48
+ zoneId?: string;
49
+ /**
50
+ * WHMCS domain id from list-dns-zones; required when backend is directadmin
51
+ * @type {string}
52
+ * @memberof AddDnsRecordRequestContent
53
+ */
54
+ domainId?: string;
55
+ /**
56
+ * Optional WHMCS hosting service id from list-dns-zones hosting_id. Not forwarded on DirectAdmin mutations.
57
+ * @type {number}
58
+ * @memberof AddDnsRecordRequestContent
59
+ */
60
+ serviceId?: number;
61
+ /**
62
+ *
63
+ * @type {DnsBackend}
64
+ * @memberof AddDnsRecordRequestContent
65
+ */
66
+ backend?: DnsBackend;
42
67
  /**
43
68
  *
44
69
  * @type {DnsRecordMutationRecord}
@@ -47,11 +72,12 @@ export interface AddDnsRecordRequestContent {
47
72
  record: DnsRecordMutationRecord;
48
73
  }
49
74
 
75
+
76
+
50
77
  /**
51
78
  * Check if a given object implements the AddDnsRecordRequestContent interface.
52
79
  */
53
80
  export function instanceOfAddDnsRecordRequestContent(value: object): value is AddDnsRecordRequestContent {
54
- if (!('zoneId' in value) || value['zoneId'] === undefined) return false;
55
81
  if (!('record' in value) || value['record'] === undefined) return false;
56
82
  return true;
57
83
  }
@@ -67,7 +93,10 @@ export function AddDnsRecordRequestContentFromJSONTyped(json: any, ignoreDiscrim
67
93
  return {
68
94
 
69
95
  'domainName': json['domain_name'] == null ? undefined : json['domain_name'],
70
- 'zoneId': json['zone_id'],
96
+ 'zoneId': json['zone_id'] == null ? undefined : json['zone_id'],
97
+ 'domainId': json['domain_id'] == null ? undefined : json['domain_id'],
98
+ 'serviceId': json['service_id'] == null ? undefined : json['service_id'],
99
+ 'backend': json['backend'] == null ? undefined : DnsBackendFromJSON(json['backend']),
71
100
  'record': DnsRecordMutationRecordFromJSON(json['record']),
72
101
  };
73
102
  }
@@ -85,6 +114,9 @@ export function AddDnsRecordRequestContentToJSONTyped(value?: AddDnsRecordReques
85
114
 
86
115
  'domain_name': value['domainName'],
87
116
  'zone_id': value['zoneId'],
117
+ 'domain_id': value['domainId'],
118
+ 'service_id': value['serviceId'],
119
+ 'backend': DnsBackendToJSON(value['backend']),
88
120
  'record': DnsRecordMutationRecordToJSON(value['record']),
89
121
  };
90
122
  }
@@ -20,6 +20,13 @@ import {
20
20
  DnsRecordMutationRecordToJSON,
21
21
  DnsRecordMutationRecordToJSONTyped,
22
22
  } from './DnsRecordMutationRecord.js';
23
+ import type { DnsBackend } from './DnsBackend.js';
24
+ import {
25
+ DnsBackendFromJSON,
26
+ DnsBackendFromJSONTyped,
27
+ DnsBackendToJSON,
28
+ DnsBackendToJSONTyped,
29
+ } from './DnsBackend.js';
23
30
 
24
31
  /**
25
32
  *
@@ -28,17 +35,35 @@ import {
28
35
  */
29
36
  export interface DeleteDnsRecordRequestContent {
30
37
  /**
31
- * DNS zone domain name (FQDN); optional when zone_id is provided
38
+ * DNS zone domain name (FQDN); optional for dns_manager when zone_id is provided. Not forwarded on DirectAdmin mutations.
32
39
  * @type {string}
33
40
  * @memberof DeleteDnsRecordRequestContent
34
41
  */
35
42
  domainName?: string;
36
43
  /**
37
- * DNS zone identifier from list-dns-zones or get-dns-zone-details
44
+ * DNS zone identifier from list-dns-zones or get-dns-zone-details; required for dns_manager / legacy callers
38
45
  * @type {string}
39
46
  * @memberof DeleteDnsRecordRequestContent
40
47
  */
41
- zoneId: string;
48
+ zoneId?: string;
49
+ /**
50
+ * WHMCS domain id from list-dns-zones; required when backend is directadmin
51
+ * @type {string}
52
+ * @memberof DeleteDnsRecordRequestContent
53
+ */
54
+ domainId?: string;
55
+ /**
56
+ * Optional WHMCS hosting service id from list-dns-zones hosting_id. Not forwarded on DirectAdmin mutations.
57
+ * @type {number}
58
+ * @memberof DeleteDnsRecordRequestContent
59
+ */
60
+ serviceId?: number;
61
+ /**
62
+ *
63
+ * @type {DnsBackend}
64
+ * @memberof DeleteDnsRecordRequestContent
65
+ */
66
+ backend?: DnsBackend;
42
67
  /**
43
68
  *
44
69
  * @type {DnsRecordMutationRecord}
@@ -47,11 +72,12 @@ export interface DeleteDnsRecordRequestContent {
47
72
  record: DnsRecordMutationRecord;
48
73
  }
49
74
 
75
+
76
+
50
77
  /**
51
78
  * Check if a given object implements the DeleteDnsRecordRequestContent interface.
52
79
  */
53
80
  export function instanceOfDeleteDnsRecordRequestContent(value: object): value is DeleteDnsRecordRequestContent {
54
- if (!('zoneId' in value) || value['zoneId'] === undefined) return false;
55
81
  if (!('record' in value) || value['record'] === undefined) return false;
56
82
  return true;
57
83
  }
@@ -67,7 +93,10 @@ export function DeleteDnsRecordRequestContentFromJSONTyped(json: any, ignoreDisc
67
93
  return {
68
94
 
69
95
  'domainName': json['domain_name'] == null ? undefined : json['domain_name'],
70
- 'zoneId': json['zone_id'],
96
+ 'zoneId': json['zone_id'] == null ? undefined : json['zone_id'],
97
+ 'domainId': json['domain_id'] == null ? undefined : json['domain_id'],
98
+ 'serviceId': json['service_id'] == null ? undefined : json['service_id'],
99
+ 'backend': json['backend'] == null ? undefined : DnsBackendFromJSON(json['backend']),
71
100
  'record': DnsRecordMutationRecordFromJSON(json['record']),
72
101
  };
73
102
  }
@@ -85,6 +114,9 @@ export function DeleteDnsRecordRequestContentToJSONTyped(value?: DeleteDnsRecord
85
114
 
86
115
  'domain_name': value['domainName'],
87
116
  'zone_id': value['zoneId'],
117
+ 'domain_id': value['domainId'],
118
+ 'service_id': value['serviceId'],
119
+ 'backend': DnsBackendToJSON(value['backend']),
88
120
  'record': DnsRecordMutationRecordToJSON(value['record']),
89
121
  };
90
122
  }
@@ -0,0 +1,56 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * HostAfricaApi
5
+ * HostAfrica API
6
+ *
7
+ * The version of the OpenAPI document: 1.1.0 - 2026-07-16
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+
16
+ /**
17
+ * Upstream DNS management backend for a zone.
18
+ *
19
+ * - `dns_manager` — WHMCS DNS Manager
20
+ * - `directadmin` — DirectAdmin DNS
21
+ * @export
22
+ */
23
+ export const DnsBackend = {
24
+ DnsManager: 'dns_manager',
25
+ Directadmin: 'directadmin'
26
+ } as const;
27
+ export type DnsBackend = typeof DnsBackend[keyof typeof DnsBackend];
28
+
29
+
30
+ export function instanceOfDnsBackend(value: any): boolean {
31
+ for (const key in DnsBackend) {
32
+ if (Object.prototype.hasOwnProperty.call(DnsBackend, key)) {
33
+ if (DnsBackend[key as keyof typeof DnsBackend] === value) {
34
+ return true;
35
+ }
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+
41
+ export function DnsBackendFromJSON(json: any): DnsBackend {
42
+ return DnsBackendFromJSONTyped(json, false);
43
+ }
44
+
45
+ export function DnsBackendFromJSONTyped(json: any, ignoreDiscriminator: boolean): DnsBackend {
46
+ return json as DnsBackend;
47
+ }
48
+
49
+ export function DnsBackendToJSON(value?: DnsBackend | null): any {
50
+ return value as any;
51
+ }
52
+
53
+ export function DnsBackendToJSONTyped(value: any, ignoreDiscriminator: boolean): DnsBackend {
54
+ return value as DnsBackend;
55
+ }
56
+
@@ -17,13 +17,14 @@ import { mapValues } from '../runtime.js';
17
17
  * DNS record fields for add, edit, or delete via DNSManager.
18
18
  *
19
19
  * See `DnsRecordInfo` for how `content` and structured fields map to upstream record data.
20
- * Delete requires only `id`, `name`, and `type`.
20
+ * Delete requires only `id`, `name`, and `type`. For edit and delete, `id` must be the
21
+ * numeric zone line from get-dns-zone-details (a positive integer string).
21
22
  * @export
22
23
  * @interface DnsRecordMutationRecord
23
24
  */
24
25
  export interface DnsRecordMutationRecord {
25
26
  /**
26
- * Record line/id from get-dns-zone-details; required for edit and delete
27
+ * Record line from get-dns-zone-details (positive integer string); required for edit and delete
27
28
  * @type {string}
28
29
  * @memberof DnsRecordMutationRecord
29
30
  */
@@ -20,6 +20,13 @@ import {
20
20
  DomainHostingLinkToJSON,
21
21
  DomainHostingLinkToJSONTyped,
22
22
  } from './DomainHostingLink.js';
23
+ import type { DnsBackend } from './DnsBackend.js';
24
+ import {
25
+ DnsBackendFromJSON,
26
+ DnsBackendFromJSONTyped,
27
+ DnsBackendToJSON,
28
+ DnsBackendToJSONTyped,
29
+ } from './DnsBackend.js';
23
30
 
24
31
  /**
25
32
  * A DNS zone owned by the authenticated client
@@ -81,8 +88,16 @@ export interface DnsZoneInfo {
81
88
  * @memberof DnsZoneInfo
82
89
  */
83
90
  hasDnsManagerZone: boolean;
91
+ /**
92
+ *
93
+ * @type {DnsBackend}
94
+ * @memberof DnsZoneInfo
95
+ */
96
+ backend?: DnsBackend;
84
97
  }
85
98
 
99
+
100
+
86
101
  /**
87
102
  * Check if a given object implements the DnsZoneInfo interface.
88
103
  */
@@ -110,6 +125,7 @@ export function DnsZoneInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean
110
125
  'packageName': json['package_name'] == null ? undefined : json['package_name'],
111
126
  'hasHosting': json['has_hosting'] == null ? undefined : DomainHostingLinkFromJSON(json['has_hosting']),
112
127
  'hasDnsManagerZone': json['has_dns_manager_zone'],
128
+ 'backend': json['backend'] == null ? undefined : DnsBackendFromJSON(json['backend']),
113
129
  };
114
130
  }
115
131
 
@@ -133,6 +149,7 @@ export function DnsZoneInfoToJSONTyped(value?: DnsZoneInfo | null, ignoreDiscrim
133
149
  'package_name': value['packageName'],
134
150
  'has_hosting': DomainHostingLinkToJSON(value['hasHosting']),
135
151
  'has_dns_manager_zone': value['hasDnsManagerZone'],
152
+ 'backend': DnsBackendToJSON(value['backend']),
136
153
  };
137
154
  }
138
155
 
@@ -20,6 +20,13 @@ import {
20
20
  DnsRecordMutationRecordToJSON,
21
21
  DnsRecordMutationRecordToJSONTyped,
22
22
  } from './DnsRecordMutationRecord.js';
23
+ import type { DnsBackend } from './DnsBackend.js';
24
+ import {
25
+ DnsBackendFromJSON,
26
+ DnsBackendFromJSONTyped,
27
+ DnsBackendToJSON,
28
+ DnsBackendToJSONTyped,
29
+ } from './DnsBackend.js';
23
30
 
24
31
  /**
25
32
  *
@@ -28,17 +35,35 @@ import {
28
35
  */
29
36
  export interface EditDnsRecordRequestContent {
30
37
  /**
31
- * DNS zone domain name (FQDN); optional when zone_id is provided
38
+ * DNS zone domain name (FQDN); optional for dns_manager when zone_id is provided. Not forwarded on DirectAdmin mutations.
32
39
  * @type {string}
33
40
  * @memberof EditDnsRecordRequestContent
34
41
  */
35
42
  domainName?: string;
36
43
  /**
37
- * DNS zone identifier from list-dns-zones or get-dns-zone-details
44
+ * DNS zone identifier from list-dns-zones or get-dns-zone-details; required for dns_manager / legacy callers
38
45
  * @type {string}
39
46
  * @memberof EditDnsRecordRequestContent
40
47
  */
41
- zoneId: string;
48
+ zoneId?: string;
49
+ /**
50
+ * WHMCS domain id from list-dns-zones; required when backend is directadmin
51
+ * @type {string}
52
+ * @memberof EditDnsRecordRequestContent
53
+ */
54
+ domainId?: string;
55
+ /**
56
+ * Optional WHMCS hosting service id from list-dns-zones hosting_id. Not forwarded on DirectAdmin mutations.
57
+ * @type {number}
58
+ * @memberof EditDnsRecordRequestContent
59
+ */
60
+ serviceId?: number;
61
+ /**
62
+ *
63
+ * @type {DnsBackend}
64
+ * @memberof EditDnsRecordRequestContent
65
+ */
66
+ backend?: DnsBackend;
42
67
  /**
43
68
  *
44
69
  * @type {DnsRecordMutationRecord}
@@ -47,11 +72,12 @@ export interface EditDnsRecordRequestContent {
47
72
  record: DnsRecordMutationRecord;
48
73
  }
49
74
 
75
+
76
+
50
77
  /**
51
78
  * Check if a given object implements the EditDnsRecordRequestContent interface.
52
79
  */
53
80
  export function instanceOfEditDnsRecordRequestContent(value: object): value is EditDnsRecordRequestContent {
54
- if (!('zoneId' in value) || value['zoneId'] === undefined) return false;
55
81
  if (!('record' in value) || value['record'] === undefined) return false;
56
82
  return true;
57
83
  }
@@ -67,7 +93,10 @@ export function EditDnsRecordRequestContentFromJSONTyped(json: any, ignoreDiscri
67
93
  return {
68
94
 
69
95
  'domainName': json['domain_name'] == null ? undefined : json['domain_name'],
70
- 'zoneId': json['zone_id'],
96
+ 'zoneId': json['zone_id'] == null ? undefined : json['zone_id'],
97
+ 'domainId': json['domain_id'] == null ? undefined : json['domain_id'],
98
+ 'serviceId': json['service_id'] == null ? undefined : json['service_id'],
99
+ 'backend': json['backend'] == null ? undefined : DnsBackendFromJSON(json['backend']),
71
100
  'record': DnsRecordMutationRecordFromJSON(json['record']),
72
101
  };
73
102
  }
@@ -85,6 +114,9 @@ export function EditDnsRecordRequestContentToJSONTyped(value?: EditDnsRecordRequ
85
114
 
86
115
  'domain_name': value['domainName'],
87
116
  'zone_id': value['zoneId'],
117
+ 'domain_id': value['domainId'],
118
+ 'service_id': value['serviceId'],
119
+ 'backend': DnsBackendToJSON(value['backend']),
88
120
  'record': DnsRecordMutationRecordToJSON(value['record']),
89
121
  };
90
122
  }
@@ -0,0 +1,92 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * HostAfricaApi
5
+ * HostAfrica API
6
+ *
7
+ * The version of the OpenAPI document: 1.1.0 - 2026-07-16
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime.js';
16
+ import type { PasswordEncryptionInfo } from './PasswordEncryptionInfo.js';
17
+ import {
18
+ PasswordEncryptionInfoFromJSON,
19
+ PasswordEncryptionInfoFromJSONTyped,
20
+ PasswordEncryptionInfoToJSON,
21
+ PasswordEncryptionInfoToJSONTyped,
22
+ } from './PasswordEncryptionInfo.js';
23
+
24
+ /**
25
+ * Response data for get-encrypted-password
26
+ * @export
27
+ * @interface EncryptedPasswordResponseData
28
+ */
29
+ export interface EncryptedPasswordResponseData {
30
+ /**
31
+ * Username for VPS access (plaintext)
32
+ * @type {string}
33
+ * @memberof EncryptedPasswordResponseData
34
+ */
35
+ username: string;
36
+ /**
37
+ * Base64-encoded ciphertext of the VPS password. Produced with RSA-OAEP (SHA-256) and the request public_key. Decode from base64, then decrypt with the matching private key via openssl pkeyutl -decrypt -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256.
38
+ * @type {string}
39
+ * @memberof EncryptedPasswordResponseData
40
+ */
41
+ password: string;
42
+ /**
43
+ *
44
+ * @type {PasswordEncryptionInfo}
45
+ * @memberof EncryptedPasswordResponseData
46
+ */
47
+ encryption: PasswordEncryptionInfo;
48
+ }
49
+
50
+ /**
51
+ * Check if a given object implements the EncryptedPasswordResponseData interface.
52
+ */
53
+ export function instanceOfEncryptedPasswordResponseData(value: object): value is EncryptedPasswordResponseData {
54
+ if (!('username' in value) || value['username'] === undefined) return false;
55
+ if (!('password' in value) || value['password'] === undefined) return false;
56
+ if (!('encryption' in value) || value['encryption'] === undefined) return false;
57
+ return true;
58
+ }
59
+
60
+ export function EncryptedPasswordResponseDataFromJSON(json: any): EncryptedPasswordResponseData {
61
+ return EncryptedPasswordResponseDataFromJSONTyped(json, false);
62
+ }
63
+
64
+ export function EncryptedPasswordResponseDataFromJSONTyped(json: any, ignoreDiscriminator: boolean): EncryptedPasswordResponseData {
65
+ if (json == null) {
66
+ return json;
67
+ }
68
+ return {
69
+
70
+ 'username': json['username'],
71
+ 'password': json['password'],
72
+ 'encryption': PasswordEncryptionInfoFromJSON(json['encryption']),
73
+ };
74
+ }
75
+
76
+ export function EncryptedPasswordResponseDataToJSON(json: any): EncryptedPasswordResponseData {
77
+ return EncryptedPasswordResponseDataToJSONTyped(json, false);
78
+ }
79
+
80
+ export function EncryptedPasswordResponseDataToJSONTyped(value?: EncryptedPasswordResponseData | null, ignoreDiscriminator: boolean = false): any {
81
+ if (value == null) {
82
+ return value;
83
+ }
84
+
85
+ return {
86
+
87
+ 'username': value['username'],
88
+ 'password': value['password'],
89
+ 'encryption': PasswordEncryptionInfoToJSON(value['encryption']),
90
+ };
91
+ }
92
+