waldur-api-client 7.8.0__py3-none-any.whl → 7.8.2__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 (212) hide show
  1. waldur_api_client/api/booking_resources/booking_resources_count.py +10 -13
  2. waldur_api_client/api/booking_resources/booking_resources_list.py +10 -13
  3. waldur_api_client/api/call_managing_organisations/call_managing_organisations_create.py +44 -7
  4. waldur_api_client/api/call_managing_organisations/call_managing_organisations_partial_update.py +46 -7
  5. waldur_api_client/api/call_managing_organisations/call_managing_organisations_update.py +44 -7
  6. waldur_api_client/api/checklists_admin/checklists_admin_checklist_questions.py +49 -0
  7. waldur_api_client/api/checklists_admin/checklists_admin_count.py +43 -0
  8. waldur_api_client/api/checklists_admin/checklists_admin_list.py +43 -0
  9. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_create.py +44 -7
  10. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_partial_update.py +44 -7
  11. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_update.py +44 -7
  12. waldur_api_client/api/customers/customers_create.py +44 -7
  13. waldur_api_client/api/customers/customers_partial_update.py +44 -7
  14. waldur_api_client/api/customers/customers_update.py +44 -7
  15. waldur_api_client/api/external_links/external_links_create.py +44 -7
  16. waldur_api_client/api/external_links/external_links_partial_update.py +44 -7
  17. waldur_api_client/api/external_links/external_links_update.py +44 -7
  18. waldur_api_client/api/invoices/invoices_paid.py +44 -7
  19. waldur_api_client/api/marketplace_categories/marketplace_categories_create.py +44 -7
  20. waldur_api_client/api/marketplace_categories/marketplace_categories_partial_update.py +44 -7
  21. waldur_api_client/api/marketplace_categories/marketplace_categories_update.py +44 -7
  22. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_create.py +44 -7
  23. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_partial_update.py +44 -7
  24. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_update.py +44 -7
  25. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_count.py +96 -0
  26. waldur_api_client/api/marketplace_course_accounts/marketplace_course_accounts_list.py +96 -0
  27. waldur_api_client/api/marketplace_offering_files/marketplace_offering_files_create.py +44 -7
  28. waldur_api_client/api/marketplace_offering_user_checklist_completions/__init__.py +1 -0
  29. waldur_api_client/api/marketplace_offering_user_checklist_completions/marketplace_offering_user_checklist_completions_count.py +286 -0
  30. waldur_api_client/api/marketplace_offering_user_checklist_completions/marketplace_offering_user_checklist_completions_list.py +289 -0
  31. waldur_api_client/api/marketplace_offering_user_checklist_completions/marketplace_offering_user_checklist_completions_retrieve.py +141 -0
  32. waldur_api_client/api/marketplace_orders/marketplace_orders_update_attachment.py +44 -7
  33. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_create.py +44 -7
  34. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_list_course_accounts_retrieve.py +177 -0
  35. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_refresh_offering_usernames.py +0 -22
  36. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_compliance_checklist.py +105 -0
  37. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_image.py +44 -7
  38. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_thumbnail.py +30 -5
  39. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +10 -13
  40. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +10 -13
  41. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +10 -13
  42. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +10 -13
  43. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_create.py +44 -7
  44. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_update.py +44 -7
  45. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_course_accounts_list.py +98 -0
  46. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_create.py +44 -7
  47. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_partial_update.py +44 -7
  48. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_update.py +44 -7
  49. waldur_api_client/api/override_settings/override_settings.py +30 -5
  50. waldur_api_client/api/payments/payments_create.py +44 -7
  51. waldur_api_client/api/payments/payments_partial_update.py +44 -7
  52. waldur_api_client/api/payments/payments_update.py +44 -7
  53. waldur_api_client/api/projects/projects_create.py +44 -7
  54. waldur_api_client/api/projects/projects_partial_update.py +44 -7
  55. waldur_api_client/api/projects/projects_update.py +44 -7
  56. waldur_api_client/api/proposal_proposals/proposal_proposals_attach_document.py +30 -5
  57. waldur_api_client/api/slurm_jobs/slurm_jobs_create.py +44 -7
  58. waldur_api_client/api/slurm_jobs/slurm_jobs_update.py +44 -7
  59. waldur_api_client/api/support_attachments/support_attachments_create.py +44 -7
  60. waldur_api_client/api/user_group_invitations/user_group_invitations_count.py +15 -0
  61. waldur_api_client/api/user_group_invitations/user_group_invitations_list.py +15 -0
  62. waldur_api_client/api/user_invitations/user_invitations_count.py +15 -0
  63. waldur_api_client/api/user_invitations/user_invitations_list.py +15 -0
  64. waldur_api_client/api/users/users_create.py +44 -7
  65. waldur_api_client/api/users/users_partial_update.py +44 -7
  66. waldur_api_client/api/users/users_update.py +44 -7
  67. waldur_api_client/models/__init__.py +172 -4
  68. waldur_api_client/models/agent_type_enum.py +13 -0
  69. waldur_api_client/models/attachment_request_form.py +70 -0
  70. waldur_api_client/models/attachment_request_multipart.py +83 -0
  71. waldur_api_client/models/booking_offerings_list_field_item.py +1 -0
  72. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -0
  73. waldur_api_client/models/booking_resource.py +18 -0
  74. waldur_api_client/models/booking_resources_list_field_item.py +2 -0
  75. waldur_api_client/models/booking_resources_retrieve_field_item.py +2 -0
  76. waldur_api_client/models/call_managing_organisation_request_form.py +103 -0
  77. waldur_api_client/models/call_managing_organisation_request_multipart.py +122 -0
  78. waldur_api_client/models/call_round.py +11 -1
  79. waldur_api_client/models/category_group_request_form.py +103 -0
  80. waldur_api_client/models/category_group_request_multipart.py +122 -0
  81. waldur_api_client/models/checklist_category_request_form.py +103 -0
  82. waldur_api_client/models/checklist_category_request_multipart.py +122 -0
  83. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type.py +11 -0
  84. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type_in_item.py +11 -0
  85. waldur_api_client/models/checklists_admin_count_checklist_type.py +11 -0
  86. waldur_api_client/models/checklists_admin_count_checklist_type_in_item.py +11 -0
  87. waldur_api_client/models/checklists_admin_list_checklist_type.py +11 -0
  88. waldur_api_client/models/checklists_admin_list_checklist_type_in_item.py +11 -0
  89. waldur_api_client/models/constance_settings.py +9 -0
  90. waldur_api_client/models/constance_settings_request.py +9 -0
  91. waldur_api_client/models/constance_settings_request_form.py +1547 -0
  92. waldur_api_client/models/constance_settings_request_multipart.py +2173 -0
  93. waldur_api_client/models/course_account.py +24 -0
  94. waldur_api_client/models/customer.py +9 -0
  95. waldur_api_client/models/customer_request.py +9 -0
  96. waldur_api_client/models/customer_request_form.py +312 -0
  97. waldur_api_client/models/customer_request_multipart.py +394 -0
  98. waldur_api_client/models/customers_list_field_item.py +1 -0
  99. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  100. waldur_api_client/models/external_link_request_form.py +111 -0
  101. waldur_api_client/models/external_link_request_multipart.py +132 -0
  102. waldur_api_client/models/firecrest_job_request_form.py +104 -0
  103. waldur_api_client/models/firecrest_job_request_multipart.py +127 -0
  104. waldur_api_client/models/group_invitation.py +8 -0
  105. waldur_api_client/models/integration_status.py +21 -4
  106. waldur_api_client/models/invitation.py +8 -0
  107. waldur_api_client/models/managed_rancher_cluster_resources_list_field_item.py +2 -0
  108. waldur_api_client/models/managed_rancher_cluster_resources_retrieve_field_item.py +2 -0
  109. waldur_api_client/models/marketplace_category_request_form.py +153 -0
  110. waldur_api_client/models/marketplace_category_request_multipart.py +187 -0
  111. waldur_api_client/models/marketplace_course_accounts_count_o_item.py +23 -0
  112. waldur_api_client/models/marketplace_course_accounts_list_o_item.py +23 -0
  113. waldur_api_client/models/marketplace_offering_user_checklist_completions_count_o_item.py +11 -0
  114. waldur_api_client/models/marketplace_offering_user_checklist_completions_list_o_item.py +11 -0
  115. waldur_api_client/models/marketplace_orders_list_field_item.py +3 -0
  116. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +3 -0
  117. waldur_api_client/models/marketplace_provider_offerings_list_course_accounts_retrieve_field_item.py +73 -0
  118. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +1 -0
  119. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +1 -0
  120. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +1 -0
  121. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +1 -0
  122. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +1 -0
  123. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +1 -0
  124. waldur_api_client/models/marketplace_provider_resources_details_retrieve_field_item.py +2 -0
  125. waldur_api_client/models/marketplace_provider_resources_list_field_item.py +2 -0
  126. waldur_api_client/models/marketplace_provider_resources_retrieve_field_item.py +2 -0
  127. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -0
  128. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -0
  129. waldur_api_client/models/marketplace_resources_details_retrieve_field_item.py +2 -0
  130. waldur_api_client/models/marketplace_resources_list_field_item.py +2 -0
  131. waldur_api_client/models/marketplace_resources_retrieve_field_item.py +2 -0
  132. waldur_api_client/models/marketplace_service_providers_course_accounts_list_o_item.py +23 -0
  133. waldur_api_client/models/marketplace_service_providers_offerings_list_field_item.py +1 -0
  134. waldur_api_client/models/merged_plugin_options.py +9 -0
  135. waldur_api_client/models/merged_plugin_options_request.py +9 -0
  136. waldur_api_client/models/nested_round.py +9 -0
  137. waldur_api_client/models/nested_round_request.py +9 -0
  138. waldur_api_client/models/notification.py +11 -0
  139. waldur_api_client/models/notification_context_fields.py +47 -0
  140. waldur_api_client/models/offering.py +20 -0
  141. waldur_api_client/models/offering_compliance_checklist_update_request.py +82 -0
  142. waldur_api_client/models/offering_create.py +20 -0
  143. waldur_api_client/models/offering_create_request.py +20 -0
  144. waldur_api_client/models/{provider_offering_details_request.py → offering_create_request_form.py} +77 -5
  145. waldur_api_client/models/offering_create_request_form_limits.py +57 -0
  146. waldur_api_client/models/offering_create_request_multipart.py +599 -0
  147. waldur_api_client/models/offering_create_request_multipart_limits.py +57 -0
  148. waldur_api_client/models/offering_file_request_form.py +78 -0
  149. waldur_api_client/models/offering_file_request_multipart.py +93 -0
  150. waldur_api_client/models/offering_image_request_form.py +62 -0
  151. waldur_api_client/models/offering_image_request_multipart.py +73 -0
  152. waldur_api_client/models/offering_thumbnail_request_form.py +62 -0
  153. waldur_api_client/models/offering_thumbnail_request_multipart.py +73 -0
  154. waldur_api_client/models/offering_user.py +5 -5
  155. waldur_api_client/models/{offering_user_state_enum.py → offering_user_state.py} +1 -1
  156. waldur_api_client/models/order_attachment_request_form.py +84 -0
  157. waldur_api_client/models/order_attachment_request_multipart.py +98 -0
  158. waldur_api_client/models/order_details.py +34 -0
  159. waldur_api_client/models/paid_request_form.py +81 -0
  160. waldur_api_client/models/paid_request_multipart.py +94 -0
  161. waldur_api_client/models/patched_call_managing_organisation_request_form.py +92 -0
  162. waldur_api_client/models/patched_call_managing_organisation_request_multipart.py +109 -0
  163. waldur_api_client/models/patched_category_group_request_form.py +101 -0
  164. waldur_api_client/models/patched_category_group_request_multipart.py +121 -0
  165. waldur_api_client/models/patched_checklist_category_request_form.py +102 -0
  166. waldur_api_client/models/patched_checklist_category_request_multipart.py +122 -0
  167. waldur_api_client/models/patched_customer_request.py +9 -0
  168. waldur_api_client/models/patched_customer_request_form.py +310 -0
  169. waldur_api_client/models/patched_customer_request_multipart.py +393 -0
  170. waldur_api_client/models/patched_external_link_request_form.py +110 -0
  171. waldur_api_client/models/patched_external_link_request_multipart.py +133 -0
  172. waldur_api_client/models/patched_marketplace_category_request_form.py +151 -0
  173. waldur_api_client/models/patched_marketplace_category_request_multipart.py +186 -0
  174. waldur_api_client/models/patched_payment_request_form.py +119 -0
  175. waldur_api_client/models/patched_payment_request_multipart.py +142 -0
  176. waldur_api_client/models/patched_project_request_form.py +279 -0
  177. waldur_api_client/models/patched_project_request_multipart.py +342 -0
  178. waldur_api_client/models/patched_service_provider_request_form.py +101 -0
  179. waldur_api_client/models/patched_service_provider_request_multipart.py +121 -0
  180. waldur_api_client/models/patched_user_request_form.py +241 -0
  181. waldur_api_client/models/patched_user_request_multipart.py +306 -0
  182. waldur_api_client/models/payment_request_form.py +113 -0
  183. waldur_api_client/models/payment_request_multipart.py +134 -0
  184. waldur_api_client/models/project_request_form.py +280 -0
  185. waldur_api_client/models/project_request_multipart.py +341 -0
  186. waldur_api_client/models/project_user.py +9 -0
  187. waldur_api_client/models/proposal.py +8 -0
  188. waldur_api_client/models/proposal_documentation_request_form.py +84 -0
  189. waldur_api_client/models/proposal_documentation_request_multipart.py +98 -0
  190. waldur_api_client/models/proposal_proposals_count_o_item.py +3 -1
  191. waldur_api_client/models/proposal_proposals_list_o_item.py +3 -1
  192. waldur_api_client/models/proposal_review.py +40 -0
  193. waldur_api_client/models/protected_proposal_list.py +8 -0
  194. waldur_api_client/models/protected_proposal_list_request.py +8 -0
  195. waldur_api_client/models/protected_round.py +8 -0
  196. waldur_api_client/models/provider_offering.py +21 -1
  197. waldur_api_client/models/provider_offering_details.py +20 -0
  198. waldur_api_client/models/public_offering_details.py +20 -0
  199. waldur_api_client/models/resource.py +18 -0
  200. waldur_api_client/models/resource_update_limits_request.py +1 -34
  201. waldur_api_client/models/screenshot_request_form.py +87 -0
  202. waldur_api_client/models/screenshot_request_multipart.py +105 -0
  203. waldur_api_client/models/service_provider_request_form.py +112 -0
  204. waldur_api_client/models/service_provider_request_multipart.py +134 -0
  205. waldur_api_client/models/user_checklist_completion.py +265 -0
  206. waldur_api_client/models/user_request_form.py +250 -0
  207. waldur_api_client/models/user_request_multipart.py +316 -0
  208. waldur_api_client/models/visible_invitation_details.py +8 -0
  209. {waldur_api_client-7.8.0.dist-info → waldur_api_client-7.8.2.dist-info}/METADATA +1 -1
  210. {waldur_api_client-7.8.0.dist-info → waldur_api_client-7.8.2.dist-info}/RECORD +212 -127
  211. {waldur_api_client-7.8.0.dist-info → waldur_api_client-7.8.2.dist-info}/WHEEL +1 -1
  212. {waldur_api_client-7.8.0.dist-info → waldur_api_client-7.8.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,98 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="OrderAttachmentRequestMultipart")
12
+
13
+
14
+ @_attrs_define
15
+ class OrderAttachmentRequestMultipart:
16
+ """
17
+ Attributes:
18
+ attachment (Union[File, None, Unset]):
19
+ """
20
+
21
+ attachment: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ attachment: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.attachment, Unset):
27
+ attachment = UNSET
28
+ elif isinstance(self.attachment, File):
29
+ attachment = self.attachment.to_tuple()
30
+
31
+ else:
32
+ attachment = self.attachment
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if attachment is not UNSET:
38
+ field_dict["attachment"] = attachment
39
+
40
+ return field_dict
41
+
42
+ def to_multipart(self) -> types.RequestFiles:
43
+ files: types.RequestFiles = []
44
+
45
+ if not isinstance(self.attachment, Unset):
46
+ if isinstance(self.attachment, File):
47
+ files.append(("attachment", self.attachment.to_tuple()))
48
+ else:
49
+ files.append(("attachment", (None, str(self.attachment).encode(), "text/plain")))
50
+
51
+ for prop_name, prop in self.additional_properties.items():
52
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
53
+
54
+ return files
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+
60
+ def _parse_attachment(data: object) -> Union[File, None, Unset]:
61
+ if data is None:
62
+ return data
63
+ if isinstance(data, Unset):
64
+ return data
65
+ try:
66
+ if not isinstance(data, bytes):
67
+ raise TypeError()
68
+ attachment_type_0 = File(payload=BytesIO(data))
69
+
70
+ return attachment_type_0
71
+ except: # noqa: E722
72
+ pass
73
+ return cast(Union[File, None, Unset], data)
74
+
75
+ attachment = _parse_attachment(d.pop("attachment", UNSET))
76
+
77
+ order_attachment_request_multipart = cls(
78
+ attachment=attachment,
79
+ )
80
+
81
+ order_attachment_request_multipart.additional_properties = d
82
+ return order_attachment_request_multipart
83
+
84
+ @property
85
+ def additional_keys(self) -> list[str]:
86
+ return list(self.additional_properties.keys())
87
+
88
+ def __getitem__(self, key: str) -> Any:
89
+ return self.additional_properties[key]
90
+
91
+ def __setitem__(self, key: str, value: Any) -> None:
92
+ self.additional_properties[key] = value
93
+
94
+ def __delitem__(self, key: str) -> None:
95
+ del self.additional_properties[key]
96
+
97
+ def __contains__(self, key: str) -> bool:
98
+ return key in self.additional_properties
@@ -98,6 +98,9 @@ class OrderDetails:
98
98
  activation_price (Union[Unset, float]):
99
99
  termination_comment (Union[None, Unset, str]):
100
100
  backend_id (Union[Unset, str]):
101
+ offering_customer_uuid (Union[Unset, UUID]):
102
+ offering_customer_name (Union[Unset, str]):
103
+ offering_customer_slug (Union[Unset, str]):
101
104
  issue (Union['IssueReference', None, Unset]):
102
105
  """
103
106
 
@@ -169,6 +172,9 @@ class OrderDetails:
169
172
  activation_price: Union[Unset, float] = UNSET
170
173
  termination_comment: Union[None, Unset, str] = UNSET
171
174
  backend_id: Union[Unset, str] = UNSET
175
+ offering_customer_uuid: Union[Unset, UUID] = UNSET
176
+ offering_customer_name: Union[Unset, str] = UNSET
177
+ offering_customer_slug: Union[Unset, str] = UNSET
172
178
  issue: Union["IssueReference", None, Unset] = UNSET
173
179
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
174
180
 
@@ -459,6 +465,14 @@ class OrderDetails:
459
465
 
460
466
  backend_id = self.backend_id
461
467
 
468
+ offering_customer_uuid: Union[Unset, str] = UNSET
469
+ if not isinstance(self.offering_customer_uuid, Unset):
470
+ offering_customer_uuid = str(self.offering_customer_uuid)
471
+
472
+ offering_customer_name = self.offering_customer_name
473
+
474
+ offering_customer_slug = self.offering_customer_slug
475
+
462
476
  issue: Union[None, Unset, dict[str, Any]]
463
477
  if isinstance(self.issue, Unset):
464
478
  issue = UNSET
@@ -606,6 +620,12 @@ class OrderDetails:
606
620
  field_dict["termination_comment"] = termination_comment
607
621
  if backend_id is not UNSET:
608
622
  field_dict["backend_id"] = backend_id
623
+ if offering_customer_uuid is not UNSET:
624
+ field_dict["offering_customer_uuid"] = offering_customer_uuid
625
+ if offering_customer_name is not UNSET:
626
+ field_dict["offering_customer_name"] = offering_customer_name
627
+ if offering_customer_slug is not UNSET:
628
+ field_dict["offering_customer_slug"] = offering_customer_slug
609
629
  if issue is not UNSET:
610
630
  field_dict["issue"] = issue
611
631
 
@@ -1074,6 +1094,17 @@ class OrderDetails:
1074
1094
 
1075
1095
  backend_id = d.pop("backend_id", UNSET)
1076
1096
 
1097
+ _offering_customer_uuid = d.pop("offering_customer_uuid", UNSET)
1098
+ offering_customer_uuid: Union[Unset, UUID]
1099
+ if isinstance(_offering_customer_uuid, Unset):
1100
+ offering_customer_uuid = UNSET
1101
+ else:
1102
+ offering_customer_uuid = UUID(_offering_customer_uuid)
1103
+
1104
+ offering_customer_name = d.pop("offering_customer_name", UNSET)
1105
+
1106
+ offering_customer_slug = d.pop("offering_customer_slug", UNSET)
1107
+
1077
1108
  def _parse_issue(data: object) -> Union["IssueReference", None, Unset]:
1078
1109
  if data is None:
1079
1110
  return data
@@ -1160,6 +1191,9 @@ class OrderDetails:
1160
1191
  activation_price=activation_price,
1161
1192
  termination_comment=termination_comment,
1162
1193
  backend_id=backend_id,
1194
+ offering_customer_uuid=offering_customer_uuid,
1195
+ offering_customer_name=offering_customer_name,
1196
+ offering_customer_slug=offering_customer_slug,
1163
1197
  issue=issue,
1164
1198
  )
1165
1199
 
@@ -0,0 +1,81 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from io import BytesIO
4
+ from typing import Any, TypeVar, Union
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 .. import types
11
+ from ..types import UNSET, File, Unset
12
+
13
+ T = TypeVar("T", bound="PaidRequestForm")
14
+
15
+
16
+ @_attrs_define
17
+ class PaidRequestForm:
18
+ """
19
+ Attributes:
20
+ date (datetime.date):
21
+ proof (Union[Unset, File]):
22
+ """
23
+
24
+ date: datetime.date
25
+ proof: Union[Unset, File] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ date = self.date.isoformat()
30
+
31
+ proof: Union[Unset, types.FileTypes] = UNSET
32
+ if not isinstance(self.proof, Unset):
33
+ proof = self.proof.to_tuple()
34
+
35
+ field_dict: dict[str, Any] = {}
36
+ field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "date": date,
40
+ }
41
+ )
42
+ if proof is not UNSET:
43
+ field_dict["proof"] = proof
44
+
45
+ return field_dict
46
+
47
+ @classmethod
48
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
49
+ d = dict(src_dict)
50
+ date = isoparse(d.pop("date")).date()
51
+
52
+ _proof = d.pop("proof", UNSET)
53
+ proof: Union[Unset, File]
54
+ if isinstance(_proof, Unset):
55
+ proof = UNSET
56
+ else:
57
+ proof = File(payload=BytesIO(_proof))
58
+
59
+ paid_request_form = cls(
60
+ date=date,
61
+ proof=proof,
62
+ )
63
+
64
+ paid_request_form.additional_properties = d
65
+ return paid_request_form
66
+
67
+ @property
68
+ def additional_keys(self) -> list[str]:
69
+ return list(self.additional_properties.keys())
70
+
71
+ def __getitem__(self, key: str) -> Any:
72
+ return self.additional_properties[key]
73
+
74
+ def __setitem__(self, key: str, value: Any) -> None:
75
+ self.additional_properties[key] = value
76
+
77
+ def __delitem__(self, key: str) -> None:
78
+ del self.additional_properties[key]
79
+
80
+ def __contains__(self, key: str) -> bool:
81
+ return key in self.additional_properties
@@ -0,0 +1,94 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from io import BytesIO
4
+ from typing import Any, TypeVar, Union
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 .. import types
11
+ from ..types import UNSET, File, Unset
12
+
13
+ T = TypeVar("T", bound="PaidRequestMultipart")
14
+
15
+
16
+ @_attrs_define
17
+ class PaidRequestMultipart:
18
+ """
19
+ Attributes:
20
+ date (datetime.date):
21
+ proof (Union[Unset, File]):
22
+ """
23
+
24
+ date: datetime.date
25
+ proof: Union[Unset, File] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ date = self.date.isoformat()
30
+
31
+ proof: Union[Unset, types.FileTypes] = UNSET
32
+ if not isinstance(self.proof, Unset):
33
+ proof = self.proof.to_tuple()
34
+
35
+ field_dict: dict[str, Any] = {}
36
+ field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "date": date,
40
+ }
41
+ )
42
+ if proof is not UNSET:
43
+ field_dict["proof"] = proof
44
+
45
+ return field_dict
46
+
47
+ def to_multipart(self) -> types.RequestFiles:
48
+ files: types.RequestFiles = []
49
+
50
+ files.append(("date", (None, self.date.isoformat().encode(), "text/plain")))
51
+
52
+ if not isinstance(self.proof, Unset):
53
+ files.append(("proof", self.proof.to_tuple()))
54
+
55
+ for prop_name, prop in self.additional_properties.items():
56
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
57
+
58
+ return files
59
+
60
+ @classmethod
61
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
62
+ d = dict(src_dict)
63
+ date = isoparse(d.pop("date")).date()
64
+
65
+ _proof = d.pop("proof", UNSET)
66
+ proof: Union[Unset, File]
67
+ if isinstance(_proof, Unset):
68
+ proof = UNSET
69
+ else:
70
+ proof = File(payload=BytesIO(_proof))
71
+
72
+ paid_request_multipart = cls(
73
+ date=date,
74
+ proof=proof,
75
+ )
76
+
77
+ paid_request_multipart.additional_properties = d
78
+ return paid_request_multipart
79
+
80
+ @property
81
+ def additional_keys(self) -> list[str]:
82
+ return list(self.additional_properties.keys())
83
+
84
+ def __getitem__(self, key: str) -> Any:
85
+ return self.additional_properties[key]
86
+
87
+ def __setitem__(self, key: str, value: Any) -> None:
88
+ self.additional_properties[key] = value
89
+
90
+ def __delitem__(self, key: str) -> None:
91
+ del self.additional_properties[key]
92
+
93
+ def __contains__(self, key: str) -> bool:
94
+ return key in self.additional_properties
@@ -0,0 +1,92 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="PatchedCallManagingOrganisationRequestForm")
12
+
13
+
14
+ @_attrs_define
15
+ class PatchedCallManagingOrganisationRequestForm:
16
+ """
17
+ Attributes:
18
+ description (Union[Unset, str]):
19
+ image (Union[File, None, Unset]):
20
+ """
21
+
22
+ description: Union[Unset, str] = UNSET
23
+ image: Union[File, None, Unset] = UNSET
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ description = self.description
28
+
29
+ image: Union[None, Unset, types.FileTypes]
30
+ if isinstance(self.image, Unset):
31
+ image = UNSET
32
+ elif isinstance(self.image, File):
33
+ image = self.image.to_tuple()
34
+
35
+ else:
36
+ image = self.image
37
+
38
+ field_dict: dict[str, Any] = {}
39
+ field_dict.update(self.additional_properties)
40
+ field_dict.update({})
41
+ if description is not UNSET:
42
+ field_dict["description"] = description
43
+ if image is not UNSET:
44
+ field_dict["image"] = image
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
+ description = d.pop("description", UNSET)
52
+
53
+ def _parse_image(data: object) -> Union[File, None, Unset]:
54
+ if data is None:
55
+ return data
56
+ if isinstance(data, Unset):
57
+ return data
58
+ try:
59
+ if not isinstance(data, bytes):
60
+ raise TypeError()
61
+ image_type_0 = File(payload=BytesIO(data))
62
+
63
+ return image_type_0
64
+ except: # noqa: E722
65
+ pass
66
+ return cast(Union[File, None, Unset], data)
67
+
68
+ image = _parse_image(d.pop("image", UNSET))
69
+
70
+ patched_call_managing_organisation_request_form = cls(
71
+ description=description,
72
+ image=image,
73
+ )
74
+
75
+ patched_call_managing_organisation_request_form.additional_properties = d
76
+ return patched_call_managing_organisation_request_form
77
+
78
+ @property
79
+ def additional_keys(self) -> list[str]:
80
+ return list(self.additional_properties.keys())
81
+
82
+ def __getitem__(self, key: str) -> Any:
83
+ return self.additional_properties[key]
84
+
85
+ def __setitem__(self, key: str, value: Any) -> None:
86
+ self.additional_properties[key] = value
87
+
88
+ def __delitem__(self, key: str) -> None:
89
+ del self.additional_properties[key]
90
+
91
+ def __contains__(self, key: str) -> bool:
92
+ return key in self.additional_properties
@@ -0,0 +1,109 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="PatchedCallManagingOrganisationRequestMultipart")
12
+
13
+
14
+ @_attrs_define
15
+ class PatchedCallManagingOrganisationRequestMultipart:
16
+ """
17
+ Attributes:
18
+ description (Union[Unset, str]):
19
+ image (Union[File, None, Unset]):
20
+ """
21
+
22
+ description: Union[Unset, str] = UNSET
23
+ image: Union[File, None, Unset] = UNSET
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ description = self.description
28
+
29
+ image: Union[None, Unset, types.FileTypes]
30
+ if isinstance(self.image, Unset):
31
+ image = UNSET
32
+ elif isinstance(self.image, File):
33
+ image = self.image.to_tuple()
34
+
35
+ else:
36
+ image = self.image
37
+
38
+ field_dict: dict[str, Any] = {}
39
+ field_dict.update(self.additional_properties)
40
+ field_dict.update({})
41
+ if description is not UNSET:
42
+ field_dict["description"] = description
43
+ if image is not UNSET:
44
+ field_dict["image"] = image
45
+
46
+ return field_dict
47
+
48
+ def to_multipart(self) -> types.RequestFiles:
49
+ files: types.RequestFiles = []
50
+
51
+ if not isinstance(self.description, Unset):
52
+ files.append(("description", (None, str(self.description).encode(), "text/plain")))
53
+
54
+ if not isinstance(self.image, Unset):
55
+ if isinstance(self.image, File):
56
+ files.append(("image", self.image.to_tuple()))
57
+ else:
58
+ files.append(("image", (None, str(self.image).encode(), "text/plain")))
59
+
60
+ for prop_name, prop in self.additional_properties.items():
61
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
62
+
63
+ return files
64
+
65
+ @classmethod
66
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
67
+ d = dict(src_dict)
68
+ description = d.pop("description", UNSET)
69
+
70
+ def _parse_image(data: object) -> Union[File, None, Unset]:
71
+ if data is None:
72
+ return data
73
+ if isinstance(data, Unset):
74
+ return data
75
+ try:
76
+ if not isinstance(data, bytes):
77
+ raise TypeError()
78
+ image_type_0 = File(payload=BytesIO(data))
79
+
80
+ return image_type_0
81
+ except: # noqa: E722
82
+ pass
83
+ return cast(Union[File, None, Unset], data)
84
+
85
+ image = _parse_image(d.pop("image", UNSET))
86
+
87
+ patched_call_managing_organisation_request_multipart = cls(
88
+ description=description,
89
+ image=image,
90
+ )
91
+
92
+ patched_call_managing_organisation_request_multipart.additional_properties = d
93
+ return patched_call_managing_organisation_request_multipart
94
+
95
+ @property
96
+ def additional_keys(self) -> list[str]:
97
+ return list(self.additional_properties.keys())
98
+
99
+ def __getitem__(self, key: str) -> Any:
100
+ return self.additional_properties[key]
101
+
102
+ def __setitem__(self, key: str, value: Any) -> None:
103
+ self.additional_properties[key] = value
104
+
105
+ def __delitem__(self, key: str) -> None:
106
+ del self.additional_properties[key]
107
+
108
+ def __contains__(self, key: str) -> bool:
109
+ return key in self.additional_properties
@@ -0,0 +1,101 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="PatchedCategoryGroupRequestForm")
12
+
13
+
14
+ @_attrs_define
15
+ class PatchedCategoryGroupRequestForm:
16
+ """
17
+ Attributes:
18
+ title (Union[Unset, str]):
19
+ description (Union[Unset, str]):
20
+ icon (Union[File, None, Unset]):
21
+ """
22
+
23
+ title: Union[Unset, str] = UNSET
24
+ description: Union[Unset, str] = UNSET
25
+ icon: Union[File, None, Unset] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ title = self.title
30
+
31
+ description = self.description
32
+
33
+ icon: Union[None, Unset, types.FileTypes]
34
+ if isinstance(self.icon, Unset):
35
+ icon = UNSET
36
+ elif isinstance(self.icon, File):
37
+ icon = self.icon.to_tuple()
38
+
39
+ else:
40
+ icon = self.icon
41
+
42
+ field_dict: dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ field_dict.update({})
45
+ if title is not UNSET:
46
+ field_dict["title"] = title
47
+ if description is not UNSET:
48
+ field_dict["description"] = description
49
+ if icon is not UNSET:
50
+ field_dict["icon"] = icon
51
+
52
+ return field_dict
53
+
54
+ @classmethod
55
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
56
+ d = dict(src_dict)
57
+ title = d.pop("title", UNSET)
58
+
59
+ description = d.pop("description", UNSET)
60
+
61
+ def _parse_icon(data: object) -> Union[File, None, Unset]:
62
+ if data is None:
63
+ return data
64
+ if isinstance(data, Unset):
65
+ return data
66
+ try:
67
+ if not isinstance(data, bytes):
68
+ raise TypeError()
69
+ icon_type_0 = File(payload=BytesIO(data))
70
+
71
+ return icon_type_0
72
+ except: # noqa: E722
73
+ pass
74
+ return cast(Union[File, None, Unset], data)
75
+
76
+ icon = _parse_icon(d.pop("icon", UNSET))
77
+
78
+ patched_category_group_request_form = cls(
79
+ title=title,
80
+ description=description,
81
+ icon=icon,
82
+ )
83
+
84
+ patched_category_group_request_form.additional_properties = d
85
+ return patched_category_group_request_form
86
+
87
+ @property
88
+ def additional_keys(self) -> list[str]:
89
+ return list(self.additional_properties.keys())
90
+
91
+ def __getitem__(self, key: str) -> Any:
92
+ return self.additional_properties[key]
93
+
94
+ def __setitem__(self, key: str, value: Any) -> None:
95
+ self.additional_properties[key] = value
96
+
97
+ def __delitem__(self, key: str) -> None:
98
+ del self.additional_properties[key]
99
+
100
+ def __contains__(self, key: str) -> bool:
101
+ return key in self.additional_properties