@nilovonjs/hcloud-js 1.0.0

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 (62) hide show
  1. package/README.md +90 -0
  2. package/package.json +70 -0
  3. package/src/apis/actions/index.ts +113 -0
  4. package/src/apis/actions/schemas.ts +59 -0
  5. package/src/apis/actions/types.ts +77 -0
  6. package/src/apis/certificates/index.ts +326 -0
  7. package/src/apis/certificates/schemas.ts +140 -0
  8. package/src/apis/certificates/types.ts +176 -0
  9. package/src/apis/common/schemas.ts +19 -0
  10. package/src/apis/dns/index.ts +961 -0
  11. package/src/apis/dns/schemas.ts +437 -0
  12. package/src/apis/dns/types.ts +397 -0
  13. package/src/apis/firewalls/index.ts +469 -0
  14. package/src/apis/firewalls/schemas.ts +274 -0
  15. package/src/apis/firewalls/types.ts +205 -0
  16. package/src/apis/floating-ips/index.ts +466 -0
  17. package/src/apis/floating-ips/schemas.ts +203 -0
  18. package/src/apis/floating-ips/types.ts +207 -0
  19. package/src/apis/images/index.ts +195 -0
  20. package/src/apis/images/schemas.ts +113 -0
  21. package/src/apis/images/types.ts +124 -0
  22. package/src/apis/isos/index.ts +91 -0
  23. package/src/apis/isos/schemas.ts +43 -0
  24. package/src/apis/isos/types.ts +60 -0
  25. package/src/apis/load-balancers/index.ts +892 -0
  26. package/src/apis/load-balancers/schemas.ts +561 -0
  27. package/src/apis/load-balancers/types.ts +361 -0
  28. package/src/apis/locations/index.ts +176 -0
  29. package/src/apis/locations/schemas.ts +83 -0
  30. package/src/apis/locations/types.ts +113 -0
  31. package/src/apis/networks/index.ts +544 -0
  32. package/src/apis/networks/schemas.ts +279 -0
  33. package/src/apis/networks/types.ts +243 -0
  34. package/src/apis/placement-groups/index.ts +212 -0
  35. package/src/apis/placement-groups/schemas.ts +90 -0
  36. package/src/apis/placement-groups/types.ts +99 -0
  37. package/src/apis/pricing/index.ts +42 -0
  38. package/src/apis/pricing/schemas.ts +93 -0
  39. package/src/apis/pricing/types.ts +71 -0
  40. package/src/apis/primary-ips/index.ts +467 -0
  41. package/src/apis/primary-ips/schemas.ts +221 -0
  42. package/src/apis/primary-ips/types.ts +221 -0
  43. package/src/apis/server-types/index.ts +93 -0
  44. package/src/apis/server-types/schemas.ts +29 -0
  45. package/src/apis/server-types/types.ts +43 -0
  46. package/src/apis/servers/index.ts +378 -0
  47. package/src/apis/servers/schemas.ts +771 -0
  48. package/src/apis/servers/types.ts +538 -0
  49. package/src/apis/ssh-keys/index.ts +204 -0
  50. package/src/apis/ssh-keys/schemas.ts +84 -0
  51. package/src/apis/ssh-keys/types.ts +106 -0
  52. package/src/apis/volumes/index.ts +452 -0
  53. package/src/apis/volumes/schemas.ts +195 -0
  54. package/src/apis/volumes/types.ts +197 -0
  55. package/src/auth/index.ts +26 -0
  56. package/src/base/index.ts +10 -0
  57. package/src/client/index.ts +388 -0
  58. package/src/config/index.ts +34 -0
  59. package/src/errors/index.ts +38 -0
  60. package/src/index.ts +799 -0
  61. package/src/types/index.ts +37 -0
  62. package/src/validation/index.ts +109 -0
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Zod schemas for Hetzner Cloud Firewalls API
3
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls
4
+ */
5
+
6
+ import { z } from "zod";
7
+ import { actionSchema, actionResourceSchema } from "../../apis/actions/schemas";
8
+ import { paginationMetaSchema } from "../../apis/common/schemas";
9
+
10
+ /**
11
+ * Firewall rule direction schema
12
+ */
13
+ export const firewallRuleDirectionSchema = z.enum(["in", "out"]);
14
+
15
+ /**
16
+ * Firewall rule protocol schema
17
+ */
18
+ export const firewallRuleProtocolSchema = z.enum(["tcp", "udp", "icmp", "esp", "gre"]);
19
+
20
+ /**
21
+ * Firewall rule port schema
22
+ */
23
+ export const firewallRulePortSchema = z.string().regex(/^\d+(-\d+)?$/);
24
+
25
+ /**
26
+ * Firewall rule source IPs schema
27
+ * Accepts IP addresses and CIDR notation
28
+ */
29
+ export const firewallRuleSourceIpsSchema = z.array(z.string());
30
+
31
+ /**
32
+ * Firewall rule destination IPs schema
33
+ * Accepts IP addresses and CIDR notation
34
+ */
35
+ export const firewallRuleDestinationIpsSchema = z.array(z.string());
36
+
37
+ /**
38
+ * Firewall rule schema
39
+ */
40
+ export const firewallRuleSchema = z
41
+ .object({
42
+ direction: firewallRuleDirectionSchema,
43
+ source_ips: firewallRuleSourceIpsSchema.optional(),
44
+ destination_ips: firewallRuleDestinationIpsSchema.optional(),
45
+ protocol: firewallRuleProtocolSchema,
46
+ port: firewallRulePortSchema.nullable().optional(),
47
+ description: z.string().nullable().optional(),
48
+ })
49
+ .passthrough();
50
+
51
+ /**
52
+ * Firewall applied to resource schema
53
+ */
54
+ export const firewallAppliedToResourceSchema = z.object({
55
+ type: z.enum(["server", "label_selector"]),
56
+ server: z
57
+ .object({
58
+ id: z.number(),
59
+ })
60
+ .optional(),
61
+ label_selector: z
62
+ .object({
63
+ selector: z.string(),
64
+ })
65
+ .optional(),
66
+ });
67
+
68
+ /**
69
+ * Firewall schema
70
+ */
71
+ export const firewallSchema = z
72
+ .object({
73
+ id: z.number(),
74
+ name: z.string(),
75
+ labels: z.record(z.string(), z.string()),
76
+ created: z.string(),
77
+ rules: z
78
+ .object({
79
+ inbound: z.array(firewallRuleSchema).optional(),
80
+ outbound: z.array(firewallRuleSchema).optional(),
81
+ })
82
+ .optional(),
83
+ applied_to: z.array(firewallAppliedToResourceSchema).optional(),
84
+ })
85
+ .passthrough();
86
+
87
+ /**
88
+ * List Firewalls response schema
89
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-firewalls
90
+ */
91
+ export const listFirewallsResponseSchema = z.object({
92
+ firewalls: z.array(firewallSchema),
93
+ meta: z
94
+ .object({
95
+ pagination: paginationMetaSchema,
96
+ })
97
+ .optional(),
98
+ });
99
+
100
+ /**
101
+ * Create Firewall request schema
102
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-create-a-firewall
103
+ */
104
+ export const createFirewallRequestSchema = z.object({
105
+ name: z.string().min(1),
106
+ labels: z.record(z.string(), z.string()).optional(),
107
+ rules: z
108
+ .object({
109
+ inbound: z.array(firewallRuleSchema).optional(),
110
+ outbound: z.array(firewallRuleSchema).optional(),
111
+ })
112
+ .optional(),
113
+ apply_to: z
114
+ .array(
115
+ z.object({
116
+ type: z.enum(["server", "label_selector"]),
117
+ server: z
118
+ .object({
119
+ id: z.number(),
120
+ })
121
+ .optional(),
122
+ label_selector: z
123
+ .object({
124
+ selector: z.string(),
125
+ })
126
+ .optional(),
127
+ }),
128
+ )
129
+ .optional(),
130
+ });
131
+
132
+ /**
133
+ * Create Firewall response schema
134
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-create-a-firewall
135
+ */
136
+ export const createFirewallResponseSchema = z.object({
137
+ firewall: firewallSchema,
138
+ action: actionSchema.optional(),
139
+ });
140
+
141
+ /**
142
+ * Get Firewall response schema
143
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-get-a-firewall
144
+ */
145
+ export const getFirewallResponseSchema = z.object({
146
+ firewall: firewallSchema,
147
+ });
148
+
149
+ /**
150
+ * Update Firewall request schema
151
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-update-a-firewall
152
+ */
153
+ export const updateFirewallRequestSchema = z.object({
154
+ name: z.string().min(1).optional(),
155
+ labels: z.record(z.string(), z.string()).optional(),
156
+ });
157
+
158
+ /**
159
+ * Update Firewall response schema
160
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-update-a-firewall
161
+ */
162
+ export const updateFirewallResponseSchema = z.object({
163
+ firewall: firewallSchema,
164
+ });
165
+
166
+ /**
167
+ * Delete Firewall response schema
168
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-delete-a-firewall
169
+ */
170
+ export const deleteFirewallResponseSchema = z.object({
171
+ action: actionSchema.optional(),
172
+ });
173
+
174
+ /**
175
+ * List Firewall Actions response schema
176
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-actions-for-a-firewall
177
+ */
178
+ export const listFirewallActionsResponseSchema = z.object({
179
+ actions: z.array(actionSchema),
180
+ meta: z
181
+ .object({
182
+ pagination: paginationMetaSchema,
183
+ })
184
+ .optional(),
185
+ });
186
+
187
+ /**
188
+ * Get Firewall Action response schema
189
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-get-an-action-for-a-firewall
190
+ */
191
+ export const getFirewallActionResponseSchema = z.object({
192
+ action: actionSchema,
193
+ });
194
+
195
+ /**
196
+ * Apply Firewall to Resources request schema
197
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-apply-to-resources
198
+ */
199
+ export const applyFirewallToResourcesRequestSchema = z.object({
200
+ apply_to: z.array(
201
+ z.object({
202
+ type: z.enum(["server", "label_selector"]),
203
+ server: z
204
+ .object({
205
+ id: z.number(),
206
+ })
207
+ .optional(),
208
+ label_selector: z
209
+ .object({
210
+ selector: z.string(),
211
+ })
212
+ .optional(),
213
+ }),
214
+ ),
215
+ });
216
+
217
+ /**
218
+ * Apply Firewall to Resources response schema
219
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-apply-to-resources
220
+ */
221
+ export const applyFirewallToResourcesResponseSchema = z.object({
222
+ actions: z.array(actionSchema),
223
+ });
224
+
225
+ /**
226
+ * Remove Firewall from Resources request schema
227
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-remove-from-resources
228
+ */
229
+ export const removeFirewallFromResourcesRequestSchema = z.object({
230
+ remove_from: z.array(
231
+ z.object({
232
+ type: z.enum(["server", "label_selector"]),
233
+ server: z
234
+ .object({
235
+ id: z.number(),
236
+ })
237
+ .optional(),
238
+ label_selector: z
239
+ .object({
240
+ selector: z.string(),
241
+ })
242
+ .optional(),
243
+ }),
244
+ ),
245
+ });
246
+
247
+ /**
248
+ * Remove Firewall from Resources response schema
249
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-remove-from-resources
250
+ */
251
+ export const removeFirewallFromResourcesResponseSchema = z.object({
252
+ actions: z.array(actionSchema),
253
+ });
254
+
255
+ /**
256
+ * Set Firewall Rules request schema
257
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-set-rules
258
+ */
259
+ export const setFirewallRulesRequestSchema = z.object({
260
+ rules: z
261
+ .object({
262
+ inbound: z.array(firewallRuleSchema).optional(),
263
+ outbound: z.array(firewallRuleSchema).optional(),
264
+ })
265
+ .optional(),
266
+ });
267
+
268
+ /**
269
+ * Set Firewall Rules response schema
270
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-set-rules
271
+ */
272
+ export const setFirewallRulesResponseSchema = z.object({
273
+ actions: z.array(actionSchema),
274
+ });
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Types for Hetzner Cloud Firewalls API
3
+ * Types are inferred from Zod schemas
4
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls
5
+ */
6
+
7
+ // biome-ignore assist/source/organizeImports: we need to import the schemas first
8
+ import {
9
+ listFirewallsResponseSchema,
10
+ createFirewallRequestSchema,
11
+ createFirewallResponseSchema,
12
+ getFirewallResponseSchema,
13
+ updateFirewallRequestSchema,
14
+ updateFirewallResponseSchema,
15
+ deleteFirewallResponseSchema,
16
+ listFirewallActionsResponseSchema,
17
+ getFirewallActionResponseSchema,
18
+ applyFirewallToResourcesRequestSchema,
19
+ applyFirewallToResourcesResponseSchema,
20
+ removeFirewallFromResourcesRequestSchema,
21
+ removeFirewallFromResourcesResponseSchema,
22
+ setFirewallRulesRequestSchema,
23
+ setFirewallRulesResponseSchema,
24
+ firewallSchema,
25
+ firewallRuleSchema,
26
+ firewallRuleDirectionSchema,
27
+ firewallRuleProtocolSchema,
28
+ firewallAppliedToResourceSchema,
29
+ } from "../../apis/firewalls/schemas";
30
+ import type { z } from "zod";
31
+
32
+ /**
33
+ * Firewall rule direction
34
+ */
35
+ export type FirewallRuleDirection = z.infer<typeof firewallRuleDirectionSchema>;
36
+
37
+ /**
38
+ * Firewall rule protocol
39
+ */
40
+ export type FirewallRuleProtocol = z.infer<typeof firewallRuleProtocolSchema>;
41
+
42
+ /**
43
+ * Firewall rule
44
+ */
45
+ export type FirewallRule = z.infer<typeof firewallRuleSchema>;
46
+
47
+ /**
48
+ * Firewall applied to resource
49
+ */
50
+ export type FirewallAppliedToResource = z.infer<typeof firewallAppliedToResourceSchema>;
51
+
52
+ /**
53
+ * Firewall
54
+ */
55
+ export type Firewall = z.infer<typeof firewallSchema>;
56
+
57
+ /**
58
+ * List Firewalls query parameters
59
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-firewalls
60
+ */
61
+ export interface ListFirewallsParams {
62
+ /**
63
+ * Can be used to filter Firewalls by their name. The response will only contain the Firewall matching the specified name.
64
+ */
65
+ name?: string;
66
+ /**
67
+ * Can be used multiple times. Choices: id, id:asc, id:desc, name, name:asc, name:desc, created, created:asc, created:desc
68
+ * @see https://docs.hetzner.cloud/reference/cloud#sorting
69
+ */
70
+ sort?: string | string[];
71
+ /**
72
+ * Can be used to filter Firewalls by labels. The response will only contain Firewalls matching the label selector.
73
+ */
74
+ label_selector?: string;
75
+ /**
76
+ * Page number to return. For more information, see [Pagination](https://docs.hetzner.cloud/reference/cloud#pagination).
77
+ */
78
+ page?: number;
79
+ /**
80
+ * Maximum number of entries returned per page. For more information, see [Pagination](https://docs.hetzner.cloud/reference/cloud#pagination).
81
+ */
82
+ per_page?: number;
83
+ }
84
+
85
+ /**
86
+ * List Firewalls response
87
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-firewalls
88
+ */
89
+ export type ListFirewallsResponse = z.infer<typeof listFirewallsResponseSchema>;
90
+
91
+ /**
92
+ * Create Firewall parameters
93
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-create-a-firewall
94
+ */
95
+ export type CreateFirewallParams = z.infer<typeof createFirewallRequestSchema>;
96
+
97
+ /**
98
+ * Create Firewall response
99
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-create-a-firewall
100
+ */
101
+ export type CreateFirewallResponse = z.infer<typeof createFirewallResponseSchema>;
102
+
103
+ /**
104
+ * Get Firewall response
105
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-get-a-firewall
106
+ */
107
+ export type GetFirewallResponse = z.infer<typeof getFirewallResponseSchema>;
108
+
109
+ /**
110
+ * Update Firewall parameters
111
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-update-a-firewall
112
+ */
113
+ export type UpdateFirewallParams = z.infer<typeof updateFirewallRequestSchema>;
114
+
115
+ /**
116
+ * Update Firewall response
117
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-update-a-firewall
118
+ */
119
+ export type UpdateFirewallResponse = z.infer<typeof updateFirewallResponseSchema>;
120
+
121
+ /**
122
+ * Delete Firewall response
123
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-delete-a-firewall
124
+ */
125
+ export type DeleteFirewallResponse = z.infer<typeof deleteFirewallResponseSchema>;
126
+
127
+ /**
128
+ * List Firewall Actions query parameters
129
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-actions-for-a-firewall
130
+ */
131
+ export interface ListFirewallActionsParams {
132
+ /**
133
+ * Can be used multiple times. Choices: id, id:asc, id:desc, command, command:asc, command:desc, status, status:asc, status:desc, progress, progress:asc, progress:desc, started, started:asc, started:desc, finished, finished:asc, finished:desc
134
+ * @see https://docs.hetzner.cloud/reference/cloud#sorting
135
+ */
136
+ sort?: string | string[];
137
+ /**
138
+ * Can be used to filter Actions by status. The response will only contain Actions matching the status.
139
+ */
140
+ status?: string | string[];
141
+ /**
142
+ * Page number to return. For more information, see [Pagination](https://docs.hetzner.cloud/reference/cloud#pagination).
143
+ */
144
+ page?: number;
145
+ /**
146
+ * Maximum number of entries returned per page. For more information, see [Pagination](https://docs.hetzner.cloud/reference/cloud#pagination).
147
+ */
148
+ per_page?: number;
149
+ }
150
+
151
+ /**
152
+ * List Firewall Actions response
153
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-list-actions-for-a-firewall
154
+ */
155
+ export type ListFirewallActionsResponse = z.infer<typeof listFirewallActionsResponseSchema>;
156
+
157
+ /**
158
+ * Get Firewall Action response
159
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-get-an-action-for-a-firewall
160
+ */
161
+ export type GetFirewallActionResponse = z.infer<typeof getFirewallActionResponseSchema>;
162
+
163
+ /**
164
+ * Apply Firewall to Resources parameters
165
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-apply-to-resources
166
+ */
167
+ export type ApplyFirewallToResourcesParams = z.infer<
168
+ typeof applyFirewallToResourcesRequestSchema
169
+ >;
170
+
171
+ /**
172
+ * Apply Firewall to Resources response
173
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-apply-to-resources
174
+ */
175
+ export type ApplyFirewallToResourcesResponse = z.infer<
176
+ typeof applyFirewallToResourcesResponseSchema
177
+ >;
178
+
179
+ /**
180
+ * Remove Firewall from Resources parameters
181
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-remove-from-resources
182
+ */
183
+ export type RemoveFirewallFromResourcesParams = z.infer<
184
+ typeof removeFirewallFromResourcesRequestSchema
185
+ >;
186
+
187
+ /**
188
+ * Remove Firewall from Resources response
189
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-remove-from-resources
190
+ */
191
+ export type RemoveFirewallFromResourcesResponse = z.infer<
192
+ typeof removeFirewallFromResourcesResponseSchema
193
+ >;
194
+
195
+ /**
196
+ * Set Firewall Rules parameters
197
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-set-rules
198
+ */
199
+ export type SetFirewallRulesParams = z.infer<typeof setFirewallRulesRequestSchema>;
200
+
201
+ /**
202
+ * Set Firewall Rules response
203
+ * @see https://docs.hetzner.cloud/reference/cloud#firewalls-set-rules
204
+ */
205
+ export type SetFirewallRulesResponse = z.infer<typeof setFirewallRulesResponseSchema>;