waldur-api-client 7.8.3__py3-none-any.whl → 7.8.4__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.

Potentially problematic release.


This version of waldur-api-client might be problematic. Click here for more details.

Files changed (118) hide show
  1. waldur_api_client/api/booking_resources/booking_resources_count.py +18 -0
  2. waldur_api_client/api/booking_resources/booking_resources_list.py +18 -0
  3. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_template_count.py +125 -0
  4. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_template_retrieve.py +126 -0
  5. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_tos_stats_retrieve.py +146 -0
  6. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +18 -0
  7. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +18 -0
  8. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_update_options.py +168 -0
  9. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +18 -0
  10. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +18 -0
  11. waldur_api_client/api/marketplace_resources/marketplace_resources_renew.py +166 -0
  12. waldur_api_client/api/marketplace_service_providers/service_provider_checklists_summary.py +189 -0
  13. waldur_api_client/api/onboarding/__init__.py +1 -0
  14. waldur_api_client/api/onboarding/onboarding_supported_countries_retrieve.py +74 -0
  15. waldur_api_client/api/onboarding_justifications/__init__.py +1 -0
  16. waldur_api_client/api/onboarding_justifications/onboarding_justifications_attach_document.py +211 -0
  17. waldur_api_client/api/onboarding_justifications/onboarding_justifications_count.py +172 -0
  18. waldur_api_client/api/onboarding_justifications/onboarding_justifications_create.py +150 -0
  19. waldur_api_client/api/onboarding_justifications/onboarding_justifications_create_justification.py +154 -0
  20. waldur_api_client/api/onboarding_justifications/onboarding_justifications_destroy.py +89 -0
  21. waldur_api_client/api/onboarding_justifications/onboarding_justifications_list.py +175 -0
  22. waldur_api_client/api/onboarding_justifications/onboarding_justifications_partial_update.py +164 -0
  23. waldur_api_client/api/onboarding_justifications/onboarding_justifications_retrieve.py +142 -0
  24. waldur_api_client/api/onboarding_justifications/onboarding_justifications_update.py +164 -0
  25. waldur_api_client/api/onboarding_verifications/__init__.py +1 -0
  26. waldur_api_client/api/onboarding_verifications/onboarding_verifications_count.py +172 -0
  27. waldur_api_client/api/onboarding_verifications/onboarding_verifications_create.py +150 -0
  28. waldur_api_client/api/onboarding_verifications/onboarding_verifications_create_customer.py +144 -0
  29. waldur_api_client/api/onboarding_verifications/onboarding_verifications_destroy.py +89 -0
  30. waldur_api_client/api/onboarding_verifications/onboarding_verifications_list.py +175 -0
  31. waldur_api_client/api/onboarding_verifications/onboarding_verifications_partial_update.py +164 -0
  32. waldur_api_client/api/onboarding_verifications/onboarding_verifications_retrieve.py +142 -0
  33. waldur_api_client/api/onboarding_verifications/onboarding_verifications_update.py +164 -0
  34. waldur_api_client/api/onboarding_verifications/onboarding_verifications_validate_company.py +154 -0
  35. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_count.py +33 -0
  36. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_create.py +154 -0
  37. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_destroy.py +91 -0
  38. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_list.py +33 -0
  39. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_partial_update.py +164 -0
  40. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_update.py +164 -0
  41. waldur_api_client/api/openstack_networks/openstack_networks_rbac_policy_create.py +24 -22
  42. waldur_api_client/api/projects/projects_checklist_template_count.py +125 -0
  43. waldur_api_client/api/projects/projects_checklist_template_retrieve.py +126 -0
  44. waldur_api_client/api/proposal_proposals/proposal_proposals_checklist_template_count.py +125 -0
  45. waldur_api_client/api/proposal_proposals/proposal_proposals_checklist_template_retrieve.py +126 -0
  46. waldur_api_client/api/proposal_protected_calls/proposal_protected_calls_offerings_list.py +15 -0
  47. waldur_api_client/models/__init__.py +62 -4
  48. waldur_api_client/models/booking_resource.py +4 -11
  49. waldur_api_client/models/call_round.py +4 -4
  50. waldur_api_client/models/checklist_template.py +99 -0
  51. waldur_api_client/models/checklist_template_checklist.py +44 -0
  52. waldur_api_client/models/constance_settings.py +45 -0
  53. waldur_api_client/models/constance_settings_request.py +45 -0
  54. waldur_api_client/models/constance_settings_request_form.py +45 -0
  55. waldur_api_client/models/constance_settings_request_multipart.py +85 -0
  56. waldur_api_client/models/customer.py +9 -0
  57. waldur_api_client/models/customers_list_field_item.py +1 -0
  58. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  59. waldur_api_client/models/deprecated_network_rbac_policy.py +137 -0
  60. waldur_api_client/models/deprecated_network_rbac_policy_request.py +78 -0
  61. waldur_api_client/models/event_types_enum.py +1 -0
  62. waldur_api_client/models/marketplace_service_providers_projects_list_field_item.py +1 -0
  63. waldur_api_client/models/merged_plugin_options.py +18 -0
  64. waldur_api_client/models/merged_plugin_options_request.py +18 -0
  65. waldur_api_client/models/nested_round.py +5 -5
  66. waldur_api_client/models/network_rbac_policy_request.py +8 -0
  67. waldur_api_client/models/notification.py +9 -9
  68. waldur_api_client/models/{notification_context_fields.py → notification_context_schema.py} +6 -6
  69. waldur_api_client/models/notification_template_detail_serializers.py +9 -3
  70. waldur_api_client/models/offering_component.py +79 -0
  71. waldur_api_client/models/offering_component_request.py +80 -0
  72. waldur_api_client/models/onboarding_company_validation_request_request.py +88 -0
  73. waldur_api_client/models/onboarding_justification.py +183 -0
  74. waldur_api_client/models/onboarding_justification_create_request.py +68 -0
  75. waldur_api_client/models/onboarding_justification_documentation.py +108 -0
  76. waldur_api_client/models/onboarding_justification_documentation_request.py +84 -0
  77. waldur_api_client/models/onboarding_justification_documentation_request_form.py +84 -0
  78. waldur_api_client/models/onboarding_justification_documentation_request_multipart.py +98 -0
  79. waldur_api_client/models/onboarding_justification_request.py +75 -0
  80. waldur_api_client/models/onboarding_verification.py +250 -0
  81. waldur_api_client/models/onboarding_verification_request.py +128 -0
  82. waldur_api_client/models/onboarding_verification_status_enum.py +12 -0
  83. waldur_api_client/models/open_stack_create_floating_ip_request.py +20 -1
  84. waldur_api_client/models/order_create.py +4 -4
  85. waldur_api_client/models/order_details.py +4 -11
  86. waldur_api_client/models/patched_network_rbac_policy_request.py +85 -0
  87. waldur_api_client/models/patched_onboarding_justification_request.py +77 -0
  88. waldur_api_client/models/patched_onboarding_verification_request.py +128 -0
  89. waldur_api_client/models/patched_project_credit_request.py +13 -0
  90. waldur_api_client/models/patched_project_request.py +1 -2
  91. waldur_api_client/models/patched_project_request_form.py +1 -2
  92. waldur_api_client/models/patched_project_request_multipart.py +1 -2
  93. waldur_api_client/models/project.py +10 -2
  94. waldur_api_client/models/project_credit.py +13 -0
  95. waldur_api_client/models/project_credit_request.py +13 -0
  96. waldur_api_client/models/project_request.py +1 -2
  97. waldur_api_client/models/project_request_form.py +1 -2
  98. waldur_api_client/models/project_request_multipart.py +1 -2
  99. waldur_api_client/models/projects_list_field_item.py +1 -0
  100. waldur_api_client/models/projects_retrieve_field_item.py +1 -0
  101. waldur_api_client/models/protected_round.py +4 -4
  102. waldur_api_client/models/question.py +102 -0
  103. waldur_api_client/models/question_options.py +79 -0
  104. waldur_api_client/models/resource.py +4 -11
  105. waldur_api_client/models/resource_renew_request.py +83 -0
  106. waldur_api_client/models/resource_renew_request_limits.py +44 -0
  107. waldur_api_client/models/{status_enum.py → round_status.py} +1 -1
  108. waldur_api_client/models/service_provider_checklist_summary.py +98 -0
  109. waldur_api_client/models/time_series_to_s_data.py +69 -0
  110. waldur_api_client/models/to_s_consent_dashboard.py +155 -0
  111. waldur_api_client/models/update_offering_component_request.py +79 -0
  112. waldur_api_client/models/validation_decision_enum.py +10 -0
  113. waldur_api_client/models/validation_method_enum.py +8 -0
  114. waldur_api_client/models/version_adoption.py +67 -0
  115. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/METADATA +1 -1
  116. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/RECORD +118 -54
  117. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/WHEEL +0 -0
  118. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/licenses/LICENSE +0 -0
@@ -14,15 +14,19 @@ T = TypeVar("T", bound="NetworkRBACPolicyRequest")
14
14
  class NetworkRBACPolicyRequest:
15
15
  """
16
16
  Attributes:
17
+ network (str):
17
18
  target_tenant (str):
18
19
  policy_type (Union[Unset, PolicyTypeEnum]): Default: PolicyTypeEnum.ACCESS_AS_SHARED.
19
20
  """
20
21
 
22
+ network: str
21
23
  target_tenant: str
22
24
  policy_type: Union[Unset, PolicyTypeEnum] = PolicyTypeEnum.ACCESS_AS_SHARED
23
25
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24
26
 
25
27
  def to_dict(self) -> dict[str, Any]:
28
+ network = self.network
29
+
26
30
  target_tenant = self.target_tenant
27
31
 
28
32
  policy_type: Union[Unset, str] = UNSET
@@ -33,6 +37,7 @@ class NetworkRBACPolicyRequest:
33
37
  field_dict.update(self.additional_properties)
34
38
  field_dict.update(
35
39
  {
40
+ "network": network,
36
41
  "target_tenant": target_tenant,
37
42
  }
38
43
  )
@@ -44,6 +49,8 @@ class NetworkRBACPolicyRequest:
44
49
  @classmethod
45
50
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
46
51
  d = dict(src_dict)
52
+ network = d.pop("network")
53
+
47
54
  target_tenant = d.pop("target_tenant")
48
55
 
49
56
  _policy_type = d.pop("policy_type", UNSET)
@@ -54,6 +61,7 @@ class NetworkRBACPolicyRequest:
54
61
  policy_type = PolicyTypeEnum(_policy_type)
55
62
 
56
63
  network_rbac_policy_request = cls(
64
+ network=network,
57
65
  target_tenant=target_tenant,
58
66
  policy_type=policy_type,
59
67
  )
@@ -10,7 +10,7 @@ from dateutil.parser import isoparse
10
10
  from ..types import UNSET, Unset
11
11
 
12
12
  if TYPE_CHECKING:
13
- from ..models.notification_context_fields import NotificationContextFields
13
+ from ..models.notification_context_schema import NotificationContextSchema
14
14
  from ..models.notification_template_detail_serializers import NotificationTemplateDetailSerializers
15
15
 
16
16
 
@@ -27,8 +27,8 @@ class Notification:
27
27
  enabled (bool): Indicates if notification is enabled or disabled
28
28
  created (datetime.datetime):
29
29
  templates (list['NotificationTemplateDetailSerializers']):
30
- context_fields (NotificationContextFields): Finds the notification definition in the global NOTIFICATIONS
31
- dictionary and returns its 'context' fields.
30
+ context_schema (NotificationContextSchema): Finds the notification definition in the global NOTIFICATIONS
31
+ dictionary and returns its 'context' schema.
32
32
  description (Union[Unset, str]):
33
33
  """
34
34
 
@@ -38,7 +38,7 @@ class Notification:
38
38
  enabled: bool
39
39
  created: datetime.datetime
40
40
  templates: list["NotificationTemplateDetailSerializers"]
41
- context_fields: "NotificationContextFields"
41
+ context_schema: "NotificationContextSchema"
42
42
  description: Union[Unset, str] = UNSET
43
43
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
44
44
 
@@ -58,7 +58,7 @@ class Notification:
58
58
  templates_item = templates_item_data.to_dict()
59
59
  templates.append(templates_item)
60
60
 
61
- context_fields = self.context_fields.to_dict()
61
+ context_schema = self.context_schema.to_dict()
62
62
 
63
63
  description = self.description
64
64
 
@@ -72,7 +72,7 @@ class Notification:
72
72
  "enabled": enabled,
73
73
  "created": created,
74
74
  "templates": templates,
75
- "context_fields": context_fields,
75
+ "context_schema": context_schema,
76
76
  }
77
77
  )
78
78
  if description is not UNSET:
@@ -82,7 +82,7 @@ class Notification:
82
82
 
83
83
  @classmethod
84
84
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
85
- from ..models.notification_context_fields import NotificationContextFields
85
+ from ..models.notification_context_schema import NotificationContextSchema
86
86
  from ..models.notification_template_detail_serializers import NotificationTemplateDetailSerializers
87
87
 
88
88
  d = dict(src_dict)
@@ -103,7 +103,7 @@ class Notification:
103
103
 
104
104
  templates.append(templates_item)
105
105
 
106
- context_fields = NotificationContextFields.from_dict(d.pop("context_fields"))
106
+ context_schema = NotificationContextSchema.from_dict(d.pop("context_schema"))
107
107
 
108
108
  description = d.pop("description", UNSET)
109
109
 
@@ -114,7 +114,7 @@ class Notification:
114
114
  enabled=enabled,
115
115
  created=created,
116
116
  templates=templates,
117
- context_fields=context_fields,
117
+ context_schema=context_schema,
118
118
  description=description,
119
119
  )
120
120
 
@@ -4,13 +4,13 @@ from typing import Any, TypeVar
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
6
6
 
7
- T = TypeVar("T", bound="NotificationContextFields")
7
+ T = TypeVar("T", bound="NotificationContextSchema")
8
8
 
9
9
 
10
10
  @_attrs_define
11
- class NotificationContextFields:
11
+ class NotificationContextSchema:
12
12
  """Finds the notification definition in the global NOTIFICATIONS
13
- dictionary and returns its 'context' fields.
13
+ dictionary and returns its 'context' schema.
14
14
 
15
15
  """
16
16
 
@@ -25,10 +25,10 @@ class NotificationContextFields:
25
25
  @classmethod
26
26
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
27
27
  d = dict(src_dict)
28
- notification_context_fields = cls()
28
+ notification_context_schema = cls()
29
29
 
30
- notification_context_fields.additional_properties = d
31
- return notification_context_fields
30
+ notification_context_schema.additional_properties = d
31
+ return notification_context_schema
32
32
 
33
33
  @property
34
34
  def additional_keys(self) -> list[str]:
@@ -16,7 +16,7 @@ class NotificationTemplateDetailSerializers:
16
16
  url (str):
17
17
  path (str): Example: 'flatpages/default.html'
18
18
  name (str):
19
- content (str):
19
+ content (Union[None, str]):
20
20
  original_content (Union[None, str]):
21
21
  is_content_overridden (bool):
22
22
  """
@@ -25,7 +25,7 @@ class NotificationTemplateDetailSerializers:
25
25
  url: str
26
26
  path: str
27
27
  name: str
28
- content: str
28
+ content: Union[None, str]
29
29
  original_content: Union[None, str]
30
30
  is_content_overridden: bool
31
31
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
@@ -39,6 +39,7 @@ class NotificationTemplateDetailSerializers:
39
39
 
40
40
  name = self.name
41
41
 
42
+ content: Union[None, str]
42
43
  content = self.content
43
44
 
44
45
  original_content: Union[None, str]
@@ -73,7 +74,12 @@ class NotificationTemplateDetailSerializers:
73
74
 
74
75
  name = d.pop("name")
75
76
 
76
- content = d.pop("content")
77
+ def _parse_content(data: object) -> Union[None, str]:
78
+ if data is None:
79
+ return data
80
+ return cast(Union[None, str], data)
81
+
82
+ content = _parse_content(d.pop("content"))
77
83
 
78
84
  def _parse_original_content(data: object) -> Union[None, str]:
79
85
  if data is None:
@@ -34,6 +34,10 @@ class OfferingComponent:
34
34
  default_limit (Union[None, Unset, int]):
35
35
  factor (Union[None, Unset, int]):
36
36
  is_builtin (Union[Unset, bool]):
37
+ is_prepaid (Union[Unset, bool]):
38
+ overage_component (Union[None, UUID, Unset]):
39
+ min_prepaid_duration (Union[None, Unset, int]):
40
+ max_prepaid_duration (Union[None, Unset, int]):
37
41
  """
38
42
 
39
43
  uuid: Union[Unset, UUID] = UNSET
@@ -53,6 +57,10 @@ class OfferingComponent:
53
57
  default_limit: Union[None, Unset, int] = UNSET
54
58
  factor: Union[None, Unset, int] = UNSET
55
59
  is_builtin: Union[Unset, bool] = UNSET
60
+ is_prepaid: Union[Unset, bool] = UNSET
61
+ overage_component: Union[None, UUID, Unset] = UNSET
62
+ min_prepaid_duration: Union[None, Unset, int] = UNSET
63
+ max_prepaid_duration: Union[None, Unset, int] = UNSET
56
64
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
57
65
 
58
66
  def to_dict(self) -> dict[str, Any]:
@@ -126,6 +134,28 @@ class OfferingComponent:
126
134
 
127
135
  is_builtin = self.is_builtin
128
136
 
137
+ is_prepaid = self.is_prepaid
138
+
139
+ overage_component: Union[None, Unset, str]
140
+ if isinstance(self.overage_component, Unset):
141
+ overage_component = UNSET
142
+ elif isinstance(self.overage_component, UUID):
143
+ overage_component = str(self.overage_component)
144
+ else:
145
+ overage_component = self.overage_component
146
+
147
+ min_prepaid_duration: Union[None, Unset, int]
148
+ if isinstance(self.min_prepaid_duration, Unset):
149
+ min_prepaid_duration = UNSET
150
+ else:
151
+ min_prepaid_duration = self.min_prepaid_duration
152
+
153
+ max_prepaid_duration: Union[None, Unset, int]
154
+ if isinstance(self.max_prepaid_duration, Unset):
155
+ max_prepaid_duration = UNSET
156
+ else:
157
+ max_prepaid_duration = self.max_prepaid_duration
158
+
129
159
  field_dict: dict[str, Any] = {}
130
160
  field_dict.update(self.additional_properties)
131
161
  field_dict.update({})
@@ -163,6 +193,14 @@ class OfferingComponent:
163
193
  field_dict["factor"] = factor
164
194
  if is_builtin is not UNSET:
165
195
  field_dict["is_builtin"] = is_builtin
196
+ if is_prepaid is not UNSET:
197
+ field_dict["is_prepaid"] = is_prepaid
198
+ if overage_component is not UNSET:
199
+ field_dict["overage_component"] = overage_component
200
+ if min_prepaid_duration is not UNSET:
201
+ field_dict["min_prepaid_duration"] = min_prepaid_duration
202
+ if max_prepaid_duration is not UNSET:
203
+ field_dict["max_prepaid_duration"] = max_prepaid_duration
166
204
 
167
205
  return field_dict
168
206
 
@@ -278,6 +316,43 @@ class OfferingComponent:
278
316
 
279
317
  is_builtin = d.pop("is_builtin", UNSET)
280
318
 
319
+ is_prepaid = d.pop("is_prepaid", UNSET)
320
+
321
+ def _parse_overage_component(data: object) -> Union[None, UUID, Unset]:
322
+ if data is None:
323
+ return data
324
+ if isinstance(data, Unset):
325
+ return data
326
+ try:
327
+ if not isinstance(data, str):
328
+ raise TypeError()
329
+ overage_component_type_0 = UUID(data)
330
+
331
+ return overage_component_type_0
332
+ except: # noqa: E722
333
+ pass
334
+ return cast(Union[None, UUID, Unset], data)
335
+
336
+ overage_component = _parse_overage_component(d.pop("overage_component", UNSET))
337
+
338
+ def _parse_min_prepaid_duration(data: object) -> Union[None, Unset, int]:
339
+ if data is None:
340
+ return data
341
+ if isinstance(data, Unset):
342
+ return data
343
+ return cast(Union[None, Unset, int], data)
344
+
345
+ min_prepaid_duration = _parse_min_prepaid_duration(d.pop("min_prepaid_duration", UNSET))
346
+
347
+ def _parse_max_prepaid_duration(data: object) -> Union[None, Unset, int]:
348
+ if data is None:
349
+ return data
350
+ if isinstance(data, Unset):
351
+ return data
352
+ return cast(Union[None, Unset, int], data)
353
+
354
+ max_prepaid_duration = _parse_max_prepaid_duration(d.pop("max_prepaid_duration", UNSET))
355
+
281
356
  offering_component = cls(
282
357
  uuid=uuid,
283
358
  billing_type=billing_type,
@@ -296,6 +371,10 @@ class OfferingComponent:
296
371
  default_limit=default_limit,
297
372
  factor=factor,
298
373
  is_builtin=is_builtin,
374
+ is_prepaid=is_prepaid,
375
+ overage_component=overage_component,
376
+ min_prepaid_duration=min_prepaid_duration,
377
+ max_prepaid_duration=max_prepaid_duration,
299
378
  )
300
379
 
301
380
  offering_component.additional_properties = d
@@ -1,5 +1,6 @@
1
1
  from collections.abc import Mapping
2
2
  from typing import Any, TypeVar, Union, cast
3
+ from uuid import UUID
3
4
 
4
5
  from attrs import define as _attrs_define
5
6
  from attrs import field as _attrs_field
@@ -30,6 +31,10 @@ class OfferingComponentRequest:
30
31
  max_available_limit (Union[None, Unset, int]):
31
32
  is_boolean (Union[Unset, bool]):
32
33
  default_limit (Union[None, Unset, int]):
34
+ is_prepaid (Union[Unset, bool]):
35
+ overage_component (Union[None, UUID, Unset]):
36
+ min_prepaid_duration (Union[None, Unset, int]):
37
+ max_prepaid_duration (Union[None, Unset, int]):
33
38
  """
34
39
 
35
40
  billing_type: BillingTypeEnum
@@ -46,6 +51,10 @@ class OfferingComponentRequest:
46
51
  max_available_limit: Union[None, Unset, int] = UNSET
47
52
  is_boolean: Union[Unset, bool] = UNSET
48
53
  default_limit: Union[None, Unset, int] = UNSET
54
+ is_prepaid: Union[Unset, bool] = UNSET
55
+ overage_component: Union[None, UUID, Unset] = UNSET
56
+ min_prepaid_duration: Union[None, Unset, int] = UNSET
57
+ max_prepaid_duration: Union[None, Unset, int] = UNSET
49
58
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
50
59
 
51
60
  def to_dict(self) -> dict[str, Any]:
@@ -105,6 +114,28 @@ class OfferingComponentRequest:
105
114
  else:
106
115
  default_limit = self.default_limit
107
116
 
117
+ is_prepaid = self.is_prepaid
118
+
119
+ overage_component: Union[None, Unset, str]
120
+ if isinstance(self.overage_component, Unset):
121
+ overage_component = UNSET
122
+ elif isinstance(self.overage_component, UUID):
123
+ overage_component = str(self.overage_component)
124
+ else:
125
+ overage_component = self.overage_component
126
+
127
+ min_prepaid_duration: Union[None, Unset, int]
128
+ if isinstance(self.min_prepaid_duration, Unset):
129
+ min_prepaid_duration = UNSET
130
+ else:
131
+ min_prepaid_duration = self.min_prepaid_duration
132
+
133
+ max_prepaid_duration: Union[None, Unset, int]
134
+ if isinstance(self.max_prepaid_duration, Unset):
135
+ max_prepaid_duration = UNSET
136
+ else:
137
+ max_prepaid_duration = self.max_prepaid_duration
138
+
108
139
  field_dict: dict[str, Any] = {}
109
140
  field_dict.update(self.additional_properties)
110
141
  field_dict.update(
@@ -136,6 +167,14 @@ class OfferingComponentRequest:
136
167
  field_dict["is_boolean"] = is_boolean
137
168
  if default_limit is not UNSET:
138
169
  field_dict["default_limit"] = default_limit
170
+ if is_prepaid is not UNSET:
171
+ field_dict["is_prepaid"] = is_prepaid
172
+ if overage_component is not UNSET:
173
+ field_dict["overage_component"] = overage_component
174
+ if min_prepaid_duration is not UNSET:
175
+ field_dict["min_prepaid_duration"] = min_prepaid_duration
176
+ if max_prepaid_duration is not UNSET:
177
+ field_dict["max_prepaid_duration"] = max_prepaid_duration
139
178
 
140
179
  return field_dict
141
180
 
@@ -228,6 +267,43 @@ class OfferingComponentRequest:
228
267
 
229
268
  default_limit = _parse_default_limit(d.pop("default_limit", UNSET))
230
269
 
270
+ is_prepaid = d.pop("is_prepaid", UNSET)
271
+
272
+ def _parse_overage_component(data: object) -> Union[None, UUID, Unset]:
273
+ if data is None:
274
+ return data
275
+ if isinstance(data, Unset):
276
+ return data
277
+ try:
278
+ if not isinstance(data, str):
279
+ raise TypeError()
280
+ overage_component_type_0 = UUID(data)
281
+
282
+ return overage_component_type_0
283
+ except: # noqa: E722
284
+ pass
285
+ return cast(Union[None, UUID, Unset], data)
286
+
287
+ overage_component = _parse_overage_component(d.pop("overage_component", UNSET))
288
+
289
+ def _parse_min_prepaid_duration(data: object) -> Union[None, Unset, int]:
290
+ if data is None:
291
+ return data
292
+ if isinstance(data, Unset):
293
+ return data
294
+ return cast(Union[None, Unset, int], data)
295
+
296
+ min_prepaid_duration = _parse_min_prepaid_duration(d.pop("min_prepaid_duration", UNSET))
297
+
298
+ def _parse_max_prepaid_duration(data: object) -> Union[None, Unset, int]:
299
+ if data is None:
300
+ return data
301
+ if isinstance(data, Unset):
302
+ return data
303
+ return cast(Union[None, Unset, int], data)
304
+
305
+ max_prepaid_duration = _parse_max_prepaid_duration(d.pop("max_prepaid_duration", UNSET))
306
+
231
307
  offering_component_request = cls(
232
308
  billing_type=billing_type,
233
309
  type_=type_,
@@ -243,6 +319,10 @@ class OfferingComponentRequest:
243
319
  max_available_limit=max_available_limit,
244
320
  is_boolean=is_boolean,
245
321
  default_limit=default_limit,
322
+ is_prepaid=is_prepaid,
323
+ overage_component=overage_component,
324
+ min_prepaid_duration=min_prepaid_duration,
325
+ max_prepaid_duration=max_prepaid_duration,
246
326
  )
247
327
 
248
328
  offering_component_request.additional_properties = d
@@ -0,0 +1,88 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="OnboardingCompanyValidationRequestRequest")
10
+
11
+
12
+ @_attrs_define
13
+ class OnboardingCompanyValidationRequestRequest:
14
+ """
15
+ Attributes:
16
+ country (str): ISO country code (e.g., 'EE' for Estonia)
17
+ legal_person_identifier (str): Official company registration code
18
+ legal_name (Union[Unset, str]): Company name (optional, for reference)
19
+ user_submitted_customer_metadata (Union[Unset, Any]): Optional customer metadata for manual verification cases.
20
+ Should contain valid Customer model fields.
21
+ """
22
+
23
+ country: str
24
+ legal_person_identifier: str
25
+ legal_name: Union[Unset, str] = UNSET
26
+ user_submitted_customer_metadata: Union[Unset, Any] = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ country = self.country
31
+
32
+ legal_person_identifier = self.legal_person_identifier
33
+
34
+ legal_name = self.legal_name
35
+
36
+ user_submitted_customer_metadata = self.user_submitted_customer_metadata
37
+
38
+ field_dict: dict[str, Any] = {}
39
+ field_dict.update(self.additional_properties)
40
+ field_dict.update(
41
+ {
42
+ "country": country,
43
+ "legal_person_identifier": legal_person_identifier,
44
+ }
45
+ )
46
+ if legal_name is not UNSET:
47
+ field_dict["legal_name"] = legal_name
48
+ if user_submitted_customer_metadata is not UNSET:
49
+ field_dict["user_submitted_customer_metadata"] = user_submitted_customer_metadata
50
+
51
+ return field_dict
52
+
53
+ @classmethod
54
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
55
+ d = dict(src_dict)
56
+ country = d.pop("country")
57
+
58
+ legal_person_identifier = d.pop("legal_person_identifier")
59
+
60
+ legal_name = d.pop("legal_name", UNSET)
61
+
62
+ user_submitted_customer_metadata = d.pop("user_submitted_customer_metadata", UNSET)
63
+
64
+ onboarding_company_validation_request_request = cls(
65
+ country=country,
66
+ legal_person_identifier=legal_person_identifier,
67
+ legal_name=legal_name,
68
+ user_submitted_customer_metadata=user_submitted_customer_metadata,
69
+ )
70
+
71
+ onboarding_company_validation_request_request.additional_properties = d
72
+ return onboarding_company_validation_request_request
73
+
74
+ @property
75
+ def additional_keys(self) -> list[str]:
76
+ return list(self.additional_properties.keys())
77
+
78
+ def __getitem__(self, key: str) -> Any:
79
+ return self.additional_properties[key]
80
+
81
+ def __setitem__(self, key: str, value: Any) -> None:
82
+ self.additional_properties[key] = value
83
+
84
+ def __delitem__(self, key: str) -> None:
85
+ del self.additional_properties[key]
86
+
87
+ def __contains__(self, key: str) -> bool:
88
+ return key in self.additional_properties