waldur-api-client 7.7.9__py3-none-any.whl → 7.8.0__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 (70) hide show
  1. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_count.py +15 -0
  2. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_list.py +15 -0
  3. waldur_api_client/api/{rancher_clusters/rancher_clusters_destroy.py → marketplace_orders/marketplace_orders_delete_attachment.py} +6 -4
  4. waldur_api_client/api/{rancher_clusters/rancher_clusters_create.py → marketplace_orders/marketplace_orders_update_attachment.py} +47 -29
  5. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_component_stats_list.py +15 -0
  6. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_costs_list.py +15 -0
  7. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_count.py +15 -0
  8. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_customers_list.py +15 -0
  9. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_count.py +15 -0
  10. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_list.py +15 -0
  11. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_list.py +15 -0
  12. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_count.py +15 -0
  13. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_list.py +15 -0
  14. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_offerings_list.py +15 -0
  15. waldur_api_client/models/__init__.py +8 -4
  16. waldur_api_client/models/booking_offerings_list_field_item.py +1 -0
  17. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -0
  18. waldur_api_client/models/country_enum.py +211 -0
  19. waldur_api_client/models/customer_request.py +9 -0
  20. waldur_api_client/models/deployment_mode_enum.py +9 -0
  21. waldur_api_client/models/identity_provider.py +57 -0
  22. waldur_api_client/models/identity_provider_request.py +57 -0
  23. waldur_api_client/models/issue.py +8 -17
  24. waldur_api_client/models/issue_request.py +8 -17
  25. waldur_api_client/models/issue_type_enum.py +4 -4
  26. waldur_api_client/models/marketplace_offering_users_list_field_item.py +2 -0
  27. waldur_api_client/models/marketplace_offering_users_retrieve_field_item.py +2 -0
  28. waldur_api_client/models/marketplace_orders_list_field_item.py +2 -0
  29. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +2 -0
  30. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -0
  31. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -0
  32. waldur_api_client/models/merged_plugin_options.py +27 -0
  33. waldur_api_client/models/merged_plugin_options_request.py +27 -0
  34. waldur_api_client/models/offering.py +9 -0
  35. waldur_api_client/models/offering_create.py +9 -8
  36. waldur_api_client/models/offering_create_request.py +9 -0
  37. waldur_api_client/models/offering_overview_update_request.py +9 -0
  38. waldur_api_client/models/offering_terms_of_service.py +42 -1
  39. waldur_api_client/models/offering_user.py +18 -0
  40. waldur_api_client/models/open_stack_tenant_create_order_attributes.py +0 -18
  41. waldur_api_client/models/open_stack_tenant_request.py +18 -0
  42. waldur_api_client/models/order_attachment.py +71 -0
  43. waldur_api_client/models/order_attachment_request.py +84 -0
  44. waldur_api_client/models/order_create.py +58 -16
  45. waldur_api_client/models/order_create_request.py +44 -62
  46. waldur_api_client/models/order_details.py +65 -16
  47. waldur_api_client/models/patched_customer_request.py +9 -0
  48. waldur_api_client/models/patched_identity_provider_request.py +58 -0
  49. waldur_api_client/models/patched_project_request.py +9 -0
  50. waldur_api_client/models/patched_protected_call_request.py +9 -0
  51. waldur_api_client/models/patched_protected_round_request.py +2 -2
  52. waldur_api_client/models/patched_service_provider_request.py +9 -0
  53. waldur_api_client/models/patched_user_request.py +9 -0
  54. waldur_api_client/models/project_request.py +9 -0
  55. waldur_api_client/models/protected_call_request.py +9 -0
  56. waldur_api_client/models/protected_round.py +2 -2
  57. waldur_api_client/models/protected_round_request.py +2 -2
  58. waldur_api_client/models/provider_offering_details_request.py +9 -0
  59. waldur_api_client/models/public_offering_details.py +9 -0
  60. waldur_api_client/models/rancher_cluster_request.py +1 -48
  61. waldur_api_client/models/resource_update_limits_request.py +56 -1
  62. waldur_api_client/models/service_provider_request.py +9 -0
  63. waldur_api_client/models/user_consent_info.py +86 -0
  64. waldur_api_client/models/user_request.py +9 -0
  65. {waldur_api_client-7.7.9.dist-info → waldur_api_client-7.8.0.dist-info}/METADATA +4 -2
  66. {waldur_api_client-7.7.9.dist-info → waldur_api_client-7.8.0.dist-info}/RECORD +68 -66
  67. {waldur_api_client-7.7.9.dist-info → waldur_api_client-7.8.0.dist-info}/WHEEL +1 -1
  68. waldur_api_client/models/marketplace_managed_rancher_create_order_attributes.py +0 -144
  69. waldur_api_client/models/marketplace_rancher_create_order_attributes.py +0 -145
  70. {waldur_api_client-7.7.9.dist-info → waldur_api_client-7.8.0.dist-info/licenses}/LICENSE +0 -0
@@ -36,7 +36,7 @@ class ProtectedRound:
36
36
  allocation_time (Union[Unset, AllocationTimeEnum]):
37
37
  allocation_date (Union[None, Unset, datetime.datetime]):
38
38
  minimal_average_scoring (Union[None, Unset, str]):
39
- review_duration_in_days (Union[Unset, int]): Default: 7.
39
+ review_duration_in_days (Union[Unset, int]):
40
40
  minimum_number_of_reviewers (Union[None, Unset, int]):
41
41
  """
42
42
 
@@ -52,7 +52,7 @@ class ProtectedRound:
52
52
  allocation_time: Union[Unset, AllocationTimeEnum] = UNSET
53
53
  allocation_date: Union[None, Unset, datetime.datetime] = UNSET
54
54
  minimal_average_scoring: Union[None, Unset, str] = UNSET
55
- review_duration_in_days: Union[Unset, int] = 7
55
+ review_duration_in_days: Union[Unset, int] = UNSET
56
56
  minimum_number_of_reviewers: Union[None, Unset, int] = UNSET
57
57
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
58
58
 
@@ -25,7 +25,7 @@ class ProtectedRoundRequest:
25
25
  allocation_time (Union[Unset, AllocationTimeEnum]):
26
26
  allocation_date (Union[None, Unset, datetime.datetime]):
27
27
  minimal_average_scoring (Union[None, Unset, str]):
28
- review_duration_in_days (Union[Unset, int]): Default: 7.
28
+ review_duration_in_days (Union[Unset, int]):
29
29
  minimum_number_of_reviewers (Union[None, Unset, int]):
30
30
  """
31
31
 
@@ -36,7 +36,7 @@ class ProtectedRoundRequest:
36
36
  allocation_time: Union[Unset, AllocationTimeEnum] = UNSET
37
37
  allocation_date: Union[None, Unset, datetime.datetime] = UNSET
38
38
  minimal_average_scoring: Union[None, Unset, str] = UNSET
39
- review_duration_in_days: Union[Unset, int] = 7
39
+ review_duration_in_days: Union[Unset, int] = UNSET
40
40
  minimum_number_of_reviewers: Union[None, Unset, int] = UNSET
41
41
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
42
42
 
@@ -25,6 +25,7 @@ class ProviderOfferingDetailsRequest:
25
25
  name (str):
26
26
  category (str):
27
27
  type_ (str):
28
+ slug (Union[Unset, str]):
28
29
  description (Union[Unset, str]):
29
30
  full_description (Union[Unset, str]):
30
31
  privacy_policy_link (Union[Unset, str]):
@@ -51,6 +52,7 @@ class ProviderOfferingDetailsRequest:
51
52
  name: str
52
53
  category: str
53
54
  type_: str
55
+ slug: Union[Unset, str] = UNSET
54
56
  description: Union[Unset, str] = UNSET
55
57
  full_description: Union[Unset, str] = UNSET
56
58
  privacy_policy_link: Union[Unset, str] = UNSET
@@ -81,6 +83,8 @@ class ProviderOfferingDetailsRequest:
81
83
 
82
84
  type_ = self.type_
83
85
 
86
+ slug = self.slug
87
+
84
88
  description = self.description
85
89
 
86
90
  full_description = self.full_description
@@ -174,6 +178,8 @@ class ProviderOfferingDetailsRequest:
174
178
  "type": type_,
175
179
  }
176
180
  )
181
+ if slug is not UNSET:
182
+ field_dict["slug"] = slug
177
183
  if description is not UNSET:
178
184
  field_dict["description"] = description
179
185
  if full_description is not UNSET:
@@ -231,6 +237,8 @@ class ProviderOfferingDetailsRequest:
231
237
 
232
238
  type_ = d.pop("type")
233
239
 
240
+ slug = d.pop("slug", UNSET)
241
+
234
242
  description = d.pop("description", UNSET)
235
243
 
236
244
  full_description = d.pop("full_description", UNSET)
@@ -355,6 +363,7 @@ class ProviderOfferingDetailsRequest:
355
363
  name=name,
356
364
  category=category,
357
365
  type_=type_,
366
+ slug=slug,
358
367
  description=description,
359
368
  full_description=full_description,
360
369
  privacy_policy_link=privacy_policy_link,
@@ -95,6 +95,7 @@ class PublicOfferingDetails:
95
95
  parent_name (Union[None, Unset, str]):
96
96
  backend_metadata (Union[Unset, Any]):
97
97
  has_compliance_requirements (Union[Unset, bool]):
98
+ user_has_consent (Union[Unset, bool]):
98
99
  google_calendar_is_public (Union[None, Unset, bool]):
99
100
  google_calendar_link (Union[None, Unset, str]): Get the Google Calendar link for an offering.
100
101
  promotion_campaigns (Union[Unset, list['NestedCampaign']]):
@@ -160,6 +161,7 @@ class PublicOfferingDetails:
160
161
  parent_name: Union[None, Unset, str] = UNSET
161
162
  backend_metadata: Union[Unset, Any] = UNSET
162
163
  has_compliance_requirements: Union[Unset, bool] = UNSET
164
+ user_has_consent: Union[Unset, bool] = UNSET
163
165
  google_calendar_is_public: Union[None, Unset, bool] = UNSET
164
166
  google_calendar_link: Union[None, Unset, str] = UNSET
165
167
  promotion_campaigns: Union[Unset, list["NestedCampaign"]] = UNSET
@@ -440,6 +442,8 @@ class PublicOfferingDetails:
440
442
 
441
443
  has_compliance_requirements = self.has_compliance_requirements
442
444
 
445
+ user_has_consent = self.user_has_consent
446
+
443
447
  google_calendar_is_public: Union[None, Unset, bool]
444
448
  if isinstance(self.google_calendar_is_public, Unset):
445
449
  google_calendar_is_public = UNSET
@@ -582,6 +586,8 @@ class PublicOfferingDetails:
582
586
  field_dict["backend_metadata"] = backend_metadata
583
587
  if has_compliance_requirements is not UNSET:
584
588
  field_dict["has_compliance_requirements"] = has_compliance_requirements
589
+ if user_has_consent is not UNSET:
590
+ field_dict["user_has_consent"] = user_has_consent
585
591
  if google_calendar_is_public is not UNSET:
586
592
  field_dict["google_calendar_is_public"] = google_calendar_is_public
587
593
  if google_calendar_link is not UNSET:
@@ -1012,6 +1018,8 @@ class PublicOfferingDetails:
1012
1018
 
1013
1019
  has_compliance_requirements = d.pop("has_compliance_requirements", UNSET)
1014
1020
 
1021
+ user_has_consent = d.pop("user_has_consent", UNSET)
1022
+
1015
1023
  def _parse_google_calendar_is_public(data: object) -> Union[None, Unset, bool]:
1016
1024
  if data is None:
1017
1025
  return data
@@ -1098,6 +1106,7 @@ class PublicOfferingDetails:
1098
1106
  parent_name=parent_name,
1099
1107
  backend_metadata=backend_metadata,
1100
1108
  has_compliance_requirements=has_compliance_requirements,
1109
+ user_has_consent=user_has_consent,
1101
1110
  google_calendar_is_public=google_calendar_is_public,
1102
1111
  google_calendar_link=google_calendar_link,
1103
1112
  promotion_campaigns=promotion_campaigns,
@@ -1,15 +1,11 @@
1
1
  from collections.abc import Mapping
2
- from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
2
+ from typing import Any, TypeVar, Union, cast
3
3
 
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
6
6
 
7
7
  from ..types import UNSET, Unset
8
8
 
9
- if TYPE_CHECKING:
10
- from ..models.rancher_nested_node_request import RancherNestedNodeRequest
11
-
12
-
13
9
  T = TypeVar("T", bound="RancherClusterRequest")
14
10
 
15
11
 
@@ -18,11 +14,7 @@ class RancherClusterRequest:
18
14
  """
19
15
  Attributes:
20
16
  name (str):
21
- service_settings (str):
22
- project (str):
23
- nodes (list['RancherNestedNodeRequest']):
24
17
  description (Union[Unset, str]):
25
- tenant (Union[Unset, str]):
26
18
  vm_project (Union[None, Unset, str]):
27
19
  ssh_public_key (Union[Unset, str]):
28
20
  install_longhorn (Union[Unset, bool]): Longhorn is a distributed block storage deployed on top of Kubernetes
@@ -30,11 +22,7 @@ class RancherClusterRequest:
30
22
  """
31
23
 
32
24
  name: str
33
- service_settings: str
34
- project: str
35
- nodes: list["RancherNestedNodeRequest"]
36
25
  description: Union[Unset, str] = UNSET
37
- tenant: Union[Unset, str] = UNSET
38
26
  vm_project: Union[None, Unset, str] = UNSET
39
27
  ssh_public_key: Union[Unset, str] = UNSET
40
28
  install_longhorn: Union[Unset, bool] = False
@@ -43,19 +31,8 @@ class RancherClusterRequest:
43
31
  def to_dict(self) -> dict[str, Any]:
44
32
  name = self.name
45
33
 
46
- service_settings = self.service_settings
47
-
48
- project = self.project
49
-
50
- nodes = []
51
- for nodes_item_data in self.nodes:
52
- nodes_item = nodes_item_data.to_dict()
53
- nodes.append(nodes_item)
54
-
55
34
  description = self.description
56
35
 
57
- tenant = self.tenant
58
-
59
36
  vm_project: Union[None, Unset, str]
60
37
  if isinstance(self.vm_project, Unset):
61
38
  vm_project = UNSET
@@ -71,15 +48,10 @@ class RancherClusterRequest:
71
48
  field_dict.update(
72
49
  {
73
50
  "name": name,
74
- "service_settings": service_settings,
75
- "project": project,
76
- "nodes": nodes,
77
51
  }
78
52
  )
79
53
  if description is not UNSET:
80
54
  field_dict["description"] = description
81
- if tenant is not UNSET:
82
- field_dict["tenant"] = tenant
83
55
  if vm_project is not UNSET:
84
56
  field_dict["vm_project"] = vm_project
85
57
  if ssh_public_key is not UNSET:
@@ -91,26 +63,11 @@ class RancherClusterRequest:
91
63
 
92
64
  @classmethod
93
65
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
94
- from ..models.rancher_nested_node_request import RancherNestedNodeRequest
95
-
96
66
  d = dict(src_dict)
97
67
  name = d.pop("name")
98
68
 
99
- service_settings = d.pop("service_settings")
100
-
101
- project = d.pop("project")
102
-
103
- nodes = []
104
- _nodes = d.pop("nodes")
105
- for nodes_item_data in _nodes:
106
- nodes_item = RancherNestedNodeRequest.from_dict(nodes_item_data)
107
-
108
- nodes.append(nodes_item)
109
-
110
69
  description = d.pop("description", UNSET)
111
70
 
112
- tenant = d.pop("tenant", UNSET)
113
-
114
71
  def _parse_vm_project(data: object) -> Union[None, Unset, str]:
115
72
  if data is None:
116
73
  return data
@@ -126,11 +83,7 @@ class RancherClusterRequest:
126
83
 
127
84
  rancher_cluster_request = cls(
128
85
  name=name,
129
- service_settings=service_settings,
130
- project=project,
131
- nodes=nodes,
132
86
  description=description,
133
- tenant=tenant,
134
87
  vm_project=vm_project,
135
88
  ssh_public_key=ssh_public_key,
136
89
  install_longhorn=install_longhorn,
@@ -1,9 +1,13 @@
1
1
  from collections.abc import Mapping
2
- from typing import TYPE_CHECKING, Any, TypeVar
2
+ from io import BytesIO
3
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
4
 
4
5
  from attrs import define as _attrs_define
5
6
  from attrs import field as _attrs_field
6
7
 
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
7
11
  if TYPE_CHECKING:
8
12
  from ..models.resource_update_limits_request_limits import ResourceUpdateLimitsRequestLimits
9
13
 
@@ -16,14 +20,33 @@ class ResourceUpdateLimitsRequest:
16
20
  """
17
21
  Attributes:
18
22
  limits (ResourceUpdateLimitsRequestLimits):
23
+ request_comment (Union[None, Unset, str]):
24
+ attachment (Union[File, None, Unset]):
19
25
  """
20
26
 
21
27
  limits: "ResourceUpdateLimitsRequestLimits"
28
+ request_comment: Union[None, Unset, str] = UNSET
29
+ attachment: Union[File, None, Unset] = UNSET
22
30
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
31
 
24
32
  def to_dict(self) -> dict[str, Any]:
25
33
  limits = self.limits.to_dict()
26
34
 
35
+ request_comment: Union[None, Unset, str]
36
+ if isinstance(self.request_comment, Unset):
37
+ request_comment = UNSET
38
+ else:
39
+ request_comment = self.request_comment
40
+
41
+ attachment: Union[None, Unset, types.FileTypes]
42
+ if isinstance(self.attachment, Unset):
43
+ attachment = UNSET
44
+ elif isinstance(self.attachment, File):
45
+ attachment = self.attachment.to_tuple()
46
+
47
+ else:
48
+ attachment = self.attachment
49
+
27
50
  field_dict: dict[str, Any] = {}
28
51
  field_dict.update(self.additional_properties)
29
52
  field_dict.update(
@@ -31,6 +54,10 @@ class ResourceUpdateLimitsRequest:
31
54
  "limits": limits,
32
55
  }
33
56
  )
57
+ if request_comment is not UNSET:
58
+ field_dict["request_comment"] = request_comment
59
+ if attachment is not UNSET:
60
+ field_dict["attachment"] = attachment
34
61
 
35
62
  return field_dict
36
63
 
@@ -41,8 +68,36 @@ class ResourceUpdateLimitsRequest:
41
68
  d = dict(src_dict)
42
69
  limits = ResourceUpdateLimitsRequestLimits.from_dict(d.pop("limits"))
43
70
 
71
+ def _parse_request_comment(data: object) -> Union[None, Unset, str]:
72
+ if data is None:
73
+ return data
74
+ if isinstance(data, Unset):
75
+ return data
76
+ return cast(Union[None, Unset, str], data)
77
+
78
+ request_comment = _parse_request_comment(d.pop("request_comment", UNSET))
79
+
80
+ def _parse_attachment(data: object) -> Union[File, None, Unset]:
81
+ if data is None:
82
+ return data
83
+ if isinstance(data, Unset):
84
+ return data
85
+ try:
86
+ if not isinstance(data, bytes):
87
+ raise TypeError()
88
+ attachment_type_0 = File(payload=BytesIO(data))
89
+
90
+ return attachment_type_0
91
+ except: # noqa: E722
92
+ pass
93
+ return cast(Union[File, None, Unset], data)
94
+
95
+ attachment = _parse_attachment(d.pop("attachment", UNSET))
96
+
44
97
  resource_update_limits_request = cls(
45
98
  limits=limits,
99
+ request_comment=request_comment,
100
+ attachment=attachment,
46
101
  )
47
102
 
48
103
  resource_update_limits_request.additional_properties = d
@@ -17,11 +17,13 @@ class ServiceProviderRequest:
17
17
  Attributes:
18
18
  customer (str):
19
19
  description (Union[Unset, str]):
20
+ enable_notifications (Union[Unset, bool]):
20
21
  image (Union[File, None, Unset]):
21
22
  """
22
23
 
23
24
  customer: str
24
25
  description: Union[Unset, str] = UNSET
26
+ enable_notifications: Union[Unset, bool] = UNSET
25
27
  image: Union[File, None, Unset] = UNSET
26
28
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
29
 
@@ -30,6 +32,8 @@ class ServiceProviderRequest:
30
32
 
31
33
  description = self.description
32
34
 
35
+ enable_notifications = self.enable_notifications
36
+
33
37
  image: Union[None, Unset, types.FileTypes]
34
38
  if isinstance(self.image, Unset):
35
39
  image = UNSET
@@ -48,6 +52,8 @@ class ServiceProviderRequest:
48
52
  )
49
53
  if description is not UNSET:
50
54
  field_dict["description"] = description
55
+ if enable_notifications is not UNSET:
56
+ field_dict["enable_notifications"] = enable_notifications
51
57
  if image is not UNSET:
52
58
  field_dict["image"] = image
53
59
 
@@ -60,6 +66,8 @@ class ServiceProviderRequest:
60
66
 
61
67
  description = d.pop("description", UNSET)
62
68
 
69
+ enable_notifications = d.pop("enable_notifications", UNSET)
70
+
63
71
  def _parse_image(data: object) -> Union[File, None, Unset]:
64
72
  if data is None:
65
73
  return data
@@ -80,6 +88,7 @@ class ServiceProviderRequest:
80
88
  service_provider_request = cls(
81
89
  customer=customer,
82
90
  description=description,
91
+ enable_notifications=enable_notifications,
83
92
  image=image,
84
93
  )
85
94
 
@@ -0,0 +1,86 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import Any, TypeVar
4
+ from uuid import UUID
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ T = TypeVar("T", bound="UserConsentInfo")
11
+
12
+
13
+ @_attrs_define
14
+ class UserConsentInfo:
15
+ """
16
+ Attributes:
17
+ uuid (UUID):
18
+ version (str):
19
+ agreement_date (datetime.datetime):
20
+ is_revoked (bool):
21
+ """
22
+
23
+ uuid: UUID
24
+ version: str
25
+ agreement_date: datetime.datetime
26
+ is_revoked: bool
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ uuid = str(self.uuid)
31
+
32
+ version = self.version
33
+
34
+ agreement_date = self.agreement_date.isoformat()
35
+
36
+ is_revoked = self.is_revoked
37
+
38
+ field_dict: dict[str, Any] = {}
39
+ field_dict.update(self.additional_properties)
40
+ field_dict.update(
41
+ {
42
+ "uuid": uuid,
43
+ "version": version,
44
+ "agreement_date": agreement_date,
45
+ "is_revoked": is_revoked,
46
+ }
47
+ )
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
53
+ d = dict(src_dict)
54
+ uuid = UUID(d.pop("uuid"))
55
+
56
+ version = d.pop("version")
57
+
58
+ agreement_date = isoparse(d.pop("agreement_date"))
59
+
60
+ is_revoked = d.pop("is_revoked")
61
+
62
+ user_consent_info = cls(
63
+ uuid=uuid,
64
+ version=version,
65
+ agreement_date=agreement_date,
66
+ is_revoked=is_revoked,
67
+ )
68
+
69
+ user_consent_info.additional_properties = d
70
+ return user_consent_info
71
+
72
+ @property
73
+ def additional_keys(self) -> list[str]:
74
+ return list(self.additional_properties.keys())
75
+
76
+ def __getitem__(self, key: str) -> Any:
77
+ return self.additional_properties[key]
78
+
79
+ def __setitem__(self, key: str, value: Any) -> None:
80
+ self.additional_properties[key] = value
81
+
82
+ def __delitem__(self, key: str) -> None:
83
+ del self.additional_properties[key]
84
+
85
+ def __contains__(self, key: str) -> bool:
86
+ return key in self.additional_properties
@@ -17,6 +17,7 @@ class UserRequest:
17
17
  Attributes:
18
18
  username (str): Required. 128 characters or fewer. Lowercase letters, numbers and @/./+/-/_ characters
19
19
  email (str):
20
+ slug (Union[Unset, str]):
20
21
  native_name (Union[Unset, str]):
21
22
  job_title (Union[Unset, str]):
22
23
  phone_number (Union[Unset, str]):
@@ -38,6 +39,7 @@ class UserRequest:
38
39
 
39
40
  username: str
40
41
  email: str
42
+ slug: Union[Unset, str] = UNSET
41
43
  native_name: Union[Unset, str] = UNSET
42
44
  job_title: Union[Unset, str] = UNSET
43
45
  phone_number: Union[Unset, str] = UNSET
@@ -60,6 +62,8 @@ class UserRequest:
60
62
 
61
63
  email = self.email
62
64
 
65
+ slug = self.slug
66
+
63
67
  native_name = self.native_name
64
68
 
65
69
  job_title = self.job_title
@@ -109,6 +113,8 @@ class UserRequest:
109
113
  "email": email,
110
114
  }
111
115
  )
116
+ if slug is not UNSET:
117
+ field_dict["slug"] = slug
112
118
  if native_name is not UNSET:
113
119
  field_dict["native_name"] = native_name
114
120
  if job_title is not UNSET:
@@ -149,6 +155,8 @@ class UserRequest:
149
155
 
150
156
  email = d.pop("email")
151
157
 
158
+ slug = d.pop("slug", UNSET)
159
+
152
160
  native_name = d.pop("native_name", UNSET)
153
161
 
154
162
  job_title = d.pop("job_title", UNSET)
@@ -204,6 +212,7 @@ class UserRequest:
204
212
  user_request = cls(
205
213
  username=username,
206
214
  email=email,
215
+ slug=slug,
207
216
  native_name=native_name,
208
217
  job_title=job_title,
209
218
  phone_number=phone_number,
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: waldur-api-client
3
- Version: 7.7.9
3
+ Version: 7.8.0
4
4
  Summary: A client library for accessing Waldur API
5
5
  License: MIT
6
+ License-File: LICENSE
6
7
  Author: OpenNode Team
7
8
  Author-email: info@opennodecloud.com
8
9
  Requires-Python: >=3.9,<4.0
@@ -13,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.10
13
14
  Classifier: Programming Language :: Python :: 3.11
14
15
  Classifier: Programming Language :: Python :: 3.12
15
16
  Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
16
18
  Requires-Dist: attrs (>=22.2.0)
17
19
  Requires-Dist: httpx (>=0.20.0,<0.29.0)
18
20
  Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)