waldur-api-client 7.8.3__py3-none-any.whl → 7.8.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (118) hide show
  1. waldur_api_client/api/booking_resources/booking_resources_count.py +18 -0
  2. waldur_api_client/api/booking_resources/booking_resources_list.py +18 -0
  3. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_template_count.py +125 -0
  4. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_template_retrieve.py +126 -0
  5. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_tos_stats_retrieve.py +146 -0
  6. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +18 -0
  7. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +18 -0
  8. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_update_options.py +168 -0
  9. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +18 -0
  10. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +18 -0
  11. waldur_api_client/api/marketplace_resources/marketplace_resources_renew.py +166 -0
  12. waldur_api_client/api/marketplace_service_providers/service_provider_checklists_summary.py +189 -0
  13. waldur_api_client/api/onboarding/__init__.py +1 -0
  14. waldur_api_client/api/onboarding/onboarding_supported_countries_retrieve.py +74 -0
  15. waldur_api_client/api/onboarding_justifications/__init__.py +1 -0
  16. waldur_api_client/api/onboarding_justifications/onboarding_justifications_attach_document.py +211 -0
  17. waldur_api_client/api/onboarding_justifications/onboarding_justifications_count.py +172 -0
  18. waldur_api_client/api/onboarding_justifications/onboarding_justifications_create.py +150 -0
  19. waldur_api_client/api/onboarding_justifications/onboarding_justifications_create_justification.py +154 -0
  20. waldur_api_client/api/onboarding_justifications/onboarding_justifications_destroy.py +89 -0
  21. waldur_api_client/api/onboarding_justifications/onboarding_justifications_list.py +175 -0
  22. waldur_api_client/api/onboarding_justifications/onboarding_justifications_partial_update.py +164 -0
  23. waldur_api_client/api/onboarding_justifications/onboarding_justifications_retrieve.py +142 -0
  24. waldur_api_client/api/onboarding_justifications/onboarding_justifications_update.py +164 -0
  25. waldur_api_client/api/onboarding_verifications/__init__.py +1 -0
  26. waldur_api_client/api/onboarding_verifications/onboarding_verifications_count.py +172 -0
  27. waldur_api_client/api/onboarding_verifications/onboarding_verifications_create.py +150 -0
  28. waldur_api_client/api/onboarding_verifications/onboarding_verifications_create_customer.py +144 -0
  29. waldur_api_client/api/onboarding_verifications/onboarding_verifications_destroy.py +89 -0
  30. waldur_api_client/api/onboarding_verifications/onboarding_verifications_list.py +175 -0
  31. waldur_api_client/api/onboarding_verifications/onboarding_verifications_partial_update.py +164 -0
  32. waldur_api_client/api/onboarding_verifications/onboarding_verifications_retrieve.py +142 -0
  33. waldur_api_client/api/onboarding_verifications/onboarding_verifications_update.py +164 -0
  34. waldur_api_client/api/onboarding_verifications/onboarding_verifications_validate_company.py +154 -0
  35. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_count.py +33 -0
  36. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_create.py +154 -0
  37. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_destroy.py +91 -0
  38. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_list.py +33 -0
  39. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_partial_update.py +164 -0
  40. waldur_api_client/api/openstack_network_rbac_policies/openstack_network_rbac_policies_update.py +164 -0
  41. waldur_api_client/api/openstack_networks/openstack_networks_rbac_policy_create.py +24 -22
  42. waldur_api_client/api/projects/projects_checklist_template_count.py +125 -0
  43. waldur_api_client/api/projects/projects_checklist_template_retrieve.py +126 -0
  44. waldur_api_client/api/proposal_proposals/proposal_proposals_checklist_template_count.py +125 -0
  45. waldur_api_client/api/proposal_proposals/proposal_proposals_checklist_template_retrieve.py +126 -0
  46. waldur_api_client/api/proposal_protected_calls/proposal_protected_calls_offerings_list.py +15 -0
  47. waldur_api_client/models/__init__.py +62 -4
  48. waldur_api_client/models/booking_resource.py +4 -11
  49. waldur_api_client/models/call_round.py +4 -4
  50. waldur_api_client/models/checklist_template.py +99 -0
  51. waldur_api_client/models/checklist_template_checklist.py +44 -0
  52. waldur_api_client/models/constance_settings.py +45 -0
  53. waldur_api_client/models/constance_settings_request.py +45 -0
  54. waldur_api_client/models/constance_settings_request_form.py +45 -0
  55. waldur_api_client/models/constance_settings_request_multipart.py +85 -0
  56. waldur_api_client/models/customer.py +9 -0
  57. waldur_api_client/models/customers_list_field_item.py +1 -0
  58. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  59. waldur_api_client/models/deprecated_network_rbac_policy.py +137 -0
  60. waldur_api_client/models/deprecated_network_rbac_policy_request.py +78 -0
  61. waldur_api_client/models/event_types_enum.py +1 -0
  62. waldur_api_client/models/marketplace_service_providers_projects_list_field_item.py +1 -0
  63. waldur_api_client/models/merged_plugin_options.py +18 -0
  64. waldur_api_client/models/merged_plugin_options_request.py +18 -0
  65. waldur_api_client/models/nested_round.py +5 -5
  66. waldur_api_client/models/network_rbac_policy_request.py +8 -0
  67. waldur_api_client/models/notification.py +9 -9
  68. waldur_api_client/models/{notification_context_fields.py → notification_context_schema.py} +6 -6
  69. waldur_api_client/models/notification_template_detail_serializers.py +9 -3
  70. waldur_api_client/models/offering_component.py +79 -0
  71. waldur_api_client/models/offering_component_request.py +80 -0
  72. waldur_api_client/models/onboarding_company_validation_request_request.py +88 -0
  73. waldur_api_client/models/onboarding_justification.py +183 -0
  74. waldur_api_client/models/onboarding_justification_create_request.py +68 -0
  75. waldur_api_client/models/onboarding_justification_documentation.py +108 -0
  76. waldur_api_client/models/onboarding_justification_documentation_request.py +84 -0
  77. waldur_api_client/models/onboarding_justification_documentation_request_form.py +84 -0
  78. waldur_api_client/models/onboarding_justification_documentation_request_multipart.py +98 -0
  79. waldur_api_client/models/onboarding_justification_request.py +75 -0
  80. waldur_api_client/models/onboarding_verification.py +250 -0
  81. waldur_api_client/models/onboarding_verification_request.py +128 -0
  82. waldur_api_client/models/onboarding_verification_status_enum.py +12 -0
  83. waldur_api_client/models/open_stack_create_floating_ip_request.py +20 -1
  84. waldur_api_client/models/order_create.py +4 -4
  85. waldur_api_client/models/order_details.py +4 -11
  86. waldur_api_client/models/patched_network_rbac_policy_request.py +85 -0
  87. waldur_api_client/models/patched_onboarding_justification_request.py +77 -0
  88. waldur_api_client/models/patched_onboarding_verification_request.py +128 -0
  89. waldur_api_client/models/patched_project_credit_request.py +13 -0
  90. waldur_api_client/models/patched_project_request.py +1 -2
  91. waldur_api_client/models/patched_project_request_form.py +1 -2
  92. waldur_api_client/models/patched_project_request_multipart.py +1 -2
  93. waldur_api_client/models/project.py +10 -2
  94. waldur_api_client/models/project_credit.py +13 -0
  95. waldur_api_client/models/project_credit_request.py +13 -0
  96. waldur_api_client/models/project_request.py +1 -2
  97. waldur_api_client/models/project_request_form.py +1 -2
  98. waldur_api_client/models/project_request_multipart.py +1 -2
  99. waldur_api_client/models/projects_list_field_item.py +1 -0
  100. waldur_api_client/models/projects_retrieve_field_item.py +1 -0
  101. waldur_api_client/models/protected_round.py +4 -4
  102. waldur_api_client/models/question.py +102 -0
  103. waldur_api_client/models/question_options.py +79 -0
  104. waldur_api_client/models/resource.py +4 -11
  105. waldur_api_client/models/resource_renew_request.py +83 -0
  106. waldur_api_client/models/resource_renew_request_limits.py +44 -0
  107. waldur_api_client/models/{status_enum.py → round_status.py} +1 -1
  108. waldur_api_client/models/service_provider_checklist_summary.py +98 -0
  109. waldur_api_client/models/time_series_to_s_data.py +69 -0
  110. waldur_api_client/models/to_s_consent_dashboard.py +155 -0
  111. waldur_api_client/models/update_offering_component_request.py +79 -0
  112. waldur_api_client/models/validation_decision_enum.py +10 -0
  113. waldur_api_client/models/validation_method_enum.py +8 -0
  114. waldur_api_client/models/version_adoption.py +67 -0
  115. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/METADATA +1 -1
  116. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/RECORD +118 -54
  117. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/WHEEL +0 -0
  118. {waldur_api_client-7.8.3.dist-info → waldur_api_client-7.8.4.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,128 @@
1
+ import datetime
2
+ from collections.abc import Mapping
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
+ from dateutil.parser import isoparse
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="PatchedOnboardingVerificationRequest")
12
+
13
+
14
+ @_attrs_define
15
+ class PatchedOnboardingVerificationRequest:
16
+ """
17
+ Attributes:
18
+ user (Union[Unset, int]): User requesting company onboarding
19
+ country (Union[Unset, str]): ISO country code (e.g., 'EE' for Estonia)
20
+ legal_person_identifier (Union[Unset, str]): Official company registration code
21
+ legal_name (Union[Unset, str]): Claimed company name (optional, for reference)
22
+ user_submitted_customer_metadata (Union[Unset, Any]): Additional customer metadata submitted by user for manual
23
+ verification cases. Should contain valid Customer model fields.
24
+ expires_at (Union[None, Unset, datetime.datetime]): When this verification expires
25
+ """
26
+
27
+ user: Union[Unset, int] = UNSET
28
+ country: Union[Unset, str] = UNSET
29
+ legal_person_identifier: Union[Unset, str] = UNSET
30
+ legal_name: Union[Unset, str] = UNSET
31
+ user_submitted_customer_metadata: Union[Unset, Any] = UNSET
32
+ expires_at: Union[None, Unset, datetime.datetime] = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ user = self.user
37
+
38
+ country = self.country
39
+
40
+ legal_person_identifier = self.legal_person_identifier
41
+
42
+ legal_name = self.legal_name
43
+
44
+ user_submitted_customer_metadata = self.user_submitted_customer_metadata
45
+
46
+ expires_at: Union[None, Unset, str]
47
+ if isinstance(self.expires_at, Unset):
48
+ expires_at = UNSET
49
+ elif isinstance(self.expires_at, datetime.datetime):
50
+ expires_at = self.expires_at.isoformat()
51
+ else:
52
+ expires_at = self.expires_at
53
+
54
+ field_dict: dict[str, Any] = {}
55
+ field_dict.update(self.additional_properties)
56
+ field_dict.update({})
57
+ if user is not UNSET:
58
+ field_dict["user"] = user
59
+ if country is not UNSET:
60
+ field_dict["country"] = country
61
+ if legal_person_identifier is not UNSET:
62
+ field_dict["legal_person_identifier"] = legal_person_identifier
63
+ if legal_name is not UNSET:
64
+ field_dict["legal_name"] = legal_name
65
+ if user_submitted_customer_metadata is not UNSET:
66
+ field_dict["user_submitted_customer_metadata"] = user_submitted_customer_metadata
67
+ if expires_at is not UNSET:
68
+ field_dict["expires_at"] = expires_at
69
+
70
+ return field_dict
71
+
72
+ @classmethod
73
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
74
+ d = dict(src_dict)
75
+ user = d.pop("user", UNSET)
76
+
77
+ country = d.pop("country", UNSET)
78
+
79
+ legal_person_identifier = d.pop("legal_person_identifier", UNSET)
80
+
81
+ legal_name = d.pop("legal_name", UNSET)
82
+
83
+ user_submitted_customer_metadata = d.pop("user_submitted_customer_metadata", UNSET)
84
+
85
+ def _parse_expires_at(data: object) -> Union[None, Unset, datetime.datetime]:
86
+ if data is None:
87
+ return data
88
+ if isinstance(data, Unset):
89
+ return data
90
+ try:
91
+ if not isinstance(data, str):
92
+ raise TypeError()
93
+ expires_at_type_0 = isoparse(data)
94
+
95
+ return expires_at_type_0
96
+ except: # noqa: E722
97
+ pass
98
+ return cast(Union[None, Unset, datetime.datetime], data)
99
+
100
+ expires_at = _parse_expires_at(d.pop("expires_at", UNSET))
101
+
102
+ patched_onboarding_verification_request = cls(
103
+ user=user,
104
+ country=country,
105
+ legal_person_identifier=legal_person_identifier,
106
+ legal_name=legal_name,
107
+ user_submitted_customer_metadata=user_submitted_customer_metadata,
108
+ expires_at=expires_at,
109
+ )
110
+
111
+ patched_onboarding_verification_request.additional_properties = d
112
+ return patched_onboarding_verification_request
113
+
114
+ @property
115
+ def additional_keys(self) -> list[str]:
116
+ return list(self.additional_properties.keys())
117
+
118
+ def __getitem__(self, key: str) -> Any:
119
+ return self.additional_properties[key]
120
+
121
+ def __setitem__(self, key: str, value: Any) -> None:
122
+ self.additional_properties[key] = value
123
+
124
+ def __delitem__(self, key: str) -> None:
125
+ del self.additional_properties[key]
126
+
127
+ def __contains__(self, key: str) -> bool:
128
+ return key in self.additional_properties
@@ -23,6 +23,7 @@ class PatchedProjectCreditRequest:
23
23
  minimal_consumption_logic (Union[Unset, MinimalConsumptionLogicEnum]):
24
24
  grace_coefficient (Union[Unset, str]):
25
25
  apply_as_minimal_consumption (Union[Unset, bool]):
26
+ mark_unused_credit_as_spent_on_project_termination (Union[Unset, bool]):
26
27
  """
27
28
 
28
29
  value: Union[Unset, str] = UNSET
@@ -32,6 +33,7 @@ class PatchedProjectCreditRequest:
32
33
  minimal_consumption_logic: Union[Unset, MinimalConsumptionLogicEnum] = UNSET
33
34
  grace_coefficient: Union[Unset, str] = UNSET
34
35
  apply_as_minimal_consumption: Union[Unset, bool] = UNSET
36
+ mark_unused_credit_as_spent_on_project_termination: Union[Unset, bool] = UNSET
35
37
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
36
38
 
37
39
  def to_dict(self) -> dict[str, Any]:
@@ -57,6 +59,8 @@ class PatchedProjectCreditRequest:
57
59
 
58
60
  apply_as_minimal_consumption = self.apply_as_minimal_consumption
59
61
 
62
+ mark_unused_credit_as_spent_on_project_termination = self.mark_unused_credit_as_spent_on_project_termination
63
+
60
64
  field_dict: dict[str, Any] = {}
61
65
  field_dict.update(self.additional_properties)
62
66
  field_dict.update({})
@@ -74,6 +78,10 @@ class PatchedProjectCreditRequest:
74
78
  field_dict["grace_coefficient"] = grace_coefficient
75
79
  if apply_as_minimal_consumption is not UNSET:
76
80
  field_dict["apply_as_minimal_consumption"] = apply_as_minimal_consumption
81
+ if mark_unused_credit_as_spent_on_project_termination is not UNSET:
82
+ field_dict["mark_unused_credit_as_spent_on_project_termination"] = (
83
+ mark_unused_credit_as_spent_on_project_termination
84
+ )
77
85
 
78
86
  return field_dict
79
87
 
@@ -114,6 +122,10 @@ class PatchedProjectCreditRequest:
114
122
 
115
123
  apply_as_minimal_consumption = d.pop("apply_as_minimal_consumption", UNSET)
116
124
 
125
+ mark_unused_credit_as_spent_on_project_termination = d.pop(
126
+ "mark_unused_credit_as_spent_on_project_termination", UNSET
127
+ )
128
+
117
129
  patched_project_credit_request = cls(
118
130
  value=value,
119
131
  project=project,
@@ -122,6 +134,7 @@ class PatchedProjectCreditRequest:
122
134
  minimal_consumption_logic=minimal_consumption_logic,
123
135
  grace_coefficient=grace_coefficient,
124
136
  apply_as_minimal_consumption=apply_as_minimal_consumption,
137
+ mark_unused_credit_as_spent_on_project_termination=mark_unused_credit_as_spent_on_project_termination,
125
138
  )
126
139
 
127
140
  patched_project_credit_request.additional_properties = d
@@ -27,8 +27,7 @@ class PatchedProjectRequest:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -27,8 +27,7 @@ class PatchedProjectRequestForm:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -27,8 +27,7 @@ class PatchedProjectRequestMultipart:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -35,14 +35,14 @@ class Project:
35
35
  customer_native_name (Union[Unset, str]):
36
36
  customer_abbreviation (Union[Unset, str]):
37
37
  description (Union[Unset, str]):
38
+ customer_display_billing_info_in_projects (Union[Unset, bool]):
38
39
  created (Union[Unset, datetime.datetime]):
39
40
  type_ (Union[None, Unset, str]):
40
41
  type_name (Union[None, Unset, str]):
41
42
  type_uuid (Union[None, UUID, Unset]):
42
43
  backend_id (Union[Unset, str]):
43
44
  start_date (Union[None, Unset, datetime.date]):
44
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
45
- scheduled for termination.
45
+ end_date (Union[None, Unset, datetime.date]):
46
46
  end_date_requested_by (Union[None, Unset, str]):
47
47
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
48
48
  oecd_fos_2007_label (Union[Unset, str]):
@@ -67,6 +67,7 @@ class Project:
67
67
  customer_native_name: Union[Unset, str] = UNSET
68
68
  customer_abbreviation: Union[Unset, str] = UNSET
69
69
  description: Union[Unset, str] = UNSET
70
+ customer_display_billing_info_in_projects: Union[Unset, bool] = UNSET
70
71
  created: Union[Unset, datetime.datetime] = UNSET
71
72
  type_: Union[None, Unset, str] = UNSET
72
73
  type_name: Union[None, Unset, str] = UNSET
@@ -114,6 +115,8 @@ class Project:
114
115
 
115
116
  description = self.description
116
117
 
118
+ customer_display_billing_info_in_projects = self.customer_display_billing_info_in_projects
119
+
117
120
  created: Union[Unset, str] = UNSET
118
121
  if not isinstance(self.created, Unset):
119
122
  created = self.created.isoformat()
@@ -233,6 +236,8 @@ class Project:
233
236
  field_dict["customer_abbreviation"] = customer_abbreviation
234
237
  if description is not UNSET:
235
238
  field_dict["description"] = description
239
+ if customer_display_billing_info_in_projects is not UNSET:
240
+ field_dict["customer_display_billing_info_in_projects"] = customer_display_billing_info_in_projects
236
241
  if created is not UNSET:
237
242
  field_dict["created"] = created
238
243
  if type_ is not UNSET:
@@ -310,6 +315,8 @@ class Project:
310
315
 
311
316
  description = d.pop("description", UNSET)
312
317
 
318
+ customer_display_billing_info_in_projects = d.pop("customer_display_billing_info_in_projects", UNSET)
319
+
313
320
  _created = d.pop("created", UNSET)
314
321
  created: Union[Unset, datetime.datetime]
315
322
  if isinstance(_created, Unset):
@@ -488,6 +495,7 @@ class Project:
488
495
  customer_native_name=customer_native_name,
489
496
  customer_abbreviation=customer_abbreviation,
490
497
  description=description,
498
+ customer_display_billing_info_in_projects=customer_display_billing_info_in_projects,
491
499
  created=created,
492
500
  type_=type_,
493
501
  type_name=type_name,
@@ -41,6 +41,7 @@ class ProjectCredit:
41
41
  minimal_consumption_logic (Union[Unset, MinimalConsumptionLogicEnum]):
42
42
  grace_coefficient (Union[Unset, str]):
43
43
  apply_as_minimal_consumption (Union[Unset, bool]):
44
+ mark_unused_credit_as_spent_on_project_termination (Union[Unset, bool]):
44
45
  """
45
46
 
46
47
  uuid: UUID
@@ -63,6 +64,7 @@ class ProjectCredit:
63
64
  minimal_consumption_logic: Union[Unset, MinimalConsumptionLogicEnum] = UNSET
64
65
  grace_coefficient: Union[Unset, str] = UNSET
65
66
  apply_as_minimal_consumption: Union[Unset, bool] = UNSET
67
+ mark_unused_credit_as_spent_on_project_termination: Union[Unset, bool] = UNSET
66
68
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
67
69
 
68
70
  def to_dict(self) -> dict[str, Any]:
@@ -117,6 +119,8 @@ class ProjectCredit:
117
119
 
118
120
  apply_as_minimal_consumption = self.apply_as_minimal_consumption
119
121
 
122
+ mark_unused_credit_as_spent_on_project_termination = self.mark_unused_credit_as_spent_on_project_termination
123
+
120
124
  field_dict: dict[str, Any] = {}
121
125
  field_dict.update(self.additional_properties)
122
126
  field_dict.update(
@@ -149,6 +153,10 @@ class ProjectCredit:
149
153
  field_dict["grace_coefficient"] = grace_coefficient
150
154
  if apply_as_minimal_consumption is not UNSET:
151
155
  field_dict["apply_as_minimal_consumption"] = apply_as_minimal_consumption
156
+ if mark_unused_credit_as_spent_on_project_termination is not UNSET:
157
+ field_dict["mark_unused_credit_as_spent_on_project_termination"] = (
158
+ mark_unused_credit_as_spent_on_project_termination
159
+ )
152
160
 
153
161
  return field_dict
154
162
 
@@ -222,6 +230,10 @@ class ProjectCredit:
222
230
 
223
231
  apply_as_minimal_consumption = d.pop("apply_as_minimal_consumption", UNSET)
224
232
 
233
+ mark_unused_credit_as_spent_on_project_termination = d.pop(
234
+ "mark_unused_credit_as_spent_on_project_termination", UNSET
235
+ )
236
+
225
237
  project_credit = cls(
226
238
  uuid=uuid,
227
239
  url=url,
@@ -243,6 +255,7 @@ class ProjectCredit:
243
255
  minimal_consumption_logic=minimal_consumption_logic,
244
256
  grace_coefficient=grace_coefficient,
245
257
  apply_as_minimal_consumption=apply_as_minimal_consumption,
258
+ mark_unused_credit_as_spent_on_project_termination=mark_unused_credit_as_spent_on_project_termination,
246
259
  )
247
260
 
248
261
  project_credit.additional_properties = d
@@ -23,6 +23,7 @@ class ProjectCreditRequest:
23
23
  minimal_consumption_logic (Union[Unset, MinimalConsumptionLogicEnum]):
24
24
  grace_coefficient (Union[Unset, str]):
25
25
  apply_as_minimal_consumption (Union[Unset, bool]):
26
+ mark_unused_credit_as_spent_on_project_termination (Union[Unset, bool]):
26
27
  """
27
28
 
28
29
  project: str
@@ -32,6 +33,7 @@ class ProjectCreditRequest:
32
33
  minimal_consumption_logic: Union[Unset, MinimalConsumptionLogicEnum] = UNSET
33
34
  grace_coefficient: Union[Unset, str] = UNSET
34
35
  apply_as_minimal_consumption: Union[Unset, bool] = UNSET
36
+ mark_unused_credit_as_spent_on_project_termination: Union[Unset, bool] = UNSET
35
37
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
36
38
 
37
39
  def to_dict(self) -> dict[str, Any]:
@@ -57,6 +59,8 @@ class ProjectCreditRequest:
57
59
 
58
60
  apply_as_minimal_consumption = self.apply_as_minimal_consumption
59
61
 
62
+ mark_unused_credit_as_spent_on_project_termination = self.mark_unused_credit_as_spent_on_project_termination
63
+
60
64
  field_dict: dict[str, Any] = {}
61
65
  field_dict.update(self.additional_properties)
62
66
  field_dict.update(
@@ -76,6 +80,10 @@ class ProjectCreditRequest:
76
80
  field_dict["grace_coefficient"] = grace_coefficient
77
81
  if apply_as_minimal_consumption is not UNSET:
78
82
  field_dict["apply_as_minimal_consumption"] = apply_as_minimal_consumption
83
+ if mark_unused_credit_as_spent_on_project_termination is not UNSET:
84
+ field_dict["mark_unused_credit_as_spent_on_project_termination"] = (
85
+ mark_unused_credit_as_spent_on_project_termination
86
+ )
79
87
 
80
88
  return field_dict
81
89
 
@@ -116,6 +124,10 @@ class ProjectCreditRequest:
116
124
 
117
125
  apply_as_minimal_consumption = d.pop("apply_as_minimal_consumption", UNSET)
118
126
 
127
+ mark_unused_credit_as_spent_on_project_termination = d.pop(
128
+ "mark_unused_credit_as_spent_on_project_termination", UNSET
129
+ )
130
+
119
131
  project_credit_request = cls(
120
132
  project=project,
121
133
  value=value,
@@ -124,6 +136,7 @@ class ProjectCreditRequest:
124
136
  minimal_consumption_logic=minimal_consumption_logic,
125
137
  grace_coefficient=grace_coefficient,
126
138
  apply_as_minimal_consumption=apply_as_minimal_consumption,
139
+ mark_unused_credit_as_spent_on_project_termination=mark_unused_credit_as_spent_on_project_termination,
127
140
  )
128
141
 
129
142
  project_credit_request.additional_properties = d
@@ -27,8 +27,7 @@ class ProjectRequest:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -27,8 +27,7 @@ class ProjectRequestForm:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -27,8 +27,7 @@ class ProjectRequestMultipart:
27
27
  type_ (Union[None, Unset, str]):
28
28
  backend_id (Union[Unset, str]):
29
29
  start_date (Union[None, Unset, datetime.date]):
30
- end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
- scheduled for termination.
30
+ end_date (Union[None, Unset, datetime.date]):
32
31
  oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
32
  is_industry (Union[Unset, bool]):
34
33
  image (Union[File, None, Unset]):
@@ -7,6 +7,7 @@ class ProjectsListFieldItem(str, Enum):
7
7
  CREATED = "created"
8
8
  CUSTOMER = "customer"
9
9
  CUSTOMER_ABBREVIATION = "customer_abbreviation"
10
+ CUSTOMER_DISPLAY_BILLING_INFO_IN_PROJECTS = "customer_display_billing_info_in_projects"
10
11
  CUSTOMER_NAME = "customer_name"
11
12
  CUSTOMER_NATIVE_NAME = "customer_native_name"
12
13
  CUSTOMER_SLUG = "customer_slug"
@@ -7,6 +7,7 @@ class ProjectsRetrieveFieldItem(str, Enum):
7
7
  CREATED = "created"
8
8
  CUSTOMER = "customer"
9
9
  CUSTOMER_ABBREVIATION = "customer_abbreviation"
10
+ CUSTOMER_DISPLAY_BILLING_INFO_IN_PROJECTS = "customer_display_billing_info_in_projects"
10
11
  CUSTOMER_NAME = "customer_name"
11
12
  CUSTOMER_NATIVE_NAME = "customer_native_name"
12
13
  CUSTOMER_SLUG = "customer_slug"
@@ -10,7 +10,7 @@ from dateutil.parser import isoparse
10
10
  from ..models.allocation_time_enum import AllocationTimeEnum
11
11
  from ..models.deciding_entity_enum import DecidingEntityEnum
12
12
  from ..models.review_strategy_enum import ReviewStrategyEnum
13
- from ..models.status_enum import StatusEnum
13
+ from ..models.round_status import RoundStatus
14
14
  from ..types import UNSET, Unset
15
15
 
16
16
  if TYPE_CHECKING:
@@ -29,7 +29,7 @@ class ProtectedRound:
29
29
  name (str):
30
30
  start_time (datetime.datetime):
31
31
  cutoff_time (datetime.datetime):
32
- status (StatusEnum):
32
+ status (RoundStatus):
33
33
  url (str):
34
34
  proposals (list['ProtectedProposalList']):
35
35
  review_strategy (Union[Unset, ReviewStrategyEnum]):
@@ -46,7 +46,7 @@ class ProtectedRound:
46
46
  name: str
47
47
  start_time: datetime.datetime
48
48
  cutoff_time: datetime.datetime
49
- status: StatusEnum
49
+ status: RoundStatus
50
50
  url: str
51
51
  proposals: list["ProtectedProposalList"]
52
52
  review_strategy: Union[Unset, ReviewStrategyEnum] = UNSET
@@ -158,7 +158,7 @@ class ProtectedRound:
158
158
 
159
159
  cutoff_time = isoparse(d.pop("cutoff_time"))
160
160
 
161
- status = StatusEnum(d.pop("status"))
161
+ status = RoundStatus(d.pop("status"))
162
162
 
163
163
  url = d.pop("url")
164
164
 
@@ -0,0 +1,102 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, 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
+ if TYPE_CHECKING:
11
+ from ..models.question_options import QuestionOptions
12
+
13
+
14
+ T = TypeVar("T", bound="Question")
15
+
16
+
17
+ @_attrs_define
18
+ class Question:
19
+ """
20
+ Attributes:
21
+ uuid (UUID):
22
+ question_options (list['QuestionOptions']):
23
+ description (Union[Unset, str]):
24
+ user_guidance (Union[Unset, str]): Additional guidance text visible to users when answering and reviewing
25
+ """
26
+
27
+ uuid: UUID
28
+ question_options: list["QuestionOptions"]
29
+ description: Union[Unset, str] = UNSET
30
+ user_guidance: Union[Unset, str] = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ uuid = str(self.uuid)
35
+
36
+ question_options = []
37
+ for question_options_item_data in self.question_options:
38
+ question_options_item = question_options_item_data.to_dict()
39
+ question_options.append(question_options_item)
40
+
41
+ description = self.description
42
+
43
+ user_guidance = self.user_guidance
44
+
45
+ field_dict: dict[str, Any] = {}
46
+ field_dict.update(self.additional_properties)
47
+ field_dict.update(
48
+ {
49
+ "uuid": uuid,
50
+ "question_options": question_options,
51
+ }
52
+ )
53
+ if description is not UNSET:
54
+ field_dict["description"] = description
55
+ if user_guidance is not UNSET:
56
+ field_dict["user_guidance"] = user_guidance
57
+
58
+ return field_dict
59
+
60
+ @classmethod
61
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
62
+ from ..models.question_options import QuestionOptions
63
+
64
+ d = dict(src_dict)
65
+ uuid = UUID(d.pop("uuid"))
66
+
67
+ question_options = []
68
+ _question_options = d.pop("question_options")
69
+ for question_options_item_data in _question_options:
70
+ question_options_item = QuestionOptions.from_dict(question_options_item_data)
71
+
72
+ question_options.append(question_options_item)
73
+
74
+ description = d.pop("description", UNSET)
75
+
76
+ user_guidance = d.pop("user_guidance", UNSET)
77
+
78
+ question = cls(
79
+ uuid=uuid,
80
+ question_options=question_options,
81
+ description=description,
82
+ user_guidance=user_guidance,
83
+ )
84
+
85
+ question.additional_properties = d
86
+ return question
87
+
88
+ @property
89
+ def additional_keys(self) -> list[str]:
90
+ return list(self.additional_properties.keys())
91
+
92
+ def __getitem__(self, key: str) -> Any:
93
+ return self.additional_properties[key]
94
+
95
+ def __setitem__(self, key: str, value: Any) -> None:
96
+ self.additional_properties[key] = value
97
+
98
+ def __delitem__(self, key: str) -> None:
99
+ del self.additional_properties[key]
100
+
101
+ def __contains__(self, key: str) -> bool:
102
+ return key in self.additional_properties
@@ -0,0 +1,79 @@
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="QuestionOptions")
11
+
12
+
13
+ @_attrs_define
14
+ class QuestionOptions:
15
+ """
16
+ Attributes:
17
+ uuid (UUID):
18
+ label (str):
19
+ order (Union[Unset, int]):
20
+ """
21
+
22
+ uuid: UUID
23
+ label: str
24
+ order: Union[Unset, int] = UNSET
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ uuid = str(self.uuid)
29
+
30
+ label = self.label
31
+
32
+ order = self.order
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update(
37
+ {
38
+ "uuid": uuid,
39
+ "label": label,
40
+ }
41
+ )
42
+ if order is not UNSET:
43
+ field_dict["order"] = order
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
+ uuid = UUID(d.pop("uuid"))
51
+
52
+ label = d.pop("label")
53
+
54
+ order = d.pop("order", UNSET)
55
+
56
+ question_options = cls(
57
+ uuid=uuid,
58
+ label=label,
59
+ order=order,
60
+ )
61
+
62
+ question_options.additional_properties = d
63
+ return question_options
64
+
65
+ @property
66
+ def additional_keys(self) -> list[str]:
67
+ return list(self.additional_properties.keys())
68
+
69
+ def __getitem__(self, key: str) -> Any:
70
+ return self.additional_properties[key]
71
+
72
+ def __setitem__(self, key: str, value: Any) -> None:
73
+ self.additional_properties[key] = value
74
+
75
+ def __delitem__(self, key: str) -> None:
76
+ del self.additional_properties[key]
77
+
78
+ def __contains__(self, key: str) -> bool:
79
+ return key in self.additional_properties