waldur-api-client 7.7.7__py3-none-any.whl → 7.7.9__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 (140) hide show
  1. waldur_api_client/api/customer_permissions_reviews/customer_permissions_reviews_count.py +19 -0
  2. waldur_api_client/api/customer_permissions_reviews/customer_permissions_reviews_list.py +19 -0
  3. waldur_api_client/api/customers/customers_users_list.py +141 -53
  4. waldur_api_client/api/invoices/invoices_items_retrieve.py +20 -0
  5. waldur_api_client/api/managed_rancher_cluster_resources/__init__.py +1 -0
  6. waldur_api_client/api/managed_rancher_cluster_resources/managed_rancher_cluster_resources_add_node.py +162 -0
  7. waldur_api_client/api/managed_rancher_cluster_resources/managed_rancher_cluster_resources_count.py +172 -0
  8. waldur_api_client/api/managed_rancher_cluster_resources/managed_rancher_cluster_resources_list.py +196 -0
  9. waldur_api_client/api/managed_rancher_cluster_resources/managed_rancher_cluster_resources_retrieve.py +171 -0
  10. waldur_api_client/api/marketplace_course_accounts/__init__.py +1 -0
  11. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_count.py +244 -0
  12. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_create.py +148 -0
  13. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_create_bulk.py +152 -0
  14. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_destroy.py +89 -0
  15. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_list.py +245 -0
  16. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_retrieve.py +140 -0
  17. waldur_api_client/api/marketplace_customer_service_accounts/marketplace_customer_service_accounts_count.py +25 -0
  18. waldur_api_client/api/marketplace_customer_service_accounts/marketplace_customer_service_accounts_list.py +25 -0
  19. waldur_api_client/api/marketplace_project_service_accounts/marketplace_project_service_accounts_count.py +25 -0
  20. waldur_api_client/api/marketplace_project_service_accounts/marketplace_project_service_accounts_list.py +25 -0
  21. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_component_stats_list.py +30 -0
  22. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_costs_list.py +30 -0
  23. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_count.py +30 -0
  24. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_customers_list.py +30 -0
  25. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_count.py +30 -0
  26. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_groups_list.py +30 -0
  27. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_list.py +30 -0
  28. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_count.py +30 -0
  29. waldur_api_client/api/marketplace_public_offerings/marketplace_public_offerings_list.py +30 -0
  30. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_course_accounts_list.py +284 -0
  31. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_offerings_list.py +30 -0
  32. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_project_service_accounts_list.py +29 -0
  33. waldur_api_client/api/project_permissions_reviews/__init__.py +1 -0
  34. waldur_api_client/api/project_permissions_reviews/project_permissions_reviews_close.py +91 -0
  35. waldur_api_client/api/project_permissions_reviews/project_permissions_reviews_count.py +266 -0
  36. waldur_api_client/api/project_permissions_reviews/project_permissions_reviews_list.py +269 -0
  37. waldur_api_client/api/project_permissions_reviews/project_permissions_reviews_retrieve.py +142 -0
  38. waldur_api_client/api/projects/projects_other_users_list.py +98 -23
  39. waldur_api_client/api/projects/projects_sync_user_roles.py +10 -9
  40. waldur_api_client/api/support_issue_statuses/__init__.py +1 -0
  41. waldur_api_client/api/support_issue_statuses/support_issue_statuses_count.py +172 -0
  42. waldur_api_client/api/support_issue_statuses/support_issue_statuses_create.py +148 -0
  43. waldur_api_client/api/support_issue_statuses/support_issue_statuses_destroy.py +89 -0
  44. waldur_api_client/api/support_issue_statuses/support_issue_statuses_list.py +173 -0
  45. waldur_api_client/api/support_issue_statuses/support_issue_statuses_partial_update.py +162 -0
  46. waldur_api_client/api/support_issue_statuses/support_issue_statuses_retrieve.py +140 -0
  47. waldur_api_client/api/support_issue_statuses/support_issue_statuses_update.py +162 -0
  48. waldur_api_client/api/user_group_invitations/user_group_invitations_submit_request.py +12 -12
  49. waldur_api_client/api/user_invitations/user_invitations_count.py +30 -0
  50. waldur_api_client/api/user_invitations/user_invitations_list.py +30 -0
  51. waldur_api_client/api/user_permission_requests/user_permission_requests_cancel_request.py +146 -0
  52. waldur_api_client/models/__init__.py +76 -2
  53. waldur_api_client/models/cancel_request_response.py +75 -0
  54. waldur_api_client/models/constance_settings.py +18 -0
  55. waldur_api_client/models/constance_settings_request.py +18 -0
  56. waldur_api_client/models/course_account.py +187 -0
  57. waldur_api_client/models/course_account_create_nested.py +68 -0
  58. waldur_api_client/models/course_account_create_nested_request.py +68 -0
  59. waldur_api_client/models/course_account_request.py +80 -0
  60. waldur_api_client/models/course_accounts_bulk_create.py +82 -0
  61. waldur_api_client/models/course_accounts_bulk_create_request.py +82 -0
  62. waldur_api_client/models/customer.py +9 -0
  63. waldur_api_client/models/customer_permission_review.py +16 -16
  64. waldur_api_client/models/customer_request.py +9 -0
  65. waldur_api_client/models/customer_service_account.py +9 -0
  66. waldur_api_client/models/customers_list_field_item.py +1 -0
  67. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  68. waldur_api_client/models/customers_users_list_o.py +9 -0
  69. waldur_api_client/models/customers_users_list_organization_role_item_type_0.py +10 -0
  70. waldur_api_client/models/customers_users_list_project_role_item_type_0.py +10 -0
  71. waldur_api_client/models/dependency_logic_operator_enum.py +9 -0
  72. waldur_api_client/models/event_subscription.py +1 -1
  73. waldur_api_client/models/event_types_enum.py +4 -0
  74. waldur_api_client/models/group_invitation.py +9 -0
  75. waldur_api_client/models/invitation.py +9 -0
  76. waldur_api_client/models/invoices_items_retrieve_o.py +15 -0
  77. waldur_api_client/models/issue_status.py +103 -0
  78. waldur_api_client/models/issue_status_request.py +78 -0
  79. waldur_api_client/models/issue_status_type_enum.py +9 -0
  80. waldur_api_client/models/kind_enum.py +10 -0
  81. waldur_api_client/models/managed_rancher_cluster_resources_list_field_item.py +82 -0
  82. waldur_api_client/models/managed_rancher_cluster_resources_retrieve_field_item.py +82 -0
  83. waldur_api_client/models/managed_rancher_create_node_request.py +186 -0
  84. waldur_api_client/models/marketplace_course_accounts_count_state_item.py +10 -0
  85. waldur_api_client/models/marketplace_course_accounts_list_state_item.py +10 -0
  86. waldur_api_client/models/marketplace_customer_service_accounts_count_state_item.py +10 -0
  87. waldur_api_client/models/marketplace_customer_service_accounts_list_state_item.py +10 -0
  88. waldur_api_client/models/marketplace_project_service_accounts_count_state_item.py +10 -0
  89. waldur_api_client/models/marketplace_project_service_accounts_list_state_item.py +10 -0
  90. waldur_api_client/models/marketplace_service_providers_course_accounts_list_state_item.py +10 -0
  91. waldur_api_client/models/marketplace_service_providers_project_service_accounts_list_state_item.py +10 -0
  92. waldur_api_client/models/marketplace_service_providers_projects_list_field_item.py +1 -0
  93. waldur_api_client/models/nested_security_group_rule.py +223 -0
  94. waldur_api_client/models/{open_stack_nested_security_group_rules_item.py → nested_security_group_rule_request.py} +67 -76
  95. waldur_api_client/models/open_stack_backup_restoration_request.py +0 -22
  96. waldur_api_client/models/open_stack_fixed_ip.py +13 -3
  97. waldur_api_client/models/open_stack_fixed_ip_request.py +7 -2
  98. waldur_api_client/models/open_stack_instance_create_order_attributes.py +20 -20
  99. waldur_api_client/models/open_stack_nested_security_group.py +16 -16
  100. waldur_api_client/models/open_stack_port_ip_update_request.py +6 -2
  101. waldur_api_client/models/open_stack_static_route.py +13 -4
  102. waldur_api_client/models/open_stack_static_route_request.py +7 -3
  103. waldur_api_client/models/open_stack_sub_net.py +15 -2
  104. waldur_api_client/models/open_stack_sub_net_allocation_pool.py +27 -8
  105. waldur_api_client/models/open_stack_sub_net_allocation_pool_request.py +14 -5
  106. waldur_api_client/models/open_stack_sub_net_request.py +15 -2
  107. waldur_api_client/models/patched_customer_request.py +9 -0
  108. waldur_api_client/models/patched_issue_status_request.py +76 -0
  109. waldur_api_client/models/patched_open_stack_sub_net_request.py +15 -2
  110. waldur_api_client/models/patched_project_request.py +17 -0
  111. waldur_api_client/models/patched_question_admin_request.py +17 -0
  112. waldur_api_client/models/patched_rancher_service_request.py +1 -1
  113. waldur_api_client/models/permission_request.py +16 -0
  114. waldur_api_client/models/project.py +17 -0
  115. waldur_api_client/models/project_permission_review.py +166 -0
  116. waldur_api_client/models/project_permissions_reviews_count_o_item.py +11 -0
  117. waldur_api_client/models/project_permissions_reviews_list_o_item.py +11 -0
  118. waldur_api_client/models/project_request.py +17 -0
  119. waldur_api_client/models/project_service_account.py +9 -0
  120. waldur_api_client/models/projects_list_field_item.py +1 -0
  121. waldur_api_client/models/projects_other_users_list_o.py +9 -0
  122. waldur_api_client/models/projects_retrieve_field_item.py +1 -0
  123. waldur_api_client/models/proposal.py +8 -0
  124. waldur_api_client/models/proposal_review.py +8 -0
  125. waldur_api_client/models/question_admin.py +17 -0
  126. waldur_api_client/models/question_admin_request.py +17 -0
  127. waldur_api_client/models/rancher_nested_public_ip.py +25 -7
  128. waldur_api_client/models/rancher_service.py +1 -1
  129. waldur_api_client/models/rancher_service_request.py +1 -1
  130. waldur_api_client/models/rmq_connection.py +8 -3
  131. waldur_api_client/models/rmq_subscription.py +7 -3
  132. waldur_api_client/models/robot_account.py +16 -16
  133. waldur_api_client/models/robot_account_details.py +16 -16
  134. waldur_api_client/models/service_account_state.py +10 -0
  135. waldur_api_client/models/submit_request_response.py +75 -0
  136. waldur_api_client/models/visible_invitation_details.py +9 -0
  137. {waldur_api_client-7.7.7.dist-info → waldur_api_client-7.7.9.dist-info}/METADATA +1 -1
  138. {waldur_api_client-7.7.7.dist-info → waldur_api_client-7.7.9.dist-info}/RECORD +140 -78
  139. {waldur_api_client-7.7.7.dist-info → waldur_api_client-7.7.9.dist-info}/LICENSE +0 -0
  140. {waldur_api_client-7.7.7.dist-info → waldur_api_client-7.7.9.dist-info}/WHEEL +0 -0
@@ -0,0 +1,187 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import Any, TypeVar, Union
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
+ from ..models.service_account_state import ServiceAccountState
11
+ from ..types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="CourseAccount")
14
+
15
+
16
+ @_attrs_define
17
+ class CourseAccount:
18
+ """
19
+ Attributes:
20
+ url (str):
21
+ uuid (UUID):
22
+ created (datetime.datetime):
23
+ modified (datetime.datetime):
24
+ project (UUID):
25
+ project_uuid (UUID):
26
+ project_name (str):
27
+ user_uuid (UUID):
28
+ username (str):
29
+ customer_uuid (UUID):
30
+ customer_name (str):
31
+ state (ServiceAccountState):
32
+ error_message (str):
33
+ error_traceback (str):
34
+ email (Union[Unset, str]):
35
+ description (Union[Unset, str]):
36
+ """
37
+
38
+ url: str
39
+ uuid: UUID
40
+ created: datetime.datetime
41
+ modified: datetime.datetime
42
+ project: UUID
43
+ project_uuid: UUID
44
+ project_name: str
45
+ user_uuid: UUID
46
+ username: str
47
+ customer_uuid: UUID
48
+ customer_name: str
49
+ state: ServiceAccountState
50
+ error_message: str
51
+ error_traceback: str
52
+ email: Union[Unset, str] = UNSET
53
+ description: Union[Unset, str] = UNSET
54
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
55
+
56
+ def to_dict(self) -> dict[str, Any]:
57
+ url = self.url
58
+
59
+ uuid = str(self.uuid)
60
+
61
+ created = self.created.isoformat()
62
+
63
+ modified = self.modified.isoformat()
64
+
65
+ project = str(self.project)
66
+
67
+ project_uuid = str(self.project_uuid)
68
+
69
+ project_name = self.project_name
70
+
71
+ user_uuid = str(self.user_uuid)
72
+
73
+ username = self.username
74
+
75
+ customer_uuid = str(self.customer_uuid)
76
+
77
+ customer_name = self.customer_name
78
+
79
+ state = self.state.value
80
+
81
+ error_message = self.error_message
82
+
83
+ error_traceback = self.error_traceback
84
+
85
+ email = self.email
86
+
87
+ description = self.description
88
+
89
+ field_dict: dict[str, Any] = {}
90
+ field_dict.update(self.additional_properties)
91
+ field_dict.update(
92
+ {
93
+ "url": url,
94
+ "uuid": uuid,
95
+ "created": created,
96
+ "modified": modified,
97
+ "project": project,
98
+ "project_uuid": project_uuid,
99
+ "project_name": project_name,
100
+ "user_uuid": user_uuid,
101
+ "username": username,
102
+ "customer_uuid": customer_uuid,
103
+ "customer_name": customer_name,
104
+ "state": state,
105
+ "error_message": error_message,
106
+ "error_traceback": error_traceback,
107
+ }
108
+ )
109
+ if email is not UNSET:
110
+ field_dict["email"] = email
111
+ if description is not UNSET:
112
+ field_dict["description"] = description
113
+
114
+ return field_dict
115
+
116
+ @classmethod
117
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
118
+ d = dict(src_dict)
119
+ url = d.pop("url")
120
+
121
+ uuid = UUID(d.pop("uuid"))
122
+
123
+ created = isoparse(d.pop("created"))
124
+
125
+ modified = isoparse(d.pop("modified"))
126
+
127
+ project = UUID(d.pop("project"))
128
+
129
+ project_uuid = UUID(d.pop("project_uuid"))
130
+
131
+ project_name = d.pop("project_name")
132
+
133
+ user_uuid = UUID(d.pop("user_uuid"))
134
+
135
+ username = d.pop("username")
136
+
137
+ customer_uuid = UUID(d.pop("customer_uuid"))
138
+
139
+ customer_name = d.pop("customer_name")
140
+
141
+ state = ServiceAccountState(d.pop("state"))
142
+
143
+ error_message = d.pop("error_message")
144
+
145
+ error_traceback = d.pop("error_traceback")
146
+
147
+ email = d.pop("email", UNSET)
148
+
149
+ description = d.pop("description", UNSET)
150
+
151
+ course_account = cls(
152
+ url=url,
153
+ uuid=uuid,
154
+ created=created,
155
+ modified=modified,
156
+ project=project,
157
+ project_uuid=project_uuid,
158
+ project_name=project_name,
159
+ user_uuid=user_uuid,
160
+ username=username,
161
+ customer_uuid=customer_uuid,
162
+ customer_name=customer_name,
163
+ state=state,
164
+ error_message=error_message,
165
+ error_traceback=error_traceback,
166
+ email=email,
167
+ description=description,
168
+ )
169
+
170
+ course_account.additional_properties = d
171
+ return course_account
172
+
173
+ @property
174
+ def additional_keys(self) -> list[str]:
175
+ return list(self.additional_properties.keys())
176
+
177
+ def __getitem__(self, key: str) -> Any:
178
+ return self.additional_properties[key]
179
+
180
+ def __setitem__(self, key: str, value: Any) -> None:
181
+ self.additional_properties[key] = value
182
+
183
+ def __delitem__(self, key: str) -> None:
184
+ del self.additional_properties[key]
185
+
186
+ def __contains__(self, key: str) -> bool:
187
+ return key in self.additional_properties
@@ -0,0 +1,68 @@
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="CourseAccountCreateNested")
10
+
11
+
12
+ @_attrs_define
13
+ class CourseAccountCreateNested:
14
+ """
15
+ Attributes:
16
+ email (Union[Unset, str]):
17
+ description (Union[Unset, str]):
18
+ """
19
+
20
+ email: Union[Unset, str] = UNSET
21
+ description: Union[Unset, str] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ email = self.email
26
+
27
+ description = self.description
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update({})
32
+ if email is not UNSET:
33
+ field_dict["email"] = email
34
+ if description is not UNSET:
35
+ field_dict["description"] = description
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
41
+ d = dict(src_dict)
42
+ email = d.pop("email", UNSET)
43
+
44
+ description = d.pop("description", UNSET)
45
+
46
+ course_account_create_nested = cls(
47
+ email=email,
48
+ description=description,
49
+ )
50
+
51
+ course_account_create_nested.additional_properties = d
52
+ return course_account_create_nested
53
+
54
+ @property
55
+ def additional_keys(self) -> list[str]:
56
+ return list(self.additional_properties.keys())
57
+
58
+ def __getitem__(self, key: str) -> Any:
59
+ return self.additional_properties[key]
60
+
61
+ def __setitem__(self, key: str, value: Any) -> None:
62
+ self.additional_properties[key] = value
63
+
64
+ def __delitem__(self, key: str) -> None:
65
+ del self.additional_properties[key]
66
+
67
+ def __contains__(self, key: str) -> bool:
68
+ return key in self.additional_properties
@@ -0,0 +1,68 @@
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="CourseAccountCreateNestedRequest")
10
+
11
+
12
+ @_attrs_define
13
+ class CourseAccountCreateNestedRequest:
14
+ """
15
+ Attributes:
16
+ email (Union[Unset, str]):
17
+ description (Union[Unset, str]):
18
+ """
19
+
20
+ email: Union[Unset, str] = UNSET
21
+ description: Union[Unset, str] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ email = self.email
26
+
27
+ description = self.description
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update({})
32
+ if email is not UNSET:
33
+ field_dict["email"] = email
34
+ if description is not UNSET:
35
+ field_dict["description"] = description
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
41
+ d = dict(src_dict)
42
+ email = d.pop("email", UNSET)
43
+
44
+ description = d.pop("description", UNSET)
45
+
46
+ course_account_create_nested_request = cls(
47
+ email=email,
48
+ description=description,
49
+ )
50
+
51
+ course_account_create_nested_request.additional_properties = d
52
+ return course_account_create_nested_request
53
+
54
+ @property
55
+ def additional_keys(self) -> list[str]:
56
+ return list(self.additional_properties.keys())
57
+
58
+ def __getitem__(self, key: str) -> Any:
59
+ return self.additional_properties[key]
60
+
61
+ def __setitem__(self, key: str, value: Any) -> None:
62
+ self.additional_properties[key] = value
63
+
64
+ def __delitem__(self, key: str) -> None:
65
+ del self.additional_properties[key]
66
+
67
+ def __contains__(self, key: str) -> bool:
68
+ return key in self.additional_properties
@@ -0,0 +1,80 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="CourseAccountRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class CourseAccountRequest:
15
+ """
16
+ Attributes:
17
+ project (UUID):
18
+ email (Union[Unset, str]):
19
+ description (Union[Unset, str]):
20
+ """
21
+
22
+ project: UUID
23
+ email: Union[Unset, str] = UNSET
24
+ description: Union[Unset, str] = UNSET
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ project = str(self.project)
29
+
30
+ email = self.email
31
+
32
+ description = self.description
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update(
37
+ {
38
+ "project": project,
39
+ }
40
+ )
41
+ if email is not UNSET:
42
+ field_dict["email"] = email
43
+ if description is not UNSET:
44
+ field_dict["description"] = description
45
+
46
+ return field_dict
47
+
48
+ @classmethod
49
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
50
+ d = dict(src_dict)
51
+ project = UUID(d.pop("project"))
52
+
53
+ email = d.pop("email", UNSET)
54
+
55
+ description = d.pop("description", UNSET)
56
+
57
+ course_account_request = cls(
58
+ project=project,
59
+ email=email,
60
+ description=description,
61
+ )
62
+
63
+ course_account_request.additional_properties = d
64
+ return course_account_request
65
+
66
+ @property
67
+ def additional_keys(self) -> list[str]:
68
+ return list(self.additional_properties.keys())
69
+
70
+ def __getitem__(self, key: str) -> Any:
71
+ return self.additional_properties[key]
72
+
73
+ def __setitem__(self, key: str, value: Any) -> None:
74
+ self.additional_properties[key] = value
75
+
76
+ def __delitem__(self, key: str) -> None:
77
+ del self.additional_properties[key]
78
+
79
+ def __contains__(self, key: str) -> bool:
80
+ return key in self.additional_properties
@@ -0,0 +1,82 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.course_account_create_nested import CourseAccountCreateNested
10
+
11
+
12
+ T = TypeVar("T", bound="CourseAccountsBulkCreate")
13
+
14
+
15
+ @_attrs_define
16
+ class CourseAccountsBulkCreate:
17
+ """
18
+ Attributes:
19
+ course_accounts (list['CourseAccountCreateNested']):
20
+ project (UUID):
21
+ """
22
+
23
+ course_accounts: list["CourseAccountCreateNested"]
24
+ project: UUID
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ course_accounts = []
29
+ for course_accounts_item_data in self.course_accounts:
30
+ course_accounts_item = course_accounts_item_data.to_dict()
31
+ course_accounts.append(course_accounts_item)
32
+
33
+ project = str(self.project)
34
+
35
+ field_dict: dict[str, Any] = {}
36
+ field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "course_accounts": course_accounts,
40
+ "project": project,
41
+ }
42
+ )
43
+
44
+ return field_dict
45
+
46
+ @classmethod
47
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
48
+ from ..models.course_account_create_nested import CourseAccountCreateNested
49
+
50
+ d = dict(src_dict)
51
+ course_accounts = []
52
+ _course_accounts = d.pop("course_accounts")
53
+ for course_accounts_item_data in _course_accounts:
54
+ course_accounts_item = CourseAccountCreateNested.from_dict(course_accounts_item_data)
55
+
56
+ course_accounts.append(course_accounts_item)
57
+
58
+ project = UUID(d.pop("project"))
59
+
60
+ course_accounts_bulk_create = cls(
61
+ course_accounts=course_accounts,
62
+ project=project,
63
+ )
64
+
65
+ course_accounts_bulk_create.additional_properties = d
66
+ return course_accounts_bulk_create
67
+
68
+ @property
69
+ def additional_keys(self) -> list[str]:
70
+ return list(self.additional_properties.keys())
71
+
72
+ def __getitem__(self, key: str) -> Any:
73
+ return self.additional_properties[key]
74
+
75
+ def __setitem__(self, key: str, value: Any) -> None:
76
+ self.additional_properties[key] = value
77
+
78
+ def __delitem__(self, key: str) -> None:
79
+ del self.additional_properties[key]
80
+
81
+ def __contains__(self, key: str) -> bool:
82
+ return key in self.additional_properties
@@ -0,0 +1,82 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.course_account_create_nested_request import CourseAccountCreateNestedRequest
10
+
11
+
12
+ T = TypeVar("T", bound="CourseAccountsBulkCreateRequest")
13
+
14
+
15
+ @_attrs_define
16
+ class CourseAccountsBulkCreateRequest:
17
+ """
18
+ Attributes:
19
+ course_accounts (list['CourseAccountCreateNestedRequest']):
20
+ project (UUID):
21
+ """
22
+
23
+ course_accounts: list["CourseAccountCreateNestedRequest"]
24
+ project: UUID
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ course_accounts = []
29
+ for course_accounts_item_data in self.course_accounts:
30
+ course_accounts_item = course_accounts_item_data.to_dict()
31
+ course_accounts.append(course_accounts_item)
32
+
33
+ project = str(self.project)
34
+
35
+ field_dict: dict[str, Any] = {}
36
+ field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "course_accounts": course_accounts,
40
+ "project": project,
41
+ }
42
+ )
43
+
44
+ return field_dict
45
+
46
+ @classmethod
47
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
48
+ from ..models.course_account_create_nested_request import CourseAccountCreateNestedRequest
49
+
50
+ d = dict(src_dict)
51
+ course_accounts = []
52
+ _course_accounts = d.pop("course_accounts")
53
+ for course_accounts_item_data in _course_accounts:
54
+ course_accounts_item = CourseAccountCreateNestedRequest.from_dict(course_accounts_item_data)
55
+
56
+ course_accounts.append(course_accounts_item)
57
+
58
+ project = UUID(d.pop("project"))
59
+
60
+ course_accounts_bulk_create_request = cls(
61
+ course_accounts=course_accounts,
62
+ project=project,
63
+ )
64
+
65
+ course_accounts_bulk_create_request.additional_properties = d
66
+ return course_accounts_bulk_create_request
67
+
68
+ @property
69
+ def additional_keys(self) -> list[str]:
70
+ return list(self.additional_properties.keys())
71
+
72
+ def __getitem__(self, key: str) -> Any:
73
+ return self.additional_properties[key]
74
+
75
+ def __setitem__(self, key: str, value: Any) -> None:
76
+ self.additional_properties[key] = value
77
+
78
+ def __delitem__(self, key: str) -> None:
79
+ del self.additional_properties[key]
80
+
81
+ def __contains__(self, key: str) -> bool:
82
+ return key in self.additional_properties
@@ -47,6 +47,7 @@ class Customer:
47
47
  slug (Union[Unset, str]):
48
48
  native_name (Union[Unset, str]):
49
49
  abbreviation (Union[Unset, str]):
50
+ description (Union[Unset, str]):
50
51
  contact_details (Union[Unset, str]):
51
52
  agreement_number (Union[Unset, str]):
52
53
  email (Union[Unset, str]):
@@ -96,6 +97,7 @@ class Customer:
96
97
  slug: Union[Unset, str] = UNSET
97
98
  native_name: Union[Unset, str] = UNSET
98
99
  abbreviation: Union[Unset, str] = UNSET
100
+ description: Union[Unset, str] = UNSET
99
101
  contact_details: Union[Unset, str] = UNSET
100
102
  agreement_number: Union[Unset, str] = UNSET
101
103
  email: Union[Unset, str] = UNSET
@@ -201,6 +203,8 @@ class Customer:
201
203
 
202
204
  abbreviation = self.abbreviation
203
205
 
206
+ description = self.description
207
+
204
208
  contact_details = self.contact_details
205
209
 
206
210
  agreement_number = self.agreement_number
@@ -339,6 +343,8 @@ class Customer:
339
343
  field_dict["native_name"] = native_name
340
344
  if abbreviation is not UNSET:
341
345
  field_dict["abbreviation"] = abbreviation
346
+ if description is not UNSET:
347
+ field_dict["description"] = description
342
348
  if contact_details is not UNSET:
343
349
  field_dict["contact_details"] = contact_details
344
350
  if agreement_number is not UNSET:
@@ -503,6 +509,8 @@ class Customer:
503
509
 
504
510
  abbreviation = d.pop("abbreviation", UNSET)
505
511
 
512
+ description = d.pop("description", UNSET)
513
+
506
514
  contact_details = d.pop("contact_details", UNSET)
507
515
 
508
516
  agreement_number = d.pop("agreement_number", UNSET)
@@ -660,6 +668,7 @@ class Customer:
660
668
  slug=slug,
661
669
  native_name=native_name,
662
670
  abbreviation=abbreviation,
671
+ description=description,
663
672
  contact_details=contact_details,
664
673
  agreement_number=agreement_number,
665
674
  email=email,