waldur-api-client 7.7.5__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 (229) 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_checklist_retrieve.py +154 -0
  22. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_checklist_review_retrieve.py +154 -0
  23. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_completion_review_status_retrieve.py +154 -0
  24. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_completion_status_retrieve.py +154 -0
  25. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_count.py +34 -11
  26. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_list.py +34 -11
  27. waldur_api_client/api/marketplace_offering_users/marketplace_offering_users_submit_answers.py +179 -0
  28. waldur_api_client/api/marketplace_orders/marketplace_orders_count.py +19 -0
  29. waldur_api_client/api/marketplace_orders/marketplace_orders_list.py +19 -0
  30. waldur_api_client/api/marketplace_plans/marketplace_plans_count.py +19 -0
  31. waldur_api_client/api/marketplace_plans/marketplace_plans_list.py +19 -0
  32. waldur_api_client/api/marketplace_plans/marketplace_plans_usage_stats_count.py +19 -0
  33. waldur_api_client/api/marketplace_plans/marketplace_plans_usage_stats_list.py +19 -0
  34. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +34 -11
  35. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +34 -11
  36. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +34 -11
  37. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +34 -11
  38. waldur_api_client/api/marketplace_robot_accounts/marketplace_robot_accounts_list.py +23 -0
  39. waldur_api_client/api/marketplace_robot_accounts/marketplace_robot_accounts_retrieve.py +30 -1
  40. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_count.py +34 -11
  41. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_list.py +34 -11
  42. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_project_service_accounts_list.py +276 -0
  43. waldur_api_client/api/marketplace_service_providers/service_provider_compliance_overview.py +189 -0
  44. waldur_api_client/api/marketplace_service_providers/service_provider_offering_users_compliance.py +222 -0
  45. waldur_api_client/api/marketplace_user_offering_consents/__init__.py +1 -0
  46. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_count.py +307 -0
  47. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_create.py +152 -0
  48. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_destroy.py +89 -0
  49. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_list.py +310 -0
  50. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_partial_update.py +164 -0
  51. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_retrieve.py +142 -0
  52. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_revoke.py +146 -0
  53. waldur_api_client/api/marketplace_user_offering_consents/marketplace_user_offering_consents_update.py +164 -0
  54. waldur_api_client/api/public_maintenance_announcements/__init__.py +1 -0
  55. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_count.py +325 -0
  56. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_list.py +328 -0
  57. waldur_api_client/api/public_maintenance_announcements/public_maintenance_announcements_retrieve.py +144 -0
  58. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_order_status_retrieve.py +145 -0
  59. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_status_retrieve.py +147 -0
  60. waldur_api_client/api/remote_waldur_api/remote_waldur_api_remote_resource_team_status_list.py +188 -0
  61. waldur_api_client/models/__init__.py +118 -4
  62. waldur_api_client/models/admin_announcement.py +109 -1
  63. waldur_api_client/models/admin_announcement_maintenance_affected_offerings_item.py +103 -0
  64. waldur_api_client/models/admin_announcements_list_field_item.py +8 -0
  65. waldur_api_client/models/admin_announcements_retrieve_field_item.py +8 -0
  66. waldur_api_client/models/azure_sql_server_create_order_attributes.py +83 -0
  67. waldur_api_client/models/azure_virtual_machine_create_order_attributes.py +99 -0
  68. waldur_api_client/models/basic_user.py +30 -21
  69. waldur_api_client/models/booking_offerings_list_field_item.py +1 -2
  70. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -2
  71. waldur_api_client/models/booking_resource.py +10 -9
  72. waldur_api_client/models/booking_resources_list_field_item.py +1 -1
  73. waldur_api_client/models/booking_resources_retrieve_field_item.py +1 -1
  74. waldur_api_client/models/checklist_info.py +76 -0
  75. waldur_api_client/models/compliance_overview.py +91 -0
  76. waldur_api_client/models/create_router.py +1 -1
  77. waldur_api_client/models/create_router_request.py +1 -1
  78. waldur_api_client/models/customer.py +51 -0
  79. waldur_api_client/models/customers_list_field_item.py +2 -0
  80. waldur_api_client/models/customers_retrieve_field_item.py +2 -0
  81. waldur_api_client/models/fingerprint.py +19 -17
  82. waldur_api_client/models/generic_order_attributes.py +69 -0
  83. waldur_api_client/models/google_auth_authorize_retrieve_field_item.py +1 -0
  84. waldur_api_client/models/google_auth_list_field_item.py +1 -0
  85. waldur_api_client/models/google_auth_retrieve_field_item.py +1 -0
  86. waldur_api_client/models/google_credentials.py +9 -0
  87. waldur_api_client/models/group_invitation.py +24 -0
  88. waldur_api_client/models/group_invitation_request.py +10 -0
  89. waldur_api_client/models/instance_flavor_change_request.py +1 -1
  90. waldur_api_client/models/maintenance_announcement.py +8 -0
  91. waldur_api_client/models/marketplace_managed_rancher_create_order_attributes.py +144 -0
  92. waldur_api_client/models/marketplace_offering_terms_of_service_count_o_item.py +13 -0
  93. waldur_api_client/models/marketplace_offering_terms_of_service_list_o_item.py +13 -0
  94. waldur_api_client/models/marketplace_orders_list_field_item.py +1 -1
  95. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +1 -1
  96. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +1 -2
  97. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +1 -2
  98. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +1 -2
  99. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +1 -2
  100. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +1 -2
  101. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +1 -2
  102. waldur_api_client/models/marketplace_provider_resources_details_retrieve_field_item.py +1 -1
  103. waldur_api_client/models/marketplace_provider_resources_list_field_item.py +1 -1
  104. waldur_api_client/models/marketplace_provider_resources_retrieve_field_item.py +1 -1
  105. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -2
  106. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -2
  107. waldur_api_client/models/marketplace_rancher_create_order_attributes.py +145 -0
  108. waldur_api_client/models/marketplace_resources_details_retrieve_field_item.py +1 -1
  109. waldur_api_client/models/marketplace_resources_list_field_item.py +1 -1
  110. waldur_api_client/models/marketplace_resources_retrieve_field_item.py +1 -1
  111. waldur_api_client/models/marketplace_robot_accounts_list_field_item.py +32 -0
  112. waldur_api_client/models/marketplace_robot_accounts_retrieve_field_item.py +32 -0
  113. waldur_api_client/models/marketplace_service_providers_list_field_item.py +1 -0
  114. waldur_api_client/models/marketplace_service_providers_retrieve_field_item.py +1 -0
  115. waldur_api_client/models/marketplace_user_offering_consents_count_o_item.py +15 -0
  116. waldur_api_client/models/marketplace_user_offering_consents_list_o_item.py +15 -0
  117. waldur_api_client/models/offering.py +9 -18
  118. waldur_api_client/models/offering_create.py +8 -18
  119. waldur_api_client/models/offering_create_request.py +0 -18
  120. waldur_api_client/models/offering_overview_update_request.py +0 -18
  121. waldur_api_client/models/offering_terms_of_service.py +142 -0
  122. waldur_api_client/models/offering_terms_of_service_create.py +107 -0
  123. waldur_api_client/models/offering_terms_of_service_create_request.py +107 -0
  124. waldur_api_client/models/offering_terms_of_service_request.py +96 -0
  125. waldur_api_client/models/open_stack_backend_instance.py +2 -2
  126. waldur_api_client/models/open_stack_backend_volumes.py +3 -3
  127. waldur_api_client/models/open_stack_backup.py +1 -1
  128. waldur_api_client/models/open_stack_backup_restoration.py +8 -5
  129. waldur_api_client/models/open_stack_backup_restoration_request.py +28 -3
  130. waldur_api_client/models/open_stack_fixed_ip.py +2 -2
  131. waldur_api_client/models/open_stack_fixed_ip_request.py +2 -2
  132. waldur_api_client/models/open_stack_floating_ip.py +5 -4
  133. waldur_api_client/models/open_stack_instance.py +17 -15
  134. waldur_api_client/models/open_stack_instance_allowed_address_pairs_update_request.py +3 -2
  135. waldur_api_client/models/open_stack_instance_availability_zone.py +1 -1
  136. waldur_api_client/models/open_stack_instance_create_order_attributes.py +283 -0
  137. waldur_api_client/models/open_stack_instance_request.py +4 -3
  138. waldur_api_client/models/open_stack_instance_security_groups_update_request.py +1 -1
  139. waldur_api_client/models/open_stack_nested_floating_ip.py +3 -3
  140. waldur_api_client/models/open_stack_nested_instance.py +1 -1
  141. waldur_api_client/models/open_stack_nested_port.py +5 -5
  142. waldur_api_client/models/open_stack_nested_port_request.py +1 -1
  143. waldur_api_client/models/open_stack_nested_security_group.py +16 -16
  144. waldur_api_client/models/open_stack_nested_security_group_request.py +59 -0
  145. waldur_api_client/models/{nested_security_group_rule_request.py → open_stack_nested_security_group_rules_item.py} +73 -63
  146. waldur_api_client/models/open_stack_nested_sub_net.py +4 -4
  147. waldur_api_client/models/open_stack_nested_sub_net_request.py +4 -4
  148. waldur_api_client/models/open_stack_nested_volume.py +3 -3
  149. waldur_api_client/models/open_stack_nested_volume_request.py +3 -3
  150. waldur_api_client/models/open_stack_network.py +23 -3
  151. waldur_api_client/models/open_stack_port.py +10 -9
  152. waldur_api_client/models/open_stack_port_ip_update_request.py +2 -2
  153. waldur_api_client/models/open_stack_port_request.py +3 -3
  154. waldur_api_client/models/open_stack_router.py +2 -2
  155. waldur_api_client/models/open_stack_router_interface_request.py +4 -2
  156. waldur_api_client/models/open_stack_security_group_rule_create.py +6 -5
  157. waldur_api_client/models/open_stack_security_group_rule_create_request.py +6 -5
  158. waldur_api_client/models/open_stack_security_group_rule_update_request.py +10 -9
  159. waldur_api_client/models/open_stack_server_group.py +2 -1
  160. waldur_api_client/models/open_stack_server_group_request.py +2 -1
  161. waldur_api_client/models/open_stack_snapshot.py +2 -2
  162. waldur_api_client/models/open_stack_snapshot_restoration.py +1 -1
  163. waldur_api_client/models/open_stack_sub_net.py +5 -5
  164. waldur_api_client/models/open_stack_sub_net_request.py +2 -2
  165. waldur_api_client/models/open_stack_tenant.py +41 -3
  166. waldur_api_client/models/open_stack_tenant_create_order_attributes.py +130 -0
  167. waldur_api_client/models/open_stack_volume.py +9 -9
  168. waldur_api_client/models/open_stack_volume_create_order_attributes.py +155 -0
  169. waldur_api_client/models/open_stack_volume_request.py +1 -1
  170. waldur_api_client/models/openstack_networks_list_field_item.py +1 -0
  171. waldur_api_client/models/openstack_networks_retrieve_field_item.py +1 -0
  172. waldur_api_client/models/openstack_tenants_list_field_item.py +3 -0
  173. waldur_api_client/models/openstack_tenants_retrieve_field_item.py +3 -0
  174. waldur_api_client/models/order_create.py +0 -8
  175. waldur_api_client/models/order_create_request.py +181 -4
  176. waldur_api_client/models/order_details.py +0 -9
  177. waldur_api_client/models/patched_offering_terms_of_service_request.py +96 -0
  178. waldur_api_client/models/patched_open_stack_instance_request.py +4 -3
  179. waldur_api_client/models/patched_open_stack_server_group_request.py +2 -1
  180. waldur_api_client/models/patched_open_stack_sub_net_request.py +2 -2
  181. waldur_api_client/models/patched_open_stack_volume_request.py +1 -1
  182. waldur_api_client/models/patched_user_offering_consent_request.py +59 -0
  183. waldur_api_client/models/permission_project.py +147 -0
  184. waldur_api_client/models/permission_request.py +2 -2
  185. waldur_api_client/models/project_answer.py +122 -0
  186. waldur_api_client/models/project_detail.py +133 -0
  187. waldur_api_client/models/project_details_response.py +115 -0
  188. waldur_api_client/models/provider_offering_details.py +9 -18
  189. waldur_api_client/models/provider_offering_details_request.py +0 -18
  190. waldur_api_client/models/public_maintenance_announcement.py +217 -0
  191. waldur_api_client/models/public_maintenance_announcement_state_enum.py +10 -0
  192. waldur_api_client/models/public_maintenance_announcements_count_o_item.py +15 -0
  193. waldur_api_client/models/public_maintenance_announcements_count_state_item.py +12 -0
  194. waldur_api_client/models/public_maintenance_announcements_list_o_item.py +15 -0
  195. waldur_api_client/models/public_maintenance_announcements_list_state_item.py +12 -0
  196. waldur_api_client/models/public_offering_details.py +9 -18
  197. waldur_api_client/models/question_answer.py +176 -0
  198. waldur_api_client/models/question_answer_project_answers_item.py +44 -0
  199. waldur_api_client/models/question_answer_question_options_item.py +44 -0
  200. waldur_api_client/models/rancher_cluster_security_group_rule.py +5 -4
  201. waldur_api_client/models/rancher_cluster_security_group_rule_request.py +5 -4
  202. waldur_api_client/models/remote_project_update_request.py +2 -2
  203. waldur_api_client/models/remote_resource_order.py +88 -0
  204. waldur_api_client/models/remote_resource_order_remote_state_enum.py +15 -0
  205. waldur_api_client/models/remote_resource_sync_status.py +123 -0
  206. waldur_api_client/models/remote_resource_sync_status_remote_state_enum.py +13 -0
  207. waldur_api_client/models/remote_resource_team_member.py +85 -0
  208. waldur_api_client/models/resource.py +10 -9
  209. waldur_api_client/models/robot_account_details.py +226 -144
  210. waldur_api_client/models/service_provider.py +9 -0
  211. waldur_api_client/models/service_provider_compliance_overview.py +122 -0
  212. waldur_api_client/models/service_provider_offering_user_compliance.py +179 -0
  213. waldur_api_client/models/service_provider_offering_user_compliance_state_enum.py +17 -0
  214. waldur_api_client/models/slurm_invoices_slurm_package_create_order_attributes.py +75 -0
  215. waldur_api_client/models/sync_status_enum.py +10 -0
  216. waldur_api_client/models/user_offering_consent.py +202 -0
  217. waldur_api_client/models/user_offering_consent_create.py +60 -0
  218. waldur_api_client/models/user_offering_consent_create_request.py +60 -0
  219. waldur_api_client/models/user_offering_consent_request.py +59 -0
  220. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes.py +228 -0
  221. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_1.py +155 -0
  222. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_2_type_1.py +155 -0
  223. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes_guest_os_type_3_type_1.py +155 -0
  224. waldur_api_client/models/volume_attach_request.py +1 -1
  225. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.7.dist-info}/METADATA +1 -1
  226. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.7.dist-info}/RECORD +228 -138
  227. waldur_api_client/models/nested_security_group_rule.py +0 -222
  228. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.7.dist-info}/LICENSE +0 -0
  229. {waldur_api_client-7.7.5.dist-info → waldur_api_client-7.7.7.dist-info}/WHEEL +0 -0
@@ -0,0 +1,122 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
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="ProjectAnswer")
9
+
10
+
11
+ @_attrs_define
12
+ class ProjectAnswer:
13
+ """
14
+ Attributes:
15
+ project_uuid (UUID):
16
+ project_name (str):
17
+ completion_uuid (Union[None, str]): Get completion UUID.
18
+ completion_percentage (float): Get completion percentage.
19
+ is_completed (bool): Get completion status.
20
+ requires_review (bool): Get review requirement status.
21
+ answers_count (int): Get count of answers.
22
+ unanswered_required_count (int): Get count of unanswered required questions.
23
+ """
24
+
25
+ project_uuid: UUID
26
+ project_name: str
27
+ completion_uuid: Union[None, str]
28
+ completion_percentage: float
29
+ is_completed: bool
30
+ requires_review: bool
31
+ answers_count: int
32
+ unanswered_required_count: int
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ project_uuid = str(self.project_uuid)
37
+
38
+ project_name = self.project_name
39
+
40
+ completion_uuid: Union[None, str]
41
+ completion_uuid = self.completion_uuid
42
+
43
+ completion_percentage = self.completion_percentage
44
+
45
+ is_completed = self.is_completed
46
+
47
+ requires_review = self.requires_review
48
+
49
+ answers_count = self.answers_count
50
+
51
+ unanswered_required_count = self.unanswered_required_count
52
+
53
+ field_dict: dict[str, Any] = {}
54
+ field_dict.update(self.additional_properties)
55
+ field_dict.update(
56
+ {
57
+ "project_uuid": project_uuid,
58
+ "project_name": project_name,
59
+ "completion_uuid": completion_uuid,
60
+ "completion_percentage": completion_percentage,
61
+ "is_completed": is_completed,
62
+ "requires_review": requires_review,
63
+ "answers_count": answers_count,
64
+ "unanswered_required_count": unanswered_required_count,
65
+ }
66
+ )
67
+
68
+ return field_dict
69
+
70
+ @classmethod
71
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
72
+ d = dict(src_dict)
73
+ project_uuid = UUID(d.pop("project_uuid"))
74
+
75
+ project_name = d.pop("project_name")
76
+
77
+ def _parse_completion_uuid(data: object) -> Union[None, str]:
78
+ if data is None:
79
+ return data
80
+ return cast(Union[None, str], data)
81
+
82
+ completion_uuid = _parse_completion_uuid(d.pop("completion_uuid"))
83
+
84
+ completion_percentage = d.pop("completion_percentage")
85
+
86
+ is_completed = d.pop("is_completed")
87
+
88
+ requires_review = d.pop("requires_review")
89
+
90
+ answers_count = d.pop("answers_count")
91
+
92
+ unanswered_required_count = d.pop("unanswered_required_count")
93
+
94
+ project_answer = cls(
95
+ project_uuid=project_uuid,
96
+ project_name=project_name,
97
+ completion_uuid=completion_uuid,
98
+ completion_percentage=completion_percentage,
99
+ is_completed=is_completed,
100
+ requires_review=requires_review,
101
+ answers_count=answers_count,
102
+ unanswered_required_count=unanswered_required_count,
103
+ )
104
+
105
+ project_answer.additional_properties = d
106
+ return project_answer
107
+
108
+ @property
109
+ def additional_keys(self) -> list[str]:
110
+ return list(self.additional_properties.keys())
111
+
112
+ def __getitem__(self, key: str) -> Any:
113
+ return self.additional_properties[key]
114
+
115
+ def __setitem__(self, key: str, value: Any) -> None:
116
+ self.additional_properties[key] = value
117
+
118
+ def __delitem__(self, key: str) -> None:
119
+ del self.additional_properties[key]
120
+
121
+ def __contains__(self, key: str) -> bool:
122
+ return key in self.additional_properties
@@ -0,0 +1,133 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
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="ProjectDetail")
9
+
10
+
11
+ @_attrs_define
12
+ class ProjectDetail:
13
+ """
14
+ Attributes:
15
+ project_uuid (UUID):
16
+ project_name (str):
17
+ completion_uuid (Union[None, UUID]):
18
+ completion_percentage (float):
19
+ is_completed (bool):
20
+ requires_review (bool):
21
+ answers (list[Any]):
22
+ unanswered_required_questions (list[Any]):
23
+ """
24
+
25
+ project_uuid: UUID
26
+ project_name: str
27
+ completion_uuid: Union[None, UUID]
28
+ completion_percentage: float
29
+ is_completed: bool
30
+ requires_review: bool
31
+ answers: list[Any]
32
+ unanswered_required_questions: list[Any]
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ project_uuid = str(self.project_uuid)
37
+
38
+ project_name = self.project_name
39
+
40
+ completion_uuid: Union[None, str]
41
+ if isinstance(self.completion_uuid, UUID):
42
+ completion_uuid = str(self.completion_uuid)
43
+ else:
44
+ completion_uuid = self.completion_uuid
45
+
46
+ completion_percentage = self.completion_percentage
47
+
48
+ is_completed = self.is_completed
49
+
50
+ requires_review = self.requires_review
51
+
52
+ answers = self.answers
53
+
54
+ unanswered_required_questions = self.unanswered_required_questions
55
+
56
+ field_dict: dict[str, Any] = {}
57
+ field_dict.update(self.additional_properties)
58
+ field_dict.update(
59
+ {
60
+ "project_uuid": project_uuid,
61
+ "project_name": project_name,
62
+ "completion_uuid": completion_uuid,
63
+ "completion_percentage": completion_percentage,
64
+ "is_completed": is_completed,
65
+ "requires_review": requires_review,
66
+ "answers": answers,
67
+ "unanswered_required_questions": unanswered_required_questions,
68
+ }
69
+ )
70
+
71
+ return field_dict
72
+
73
+ @classmethod
74
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
75
+ d = dict(src_dict)
76
+ project_uuid = UUID(d.pop("project_uuid"))
77
+
78
+ project_name = d.pop("project_name")
79
+
80
+ def _parse_completion_uuid(data: object) -> Union[None, UUID]:
81
+ if data is None:
82
+ return data
83
+ try:
84
+ if not isinstance(data, str):
85
+ raise TypeError()
86
+ completion_uuid_type_0 = UUID(data)
87
+
88
+ return completion_uuid_type_0
89
+ except: # noqa: E722
90
+ pass
91
+ return cast(Union[None, UUID], data)
92
+
93
+ completion_uuid = _parse_completion_uuid(d.pop("completion_uuid"))
94
+
95
+ completion_percentage = d.pop("completion_percentage")
96
+
97
+ is_completed = d.pop("is_completed")
98
+
99
+ requires_review = d.pop("requires_review")
100
+
101
+ answers = cast(list[Any], d.pop("answers"))
102
+
103
+ unanswered_required_questions = cast(list[Any], d.pop("unanswered_required_questions"))
104
+
105
+ project_detail = cls(
106
+ project_uuid=project_uuid,
107
+ project_name=project_name,
108
+ completion_uuid=completion_uuid,
109
+ completion_percentage=completion_percentage,
110
+ is_completed=is_completed,
111
+ requires_review=requires_review,
112
+ answers=answers,
113
+ unanswered_required_questions=unanswered_required_questions,
114
+ )
115
+
116
+ project_detail.additional_properties = d
117
+ return project_detail
118
+
119
+ @property
120
+ def additional_keys(self) -> list[str]:
121
+ return list(self.additional_properties.keys())
122
+
123
+ def __getitem__(self, key: str) -> Any:
124
+ return self.additional_properties[key]
125
+
126
+ def __setitem__(self, key: str, value: Any) -> None:
127
+ self.additional_properties[key] = value
128
+
129
+ def __delitem__(self, key: str) -> None:
130
+ del self.additional_properties[key]
131
+
132
+ def __contains__(self, key: str) -> bool:
133
+ return key in self.additional_properties
@@ -0,0 +1,115 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.checklist_info import ChecklistInfo
9
+ from ..models.project_detail import ProjectDetail
10
+
11
+
12
+ T = TypeVar("T", bound="ProjectDetailsResponse")
13
+
14
+
15
+ @_attrs_define
16
+ class ProjectDetailsResponse:
17
+ """
18
+ Attributes:
19
+ checklist (ChecklistInfo):
20
+ total_projects (int):
21
+ projects_with_completions (int):
22
+ fully_completed_projects (int):
23
+ projects_requiring_review (int):
24
+ project_details (list['ProjectDetail']):
25
+ """
26
+
27
+ checklist: "ChecklistInfo"
28
+ total_projects: int
29
+ projects_with_completions: int
30
+ fully_completed_projects: int
31
+ projects_requiring_review: int
32
+ project_details: list["ProjectDetail"]
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ checklist = self.checklist.to_dict()
37
+
38
+ total_projects = self.total_projects
39
+
40
+ projects_with_completions = self.projects_with_completions
41
+
42
+ fully_completed_projects = self.fully_completed_projects
43
+
44
+ projects_requiring_review = self.projects_requiring_review
45
+
46
+ project_details = []
47
+ for project_details_item_data in self.project_details:
48
+ project_details_item = project_details_item_data.to_dict()
49
+ project_details.append(project_details_item)
50
+
51
+ field_dict: dict[str, Any] = {}
52
+ field_dict.update(self.additional_properties)
53
+ field_dict.update(
54
+ {
55
+ "checklist": checklist,
56
+ "total_projects": total_projects,
57
+ "projects_with_completions": projects_with_completions,
58
+ "fully_completed_projects": fully_completed_projects,
59
+ "projects_requiring_review": projects_requiring_review,
60
+ "project_details": project_details,
61
+ }
62
+ )
63
+
64
+ return field_dict
65
+
66
+ @classmethod
67
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
68
+ from ..models.checklist_info import ChecklistInfo
69
+ from ..models.project_detail import ProjectDetail
70
+
71
+ d = dict(src_dict)
72
+ checklist = ChecklistInfo.from_dict(d.pop("checklist"))
73
+
74
+ total_projects = d.pop("total_projects")
75
+
76
+ projects_with_completions = d.pop("projects_with_completions")
77
+
78
+ fully_completed_projects = d.pop("fully_completed_projects")
79
+
80
+ projects_requiring_review = d.pop("projects_requiring_review")
81
+
82
+ project_details = []
83
+ _project_details = d.pop("project_details")
84
+ for project_details_item_data in _project_details:
85
+ project_details_item = ProjectDetail.from_dict(project_details_item_data)
86
+
87
+ project_details.append(project_details_item)
88
+
89
+ project_details_response = cls(
90
+ checklist=checklist,
91
+ total_projects=total_projects,
92
+ projects_with_completions=projects_with_completions,
93
+ fully_completed_projects=fully_completed_projects,
94
+ projects_requiring_review=projects_requiring_review,
95
+ project_details=project_details,
96
+ )
97
+
98
+ project_details_response.additional_properties = d
99
+ return project_details_response
100
+
101
+ @property
102
+ def additional_keys(self) -> list[str]:
103
+ return list(self.additional_properties.keys())
104
+
105
+ def __getitem__(self, key: str) -> Any:
106
+ return self.additional_properties[key]
107
+
108
+ def __setitem__(self, key: str, value: Any) -> None:
109
+ self.additional_properties[key] = value
110
+
111
+ def __delitem__(self, key: str) -> None:
112
+ del self.additional_properties[key]
113
+
114
+ def __contains__(self, key: str) -> bool:
115
+ return key in self.additional_properties
@@ -44,8 +44,6 @@ class ProviderOfferingDetails:
44
44
  slug (Union[Unset, str]):
45
45
  description (Union[Unset, str]):
46
46
  full_description (Union[Unset, str]):
47
- terms_of_service (Union[Unset, str]):
48
- terms_of_service_link (Union[Unset, str]):
49
47
  privacy_policy_link (Union[Unset, str]):
50
48
  access_url (Union[Unset, str]): Publicly accessible offering access URL
51
49
  endpoints (Union[Unset, list['NestedEndpoint']]):
@@ -100,6 +98,7 @@ class ProviderOfferingDetails:
100
98
  parent_uuid (Union[None, UUID, Unset]):
101
99
  parent_name (Union[None, Unset, str]):
102
100
  backend_metadata (Union[Unset, Any]):
101
+ has_compliance_requirements (Union[Unset, bool]):
103
102
  integration_status (Union[None, Unset, list['IntegrationStatus']]):
104
103
  google_calendar_is_public (Union[None, Unset, bool]):
105
104
  google_calendar_link (Union[None, Unset, str]): Get the Google Calendar link for an offering.
@@ -112,8 +111,6 @@ class ProviderOfferingDetails:
112
111
  slug: Union[Unset, str] = UNSET
113
112
  description: Union[Unset, str] = UNSET
114
113
  full_description: Union[Unset, str] = UNSET
115
- terms_of_service: Union[Unset, str] = UNSET
116
- terms_of_service_link: Union[Unset, str] = UNSET
117
114
  privacy_policy_link: Union[Unset, str] = UNSET
118
115
  access_url: Union[Unset, str] = UNSET
119
116
  endpoints: Union[Unset, list["NestedEndpoint"]] = UNSET
@@ -168,6 +165,7 @@ class ProviderOfferingDetails:
168
165
  parent_uuid: Union[None, UUID, Unset] = UNSET
169
166
  parent_name: Union[None, Unset, str] = UNSET
170
167
  backend_metadata: Union[Unset, Any] = UNSET
168
+ has_compliance_requirements: Union[Unset, bool] = UNSET
171
169
  integration_status: Union[None, Unset, list["IntegrationStatus"]] = UNSET
172
170
  google_calendar_is_public: Union[None, Unset, bool] = UNSET
173
171
  google_calendar_link: Union[None, Unset, str] = UNSET
@@ -192,10 +190,6 @@ class ProviderOfferingDetails:
192
190
 
193
191
  full_description = self.full_description
194
192
 
195
- terms_of_service = self.terms_of_service
196
-
197
- terms_of_service_link = self.terms_of_service_link
198
-
199
193
  privacy_policy_link = self.privacy_policy_link
200
194
 
201
195
  access_url = self.access_url
@@ -458,6 +452,8 @@ class ProviderOfferingDetails:
458
452
 
459
453
  backend_metadata = self.backend_metadata
460
454
 
455
+ has_compliance_requirements = self.has_compliance_requirements
456
+
461
457
  integration_status: Union[None, Unset, list[dict[str, Any]]]
462
458
  if isinstance(self.integration_status, Unset):
463
459
  integration_status = UNSET
@@ -499,10 +495,6 @@ class ProviderOfferingDetails:
499
495
  field_dict["description"] = description
500
496
  if full_description is not UNSET:
501
497
  field_dict["full_description"] = full_description
502
- if terms_of_service is not UNSET:
503
- field_dict["terms_of_service"] = terms_of_service
504
- if terms_of_service_link is not UNSET:
505
- field_dict["terms_of_service_link"] = terms_of_service_link
506
498
  if privacy_policy_link is not UNSET:
507
499
  field_dict["privacy_policy_link"] = privacy_policy_link
508
500
  if access_url is not UNSET:
@@ -611,6 +603,8 @@ class ProviderOfferingDetails:
611
603
  field_dict["parent_name"] = parent_name
612
604
  if backend_metadata is not UNSET:
613
605
  field_dict["backend_metadata"] = backend_metadata
606
+ if has_compliance_requirements is not UNSET:
607
+ field_dict["has_compliance_requirements"] = has_compliance_requirements
614
608
  if integration_status is not UNSET:
615
609
  field_dict["integration_status"] = integration_status
616
610
  if google_calendar_is_public is not UNSET:
@@ -662,10 +656,6 @@ class ProviderOfferingDetails:
662
656
 
663
657
  full_description = d.pop("full_description", UNSET)
664
658
 
665
- terms_of_service = d.pop("terms_of_service", UNSET)
666
-
667
- terms_of_service_link = d.pop("terms_of_service_link", UNSET)
668
-
669
659
  privacy_policy_link = d.pop("privacy_policy_link", UNSET)
670
660
 
671
661
  access_url = d.pop("access_url", UNSET)
@@ -1059,6 +1049,8 @@ class ProviderOfferingDetails:
1059
1049
 
1060
1050
  backend_metadata = d.pop("backend_metadata", UNSET)
1061
1051
 
1052
+ has_compliance_requirements = d.pop("has_compliance_requirements", UNSET)
1053
+
1062
1054
  def _parse_integration_status(data: object) -> Union[None, Unset, list["IntegrationStatus"]]:
1063
1055
  if data is None:
1064
1056
  return data
@@ -1107,8 +1099,6 @@ class ProviderOfferingDetails:
1107
1099
  slug=slug,
1108
1100
  description=description,
1109
1101
  full_description=full_description,
1110
- terms_of_service=terms_of_service,
1111
- terms_of_service_link=terms_of_service_link,
1112
1102
  privacy_policy_link=privacy_policy_link,
1113
1103
  access_url=access_url,
1114
1104
  endpoints=endpoints,
@@ -1163,6 +1153,7 @@ class ProviderOfferingDetails:
1163
1153
  parent_uuid=parent_uuid,
1164
1154
  parent_name=parent_name,
1165
1155
  backend_metadata=backend_metadata,
1156
+ has_compliance_requirements=has_compliance_requirements,
1166
1157
  integration_status=integration_status,
1167
1158
  google_calendar_is_public=google_calendar_is_public,
1168
1159
  google_calendar_link=google_calendar_link,
@@ -27,8 +27,6 @@ class ProviderOfferingDetailsRequest:
27
27
  type_ (str):
28
28
  description (Union[Unset, str]):
29
29
  full_description (Union[Unset, str]):
30
- terms_of_service (Union[Unset, str]):
31
- terms_of_service_link (Union[Unset, str]):
32
30
  privacy_policy_link (Union[Unset, str]):
33
31
  access_url (Union[Unset, str]): Publicly accessible offering access URL
34
32
  customer (Union[None, Unset, str]):
@@ -55,8 +53,6 @@ class ProviderOfferingDetailsRequest:
55
53
  type_: str
56
54
  description: Union[Unset, str] = UNSET
57
55
  full_description: Union[Unset, str] = UNSET
58
- terms_of_service: Union[Unset, str] = UNSET
59
- terms_of_service_link: Union[Unset, str] = UNSET
60
56
  privacy_policy_link: Union[Unset, str] = UNSET
61
57
  access_url: Union[Unset, str] = UNSET
62
58
  customer: Union[None, Unset, str] = UNSET
@@ -89,10 +85,6 @@ class ProviderOfferingDetailsRequest:
89
85
 
90
86
  full_description = self.full_description
91
87
 
92
- terms_of_service = self.terms_of_service
93
-
94
- terms_of_service_link = self.terms_of_service_link
95
-
96
88
  privacy_policy_link = self.privacy_policy_link
97
89
 
98
90
  access_url = self.access_url
@@ -186,10 +178,6 @@ class ProviderOfferingDetailsRequest:
186
178
  field_dict["description"] = description
187
179
  if full_description is not UNSET:
188
180
  field_dict["full_description"] = full_description
189
- if terms_of_service is not UNSET:
190
- field_dict["terms_of_service"] = terms_of_service
191
- if terms_of_service_link is not UNSET:
192
- field_dict["terms_of_service_link"] = terms_of_service_link
193
181
  if privacy_policy_link is not UNSET:
194
182
  field_dict["privacy_policy_link"] = privacy_policy_link
195
183
  if access_url is not UNSET:
@@ -247,10 +235,6 @@ class ProviderOfferingDetailsRequest:
247
235
 
248
236
  full_description = d.pop("full_description", UNSET)
249
237
 
250
- terms_of_service = d.pop("terms_of_service", UNSET)
251
-
252
- terms_of_service_link = d.pop("terms_of_service_link", UNSET)
253
-
254
238
  privacy_policy_link = d.pop("privacy_policy_link", UNSET)
255
239
 
256
240
  access_url = d.pop("access_url", UNSET)
@@ -373,8 +357,6 @@ class ProviderOfferingDetailsRequest:
373
357
  type_=type_,
374
358
  description=description,
375
359
  full_description=full_description,
376
- terms_of_service=terms_of_service,
377
- terms_of_service_link=terms_of_service_link,
378
360
  privacy_policy_link=privacy_policy_link,
379
361
  access_url=access_url,
380
362
  customer=customer,