pulumiverse-scaleway 1.26.0a1742897201__py3-none-any.whl → 1.26.0a1743166124__py3-none-any.whl

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 (66) hide show
  1. pulumiverse_scaleway/__init__.py +105 -0
  2. pulumiverse_scaleway/_inputs.py +663 -0
  3. pulumiverse_scaleway/apple_silicon_server.py +105 -0
  4. pulumiverse_scaleway/applesilicon/server.py +105 -0
  5. pulumiverse_scaleway/domain/__init__.py +1 -0
  6. pulumiverse_scaleway/domain/_inputs.py +2697 -0
  7. pulumiverse_scaleway/domain/outputs.py +2145 -0
  8. pulumiverse_scaleway/domain/registration.py +777 -0
  9. pulumiverse_scaleway/edge_services_backend_stage.py +472 -0
  10. pulumiverse_scaleway/edge_services_cache_stage.py +490 -0
  11. pulumiverse_scaleway/edge_services_dns_stage.py +516 -0
  12. pulumiverse_scaleway/edge_services_head_stage.py +258 -0
  13. pulumiverse_scaleway/edge_services_pipeline.py +436 -0
  14. pulumiverse_scaleway/edge_services_plan.py +239 -0
  15. pulumiverse_scaleway/edge_services_route_stage.py +422 -0
  16. pulumiverse_scaleway/edge_services_tls_stage.py +546 -0
  17. pulumiverse_scaleway/edge_services_waf_stage.py +444 -0
  18. pulumiverse_scaleway/elasticmetal/ip.py +13 -7
  19. pulumiverse_scaleway/flexible_ip.py +13 -7
  20. pulumiverse_scaleway/get_lb_frontend.py +12 -1
  21. pulumiverse_scaleway/get_lb_route.py +12 -1
  22. pulumiverse_scaleway/get_secret.py +15 -4
  23. pulumiverse_scaleway/get_vpc_public_gateway.py +34 -1
  24. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +8 -0
  25. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +8 -0
  26. pulumiverse_scaleway/loadbalancer_backend.py +2 -2
  27. pulumiverse_scaleway/loadbalancer_frontend.py +47 -0
  28. pulumiverse_scaleway/loadbalancer_route.py +48 -1
  29. pulumiverse_scaleway/loadbalancers/backend.py +2 -2
  30. pulumiverse_scaleway/loadbalancers/frontend.py +47 -0
  31. pulumiverse_scaleway/loadbalancers/get_frontend.py +12 -1
  32. pulumiverse_scaleway/loadbalancers/get_route.py +12 -1
  33. pulumiverse_scaleway/loadbalancers/outputs.py +13 -2
  34. pulumiverse_scaleway/loadbalancers/route.py +48 -1
  35. pulumiverse_scaleway/network/__init__.py +1 -0
  36. pulumiverse_scaleway/network/_inputs.py +194 -0
  37. pulumiverse_scaleway/network/acl.py +415 -0
  38. pulumiverse_scaleway/network/gateway_network.py +104 -122
  39. pulumiverse_scaleway/network/get_public_gateway.py +34 -1
  40. pulumiverse_scaleway/network/get_public_gateway_dhcp.py +8 -0
  41. pulumiverse_scaleway/network/get_public_gateway_dhcp_reservation.py +8 -0
  42. pulumiverse_scaleway/network/outputs.py +139 -0
  43. pulumiverse_scaleway/network/public_gateway.py +124 -21
  44. pulumiverse_scaleway/network/public_gateway_dhcp.py +8 -0
  45. pulumiverse_scaleway/network/public_gateway_dhcp_reservation.py +8 -0
  46. pulumiverse_scaleway/outputs.py +662 -2
  47. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  48. pulumiverse_scaleway/secret.py +22 -2
  49. pulumiverse_scaleway/secret_version.py +6 -6
  50. pulumiverse_scaleway/secrets/_inputs.py +154 -0
  51. pulumiverse_scaleway/secrets/get_secret.py +15 -4
  52. pulumiverse_scaleway/secrets/outputs.py +200 -0
  53. pulumiverse_scaleway/secrets/secret.py +22 -2
  54. pulumiverse_scaleway/tem/__init__.py +2 -0
  55. pulumiverse_scaleway/tem/blocked_list.py +442 -0
  56. pulumiverse_scaleway/tem/domain.py +7 -0
  57. pulumiverse_scaleway/tem/get_offer_subscription.py +254 -0
  58. pulumiverse_scaleway/tem_domain.py +7 -0
  59. pulumiverse_scaleway/vpc_gateway_network.py +104 -122
  60. pulumiverse_scaleway/vpc_public_gateway.py +124 -21
  61. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +8 -0
  62. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +8 -0
  63. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/METADATA +1 -1
  64. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/RECORD +66 -53
  65. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/WHEEL +1 -1
  66. {pulumiverse_scaleway-1.26.0a1742897201.dist-info → pulumiverse_scaleway-1.26.0a1743166124.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,777 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['RegistrationArgs', 'Registration']
20
+
21
+ @pulumi.input_type
22
+ class RegistrationArgs:
23
+ def __init__(__self__, *,
24
+ domain_names: pulumi.Input[Sequence[pulumi.Input[str]]],
25
+ auto_renew: Optional[pulumi.Input[bool]] = None,
26
+ dnssec: Optional[pulumi.Input[bool]] = None,
27
+ duration_in_years: Optional[pulumi.Input[int]] = None,
28
+ owner_contact: Optional[pulumi.Input['RegistrationOwnerContactArgs']] = None,
29
+ owner_contact_id: Optional[pulumi.Input[str]] = None,
30
+ project_id: Optional[pulumi.Input[str]] = None):
31
+ """
32
+ The set of arguments for constructing a Registration resource.
33
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] domain_names: : A list of domain names to be registered.
34
+ :param pulumi.Input[bool] auto_renew: : Enables or disables auto-renewal.
35
+ :param pulumi.Input[bool] dnssec: : Enables or disables DNSSEC.
36
+ :param pulumi.Input[int] duration_in_years: : The registration period in years.
37
+ :param pulumi.Input['RegistrationOwnerContactArgs'] owner_contact: : Details of the owner contact.
38
+ :param pulumi.Input[str] owner_contact_id: : The ID of an existing owner contact.
39
+ :param pulumi.Input[str] project_id: : The Scaleway project ID.
40
+ """
41
+ pulumi.set(__self__, "domain_names", domain_names)
42
+ if auto_renew is not None:
43
+ pulumi.set(__self__, "auto_renew", auto_renew)
44
+ if dnssec is not None:
45
+ pulumi.set(__self__, "dnssec", dnssec)
46
+ if duration_in_years is not None:
47
+ pulumi.set(__self__, "duration_in_years", duration_in_years)
48
+ if owner_contact is not None:
49
+ pulumi.set(__self__, "owner_contact", owner_contact)
50
+ if owner_contact_id is not None:
51
+ pulumi.set(__self__, "owner_contact_id", owner_contact_id)
52
+ if project_id is not None:
53
+ pulumi.set(__self__, "project_id", project_id)
54
+
55
+ @property
56
+ @pulumi.getter(name="domainNames")
57
+ def domain_names(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
58
+ """
59
+ : A list of domain names to be registered.
60
+ """
61
+ return pulumi.get(self, "domain_names")
62
+
63
+ @domain_names.setter
64
+ def domain_names(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
65
+ pulumi.set(self, "domain_names", value)
66
+
67
+ @property
68
+ @pulumi.getter(name="autoRenew")
69
+ def auto_renew(self) -> Optional[pulumi.Input[bool]]:
70
+ """
71
+ : Enables or disables auto-renewal.
72
+ """
73
+ return pulumi.get(self, "auto_renew")
74
+
75
+ @auto_renew.setter
76
+ def auto_renew(self, value: Optional[pulumi.Input[bool]]):
77
+ pulumi.set(self, "auto_renew", value)
78
+
79
+ @property
80
+ @pulumi.getter
81
+ def dnssec(self) -> Optional[pulumi.Input[bool]]:
82
+ """
83
+ : Enables or disables DNSSEC.
84
+ """
85
+ return pulumi.get(self, "dnssec")
86
+
87
+ @dnssec.setter
88
+ def dnssec(self, value: Optional[pulumi.Input[bool]]):
89
+ pulumi.set(self, "dnssec", value)
90
+
91
+ @property
92
+ @pulumi.getter(name="durationInYears")
93
+ def duration_in_years(self) -> Optional[pulumi.Input[int]]:
94
+ """
95
+ : The registration period in years.
96
+ """
97
+ return pulumi.get(self, "duration_in_years")
98
+
99
+ @duration_in_years.setter
100
+ def duration_in_years(self, value: Optional[pulumi.Input[int]]):
101
+ pulumi.set(self, "duration_in_years", value)
102
+
103
+ @property
104
+ @pulumi.getter(name="ownerContact")
105
+ def owner_contact(self) -> Optional[pulumi.Input['RegistrationOwnerContactArgs']]:
106
+ """
107
+ : Details of the owner contact.
108
+ """
109
+ return pulumi.get(self, "owner_contact")
110
+
111
+ @owner_contact.setter
112
+ def owner_contact(self, value: Optional[pulumi.Input['RegistrationOwnerContactArgs']]):
113
+ pulumi.set(self, "owner_contact", value)
114
+
115
+ @property
116
+ @pulumi.getter(name="ownerContactId")
117
+ def owner_contact_id(self) -> Optional[pulumi.Input[str]]:
118
+ """
119
+ : The ID of an existing owner contact.
120
+ """
121
+ return pulumi.get(self, "owner_contact_id")
122
+
123
+ @owner_contact_id.setter
124
+ def owner_contact_id(self, value: Optional[pulumi.Input[str]]):
125
+ pulumi.set(self, "owner_contact_id", value)
126
+
127
+ @property
128
+ @pulumi.getter(name="projectId")
129
+ def project_id(self) -> Optional[pulumi.Input[str]]:
130
+ """
131
+ : The Scaleway project ID.
132
+ """
133
+ return pulumi.get(self, "project_id")
134
+
135
+ @project_id.setter
136
+ def project_id(self, value: Optional[pulumi.Input[str]]):
137
+ pulumi.set(self, "project_id", value)
138
+
139
+
140
+ @pulumi.input_type
141
+ class _RegistrationState:
142
+ def __init__(__self__, *,
143
+ administrative_contacts: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationAdministrativeContactArgs']]]] = None,
144
+ auto_renew: Optional[pulumi.Input[bool]] = None,
145
+ dnssec: Optional[pulumi.Input[bool]] = None,
146
+ domain_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
147
+ ds_records: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationDsRecordArgs']]]] = None,
148
+ duration_in_years: Optional[pulumi.Input[int]] = None,
149
+ owner_contact: Optional[pulumi.Input['RegistrationOwnerContactArgs']] = None,
150
+ owner_contact_id: Optional[pulumi.Input[str]] = None,
151
+ project_id: Optional[pulumi.Input[str]] = None,
152
+ task_id: Optional[pulumi.Input[str]] = None,
153
+ technical_contacts: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationTechnicalContactArgs']]]] = None):
154
+ """
155
+ Input properties used for looking up and filtering Registration resources.
156
+ :param pulumi.Input[Sequence[pulumi.Input['RegistrationAdministrativeContactArgs']]] administrative_contacts: : Administrative contact information.
157
+ :param pulumi.Input[bool] auto_renew: : Enables or disables auto-renewal.
158
+ :param pulumi.Input[bool] dnssec: : Enables or disables DNSSEC.
159
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] domain_names: : A list of domain names to be registered.
160
+ :param pulumi.Input[Sequence[pulumi.Input['RegistrationDsRecordArgs']]] ds_records: DNSSEC DS record configuration.
161
+ :param pulumi.Input[int] duration_in_years: : The registration period in years.
162
+ :param pulumi.Input['RegistrationOwnerContactArgs'] owner_contact: : Details of the owner contact.
163
+ :param pulumi.Input[str] owner_contact_id: : The ID of an existing owner contact.
164
+ :param pulumi.Input[str] project_id: : The Scaleway project ID.
165
+ :param pulumi.Input[str] task_id: ID of the task that created the domain.
166
+ :param pulumi.Input[Sequence[pulumi.Input['RegistrationTechnicalContactArgs']]] technical_contacts: : Technical contact information.
167
+ """
168
+ if administrative_contacts is not None:
169
+ pulumi.set(__self__, "administrative_contacts", administrative_contacts)
170
+ if auto_renew is not None:
171
+ pulumi.set(__self__, "auto_renew", auto_renew)
172
+ if dnssec is not None:
173
+ pulumi.set(__self__, "dnssec", dnssec)
174
+ if domain_names is not None:
175
+ pulumi.set(__self__, "domain_names", domain_names)
176
+ if ds_records is not None:
177
+ pulumi.set(__self__, "ds_records", ds_records)
178
+ if duration_in_years is not None:
179
+ pulumi.set(__self__, "duration_in_years", duration_in_years)
180
+ if owner_contact is not None:
181
+ pulumi.set(__self__, "owner_contact", owner_contact)
182
+ if owner_contact_id is not None:
183
+ pulumi.set(__self__, "owner_contact_id", owner_contact_id)
184
+ if project_id is not None:
185
+ pulumi.set(__self__, "project_id", project_id)
186
+ if task_id is not None:
187
+ pulumi.set(__self__, "task_id", task_id)
188
+ if technical_contacts is not None:
189
+ pulumi.set(__self__, "technical_contacts", technical_contacts)
190
+
191
+ @property
192
+ @pulumi.getter(name="administrativeContacts")
193
+ def administrative_contacts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationAdministrativeContactArgs']]]]:
194
+ """
195
+ : Administrative contact information.
196
+ """
197
+ return pulumi.get(self, "administrative_contacts")
198
+
199
+ @administrative_contacts.setter
200
+ def administrative_contacts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationAdministrativeContactArgs']]]]):
201
+ pulumi.set(self, "administrative_contacts", value)
202
+
203
+ @property
204
+ @pulumi.getter(name="autoRenew")
205
+ def auto_renew(self) -> Optional[pulumi.Input[bool]]:
206
+ """
207
+ : Enables or disables auto-renewal.
208
+ """
209
+ return pulumi.get(self, "auto_renew")
210
+
211
+ @auto_renew.setter
212
+ def auto_renew(self, value: Optional[pulumi.Input[bool]]):
213
+ pulumi.set(self, "auto_renew", value)
214
+
215
+ @property
216
+ @pulumi.getter
217
+ def dnssec(self) -> Optional[pulumi.Input[bool]]:
218
+ """
219
+ : Enables or disables DNSSEC.
220
+ """
221
+ return pulumi.get(self, "dnssec")
222
+
223
+ @dnssec.setter
224
+ def dnssec(self, value: Optional[pulumi.Input[bool]]):
225
+ pulumi.set(self, "dnssec", value)
226
+
227
+ @property
228
+ @pulumi.getter(name="domainNames")
229
+ def domain_names(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
230
+ """
231
+ : A list of domain names to be registered.
232
+ """
233
+ return pulumi.get(self, "domain_names")
234
+
235
+ @domain_names.setter
236
+ def domain_names(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
237
+ pulumi.set(self, "domain_names", value)
238
+
239
+ @property
240
+ @pulumi.getter(name="dsRecords")
241
+ def ds_records(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationDsRecordArgs']]]]:
242
+ """
243
+ DNSSEC DS record configuration.
244
+ """
245
+ return pulumi.get(self, "ds_records")
246
+
247
+ @ds_records.setter
248
+ def ds_records(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationDsRecordArgs']]]]):
249
+ pulumi.set(self, "ds_records", value)
250
+
251
+ @property
252
+ @pulumi.getter(name="durationInYears")
253
+ def duration_in_years(self) -> Optional[pulumi.Input[int]]:
254
+ """
255
+ : The registration period in years.
256
+ """
257
+ return pulumi.get(self, "duration_in_years")
258
+
259
+ @duration_in_years.setter
260
+ def duration_in_years(self, value: Optional[pulumi.Input[int]]):
261
+ pulumi.set(self, "duration_in_years", value)
262
+
263
+ @property
264
+ @pulumi.getter(name="ownerContact")
265
+ def owner_contact(self) -> Optional[pulumi.Input['RegistrationOwnerContactArgs']]:
266
+ """
267
+ : Details of the owner contact.
268
+ """
269
+ return pulumi.get(self, "owner_contact")
270
+
271
+ @owner_contact.setter
272
+ def owner_contact(self, value: Optional[pulumi.Input['RegistrationOwnerContactArgs']]):
273
+ pulumi.set(self, "owner_contact", value)
274
+
275
+ @property
276
+ @pulumi.getter(name="ownerContactId")
277
+ def owner_contact_id(self) -> Optional[pulumi.Input[str]]:
278
+ """
279
+ : The ID of an existing owner contact.
280
+ """
281
+ return pulumi.get(self, "owner_contact_id")
282
+
283
+ @owner_contact_id.setter
284
+ def owner_contact_id(self, value: Optional[pulumi.Input[str]]):
285
+ pulumi.set(self, "owner_contact_id", value)
286
+
287
+ @property
288
+ @pulumi.getter(name="projectId")
289
+ def project_id(self) -> Optional[pulumi.Input[str]]:
290
+ """
291
+ : The Scaleway project ID.
292
+ """
293
+ return pulumi.get(self, "project_id")
294
+
295
+ @project_id.setter
296
+ def project_id(self, value: Optional[pulumi.Input[str]]):
297
+ pulumi.set(self, "project_id", value)
298
+
299
+ @property
300
+ @pulumi.getter(name="taskId")
301
+ def task_id(self) -> Optional[pulumi.Input[str]]:
302
+ """
303
+ ID of the task that created the domain.
304
+ """
305
+ return pulumi.get(self, "task_id")
306
+
307
+ @task_id.setter
308
+ def task_id(self, value: Optional[pulumi.Input[str]]):
309
+ pulumi.set(self, "task_id", value)
310
+
311
+ @property
312
+ @pulumi.getter(name="technicalContacts")
313
+ def technical_contacts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationTechnicalContactArgs']]]]:
314
+ """
315
+ : Technical contact information.
316
+ """
317
+ return pulumi.get(self, "technical_contacts")
318
+
319
+ @technical_contacts.setter
320
+ def technical_contacts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RegistrationTechnicalContactArgs']]]]):
321
+ pulumi.set(self, "technical_contacts", value)
322
+
323
+
324
+ class Registration(pulumi.CustomResource):
325
+ @overload
326
+ def __init__(__self__,
327
+ resource_name: str,
328
+ opts: Optional[pulumi.ResourceOptions] = None,
329
+ auto_renew: Optional[pulumi.Input[bool]] = None,
330
+ dnssec: Optional[pulumi.Input[bool]] = None,
331
+ domain_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
332
+ duration_in_years: Optional[pulumi.Input[int]] = None,
333
+ owner_contact: Optional[pulumi.Input[Union['RegistrationOwnerContactArgs', 'RegistrationOwnerContactArgsDict']]] = None,
334
+ owner_contact_id: Optional[pulumi.Input[str]] = None,
335
+ project_id: Optional[pulumi.Input[str]] = None,
336
+ __props__=None):
337
+ """
338
+ The `domain.Registration` resource allows you to purchase and manage domain registrations with Scaleway. Using this resource you can register one or more domains for a specified duration, configure auto-renewal and DNSSEC options, and set contact information. You can supply an owner contact either by providing an existing contact ID or by specifying the complete contact details. The resource automatically returns additional contact information (administrative and technical) as provided by the Scaleway API.
339
+
340
+ Refer to the [Domains and DNS documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and the [API documentation](https://developers.scaleway.com/) for more details.
341
+
342
+ ## Example Usage
343
+
344
+ ### Purchase a Single Domain
345
+
346
+ The following example purchases a domain with a one-year registration period and specifies the owner contact details. Administrative and technical contacts are returned by the API.
347
+
348
+ ```python
349
+ import pulumi
350
+ import pulumiverse_scaleway as scaleway
351
+
352
+ test = scaleway.domain.Registration("test",
353
+ domain_names=["example.com"],
354
+ duration_in_years=1,
355
+ owner_contact={
356
+ "legal_form": "individual",
357
+ "firstname": "John",
358
+ "lastname": "DOE",
359
+ "email": "john.doe@example.com",
360
+ "phone_number": "+1.23456789",
361
+ "address_line1": "123 Main Street",
362
+ "city": "Paris",
363
+ "zip": "75001",
364
+ "country": "FR",
365
+ "vat_identification_code": "FR12345678901",
366
+ "company_identification_code": "123456789",
367
+ })
368
+ ```
369
+
370
+ ### Update Domain Settings
371
+
372
+ You can update the resource to enable auto-renewal and DNSSEC:
373
+
374
+ ```python
375
+ import pulumi
376
+ import pulumiverse_scaleway as scaleway
377
+
378
+ test = scaleway.domain.Registration("test",
379
+ domain_names=["example.com"],
380
+ duration_in_years=1,
381
+ owner_contact={
382
+ "legal_form": "individual",
383
+ "firstname": "John",
384
+ "lastname": "DOE",
385
+ "email": "john.doe@example.com",
386
+ "phone_number": "+1.23456789",
387
+ "address_line1": "123 Main Street",
388
+ "city": "Paris",
389
+ "zip": "75001",
390
+ "country": "FR",
391
+ "vat_identification_code": "FR12345678901",
392
+ "company_identification_code": "123456789",
393
+ },
394
+ auto_renew=True,
395
+ dnssec=True)
396
+ ```
397
+
398
+ ### Purchase Multiple Domains
399
+
400
+ The following example registers several domains in one go:
401
+
402
+ ```python
403
+ import pulumi
404
+ import pulumiverse_scaleway as scaleway
405
+
406
+ multi = scaleway.domain.Registration("multi",
407
+ domain_names=[
408
+ "domain1.com",
409
+ "domain2.com",
410
+ "domain3.com",
411
+ ],
412
+ duration_in_years=1,
413
+ owner_contact={
414
+ "legal_form": "individual",
415
+ "firstname": "John",
416
+ "lastname": "DOE",
417
+ "email": "john.doe@example.com",
418
+ "phone_number": "+1.23456789",
419
+ "address_line1": "123 Main Street",
420
+ "city": "Paris",
421
+ "zip": "75001",
422
+ "country": "FR",
423
+ "vat_identification_code": "FR12345678901",
424
+ "company_identification_code": "123456789",
425
+ })
426
+ ```
427
+
428
+ ## Contact Blocks
429
+
430
+ Each contact block supports the following attributes:
431
+
432
+ - `legal_form` (Required, String): Legal form of the contact.
433
+ - `firstname` (Required, String): First name.
434
+ - `lastname` (Required, String): Last name.
435
+ - `company_name` (Optional, String): Company name.
436
+ - `email` (Required, String): Primary email.
437
+ - `phone_number` (Required, String): Primary phone number.
438
+ - `address_line_1` (Required, String): Primary address.
439
+ - `zip` (Required, String): Postal code.
440
+ - `city` (Required, String): City.
441
+ - `country` (Required, String): Country code (ISO format).
442
+ - `vat_identification_code` (Required, String): VAT identification code.
443
+ - `company_identification_code` (Required, String): Company identification code.
444
+
445
+ ## Import
446
+
447
+ To import an existing domain registration, use:
448
+
449
+ bash
450
+
451
+ ```sh
452
+ $ pulumi import scaleway:domain/registration:Registration test <project_id>/<task_id>
453
+ ```
454
+
455
+ :param str resource_name: The name of the resource.
456
+ :param pulumi.ResourceOptions opts: Options for the resource.
457
+ :param pulumi.Input[bool] auto_renew: : Enables or disables auto-renewal.
458
+ :param pulumi.Input[bool] dnssec: : Enables or disables DNSSEC.
459
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] domain_names: : A list of domain names to be registered.
460
+ :param pulumi.Input[int] duration_in_years: : The registration period in years.
461
+ :param pulumi.Input[Union['RegistrationOwnerContactArgs', 'RegistrationOwnerContactArgsDict']] owner_contact: : Details of the owner contact.
462
+ :param pulumi.Input[str] owner_contact_id: : The ID of an existing owner contact.
463
+ :param pulumi.Input[str] project_id: : The Scaleway project ID.
464
+ """
465
+ ...
466
+ @overload
467
+ def __init__(__self__,
468
+ resource_name: str,
469
+ args: RegistrationArgs,
470
+ opts: Optional[pulumi.ResourceOptions] = None):
471
+ """
472
+ The `domain.Registration` resource allows you to purchase and manage domain registrations with Scaleway. Using this resource you can register one or more domains for a specified duration, configure auto-renewal and DNSSEC options, and set contact information. You can supply an owner contact either by providing an existing contact ID or by specifying the complete contact details. The resource automatically returns additional contact information (administrative and technical) as provided by the Scaleway API.
473
+
474
+ Refer to the [Domains and DNS documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and the [API documentation](https://developers.scaleway.com/) for more details.
475
+
476
+ ## Example Usage
477
+
478
+ ### Purchase a Single Domain
479
+
480
+ The following example purchases a domain with a one-year registration period and specifies the owner contact details. Administrative and technical contacts are returned by the API.
481
+
482
+ ```python
483
+ import pulumi
484
+ import pulumiverse_scaleway as scaleway
485
+
486
+ test = scaleway.domain.Registration("test",
487
+ domain_names=["example.com"],
488
+ duration_in_years=1,
489
+ owner_contact={
490
+ "legal_form": "individual",
491
+ "firstname": "John",
492
+ "lastname": "DOE",
493
+ "email": "john.doe@example.com",
494
+ "phone_number": "+1.23456789",
495
+ "address_line1": "123 Main Street",
496
+ "city": "Paris",
497
+ "zip": "75001",
498
+ "country": "FR",
499
+ "vat_identification_code": "FR12345678901",
500
+ "company_identification_code": "123456789",
501
+ })
502
+ ```
503
+
504
+ ### Update Domain Settings
505
+
506
+ You can update the resource to enable auto-renewal and DNSSEC:
507
+
508
+ ```python
509
+ import pulumi
510
+ import pulumiverse_scaleway as scaleway
511
+
512
+ test = scaleway.domain.Registration("test",
513
+ domain_names=["example.com"],
514
+ duration_in_years=1,
515
+ owner_contact={
516
+ "legal_form": "individual",
517
+ "firstname": "John",
518
+ "lastname": "DOE",
519
+ "email": "john.doe@example.com",
520
+ "phone_number": "+1.23456789",
521
+ "address_line1": "123 Main Street",
522
+ "city": "Paris",
523
+ "zip": "75001",
524
+ "country": "FR",
525
+ "vat_identification_code": "FR12345678901",
526
+ "company_identification_code": "123456789",
527
+ },
528
+ auto_renew=True,
529
+ dnssec=True)
530
+ ```
531
+
532
+ ### Purchase Multiple Domains
533
+
534
+ The following example registers several domains in one go:
535
+
536
+ ```python
537
+ import pulumi
538
+ import pulumiverse_scaleway as scaleway
539
+
540
+ multi = scaleway.domain.Registration("multi",
541
+ domain_names=[
542
+ "domain1.com",
543
+ "domain2.com",
544
+ "domain3.com",
545
+ ],
546
+ duration_in_years=1,
547
+ owner_contact={
548
+ "legal_form": "individual",
549
+ "firstname": "John",
550
+ "lastname": "DOE",
551
+ "email": "john.doe@example.com",
552
+ "phone_number": "+1.23456789",
553
+ "address_line1": "123 Main Street",
554
+ "city": "Paris",
555
+ "zip": "75001",
556
+ "country": "FR",
557
+ "vat_identification_code": "FR12345678901",
558
+ "company_identification_code": "123456789",
559
+ })
560
+ ```
561
+
562
+ ## Contact Blocks
563
+
564
+ Each contact block supports the following attributes:
565
+
566
+ - `legal_form` (Required, String): Legal form of the contact.
567
+ - `firstname` (Required, String): First name.
568
+ - `lastname` (Required, String): Last name.
569
+ - `company_name` (Optional, String): Company name.
570
+ - `email` (Required, String): Primary email.
571
+ - `phone_number` (Required, String): Primary phone number.
572
+ - `address_line_1` (Required, String): Primary address.
573
+ - `zip` (Required, String): Postal code.
574
+ - `city` (Required, String): City.
575
+ - `country` (Required, String): Country code (ISO format).
576
+ - `vat_identification_code` (Required, String): VAT identification code.
577
+ - `company_identification_code` (Required, String): Company identification code.
578
+
579
+ ## Import
580
+
581
+ To import an existing domain registration, use:
582
+
583
+ bash
584
+
585
+ ```sh
586
+ $ pulumi import scaleway:domain/registration:Registration test <project_id>/<task_id>
587
+ ```
588
+
589
+ :param str resource_name: The name of the resource.
590
+ :param RegistrationArgs args: The arguments to use to populate this resource's properties.
591
+ :param pulumi.ResourceOptions opts: Options for the resource.
592
+ """
593
+ ...
594
+ def __init__(__self__, resource_name: str, *args, **kwargs):
595
+ resource_args, opts = _utilities.get_resource_args_opts(RegistrationArgs, pulumi.ResourceOptions, *args, **kwargs)
596
+ if resource_args is not None:
597
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
598
+ else:
599
+ __self__._internal_init(resource_name, *args, **kwargs)
600
+
601
+ def _internal_init(__self__,
602
+ resource_name: str,
603
+ opts: Optional[pulumi.ResourceOptions] = None,
604
+ auto_renew: Optional[pulumi.Input[bool]] = None,
605
+ dnssec: Optional[pulumi.Input[bool]] = None,
606
+ domain_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
607
+ duration_in_years: Optional[pulumi.Input[int]] = None,
608
+ owner_contact: Optional[pulumi.Input[Union['RegistrationOwnerContactArgs', 'RegistrationOwnerContactArgsDict']]] = None,
609
+ owner_contact_id: Optional[pulumi.Input[str]] = None,
610
+ project_id: Optional[pulumi.Input[str]] = None,
611
+ __props__=None):
612
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
613
+ if not isinstance(opts, pulumi.ResourceOptions):
614
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
615
+ if opts.id is None:
616
+ if __props__ is not None:
617
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
618
+ __props__ = RegistrationArgs.__new__(RegistrationArgs)
619
+
620
+ __props__.__dict__["auto_renew"] = auto_renew
621
+ __props__.__dict__["dnssec"] = dnssec
622
+ if domain_names is None and not opts.urn:
623
+ raise TypeError("Missing required property 'domain_names'")
624
+ __props__.__dict__["domain_names"] = domain_names
625
+ __props__.__dict__["duration_in_years"] = duration_in_years
626
+ __props__.__dict__["owner_contact"] = owner_contact
627
+ __props__.__dict__["owner_contact_id"] = owner_contact_id
628
+ __props__.__dict__["project_id"] = project_id
629
+ __props__.__dict__["administrative_contacts"] = None
630
+ __props__.__dict__["ds_records"] = None
631
+ __props__.__dict__["task_id"] = None
632
+ __props__.__dict__["technical_contacts"] = None
633
+ super(Registration, __self__).__init__(
634
+ 'scaleway:domain/registration:Registration',
635
+ resource_name,
636
+ __props__,
637
+ opts)
638
+
639
+ @staticmethod
640
+ def get(resource_name: str,
641
+ id: pulumi.Input[str],
642
+ opts: Optional[pulumi.ResourceOptions] = None,
643
+ administrative_contacts: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RegistrationAdministrativeContactArgs', 'RegistrationAdministrativeContactArgsDict']]]]] = None,
644
+ auto_renew: Optional[pulumi.Input[bool]] = None,
645
+ dnssec: Optional[pulumi.Input[bool]] = None,
646
+ domain_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
647
+ ds_records: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RegistrationDsRecordArgs', 'RegistrationDsRecordArgsDict']]]]] = None,
648
+ duration_in_years: Optional[pulumi.Input[int]] = None,
649
+ owner_contact: Optional[pulumi.Input[Union['RegistrationOwnerContactArgs', 'RegistrationOwnerContactArgsDict']]] = None,
650
+ owner_contact_id: Optional[pulumi.Input[str]] = None,
651
+ project_id: Optional[pulumi.Input[str]] = None,
652
+ task_id: Optional[pulumi.Input[str]] = None,
653
+ technical_contacts: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RegistrationTechnicalContactArgs', 'RegistrationTechnicalContactArgsDict']]]]] = None) -> 'Registration':
654
+ """
655
+ Get an existing Registration resource's state with the given name, id, and optional extra
656
+ properties used to qualify the lookup.
657
+
658
+ :param str resource_name: The unique name of the resulting resource.
659
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
660
+ :param pulumi.ResourceOptions opts: Options for the resource.
661
+ :param pulumi.Input[Sequence[pulumi.Input[Union['RegistrationAdministrativeContactArgs', 'RegistrationAdministrativeContactArgsDict']]]] administrative_contacts: : Administrative contact information.
662
+ :param pulumi.Input[bool] auto_renew: : Enables or disables auto-renewal.
663
+ :param pulumi.Input[bool] dnssec: : Enables or disables DNSSEC.
664
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] domain_names: : A list of domain names to be registered.
665
+ :param pulumi.Input[Sequence[pulumi.Input[Union['RegistrationDsRecordArgs', 'RegistrationDsRecordArgsDict']]]] ds_records: DNSSEC DS record configuration.
666
+ :param pulumi.Input[int] duration_in_years: : The registration period in years.
667
+ :param pulumi.Input[Union['RegistrationOwnerContactArgs', 'RegistrationOwnerContactArgsDict']] owner_contact: : Details of the owner contact.
668
+ :param pulumi.Input[str] owner_contact_id: : The ID of an existing owner contact.
669
+ :param pulumi.Input[str] project_id: : The Scaleway project ID.
670
+ :param pulumi.Input[str] task_id: ID of the task that created the domain.
671
+ :param pulumi.Input[Sequence[pulumi.Input[Union['RegistrationTechnicalContactArgs', 'RegistrationTechnicalContactArgsDict']]]] technical_contacts: : Technical contact information.
672
+ """
673
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
674
+
675
+ __props__ = _RegistrationState.__new__(_RegistrationState)
676
+
677
+ __props__.__dict__["administrative_contacts"] = administrative_contacts
678
+ __props__.__dict__["auto_renew"] = auto_renew
679
+ __props__.__dict__["dnssec"] = dnssec
680
+ __props__.__dict__["domain_names"] = domain_names
681
+ __props__.__dict__["ds_records"] = ds_records
682
+ __props__.__dict__["duration_in_years"] = duration_in_years
683
+ __props__.__dict__["owner_contact"] = owner_contact
684
+ __props__.__dict__["owner_contact_id"] = owner_contact_id
685
+ __props__.__dict__["project_id"] = project_id
686
+ __props__.__dict__["task_id"] = task_id
687
+ __props__.__dict__["technical_contacts"] = technical_contacts
688
+ return Registration(resource_name, opts=opts, __props__=__props__)
689
+
690
+ @property
691
+ @pulumi.getter(name="administrativeContacts")
692
+ def administrative_contacts(self) -> pulumi.Output[Sequence['outputs.RegistrationAdministrativeContact']]:
693
+ """
694
+ : Administrative contact information.
695
+ """
696
+ return pulumi.get(self, "administrative_contacts")
697
+
698
+ @property
699
+ @pulumi.getter(name="autoRenew")
700
+ def auto_renew(self) -> pulumi.Output[Optional[bool]]:
701
+ """
702
+ : Enables or disables auto-renewal.
703
+ """
704
+ return pulumi.get(self, "auto_renew")
705
+
706
+ @property
707
+ @pulumi.getter
708
+ def dnssec(self) -> pulumi.Output[Optional[bool]]:
709
+ """
710
+ : Enables or disables DNSSEC.
711
+ """
712
+ return pulumi.get(self, "dnssec")
713
+
714
+ @property
715
+ @pulumi.getter(name="domainNames")
716
+ def domain_names(self) -> pulumi.Output[Sequence[str]]:
717
+ """
718
+ : A list of domain names to be registered.
719
+ """
720
+ return pulumi.get(self, "domain_names")
721
+
722
+ @property
723
+ @pulumi.getter(name="dsRecords")
724
+ def ds_records(self) -> pulumi.Output[Sequence['outputs.RegistrationDsRecord']]:
725
+ """
726
+ DNSSEC DS record configuration.
727
+ """
728
+ return pulumi.get(self, "ds_records")
729
+
730
+ @property
731
+ @pulumi.getter(name="durationInYears")
732
+ def duration_in_years(self) -> pulumi.Output[Optional[int]]:
733
+ """
734
+ : The registration period in years.
735
+ """
736
+ return pulumi.get(self, "duration_in_years")
737
+
738
+ @property
739
+ @pulumi.getter(name="ownerContact")
740
+ def owner_contact(self) -> pulumi.Output['outputs.RegistrationOwnerContact']:
741
+ """
742
+ : Details of the owner contact.
743
+ """
744
+ return pulumi.get(self, "owner_contact")
745
+
746
+ @property
747
+ @pulumi.getter(name="ownerContactId")
748
+ def owner_contact_id(self) -> pulumi.Output[str]:
749
+ """
750
+ : The ID of an existing owner contact.
751
+ """
752
+ return pulumi.get(self, "owner_contact_id")
753
+
754
+ @property
755
+ @pulumi.getter(name="projectId")
756
+ def project_id(self) -> pulumi.Output[str]:
757
+ """
758
+ : The Scaleway project ID.
759
+ """
760
+ return pulumi.get(self, "project_id")
761
+
762
+ @property
763
+ @pulumi.getter(name="taskId")
764
+ def task_id(self) -> pulumi.Output[str]:
765
+ """
766
+ ID of the task that created the domain.
767
+ """
768
+ return pulumi.get(self, "task_id")
769
+
770
+ @property
771
+ @pulumi.getter(name="technicalContacts")
772
+ def technical_contacts(self) -> pulumi.Output[Sequence['outputs.RegistrationTechnicalContact']]:
773
+ """
774
+ : Technical contact information.
775
+ """
776
+ return pulumi.get(self, "technical_contacts")
777
+