waldur-api-client 7.7.6__py3-none-any.whl → 7.7.7__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 (143) hide show
  1. waldur_api_client/api/booking_resources/booking_resources_count.py +34 -11
  2. waldur_api_client/api/booking_resources/booking_resources_list.py +34 -11
  3. waldur_api_client/api/customers/customers_project_metadata_compliance_details_list.py +189 -0
  4. waldur_api_client/api/customers/customers_project_metadata_compliance_overview_list.py +189 -0
  5. waldur_api_client/api/customers/customers_project_metadata_compliance_projects_list.py +187 -0
  6. waldur_api_client/api/customers/customers_project_metadata_question_answers_list.py +187 -0
  7. waldur_api_client/api/marketplace_integration_statuses/marketplace_integration_statuses_count.py +34 -11
  8. waldur_api_client/api/marketplace_integration_statuses/marketplace_integration_statuses_list.py +34 -11
  9. waldur_api_client/api/marketplace_offering_files/marketplace_offering_files_count.py +34 -11
  10. waldur_api_client/api/marketplace_offering_files/marketplace_offering_files_list.py +34 -11
  11. waldur_api_client/api/marketplace_offering_terms_of_service/__init__.py +1 -0
  12. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_count.py +274 -0
  13. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_create.py +152 -0
  14. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_destroy.py +89 -0
  15. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_list.py +277 -0
  16. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_partial_update.py +164 -0
  17. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_retrieve.py +142 -0
  18. waldur_api_client/api/marketplace_offering_terms_of_service/marketplace_offering_terms_of_service_update.py +164 -0
  19. waldur_api_client/api/marketplace_offering_user_roles/marketplace_offering_user_roles_count.py +34 -11
  20. waldur_api_client/api/marketplace_offering_user_roles/marketplace_offering_user_roles_list.py +34 -11
  21. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_count.py +34 -11
  22. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_list.py +34 -11
  23. waldur_api_client/api/marketplace_orders/marketplace_orders_count.py +19 -0
  24. waldur_api_client/api/marketplace_orders/marketplace_orders_list.py +19 -0
  25. waldur_api_client/api/marketplace_plans/marketplace_plans_count.py +19 -0
  26. waldur_api_client/api/marketplace_plans/marketplace_plans_list.py +19 -0
  27. waldur_api_client/api/marketplace_plans/marketplace_plans_usage_stats_count.py +19 -0
  28. waldur_api_client/api/marketplace_plans/marketplace_plans_usage_stats_list.py +19 -0
  29. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +34 -11
  30. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +34 -11
  31. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +34 -11
  32. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +34 -11
  33. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_count.py +34 -11
  34. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_list.py +34 -11
  35. waldur_api_client/api/marketplace_user_offering_consents/__init__.py +1 -0
  36. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_count.py +307 -0
  37. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_create.py +152 -0
  38. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_destroy.py +89 -0
  39. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_list.py +310 -0
  40. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_partial_update.py +164 -0
  41. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_retrieve.py +142 -0
  42. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_revoke.py +146 -0
  43. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_update.py +164 -0
  44. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_order_status_retrieve.py +145 -0
  45. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_status_retrieve.py +147 -0
  46. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_team_status_list.py +188 -0
  47. waldur_api_client/models/__init__.py +62 -0
  48. waldur_api_client/models/azure_sql_server_create_order_attributes.py +3 -0
  49. waldur_api_client/models/azure_virtual_machine_create_order_attributes.py +3 -0
  50. waldur_api_client/models/booking_offerings_list_field_item.py +0 -2
  51. waldur_api_client/models/booking_offerings_retrieve_field_item.py +0 -2
  52. waldur_api_client/models/booking_resource.py +10 -9
  53. waldur_api_client/models/booking_resources_list_field_item.py +1 -1
  54. waldur_api_client/models/booking_resources_retrieve_field_item.py +1 -1
  55. waldur_api_client/models/checklist_info.py +76 -0
  56. waldur_api_client/models/compliance_overview.py +91 -0
  57. waldur_api_client/models/customer.py +81 -0
  58. waldur_api_client/models/customers_list_field_item.py +4 -0
  59. waldur_api_client/models/customers_retrieve_field_item.py +4 -0
  60. waldur_api_client/models/generic_order_attributes.py +69 -0
  61. waldur_api_client/models/google_auth_authorize_retrieve_field_item.py +1 -0
  62. waldur_api_client/models/google_auth_list_field_item.py +1 -0
  63. waldur_api_client/models/google_auth_retrieve_field_item.py +1 -0
  64. waldur_api_client/models/google_credentials.py +9 -0
  65. waldur_api_client/models/group_invitation.py +24 -0
  66. waldur_api_client/models/group_invitation_request.py +10 -0
  67. waldur_api_client/models/maintenance_announcement.py +8 -0
  68. waldur_api_client/models/marketplace_offering_terms_of_service_count_o_item.py +13 -0
  69. waldur_api_client/models/marketplace_offering_terms_of_service_list_o_item.py +13 -0
  70. waldur_api_client/models/marketplace_orders_list_field_item.py +1 -1
  71. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +1 -1
  72. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +0 -2
  73. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +0 -2
  74. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +0 -2
  75. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +0 -2
  76. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +0 -2
  77. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +0 -2
  78. waldur_api_client/models/marketplace_provider_resources_details_retrieve_field_item.py +1 -1
  79. waldur_api_client/models/marketplace_provider_resources_list_field_item.py +1 -1
  80. waldur_api_client/models/marketplace_provider_resources_retrieve_field_item.py +1 -1
  81. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +0 -2
  82. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +0 -2
  83. waldur_api_client/models/marketplace_rancher_create_order_attributes.py +3 -0
  84. waldur_api_client/models/marketplace_resources_details_retrieve_field_item.py +1 -1
  85. waldur_api_client/models/marketplace_resources_list_field_item.py +1 -1
  86. waldur_api_client/models/marketplace_resources_retrieve_field_item.py +1 -1
  87. waldur_api_client/models/marketplace_service_providers_list_field_item.py +1 -0
  88. waldur_api_client/models/marketplace_service_providers_retrieve_field_item.py +1 -0
  89. waldur_api_client/models/marketplace_user_offering_consents_count_o_item.py +15 -0
  90. waldur_api_client/models/marketplace_user_offering_consents_list_o_item.py +15 -0
  91. waldur_api_client/models/offering.py +0 -18
  92. waldur_api_client/models/offering_create.py +0 -18
  93. waldur_api_client/models/offering_create_request.py +0 -18
  94. waldur_api_client/models/offering_overview_update_request.py +0 -18
  95. waldur_api_client/models/offering_terms_of_service.py +142 -0
  96. waldur_api_client/models/offering_terms_of_service_create.py +107 -0
  97. waldur_api_client/models/offering_terms_of_service_create_request.py +107 -0
  98. waldur_api_client/models/offering_terms_of_service_request.py +96 -0
  99. waldur_api_client/models/open_stack_instance_create_order_attributes.py +3 -0
  100. waldur_api_client/models/open_stack_nested_security_group.py +53 -1
  101. waldur_api_client/models/open_stack_nested_security_group_rules_item.py +197 -0
  102. waldur_api_client/models/open_stack_network.py +20 -0
  103. waldur_api_client/models/open_stack_security_group_rule_update_request.py +4 -4
  104. waldur_api_client/models/open_stack_tenant.py +38 -0
  105. waldur_api_client/models/open_stack_tenant_create_order_attributes.py +21 -0
  106. waldur_api_client/models/open_stack_volume_create_order_attributes.py +3 -0
  107. waldur_api_client/models/openstack_networks_list_field_item.py +1 -0
  108. waldur_api_client/models/openstack_networks_retrieve_field_item.py +1 -0
  109. waldur_api_client/models/openstack_tenants_list_field_item.py +3 -0
  110. waldur_api_client/models/openstack_tenants_retrieve_field_item.py +3 -0
  111. waldur_api_client/models/order_create.py +0 -8
  112. waldur_api_client/models/order_create_request.py +23 -7
  113. waldur_api_client/models/order_details.py +0 -9
  114. waldur_api_client/models/patched_offering_terms_of_service_request.py +96 -0
  115. waldur_api_client/models/patched_user_offering_consent_request.py +59 -0
  116. waldur_api_client/models/permission_project.py +147 -0
  117. waldur_api_client/models/project_answer.py +122 -0
  118. waldur_api_client/models/project_detail.py +133 -0
  119. waldur_api_client/models/project_details_response.py +115 -0
  120. waldur_api_client/models/provider_offering_details.py +0 -18
  121. waldur_api_client/models/provider_offering_details_request.py +0 -18
  122. waldur_api_client/models/public_offering_details.py +0 -18
  123. waldur_api_client/models/question_answer.py +176 -0
  124. waldur_api_client/models/question_answer_project_answers_item.py +44 -0
  125. waldur_api_client/models/question_answer_question_options_item.py +44 -0
  126. waldur_api_client/models/remote_resource_order.py +88 -0
  127. waldur_api_client/models/remote_resource_order_remote_state_enum.py +15 -0
  128. waldur_api_client/models/remote_resource_sync_status.py +123 -0
  129. waldur_api_client/models/remote_resource_sync_status_remote_state_enum.py +13 -0
  130. waldur_api_client/models/remote_resource_team_member.py +85 -0
  131. waldur_api_client/models/resource.py +10 -9
  132. waldur_api_client/models/service_provider.py +9 -0
  133. waldur_api_client/models/slurm_invoices_slurm_package_create_order_attributes.py +3 -0
  134. waldur_api_client/models/sync_status_enum.py +10 -0
  135. waldur_api_client/models/user_offering_consent.py +202 -0
  136. waldur_api_client/models/user_offering_consent_create.py +60 -0
  137. waldur_api_client/models/user_offering_consent_create_request.py +60 -0
  138. waldur_api_client/models/user_offering_consent_request.py +59 -0
  139. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes.py +3 -0
  140. {waldur_api_client-7.7.6.dist-info → waldur_api_client-7.7.7.dist-info}/METADATA +1 -1
  141. {waldur_api_client-7.7.6.dist-info → waldur_api_client-7.7.7.dist-info}/RECORD +143 -88
  142. {waldur_api_client-7.7.6.dist-info → waldur_api_client-7.7.7.dist-info}/LICENSE +0 -0
  143. {waldur_api_client-7.7.6.dist-info → waldur_api_client-7.7.7.dist-info}/WHEEL +0 -0
@@ -0,0 +1,76 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+ from uuid import UUID
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ T = TypeVar("T", bound="ChecklistInfo")
9
+
10
+
11
+ @_attrs_define
12
+ class ChecklistInfo:
13
+ """
14
+ Attributes:
15
+ uuid (UUID):
16
+ name (str):
17
+ checklist_type (str):
18
+ """
19
+
20
+ uuid: UUID
21
+ name: str
22
+ checklist_type: str
23
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24
+
25
+ def to_dict(self) -> dict[str, Any]:
26
+ uuid = str(self.uuid)
27
+
28
+ name = self.name
29
+
30
+ checklist_type = self.checklist_type
31
+
32
+ field_dict: dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update(
35
+ {
36
+ "uuid": uuid,
37
+ "name": name,
38
+ "checklist_type": checklist_type,
39
+ }
40
+ )
41
+
42
+ return field_dict
43
+
44
+ @classmethod
45
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
46
+ d = dict(src_dict)
47
+ uuid = UUID(d.pop("uuid"))
48
+
49
+ name = d.pop("name")
50
+
51
+ checklist_type = d.pop("checklist_type")
52
+
53
+ checklist_info = cls(
54
+ uuid=uuid,
55
+ name=name,
56
+ checklist_type=checklist_type,
57
+ )
58
+
59
+ checklist_info.additional_properties = d
60
+ return checklist_info
61
+
62
+ @property
63
+ def additional_keys(self) -> list[str]:
64
+ return list(self.additional_properties.keys())
65
+
66
+ def __getitem__(self, key: str) -> Any:
67
+ return self.additional_properties[key]
68
+
69
+ def __setitem__(self, key: str, value: Any) -> None:
70
+ self.additional_properties[key] = value
71
+
72
+ def __delitem__(self, key: str) -> None:
73
+ del self.additional_properties[key]
74
+
75
+ def __contains__(self, key: str) -> bool:
76
+ return key in self.additional_properties
@@ -0,0 +1,91 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="ComplianceOverview")
8
+
9
+
10
+ @_attrs_define
11
+ class ComplianceOverview:
12
+ """
13
+ Attributes:
14
+ total_projects (int):
15
+ projects_with_completions (int):
16
+ fully_completed_projects (int):
17
+ projects_requiring_review (int):
18
+ average_completion_percentage (float):
19
+ """
20
+
21
+ total_projects: int
22
+ projects_with_completions: int
23
+ fully_completed_projects: int
24
+ projects_requiring_review: int
25
+ average_completion_percentage: float
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ total_projects = self.total_projects
30
+
31
+ projects_with_completions = self.projects_with_completions
32
+
33
+ fully_completed_projects = self.fully_completed_projects
34
+
35
+ projects_requiring_review = self.projects_requiring_review
36
+
37
+ average_completion_percentage = self.average_completion_percentage
38
+
39
+ field_dict: dict[str, Any] = {}
40
+ field_dict.update(self.additional_properties)
41
+ field_dict.update(
42
+ {
43
+ "total_projects": total_projects,
44
+ "projects_with_completions": projects_with_completions,
45
+ "fully_completed_projects": fully_completed_projects,
46
+ "projects_requiring_review": projects_requiring_review,
47
+ "average_completion_percentage": average_completion_percentage,
48
+ }
49
+ )
50
+
51
+ return field_dict
52
+
53
+ @classmethod
54
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
55
+ d = dict(src_dict)
56
+ total_projects = d.pop("total_projects")
57
+
58
+ projects_with_completions = d.pop("projects_with_completions")
59
+
60
+ fully_completed_projects = d.pop("fully_completed_projects")
61
+
62
+ projects_requiring_review = d.pop("projects_requiring_review")
63
+
64
+ average_completion_percentage = d.pop("average_completion_percentage")
65
+
66
+ compliance_overview = cls(
67
+ total_projects=total_projects,
68
+ projects_with_completions=projects_with_completions,
69
+ fully_completed_projects=fully_completed_projects,
70
+ projects_requiring_review=projects_requiring_review,
71
+ average_completion_percentage=average_completion_percentage,
72
+ )
73
+
74
+ compliance_overview.additional_properties = d
75
+ return compliance_overview
76
+
77
+ @property
78
+ def additional_keys(self) -> list[str]:
79
+ return list(self.additional_properties.keys())
80
+
81
+ def __getitem__(self, key: str) -> Any:
82
+ return self.additional_properties[key]
83
+
84
+ def __setitem__(self, key: str, value: Any) -> None:
85
+ self.additional_properties[key] = value
86
+
87
+ def __delitem__(self, key: str) -> None:
88
+ del self.additional_properties[key]
89
+
90
+ def __contains__(self, key: str) -> bool:
91
+ return key in self.additional_properties
@@ -13,7 +13,9 @@ from ..types import UNSET, Unset
13
13
 
14
14
  if TYPE_CHECKING:
15
15
  from ..models.nested_price_estimate import NestedPriceEstimate
16
+ from ..models.organization_group import OrganizationGroup
16
17
  from ..models.payment_profile import PaymentProfile
18
+ from ..models.permission_project import PermissionProject
17
19
 
18
20
 
19
21
  T = TypeVar("T", bound="Customer")
@@ -26,7 +28,9 @@ class Customer:
26
28
  url (Union[Unset, str]):
27
29
  uuid (Union[Unset, UUID]):
28
30
  created (Union[Unset, datetime.datetime]):
31
+ organization_groups (Union[Unset, list['OrganizationGroup']]):
29
32
  display_name (Union[Unset, str]):
33
+ projects (Union[Unset, list['PermissionProject']]):
30
34
  backend_id (Union[Unset, str]): Organization identifier in another application.
31
35
  image (Union[None, Unset, str]):
32
36
  blocked (Union[Unset, bool]):
@@ -34,9 +38,11 @@ class Customer:
34
38
  default_tax_percent (Union[Unset, str]):
35
39
  accounting_start_date (Union[Unset, datetime.datetime]):
36
40
  projects_count (Union[Unset, int]):
41
+ users_count (Union[Unset, int]):
37
42
  sponsor_number (Union[None, Unset, int]): External ID of the sponsor covering the costs
38
43
  country_name (Union[Unset, str]):
39
44
  max_service_accounts (Union[None, Unset, int]): Maximum number of service accounts allowed
45
+ project_metadata_checklist (Union[None, UUID, Unset]):
40
46
  name (Union[Unset, str]):
41
47
  slug (Union[Unset, str]):
42
48
  native_name (Union[Unset, str]):
@@ -71,7 +77,9 @@ class Customer:
71
77
  url: Union[Unset, str] = UNSET
72
78
  uuid: Union[Unset, UUID] = UNSET
73
79
  created: Union[Unset, datetime.datetime] = UNSET
80
+ organization_groups: Union[Unset, list["OrganizationGroup"]] = UNSET
74
81
  display_name: Union[Unset, str] = UNSET
82
+ projects: Union[Unset, list["PermissionProject"]] = UNSET
75
83
  backend_id: Union[Unset, str] = UNSET
76
84
  image: Union[None, Unset, str] = UNSET
77
85
  blocked: Union[Unset, bool] = UNSET
@@ -79,9 +87,11 @@ class Customer:
79
87
  default_tax_percent: Union[Unset, str] = UNSET
80
88
  accounting_start_date: Union[Unset, datetime.datetime] = UNSET
81
89
  projects_count: Union[Unset, int] = UNSET
90
+ users_count: Union[Unset, int] = UNSET
82
91
  sponsor_number: Union[None, Unset, int] = UNSET
83
92
  country_name: Union[Unset, str] = UNSET
84
93
  max_service_accounts: Union[None, Unset, int] = UNSET
94
+ project_metadata_checklist: Union[None, UUID, Unset] = UNSET
85
95
  name: Union[Unset, str] = UNSET
86
96
  slug: Union[Unset, str] = UNSET
87
97
  native_name: Union[Unset, str] = UNSET
@@ -123,8 +133,22 @@ class Customer:
123
133
  if not isinstance(self.created, Unset):
124
134
  created = self.created.isoformat()
125
135
 
136
+ organization_groups: Union[Unset, list[dict[str, Any]]] = UNSET
137
+ if not isinstance(self.organization_groups, Unset):
138
+ organization_groups = []
139
+ for organization_groups_item_data in self.organization_groups:
140
+ organization_groups_item = organization_groups_item_data.to_dict()
141
+ organization_groups.append(organization_groups_item)
142
+
126
143
  display_name = self.display_name
127
144
 
145
+ projects: Union[Unset, list[dict[str, Any]]] = UNSET
146
+ if not isinstance(self.projects, Unset):
147
+ projects = []
148
+ for projects_item_data in self.projects:
149
+ projects_item = projects_item_data.to_dict()
150
+ projects.append(projects_item)
151
+
128
152
  backend_id = self.backend_id
129
153
 
130
154
  image: Union[None, Unset, str]
@@ -145,6 +169,8 @@ class Customer:
145
169
 
146
170
  projects_count = self.projects_count
147
171
 
172
+ users_count = self.users_count
173
+
148
174
  sponsor_number: Union[None, Unset, int]
149
175
  if isinstance(self.sponsor_number, Unset):
150
176
  sponsor_number = UNSET
@@ -159,6 +185,14 @@ class Customer:
159
185
  else:
160
186
  max_service_accounts = self.max_service_accounts
161
187
 
188
+ project_metadata_checklist: Union[None, Unset, str]
189
+ if isinstance(self.project_metadata_checklist, Unset):
190
+ project_metadata_checklist = UNSET
191
+ elif isinstance(self.project_metadata_checklist, UUID):
192
+ project_metadata_checklist = str(self.project_metadata_checklist)
193
+ else:
194
+ project_metadata_checklist = self.project_metadata_checklist
195
+
162
196
  name = self.name
163
197
 
164
198
  slug = self.slug
@@ -267,8 +301,12 @@ class Customer:
267
301
  field_dict["uuid"] = uuid
268
302
  if created is not UNSET:
269
303
  field_dict["created"] = created
304
+ if organization_groups is not UNSET:
305
+ field_dict["organization_groups"] = organization_groups
270
306
  if display_name is not UNSET:
271
307
  field_dict["display_name"] = display_name
308
+ if projects is not UNSET:
309
+ field_dict["projects"] = projects
272
310
  if backend_id is not UNSET:
273
311
  field_dict["backend_id"] = backend_id
274
312
  if image is not UNSET:
@@ -283,12 +321,16 @@ class Customer:
283
321
  field_dict["accounting_start_date"] = accounting_start_date
284
322
  if projects_count is not UNSET:
285
323
  field_dict["projects_count"] = projects_count
324
+ if users_count is not UNSET:
325
+ field_dict["users_count"] = users_count
286
326
  if sponsor_number is not UNSET:
287
327
  field_dict["sponsor_number"] = sponsor_number
288
328
  if country_name is not UNSET:
289
329
  field_dict["country_name"] = country_name
290
330
  if max_service_accounts is not UNSET:
291
331
  field_dict["max_service_accounts"] = max_service_accounts
332
+ if project_metadata_checklist is not UNSET:
333
+ field_dict["project_metadata_checklist"] = project_metadata_checklist
292
334
  if name is not UNSET:
293
335
  field_dict["name"] = name
294
336
  if slug is not UNSET:
@@ -351,7 +393,9 @@ class Customer:
351
393
  @classmethod
352
394
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
353
395
  from ..models.nested_price_estimate import NestedPriceEstimate
396
+ from ..models.organization_group import OrganizationGroup
354
397
  from ..models.payment_profile import PaymentProfile
398
+ from ..models.permission_project import PermissionProject
355
399
 
356
400
  d = dict(src_dict)
357
401
  url = d.pop("url", UNSET)
@@ -370,8 +414,22 @@ class Customer:
370
414
  else:
371
415
  created = isoparse(_created)
372
416
 
417
+ organization_groups = []
418
+ _organization_groups = d.pop("organization_groups", UNSET)
419
+ for organization_groups_item_data in _organization_groups or []:
420
+ organization_groups_item = OrganizationGroup.from_dict(organization_groups_item_data)
421
+
422
+ organization_groups.append(organization_groups_item)
423
+
373
424
  display_name = d.pop("display_name", UNSET)
374
425
 
426
+ projects = []
427
+ _projects = d.pop("projects", UNSET)
428
+ for projects_item_data in _projects or []:
429
+ projects_item = PermissionProject.from_dict(projects_item_data)
430
+
431
+ projects.append(projects_item)
432
+
375
433
  backend_id = d.pop("backend_id", UNSET)
376
434
 
377
435
  def _parse_image(data: object) -> Union[None, Unset, str]:
@@ -398,6 +456,8 @@ class Customer:
398
456
 
399
457
  projects_count = d.pop("projects_count", UNSET)
400
458
 
459
+ users_count = d.pop("users_count", UNSET)
460
+
401
461
  def _parse_sponsor_number(data: object) -> Union[None, Unset, int]:
402
462
  if data is None:
403
463
  return data
@@ -418,6 +478,23 @@ class Customer:
418
478
 
419
479
  max_service_accounts = _parse_max_service_accounts(d.pop("max_service_accounts", UNSET))
420
480
 
481
+ def _parse_project_metadata_checklist(data: object) -> Union[None, UUID, Unset]:
482
+ if data is None:
483
+ return data
484
+ if isinstance(data, Unset):
485
+ return data
486
+ try:
487
+ if not isinstance(data, str):
488
+ raise TypeError()
489
+ project_metadata_checklist_type_0 = UUID(data)
490
+
491
+ return project_metadata_checklist_type_0
492
+ except: # noqa: E722
493
+ pass
494
+ return cast(Union[None, UUID, Unset], data)
495
+
496
+ project_metadata_checklist = _parse_project_metadata_checklist(d.pop("project_metadata_checklist", UNSET))
497
+
421
498
  name = d.pop("name", UNSET)
422
499
 
423
500
  slug = d.pop("slug", UNSET)
@@ -564,7 +641,9 @@ class Customer:
564
641
  url=url,
565
642
  uuid=uuid,
566
643
  created=created,
644
+ organization_groups=organization_groups,
567
645
  display_name=display_name,
646
+ projects=projects,
568
647
  backend_id=backend_id,
569
648
  image=image,
570
649
  blocked=blocked,
@@ -572,9 +651,11 @@ class Customer:
572
651
  default_tax_percent=default_tax_percent,
573
652
  accounting_start_date=accounting_start_date,
574
653
  projects_count=projects_count,
654
+ users_count=users_count,
575
655
  sponsor_number=sponsor_number,
576
656
  country_name=country_name,
577
657
  max_service_accounts=max_service_accounts,
658
+ project_metadata_checklist=project_metadata_checklist,
578
659
  name=name,
579
660
  slug=slug,
580
661
  native_name=native_name,
@@ -32,16 +32,20 @@ class CustomersListFieldItem(str, Enum):
32
32
  MAX_SERVICE_ACCOUNTS = "max_service_accounts"
33
33
  NAME = "name"
34
34
  NATIVE_NAME = "native_name"
35
+ ORGANIZATION_GROUPS = "organization_groups"
35
36
  PAYMENT_PROFILES = "payment_profiles"
36
37
  PHONE_NUMBER = "phone_number"
37
38
  POSTAL = "postal"
39
+ PROJECTS = "projects"
38
40
  PROJECTS_COUNT = "projects_count"
41
+ PROJECT_METADATA_CHECKLIST = "project_metadata_checklist"
39
42
  REGISTRATION_CODE = "registration_code"
40
43
  SERVICE_PROVIDER = "service_provider"
41
44
  SERVICE_PROVIDER_UUID = "service_provider_uuid"
42
45
  SLUG = "slug"
43
46
  SPONSOR_NUMBER = "sponsor_number"
44
47
  URL = "url"
48
+ USERS_COUNT = "users_count"
45
49
  UUID = "uuid"
46
50
  VAT_CODE = "vat_code"
47
51
 
@@ -32,16 +32,20 @@ class CustomersRetrieveFieldItem(str, Enum):
32
32
  MAX_SERVICE_ACCOUNTS = "max_service_accounts"
33
33
  NAME = "name"
34
34
  NATIVE_NAME = "native_name"
35
+ ORGANIZATION_GROUPS = "organization_groups"
35
36
  PAYMENT_PROFILES = "payment_profiles"
36
37
  PHONE_NUMBER = "phone_number"
37
38
  POSTAL = "postal"
39
+ PROJECTS = "projects"
38
40
  PROJECTS_COUNT = "projects_count"
41
+ PROJECT_METADATA_CHECKLIST = "project_metadata_checklist"
39
42
  REGISTRATION_CODE = "registration_code"
40
43
  SERVICE_PROVIDER = "service_provider"
41
44
  SERVICE_PROVIDER_UUID = "service_provider_uuid"
42
45
  SLUG = "slug"
43
46
  SPONSOR_NUMBER = "sponsor_number"
44
47
  URL = "url"
48
+ USERS_COUNT = "users_count"
45
49
  UUID = "uuid"
46
50
  VAT_CODE = "vat_code"
47
51
 
@@ -0,0 +1,69 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="GenericOrderAttributes")
10
+
11
+
12
+ @_attrs_define
13
+ class GenericOrderAttributes:
14
+ """A generic JSON object for offerings without a predefined schema. Allows any key-value pairs.
15
+
16
+ Attributes:
17
+ name (Union[Unset, str]): The name of the resource to be created. Will be displayed in the portal.
18
+ description (Union[Unset, str]): A free-form description for the resource.
19
+ """
20
+
21
+ name: Union[Unset, str] = UNSET
22
+ description: Union[Unset, str] = UNSET
23
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24
+
25
+ def to_dict(self) -> dict[str, Any]:
26
+ name = self.name
27
+
28
+ description = self.description
29
+
30
+ field_dict: dict[str, Any] = {}
31
+ field_dict.update(self.additional_properties)
32
+ field_dict.update({})
33
+ if name is not UNSET:
34
+ field_dict["name"] = name
35
+ if description is not UNSET:
36
+ field_dict["description"] = description
37
+
38
+ return field_dict
39
+
40
+ @classmethod
41
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
42
+ d = dict(src_dict)
43
+ name = d.pop("name", UNSET)
44
+
45
+ description = d.pop("description", UNSET)
46
+
47
+ generic_order_attributes = cls(
48
+ name=name,
49
+ description=description,
50
+ )
51
+
52
+ generic_order_attributes.additional_properties = d
53
+ return generic_order_attributes
54
+
55
+ @property
56
+ def additional_keys(self) -> list[str]:
57
+ return list(self.additional_properties.keys())
58
+
59
+ def __getitem__(self, key: str) -> Any:
60
+ return self.additional_properties[key]
61
+
62
+ def __setitem__(self, key: str, value: Any) -> None:
63
+ self.additional_properties[key] = value
64
+
65
+ def __delitem__(self, key: str) -> None:
66
+ del self.additional_properties[key]
67
+
68
+ def __contains__(self, key: str) -> bool:
69
+ return key in self.additional_properties
@@ -14,6 +14,7 @@ class GoogleAuthAuthorizeRetrieveFieldItem(str, Enum):
14
14
  CUSTOMER_SLUG = "customer_slug"
15
15
  CUSTOMER_UUID = "customer_uuid"
16
16
  DESCRIPTION = "description"
17
+ ENABLE_NOTIFICATIONS = "enable_notifications"
17
18
  GOOGLE_AUTH_URL = "google_auth_url"
18
19
  IMAGE = "image"
19
20
  OFFERING_COUNT = "offering_count"
@@ -14,6 +14,7 @@ class GoogleAuthListFieldItem(str, Enum):
14
14
  CUSTOMER_SLUG = "customer_slug"
15
15
  CUSTOMER_UUID = "customer_uuid"
16
16
  DESCRIPTION = "description"
17
+ ENABLE_NOTIFICATIONS = "enable_notifications"
17
18
  GOOGLE_AUTH_URL = "google_auth_url"
18
19
  IMAGE = "image"
19
20
  OFFERING_COUNT = "offering_count"
@@ -14,6 +14,7 @@ class GoogleAuthRetrieveFieldItem(str, Enum):
14
14
  CUSTOMER_SLUG = "customer_slug"
15
15
  CUSTOMER_UUID = "customer_uuid"
16
16
  DESCRIPTION = "description"
17
+ ENABLE_NOTIFICATIONS = "enable_notifications"
17
18
  GOOGLE_AUTH_URL = "google_auth_url"
18
19
  IMAGE = "image"
19
20
  OFFERING_COUNT = "offering_count"
@@ -24,6 +24,7 @@ class GoogleCredentials:
24
24
  uuid (Union[Unset, UUID]):
25
25
  created (Union[Unset, datetime.datetime]):
26
26
  description (Union[Unset, str]):
27
+ enable_notifications (Union[Unset, bool]):
27
28
  customer (Union[Unset, str]):
28
29
  customer_name (Union[Unset, str]):
29
30
  customer_uuid (Union[Unset, UUID]):
@@ -44,6 +45,7 @@ class GoogleCredentials:
44
45
  uuid: Union[Unset, UUID] = UNSET
45
46
  created: Union[Unset, datetime.datetime] = UNSET
46
47
  description: Union[Unset, str] = UNSET
48
+ enable_notifications: Union[Unset, bool] = UNSET
47
49
  customer: Union[Unset, str] = UNSET
48
50
  customer_name: Union[Unset, str] = UNSET
49
51
  customer_uuid: Union[Unset, UUID] = UNSET
@@ -73,6 +75,8 @@ class GoogleCredentials:
73
75
 
74
76
  description = self.description
75
77
 
78
+ enable_notifications = self.enable_notifications
79
+
76
80
  customer = self.customer
77
81
 
78
82
  customer_name = self.customer_name
@@ -123,6 +127,8 @@ class GoogleCredentials:
123
127
  field_dict["created"] = created
124
128
  if description is not UNSET:
125
129
  field_dict["description"] = description
130
+ if enable_notifications is not UNSET:
131
+ field_dict["enable_notifications"] = enable_notifications
126
132
  if customer is not UNSET:
127
133
  field_dict["customer"] = customer
128
134
  if customer_name is not UNSET:
@@ -177,6 +183,8 @@ class GoogleCredentials:
177
183
 
178
184
  description = d.pop("description", UNSET)
179
185
 
186
+ enable_notifications = d.pop("enable_notifications", UNSET)
187
+
180
188
  customer = d.pop("customer", UNSET)
181
189
 
182
190
  customer_name = d.pop("customer_name", UNSET)
@@ -227,6 +235,7 @@ class GoogleCredentials:
227
235
  uuid=uuid,
228
236
  created=created,
229
237
  description=description,
238
+ enable_notifications=enable_notifications,
230
239
  customer=customer,
231
240
  customer_name=customer_name,
232
241
  customer_uuid=customer_uuid,
@@ -31,6 +31,9 @@ class GroupInvitation:
31
31
  created (datetime.datetime):
32
32
  expires (datetime.datetime):
33
33
  is_active (bool):
34
+ scope_image (Union[None, str]):
35
+ is_public (Union[Unset, bool]): Allow non-authenticated users to see and accept this invitation. Only staff can
36
+ create public invitations.
34
37
  auto_create_project (Union[Unset, bool]): Create project and grant project permissions instead of customer
35
38
  permissions
36
39
  project_name_template (Union[None, Unset, str]): Template for project name. Supports {username}, {email},
@@ -55,6 +58,8 @@ class GroupInvitation:
55
58
  created: datetime.datetime
56
59
  expires: datetime.datetime
57
60
  is_active: bool
61
+ scope_image: Union[None, str]
62
+ is_public: Union[Unset, bool] = UNSET
58
63
  auto_create_project: Union[Unset, bool] = UNSET
59
64
  project_name_template: Union[None, Unset, str] = UNSET
60
65
  project_role: Union[None, UUID, Unset] = UNSET
@@ -94,6 +99,11 @@ class GroupInvitation:
94
99
 
95
100
  is_active = self.is_active
96
101
 
102
+ scope_image: Union[None, str]
103
+ scope_image = self.scope_image
104
+
105
+ is_public = self.is_public
106
+
97
107
  auto_create_project = self.auto_create_project
98
108
 
99
109
  project_name_template: Union[None, Unset, str]
@@ -133,8 +143,11 @@ class GroupInvitation:
133
143
  "created": created,
134
144
  "expires": expires,
135
145
  "is_active": is_active,
146
+ "scope_image": scope_image,
136
147
  }
137
148
  )
149
+ if is_public is not UNSET:
150
+ field_dict["is_public"] = is_public
138
151
  if auto_create_project is not UNSET:
139
152
  field_dict["auto_create_project"] = auto_create_project
140
153
  if project_name_template is not UNSET:
@@ -186,6 +199,15 @@ class GroupInvitation:
186
199
 
187
200
  is_active = d.pop("is_active")
188
201
 
202
+ def _parse_scope_image(data: object) -> Union[None, str]:
203
+ if data is None:
204
+ return data
205
+ return cast(Union[None, str], data)
206
+
207
+ scope_image = _parse_scope_image(d.pop("scope_image"))
208
+
209
+ is_public = d.pop("is_public", UNSET)
210
+
189
211
  auto_create_project = d.pop("auto_create_project", UNSET)
190
212
 
191
213
  def _parse_project_name_template(data: object) -> Union[None, Unset, str]:
@@ -234,6 +256,8 @@ class GroupInvitation:
234
256
  created=created,
235
257
  expires=expires,
236
258
  is_active=is_active,
259
+ scope_image=scope_image,
260
+ is_public=is_public,
237
261
  auto_create_project=auto_create_project,
238
262
  project_name_template=project_name_template,
239
263
  project_role=project_role,
@@ -16,6 +16,8 @@ class GroupInvitationRequest:
16
16
  Attributes:
17
17
  role (UUID):
18
18
  scope (str):
19
+ is_public (Union[Unset, bool]): Allow non-authenticated users to see and accept this invitation. Only staff can
20
+ create public invitations.
19
21
  auto_create_project (Union[Unset, bool]): Create project and grant project permissions instead of customer
20
22
  permissions
21
23
  project_name_template (Union[None, Unset, str]): Template for project name. Supports {username}, {email},
@@ -27,6 +29,7 @@ class GroupInvitationRequest:
27
29
 
28
30
  role: UUID
29
31
  scope: str
32
+ is_public: Union[Unset, bool] = UNSET
30
33
  auto_create_project: Union[Unset, bool] = UNSET
31
34
  project_name_template: Union[None, Unset, str] = UNSET
32
35
  project_role: Union[None, UUID, Unset] = UNSET
@@ -39,6 +42,8 @@ class GroupInvitationRequest:
39
42
 
40
43
  scope = self.scope
41
44
 
45
+ is_public = self.is_public
46
+
42
47
  auto_create_project = self.auto_create_project
43
48
 
44
49
  project_name_template: Union[None, Unset, str]
@@ -67,6 +72,8 @@ class GroupInvitationRequest:
67
72
  "scope": scope,
68
73
  }
69
74
  )
75
+ if is_public is not UNSET:
76
+ field_dict["is_public"] = is_public
70
77
  if auto_create_project is not UNSET:
71
78
  field_dict["auto_create_project"] = auto_create_project
72
79
  if project_name_template is not UNSET:
@@ -87,6 +94,8 @@ class GroupInvitationRequest:
87
94
 
88
95
  scope = d.pop("scope")
89
96
 
97
+ is_public = d.pop("is_public", UNSET)
98
+
90
99
  auto_create_project = d.pop("auto_create_project", UNSET)
91
100
 
92
101
  def _parse_project_name_template(data: object) -> Union[None, Unset, str]:
@@ -122,6 +131,7 @@ class GroupInvitationRequest:
122
131
  group_invitation_request = cls(
123
132
  role=role,
124
133
  scope=scope,
134
+ is_public=is_public,
125
135
  auto_create_project=auto_create_project,
126
136
  project_name_template=project_name_template,
127
137
  project_role=project_role,