waldur-api-client 7.8.1__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 (169) 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_offering_files/marketplace_offering_files_create.py +44 -7
  26. waldur_api_client/api/marketplace_orders/marketplace_orders_update_attachment.py +44 -7
  27. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_create.py +44 -7
  28. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_image.py +44 -7
  29. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_thumbnail.py +30 -5
  30. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +10 -13
  31. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +10 -13
  32. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +10 -13
  33. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +10 -13
  34. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_create.py +44 -7
  35. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_update.py +44 -7
  36. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_create.py +44 -7
  37. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_partial_update.py +44 -7
  38. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_update.py +44 -7
  39. waldur_api_client/api/override_settings/override_settings.py +30 -5
  40. waldur_api_client/api/payments/payments_create.py +44 -7
  41. waldur_api_client/api/payments/payments_partial_update.py +44 -7
  42. waldur_api_client/api/payments/payments_update.py +44 -7
  43. waldur_api_client/api/projects/projects_create.py +44 -7
  44. waldur_api_client/api/projects/projects_partial_update.py +44 -7
  45. waldur_api_client/api/projects/projects_update.py +44 -7
  46. waldur_api_client/api/proposal_proposals/proposal_proposals_attach_document.py +30 -5
  47. waldur_api_client/api/slurm_jobs/slurm_jobs_create.py +44 -7
  48. waldur_api_client/api/slurm_jobs/slurm_jobs_update.py +44 -7
  49. waldur_api_client/api/support_attachments/support_attachments_create.py +44 -7
  50. waldur_api_client/api/user_group_invitations/user_group_invitations_count.py +15 -0
  51. waldur_api_client/api/user_group_invitations/user_group_invitations_list.py +15 -0
  52. waldur_api_client/api/users/users_create.py +44 -7
  53. waldur_api_client/api/users/users_partial_update.py +44 -7
  54. waldur_api_client/api/users/users_update.py +44 -7
  55. waldur_api_client/models/__init__.py +146 -2
  56. waldur_api_client/models/agent_type_enum.py +13 -0
  57. waldur_api_client/models/attachment_request_form.py +70 -0
  58. waldur_api_client/models/attachment_request_multipart.py +83 -0
  59. waldur_api_client/models/booking_offerings_list_field_item.py +1 -0
  60. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -0
  61. waldur_api_client/models/call_managing_organisation_request_form.py +103 -0
  62. waldur_api_client/models/call_managing_organisation_request_multipart.py +122 -0
  63. waldur_api_client/models/call_round.py +11 -1
  64. waldur_api_client/models/category_group_request_form.py +103 -0
  65. waldur_api_client/models/category_group_request_multipart.py +122 -0
  66. waldur_api_client/models/checklist_category_request_form.py +103 -0
  67. waldur_api_client/models/checklist_category_request_multipart.py +122 -0
  68. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type.py +11 -0
  69. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type_in_item.py +11 -0
  70. waldur_api_client/models/checklists_admin_count_checklist_type.py +11 -0
  71. waldur_api_client/models/checklists_admin_count_checklist_type_in_item.py +11 -0
  72. waldur_api_client/models/checklists_admin_list_checklist_type.py +11 -0
  73. waldur_api_client/models/checklists_admin_list_checklist_type_in_item.py +11 -0
  74. waldur_api_client/models/constance_settings.py +9 -0
  75. waldur_api_client/models/constance_settings_request.py +9 -0
  76. waldur_api_client/models/constance_settings_request_form.py +1547 -0
  77. waldur_api_client/models/constance_settings_request_multipart.py +2173 -0
  78. waldur_api_client/models/customer.py +9 -0
  79. waldur_api_client/models/customer_request.py +9 -0
  80. waldur_api_client/models/customer_request_form.py +312 -0
  81. waldur_api_client/models/customer_request_multipart.py +394 -0
  82. waldur_api_client/models/customers_list_field_item.py +1 -0
  83. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  84. waldur_api_client/models/external_link_request_form.py +111 -0
  85. waldur_api_client/models/external_link_request_multipart.py +132 -0
  86. waldur_api_client/models/firecrest_job_request_form.py +104 -0
  87. waldur_api_client/models/firecrest_job_request_multipart.py +127 -0
  88. waldur_api_client/models/integration_status.py +21 -4
  89. waldur_api_client/models/marketplace_category_request_form.py +153 -0
  90. waldur_api_client/models/marketplace_category_request_multipart.py +187 -0
  91. waldur_api_client/models/marketplace_provider_offerings_list_course_accounts_retrieve_field_item.py +1 -0
  92. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +1 -0
  93. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +1 -0
  94. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +1 -0
  95. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +1 -0
  96. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +1 -0
  97. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +1 -0
  98. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -0
  99. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -0
  100. waldur_api_client/models/marketplace_service_providers_offerings_list_field_item.py +1 -0
  101. waldur_api_client/models/nested_round.py +9 -0
  102. waldur_api_client/models/nested_round_request.py +9 -0
  103. waldur_api_client/models/offering.py +20 -0
  104. waldur_api_client/models/offering_create.py +20 -0
  105. waldur_api_client/models/offering_create_request.py +20 -0
  106. waldur_api_client/models/offering_create_request_form.py +479 -0
  107. waldur_api_client/models/offering_create_request_form_limits.py +57 -0
  108. waldur_api_client/models/offering_create_request_multipart.py +599 -0
  109. waldur_api_client/models/offering_create_request_multipart_limits.py +57 -0
  110. waldur_api_client/models/offering_file_request_form.py +78 -0
  111. waldur_api_client/models/offering_file_request_multipart.py +93 -0
  112. waldur_api_client/models/offering_image_request_form.py +62 -0
  113. waldur_api_client/models/offering_image_request_multipart.py +73 -0
  114. waldur_api_client/models/offering_thumbnail_request_form.py +62 -0
  115. waldur_api_client/models/offering_thumbnail_request_multipart.py +73 -0
  116. waldur_api_client/models/offering_user.py +5 -5
  117. waldur_api_client/models/{offering_user_state_enum.py → offering_user_state.py} +1 -1
  118. waldur_api_client/models/order_attachment_request_form.py +84 -0
  119. waldur_api_client/models/order_attachment_request_multipart.py +98 -0
  120. waldur_api_client/models/paid_request_form.py +81 -0
  121. waldur_api_client/models/paid_request_multipart.py +94 -0
  122. waldur_api_client/models/patched_call_managing_organisation_request_form.py +92 -0
  123. waldur_api_client/models/patched_call_managing_organisation_request_multipart.py +109 -0
  124. waldur_api_client/models/patched_category_group_request_form.py +101 -0
  125. waldur_api_client/models/patched_category_group_request_multipart.py +121 -0
  126. waldur_api_client/models/patched_checklist_category_request_form.py +102 -0
  127. waldur_api_client/models/patched_checklist_category_request_multipart.py +122 -0
  128. waldur_api_client/models/patched_customer_request.py +9 -0
  129. waldur_api_client/models/patched_customer_request_form.py +310 -0
  130. waldur_api_client/models/patched_customer_request_multipart.py +393 -0
  131. waldur_api_client/models/patched_external_link_request_form.py +110 -0
  132. waldur_api_client/models/patched_external_link_request_multipart.py +133 -0
  133. waldur_api_client/models/patched_marketplace_category_request_form.py +151 -0
  134. waldur_api_client/models/patched_marketplace_category_request_multipart.py +186 -0
  135. waldur_api_client/models/patched_payment_request_form.py +119 -0
  136. waldur_api_client/models/patched_payment_request_multipart.py +142 -0
  137. waldur_api_client/models/patched_project_request_form.py +279 -0
  138. waldur_api_client/models/patched_project_request_multipart.py +342 -0
  139. waldur_api_client/models/patched_service_provider_request_form.py +101 -0
  140. waldur_api_client/models/patched_service_provider_request_multipart.py +121 -0
  141. waldur_api_client/models/patched_user_request_form.py +241 -0
  142. waldur_api_client/models/patched_user_request_multipart.py +306 -0
  143. waldur_api_client/models/payment_request_form.py +113 -0
  144. waldur_api_client/models/payment_request_multipart.py +134 -0
  145. waldur_api_client/models/project_request_form.py +280 -0
  146. waldur_api_client/models/project_request_multipart.py +341 -0
  147. waldur_api_client/models/project_user.py +9 -0
  148. waldur_api_client/models/proposal.py +8 -0
  149. waldur_api_client/models/proposal_documentation_request_form.py +84 -0
  150. waldur_api_client/models/proposal_documentation_request_multipart.py +98 -0
  151. waldur_api_client/models/proposal_proposals_count_o_item.py +3 -1
  152. waldur_api_client/models/proposal_proposals_list_o_item.py +3 -1
  153. waldur_api_client/models/proposal_review.py +40 -0
  154. waldur_api_client/models/protected_proposal_list.py +8 -0
  155. waldur_api_client/models/protected_proposal_list_request.py +8 -0
  156. waldur_api_client/models/protected_round.py +8 -0
  157. waldur_api_client/models/provider_offering.py +21 -1
  158. waldur_api_client/models/provider_offering_details.py +20 -0
  159. waldur_api_client/models/public_offering_details.py +20 -0
  160. waldur_api_client/models/screenshot_request_form.py +87 -0
  161. waldur_api_client/models/screenshot_request_multipart.py +105 -0
  162. waldur_api_client/models/service_provider_request_form.py +112 -0
  163. waldur_api_client/models/service_provider_request_multipart.py +134 -0
  164. waldur_api_client/models/user_request_form.py +250 -0
  165. waldur_api_client/models/user_request_multipart.py +316 -0
  166. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.2.dist-info}/METADATA +1 -1
  167. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.2.dist-info}/RECORD +169 -98
  168. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.2.dist-info}/WHEEL +0 -0
  169. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.2.dist-info}/licenses/LICENSE +0 -0
@@ -28,6 +28,7 @@ class Proposal:
28
28
  Attributes:
29
29
  uuid (UUID):
30
30
  url (str):
31
+ slug (str):
31
32
  name (str):
32
33
  project_name (str):
33
34
  supporting_documentation (list['ProposalDocumentation']):
@@ -56,6 +57,7 @@ class Proposal:
56
57
 
57
58
  uuid: UUID
58
59
  url: str
60
+ slug: str
59
61
  name: str
60
62
  project_name: str
61
63
  supporting_documentation: list["ProposalDocumentation"]
@@ -89,6 +91,8 @@ class Proposal:
89
91
 
90
92
  url = self.url
91
93
 
94
+ slug = self.slug
95
+
92
96
  name = self.name
93
97
 
94
98
  project_name = self.project_name
@@ -166,6 +170,7 @@ class Proposal:
166
170
  {
167
171
  "uuid": uuid,
168
172
  "url": url,
173
+ "slug": slug,
169
174
  "name": name,
170
175
  "project_name": project_name,
171
176
  "supporting_documentation": supporting_documentation,
@@ -213,6 +218,8 @@ class Proposal:
213
218
 
214
219
  url = d.pop("url")
215
220
 
221
+ slug = d.pop("slug")
222
+
216
223
  name = d.pop("name")
217
224
 
218
225
  project_name = d.pop("project_name")
@@ -332,6 +339,7 @@ class Proposal:
332
339
  proposal = cls(
333
340
  uuid=uuid,
334
341
  url=url,
342
+ slug=slug,
335
343
  name=name,
336
344
  project_name=project_name,
337
345
  supporting_documentation=supporting_documentation,
@@ -0,0 +1,84 @@
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="ProposalDocumentationRequestForm")
12
+
13
+
14
+ @_attrs_define
15
+ class ProposalDocumentationRequestForm:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation in PDF format.
19
+ """
20
+
21
+ file: 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
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
44
+ d = dict(src_dict)
45
+
46
+ def _parse_file(data: object) -> Union[File, None, Unset]:
47
+ if data is None:
48
+ return data
49
+ if isinstance(data, Unset):
50
+ return data
51
+ try:
52
+ if not isinstance(data, bytes):
53
+ raise TypeError()
54
+ file_type_0 = File(payload=BytesIO(data))
55
+
56
+ return file_type_0
57
+ except: # noqa: E722
58
+ pass
59
+ return cast(Union[File, None, Unset], data)
60
+
61
+ file = _parse_file(d.pop("file", UNSET))
62
+
63
+ proposal_documentation_request_form = cls(
64
+ file=file,
65
+ )
66
+
67
+ proposal_documentation_request_form.additional_properties = d
68
+ return proposal_documentation_request_form
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties
@@ -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="ProposalDocumentationRequestMultipart")
12
+
13
+
14
+ @_attrs_define
15
+ class ProposalDocumentationRequestMultipart:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation in PDF format.
19
+ """
20
+
21
+ file: 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
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ def to_multipart(self) -> types.RequestFiles:
43
+ files: types.RequestFiles = []
44
+
45
+ if not isinstance(self.file, Unset):
46
+ if isinstance(self.file, File):
47
+ files.append(("file", self.file.to_tuple()))
48
+ else:
49
+ files.append(("file", (None, str(self.file).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_file(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
+ file_type_0 = File(payload=BytesIO(data))
69
+
70
+ return file_type_0
71
+ except: # noqa: E722
72
+ pass
73
+ return cast(Union[File, None, Unset], data)
74
+
75
+ file = _parse_file(d.pop("file", UNSET))
76
+
77
+ proposal_documentation_request_multipart = cls(
78
+ file=file,
79
+ )
80
+
81
+ proposal_documentation_request_multipart.additional_properties = d
82
+ return proposal_documentation_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
@@ -6,12 +6,14 @@ class ProposalProposalsCountOItem(str, Enum):
6
6
  ROUND_CALL_NAME = "round__call__name"
7
7
  ROUND_CUTOFF_TIME = "round__cutoff_time"
8
8
  ROUND_START_TIME = "round__start_time"
9
+ SLUG = "slug"
9
10
  STATE = "state"
10
11
  VALUE_0 = "-created"
11
12
  VALUE_1 = "-round__call__name"
12
13
  VALUE_2 = "-round__cutoff_time"
13
14
  VALUE_3 = "-round__start_time"
14
- VALUE_4 = "-state"
15
+ VALUE_4 = "-slug"
16
+ VALUE_5 = "-state"
15
17
 
16
18
  def __str__(self) -> str:
17
19
  return str(self.value)
@@ -6,12 +6,14 @@ class ProposalProposalsListOItem(str, Enum):
6
6
  ROUND_CALL_NAME = "round__call__name"
7
7
  ROUND_CUTOFF_TIME = "round__cutoff_time"
8
8
  ROUND_START_TIME = "round__start_time"
9
+ SLUG = "slug"
9
10
  STATE = "state"
10
11
  VALUE_0 = "-created"
11
12
  VALUE_1 = "-round__call__name"
12
13
  VALUE_2 = "-round__cutoff_time"
13
14
  VALUE_3 = "-round__start_time"
14
- VALUE_4 = "-state"
15
+ VALUE_4 = "-slug"
16
+ VALUE_5 = "-state"
15
17
 
16
18
  def __str__(self) -> str:
17
19
  return str(self.value)
@@ -22,6 +22,7 @@ class ProposalReview:
22
22
  proposal (str):
23
23
  proposal_name (str):
24
24
  proposal_uuid (UUID):
25
+ proposal_slug (str):
25
26
  reviewer (str):
26
27
  reviewer_full_name (str):
27
28
  reviewer_uuid (UUID):
@@ -32,11 +33,15 @@ class ProposalReview:
32
33
  review_end_date (datetime.datetime):
33
34
  round_uuid (UUID):
34
35
  round_name (str):
36
+ round_slug (str):
35
37
  round_cutoff_time (datetime.datetime):
36
38
  round_start_time (datetime.datetime):
37
39
  call_name (str):
38
40
  call_uuid (UUID):
41
+ call_slug (str):
39
42
  call_managing_organisation_uuid (UUID):
43
+ created (datetime.datetime):
44
+ modified (datetime.datetime):
40
45
  summary_score (Union[Unset, int]):
41
46
  summary_public_comment (Union[Unset, str]):
42
47
  summary_private_comment (Union[Unset, str]):
@@ -56,6 +61,7 @@ class ProposalReview:
56
61
  proposal: str
57
62
  proposal_name: str
58
63
  proposal_uuid: UUID
64
+ proposal_slug: str
59
65
  reviewer: str
60
66
  reviewer_full_name: str
61
67
  reviewer_uuid: UUID
@@ -64,11 +70,15 @@ class ProposalReview:
64
70
  review_end_date: datetime.datetime
65
71
  round_uuid: UUID
66
72
  round_name: str
73
+ round_slug: str
67
74
  round_cutoff_time: datetime.datetime
68
75
  round_start_time: datetime.datetime
69
76
  call_name: str
70
77
  call_uuid: UUID
78
+ call_slug: str
71
79
  call_managing_organisation_uuid: UUID
80
+ created: datetime.datetime
81
+ modified: datetime.datetime
72
82
  summary_score: Union[Unset, int] = UNSET
73
83
  summary_public_comment: Union[Unset, str] = UNSET
74
84
  summary_private_comment: Union[Unset, str] = UNSET
@@ -94,6 +104,8 @@ class ProposalReview:
94
104
 
95
105
  proposal_uuid = str(self.proposal_uuid)
96
106
 
107
+ proposal_slug = self.proposal_slug
108
+
97
109
  reviewer = self.reviewer
98
110
 
99
111
  reviewer_full_name = self.reviewer_full_name
@@ -111,6 +123,8 @@ class ProposalReview:
111
123
 
112
124
  round_name = self.round_name
113
125
 
126
+ round_slug = self.round_slug
127
+
114
128
  round_cutoff_time = self.round_cutoff_time.isoformat()
115
129
 
116
130
  round_start_time = self.round_start_time.isoformat()
@@ -119,8 +133,14 @@ class ProposalReview:
119
133
 
120
134
  call_uuid = str(self.call_uuid)
121
135
 
136
+ call_slug = self.call_slug
137
+
122
138
  call_managing_organisation_uuid = str(self.call_managing_organisation_uuid)
123
139
 
140
+ created = self.created.isoformat()
141
+
142
+ modified = self.modified.isoformat()
143
+
124
144
  summary_score = self.summary_score
125
145
 
126
146
  summary_public_comment = self.summary_public_comment
@@ -190,6 +210,7 @@ class ProposalReview:
190
210
  "proposal": proposal,
191
211
  "proposal_name": proposal_name,
192
212
  "proposal_uuid": proposal_uuid,
213
+ "proposal_slug": proposal_slug,
193
214
  "reviewer": reviewer,
194
215
  "reviewer_full_name": reviewer_full_name,
195
216
  "reviewer_uuid": reviewer_uuid,
@@ -198,11 +219,15 @@ class ProposalReview:
198
219
  "review_end_date": review_end_date,
199
220
  "round_uuid": round_uuid,
200
221
  "round_name": round_name,
222
+ "round_slug": round_slug,
201
223
  "round_cutoff_time": round_cutoff_time,
202
224
  "round_start_time": round_start_time,
203
225
  "call_name": call_name,
204
226
  "call_uuid": call_uuid,
227
+ "call_slug": call_slug,
205
228
  "call_managing_organisation_uuid": call_managing_organisation_uuid,
229
+ "created": created,
230
+ "modified": modified,
206
231
  }
207
232
  )
208
233
  if summary_score is not UNSET:
@@ -245,6 +270,8 @@ class ProposalReview:
245
270
 
246
271
  proposal_uuid = UUID(d.pop("proposal_uuid"))
247
272
 
273
+ proposal_slug = d.pop("proposal_slug")
274
+
248
275
  reviewer = d.pop("reviewer")
249
276
 
250
277
  reviewer_full_name = d.pop("reviewer_full_name")
@@ -266,6 +293,8 @@ class ProposalReview:
266
293
 
267
294
  round_name = d.pop("round_name")
268
295
 
296
+ round_slug = d.pop("round_slug")
297
+
269
298
  round_cutoff_time = isoparse(d.pop("round_cutoff_time"))
270
299
 
271
300
  round_start_time = isoparse(d.pop("round_start_time"))
@@ -274,8 +303,14 @@ class ProposalReview:
274
303
 
275
304
  call_uuid = UUID(d.pop("call_uuid"))
276
305
 
306
+ call_slug = d.pop("call_slug")
307
+
277
308
  call_managing_organisation_uuid = UUID(d.pop("call_managing_organisation_uuid"))
278
309
 
310
+ created = isoparse(d.pop("created"))
311
+
312
+ modified = isoparse(d.pop("modified"))
313
+
279
314
  summary_score = d.pop("summary_score", UNSET)
280
315
 
281
316
  summary_public_comment = d.pop("summary_public_comment", UNSET)
@@ -375,6 +410,7 @@ class ProposalReview:
375
410
  proposal=proposal,
376
411
  proposal_name=proposal_name,
377
412
  proposal_uuid=proposal_uuid,
413
+ proposal_slug=proposal_slug,
378
414
  reviewer=reviewer,
379
415
  reviewer_full_name=reviewer_full_name,
380
416
  reviewer_uuid=reviewer_uuid,
@@ -383,11 +419,15 @@ class ProposalReview:
383
419
  review_end_date=review_end_date,
384
420
  round_uuid=round_uuid,
385
421
  round_name=round_name,
422
+ round_slug=round_slug,
386
423
  round_cutoff_time=round_cutoff_time,
387
424
  round_start_time=round_start_time,
388
425
  call_name=call_name,
389
426
  call_uuid=call_uuid,
427
+ call_slug=call_slug,
390
428
  call_managing_organisation_uuid=call_managing_organisation_uuid,
429
+ created=created,
430
+ modified=modified,
391
431
  summary_score=summary_score,
392
432
  summary_public_comment=summary_public_comment,
393
433
  summary_private_comment=summary_private_comment,
@@ -17,6 +17,7 @@ class ProtectedProposalList:
17
17
  """
18
18
  Attributes:
19
19
  uuid (UUID):
20
+ slug (str):
20
21
  name (str):
21
22
  state (ProposalStates):
22
23
  reviews (list[Any]): Return serialized reviews based on user permissions and visibility settings.
@@ -28,6 +29,7 @@ class ProtectedProposalList:
28
29
  """
29
30
 
30
31
  uuid: UUID
32
+ slug: str
31
33
  name: str
32
34
  state: ProposalStates
33
35
  reviews: list[Any]
@@ -39,6 +41,8 @@ class ProtectedProposalList:
39
41
  def to_dict(self) -> dict[str, Any]:
40
42
  uuid = str(self.uuid)
41
43
 
44
+ slug = self.slug
45
+
42
46
  name = self.name
43
47
 
44
48
  state = self.state.value
@@ -56,6 +60,7 @@ class ProtectedProposalList:
56
60
  field_dict.update(
57
61
  {
58
62
  "uuid": uuid,
63
+ "slug": slug,
59
64
  "name": name,
60
65
  "state": state,
61
66
  "reviews": reviews,
@@ -72,6 +77,8 @@ class ProtectedProposalList:
72
77
  d = dict(src_dict)
73
78
  uuid = UUID(d.pop("uuid"))
74
79
 
80
+ slug = d.pop("slug")
81
+
75
82
  name = d.pop("name")
76
83
 
77
84
  state = ProposalStates(d.pop("state"))
@@ -86,6 +93,7 @@ class ProtectedProposalList:
86
93
 
87
94
  protected_proposal_list = cls(
88
95
  uuid=uuid,
96
+ slug=slug,
89
97
  name=name,
90
98
  state=state,
91
99
  reviews=reviews,
@@ -11,19 +11,24 @@ T = TypeVar("T", bound="ProtectedProposalListRequest")
11
11
  class ProtectedProposalListRequest:
12
12
  """
13
13
  Attributes:
14
+ slug (str):
14
15
  name (str):
15
16
  """
16
17
 
18
+ slug: str
17
19
  name: str
18
20
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
19
21
 
20
22
  def to_dict(self) -> dict[str, Any]:
23
+ slug = self.slug
24
+
21
25
  name = self.name
22
26
 
23
27
  field_dict: dict[str, Any] = {}
24
28
  field_dict.update(self.additional_properties)
25
29
  field_dict.update(
26
30
  {
31
+ "slug": slug,
27
32
  "name": name,
28
33
  }
29
34
  )
@@ -33,9 +38,12 @@ class ProtectedProposalListRequest:
33
38
  @classmethod
34
39
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
35
40
  d = dict(src_dict)
41
+ slug = d.pop("slug")
42
+
36
43
  name = d.pop("name")
37
44
 
38
45
  protected_proposal_list_request = cls(
46
+ slug=slug,
39
47
  name=name,
40
48
  )
41
49
 
@@ -25,6 +25,7 @@ class ProtectedRound:
25
25
  """
26
26
  Attributes:
27
27
  uuid (UUID):
28
+ slug (str):
28
29
  name (str):
29
30
  start_time (datetime.datetime):
30
31
  cutoff_time (datetime.datetime):
@@ -41,6 +42,7 @@ class ProtectedRound:
41
42
  """
42
43
 
43
44
  uuid: UUID
45
+ slug: str
44
46
  name: str
45
47
  start_time: datetime.datetime
46
48
  cutoff_time: datetime.datetime
@@ -59,6 +61,8 @@ class ProtectedRound:
59
61
  def to_dict(self) -> dict[str, Any]:
60
62
  uuid = str(self.uuid)
61
63
 
64
+ slug = self.slug
65
+
62
66
  name = self.name
63
67
 
64
68
  start_time = self.start_time.isoformat()
@@ -113,6 +117,7 @@ class ProtectedRound:
113
117
  field_dict.update(
114
118
  {
115
119
  "uuid": uuid,
120
+ "slug": slug,
116
121
  "name": name,
117
122
  "start_time": start_time,
118
123
  "cutoff_time": cutoff_time,
@@ -145,6 +150,8 @@ class ProtectedRound:
145
150
  d = dict(src_dict)
146
151
  uuid = UUID(d.pop("uuid"))
147
152
 
153
+ slug = d.pop("slug")
154
+
148
155
  name = d.pop("name")
149
156
 
150
157
  start_time = isoparse(d.pop("start_time"))
@@ -222,6 +229,7 @@ class ProtectedRound:
222
229
 
223
230
  protected_round = cls(
224
231
  uuid=uuid,
232
+ slug=slug,
225
233
  name=name,
226
234
  start_time=start_time,
227
235
  cutoff_time=cutoff_time,
@@ -1,5 +1,5 @@
1
1
  from collections.abc import Mapping
2
- from typing import TYPE_CHECKING, Any, TypeVar, Union
2
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
3
  from uuid import UUID
4
4
 
5
5
  from attrs import define as _attrs_define
@@ -36,6 +36,7 @@ class ProviderOffering:
36
36
  options (Union[Unset, Any]): Fields describing resource provision form.
37
37
  resource_options (Union[Unset, Any]): Fields describing resource report form.
38
38
  secret_options (Union[Unset, MergedSecretOptions]):
39
+ thumbnail (Union[None, Unset, str]):
39
40
  """
40
41
 
41
42
  uuid: Union[Unset, UUID] = UNSET
@@ -52,6 +53,7 @@ class ProviderOffering:
52
53
  options: Union[Unset, Any] = UNSET
53
54
  resource_options: Union[Unset, Any] = UNSET
54
55
  secret_options: Union[Unset, "MergedSecretOptions"] = UNSET
56
+ thumbnail: Union[None, Unset, str] = UNSET
55
57
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
56
58
 
57
59
  def to_dict(self) -> dict[str, Any]:
@@ -103,6 +105,12 @@ class ProviderOffering:
103
105
  if not isinstance(self.secret_options, Unset):
104
106
  secret_options = self.secret_options.to_dict()
105
107
 
108
+ thumbnail: Union[None, Unset, str]
109
+ if isinstance(self.thumbnail, Unset):
110
+ thumbnail = UNSET
111
+ else:
112
+ thumbnail = self.thumbnail
113
+
106
114
  field_dict: dict[str, Any] = {}
107
115
  field_dict.update(self.additional_properties)
108
116
  field_dict.update({})
@@ -134,6 +142,8 @@ class ProviderOffering:
134
142
  field_dict["resource_options"] = resource_options
135
143
  if secret_options is not UNSET:
136
144
  field_dict["secret_options"] = secret_options
145
+ if thumbnail is not UNSET:
146
+ field_dict["thumbnail"] = thumbnail
137
147
 
138
148
  return field_dict
139
149
 
@@ -208,6 +218,15 @@ class ProviderOffering:
208
218
  else:
209
219
  secret_options = MergedSecretOptions.from_dict(_secret_options)
210
220
 
221
+ def _parse_thumbnail(data: object) -> Union[None, Unset, str]:
222
+ if data is None:
223
+ return data
224
+ if isinstance(data, Unset):
225
+ return data
226
+ return cast(Union[None, Unset, str], data)
227
+
228
+ thumbnail = _parse_thumbnail(d.pop("thumbnail", UNSET))
229
+
211
230
  provider_offering = cls(
212
231
  uuid=uuid,
213
232
  customer_uuid=customer_uuid,
@@ -223,6 +242,7 @@ class ProviderOffering:
223
242
  options=options,
224
243
  resource_options=resource_options,
225
244
  secret_options=secret_options,
245
+ thumbnail=thumbnail,
226
246
  )
227
247
 
228
248
  provider_offering.additional_properties = d
@@ -99,6 +99,7 @@ class ProviderOfferingDetails:
99
99
  parent_name (Union[None, Unset, str]):
100
100
  backend_metadata (Union[Unset, Any]):
101
101
  has_compliance_requirements (Union[Unset, bool]):
102
+ compliance_checklist (Union[None, Unset, str]):
102
103
  integration_status (Union[None, Unset, list['IntegrationStatus']]):
103
104
  google_calendar_is_public (Union[None, Unset, bool]):
104
105
  google_calendar_link (Union[None, Unset, str]): Get the Google Calendar link for an offering.
@@ -166,6 +167,7 @@ class ProviderOfferingDetails:
166
167
  parent_name: Union[None, Unset, str] = UNSET
167
168
  backend_metadata: Union[Unset, Any] = UNSET
168
169
  has_compliance_requirements: Union[Unset, bool] = UNSET
170
+ compliance_checklist: Union[None, Unset, str] = UNSET
169
171
  integration_status: Union[None, Unset, list["IntegrationStatus"]] = UNSET
170
172
  google_calendar_is_public: Union[None, Unset, bool] = UNSET
171
173
  google_calendar_link: Union[None, Unset, str] = UNSET
@@ -454,6 +456,12 @@ class ProviderOfferingDetails:
454
456
 
455
457
  has_compliance_requirements = self.has_compliance_requirements
456
458
 
459
+ compliance_checklist: Union[None, Unset, str]
460
+ if isinstance(self.compliance_checklist, Unset):
461
+ compliance_checklist = UNSET
462
+ else:
463
+ compliance_checklist = self.compliance_checklist
464
+
457
465
  integration_status: Union[None, Unset, list[dict[str, Any]]]
458
466
  if isinstance(self.integration_status, Unset):
459
467
  integration_status = UNSET
@@ -605,6 +613,8 @@ class ProviderOfferingDetails:
605
613
  field_dict["backend_metadata"] = backend_metadata
606
614
  if has_compliance_requirements is not UNSET:
607
615
  field_dict["has_compliance_requirements"] = has_compliance_requirements
616
+ if compliance_checklist is not UNSET:
617
+ field_dict["compliance_checklist"] = compliance_checklist
608
618
  if integration_status is not UNSET:
609
619
  field_dict["integration_status"] = integration_status
610
620
  if google_calendar_is_public is not UNSET:
@@ -1051,6 +1061,15 @@ class ProviderOfferingDetails:
1051
1061
 
1052
1062
  has_compliance_requirements = d.pop("has_compliance_requirements", UNSET)
1053
1063
 
1064
+ def _parse_compliance_checklist(data: object) -> Union[None, Unset, str]:
1065
+ if data is None:
1066
+ return data
1067
+ if isinstance(data, Unset):
1068
+ return data
1069
+ return cast(Union[None, Unset, str], data)
1070
+
1071
+ compliance_checklist = _parse_compliance_checklist(d.pop("compliance_checklist", UNSET))
1072
+
1054
1073
  def _parse_integration_status(data: object) -> Union[None, Unset, list["IntegrationStatus"]]:
1055
1074
  if data is None:
1056
1075
  return data
@@ -1154,6 +1173,7 @@ class ProviderOfferingDetails:
1154
1173
  parent_name=parent_name,
1155
1174
  backend_metadata=backend_metadata,
1156
1175
  has_compliance_requirements=has_compliance_requirements,
1176
+ compliance_checklist=compliance_checklist,
1157
1177
  integration_status=integration_status,
1158
1178
  google_calendar_is_public=google_calendar_is_public,
1159
1179
  google_calendar_link=google_calendar_link,