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,183 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
4
+ from uuid import UUID
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ from ..models.validation_decision_enum import ValidationDecisionEnum
11
+
12
+ if TYPE_CHECKING:
13
+ from ..models.onboarding_justification_documentation import OnboardingJustificationDocumentation
14
+
15
+
16
+ T = TypeVar("T", bound="OnboardingJustification")
17
+
18
+
19
+ @_attrs_define
20
+ class OnboardingJustification:
21
+ """
22
+ Attributes:
23
+ uuid (UUID):
24
+ verification (int):
25
+ user (int):
26
+ user_justification (str): User's explanation for why they should be authorized
27
+ validated_by (Union[None, int]):
28
+ validated_at (Union[None, datetime.datetime]):
29
+ validation_decision (ValidationDecisionEnum):
30
+ staff_notes (str): Administrator notes on the review decision
31
+ supporting_documentation (list['OnboardingJustificationDocumentation']):
32
+ created (datetime.datetime):
33
+ modified (datetime.datetime):
34
+ """
35
+
36
+ uuid: UUID
37
+ verification: int
38
+ user: int
39
+ user_justification: str
40
+ validated_by: Union[None, int]
41
+ validated_at: Union[None, datetime.datetime]
42
+ validation_decision: ValidationDecisionEnum
43
+ staff_notes: str
44
+ supporting_documentation: list["OnboardingJustificationDocumentation"]
45
+ created: datetime.datetime
46
+ modified: datetime.datetime
47
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
48
+
49
+ def to_dict(self) -> dict[str, Any]:
50
+ uuid = str(self.uuid)
51
+
52
+ verification = self.verification
53
+
54
+ user = self.user
55
+
56
+ user_justification = self.user_justification
57
+
58
+ validated_by: Union[None, int]
59
+ validated_by = self.validated_by
60
+
61
+ validated_at: Union[None, str]
62
+ if isinstance(self.validated_at, datetime.datetime):
63
+ validated_at = self.validated_at.isoformat()
64
+ else:
65
+ validated_at = self.validated_at
66
+
67
+ validation_decision = self.validation_decision.value
68
+
69
+ staff_notes = self.staff_notes
70
+
71
+ supporting_documentation = []
72
+ for supporting_documentation_item_data in self.supporting_documentation:
73
+ supporting_documentation_item = supporting_documentation_item_data.to_dict()
74
+ supporting_documentation.append(supporting_documentation_item)
75
+
76
+ created = self.created.isoformat()
77
+
78
+ modified = self.modified.isoformat()
79
+
80
+ field_dict: dict[str, Any] = {}
81
+ field_dict.update(self.additional_properties)
82
+ field_dict.update(
83
+ {
84
+ "uuid": uuid,
85
+ "verification": verification,
86
+ "user": user,
87
+ "user_justification": user_justification,
88
+ "validated_by": validated_by,
89
+ "validated_at": validated_at,
90
+ "validation_decision": validation_decision,
91
+ "staff_notes": staff_notes,
92
+ "supporting_documentation": supporting_documentation,
93
+ "created": created,
94
+ "modified": modified,
95
+ }
96
+ )
97
+
98
+ return field_dict
99
+
100
+ @classmethod
101
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
102
+ from ..models.onboarding_justification_documentation import OnboardingJustificationDocumentation
103
+
104
+ d = dict(src_dict)
105
+ uuid = UUID(d.pop("uuid"))
106
+
107
+ verification = d.pop("verification")
108
+
109
+ user = d.pop("user")
110
+
111
+ user_justification = d.pop("user_justification")
112
+
113
+ def _parse_validated_by(data: object) -> Union[None, int]:
114
+ if data is None:
115
+ return data
116
+ return cast(Union[None, int], data)
117
+
118
+ validated_by = _parse_validated_by(d.pop("validated_by"))
119
+
120
+ def _parse_validated_at(data: object) -> Union[None, datetime.datetime]:
121
+ if data is None:
122
+ return data
123
+ try:
124
+ if not isinstance(data, str):
125
+ raise TypeError()
126
+ validated_at_type_0 = isoparse(data)
127
+
128
+ return validated_at_type_0
129
+ except: # noqa: E722
130
+ pass
131
+ return cast(Union[None, datetime.datetime], data)
132
+
133
+ validated_at = _parse_validated_at(d.pop("validated_at"))
134
+
135
+ validation_decision = ValidationDecisionEnum(d.pop("validation_decision"))
136
+
137
+ staff_notes = d.pop("staff_notes")
138
+
139
+ supporting_documentation = []
140
+ _supporting_documentation = d.pop("supporting_documentation")
141
+ for supporting_documentation_item_data in _supporting_documentation:
142
+ supporting_documentation_item = OnboardingJustificationDocumentation.from_dict(
143
+ supporting_documentation_item_data
144
+ )
145
+
146
+ supporting_documentation.append(supporting_documentation_item)
147
+
148
+ created = isoparse(d.pop("created"))
149
+
150
+ modified = isoparse(d.pop("modified"))
151
+
152
+ onboarding_justification = cls(
153
+ uuid=uuid,
154
+ verification=verification,
155
+ user=user,
156
+ user_justification=user_justification,
157
+ validated_by=validated_by,
158
+ validated_at=validated_at,
159
+ validation_decision=validation_decision,
160
+ staff_notes=staff_notes,
161
+ supporting_documentation=supporting_documentation,
162
+ created=created,
163
+ modified=modified,
164
+ )
165
+
166
+ onboarding_justification.additional_properties = d
167
+ return onboarding_justification
168
+
169
+ @property
170
+ def additional_keys(self) -> list[str]:
171
+ return list(self.additional_properties.keys())
172
+
173
+ def __getitem__(self, key: str) -> Any:
174
+ return self.additional_properties[key]
175
+
176
+ def __setitem__(self, key: str, value: Any) -> None:
177
+ self.additional_properties[key] = value
178
+
179
+ def __delitem__(self, key: str) -> None:
180
+ del self.additional_properties[key]
181
+
182
+ def __contains__(self, key: str) -> bool:
183
+ return key in self.additional_properties
@@ -0,0 +1,68 @@
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="OnboardingJustificationCreateRequest")
9
+
10
+
11
+ @_attrs_define
12
+ class OnboardingJustificationCreateRequest:
13
+ """
14
+ Attributes:
15
+ verification_uuid (UUID): UUID of the OnboardingVerification to justify
16
+ user_justification (str): User's explanation for why they should be authorized
17
+ """
18
+
19
+ verification_uuid: UUID
20
+ user_justification: str
21
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> dict[str, Any]:
24
+ verification_uuid = str(self.verification_uuid)
25
+
26
+ user_justification = self.user_justification
27
+
28
+ field_dict: dict[str, Any] = {}
29
+ field_dict.update(self.additional_properties)
30
+ field_dict.update(
31
+ {
32
+ "verification_uuid": verification_uuid,
33
+ "user_justification": user_justification,
34
+ }
35
+ )
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
41
+ d = dict(src_dict)
42
+ verification_uuid = UUID(d.pop("verification_uuid"))
43
+
44
+ user_justification = d.pop("user_justification")
45
+
46
+ onboarding_justification_create_request = cls(
47
+ verification_uuid=verification_uuid,
48
+ user_justification=user_justification,
49
+ )
50
+
51
+ onboarding_justification_create_request.additional_properties = d
52
+ return onboarding_justification_create_request
53
+
54
+ @property
55
+ def additional_keys(self) -> list[str]:
56
+ return list(self.additional_properties.keys())
57
+
58
+ def __getitem__(self, key: str) -> Any:
59
+ return self.additional_properties[key]
60
+
61
+ def __setitem__(self, key: str, value: Any) -> None:
62
+ self.additional_properties[key] = value
63
+
64
+ def __delitem__(self, key: str) -> None:
65
+ del self.additional_properties[key]
66
+
67
+ def __contains__(self, key: str) -> bool:
68
+ return key in self.additional_properties
@@ -0,0 +1,108 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from typing import Any, TypeVar, Union, cast
4
+ from uuid import UUID
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="OnboardingJustificationDocumentation")
13
+
14
+
15
+ @_attrs_define
16
+ class OnboardingJustificationDocumentation:
17
+ """
18
+ Attributes:
19
+ uuid (UUID):
20
+ file_name (str):
21
+ file_size (int):
22
+ created (datetime.datetime):
23
+ file (Union[None, Unset, str]): Upload supporting documentation.
24
+ """
25
+
26
+ uuid: UUID
27
+ file_name: str
28
+ file_size: int
29
+ created: datetime.datetime
30
+ file: Union[None, 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
+ file_name = self.file_name
37
+
38
+ file_size = self.file_size
39
+
40
+ created = self.created.isoformat()
41
+
42
+ file: Union[None, Unset, str]
43
+ if isinstance(self.file, Unset):
44
+ file = UNSET
45
+ else:
46
+ file = self.file
47
+
48
+ field_dict: dict[str, Any] = {}
49
+ field_dict.update(self.additional_properties)
50
+ field_dict.update(
51
+ {
52
+ "uuid": uuid,
53
+ "file_name": file_name,
54
+ "file_size": file_size,
55
+ "created": created,
56
+ }
57
+ )
58
+ if file is not UNSET:
59
+ field_dict["file"] = file
60
+
61
+ return field_dict
62
+
63
+ @classmethod
64
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
65
+ d = dict(src_dict)
66
+ uuid = UUID(d.pop("uuid"))
67
+
68
+ file_name = d.pop("file_name")
69
+
70
+ file_size = d.pop("file_size")
71
+
72
+ created = isoparse(d.pop("created"))
73
+
74
+ def _parse_file(data: object) -> Union[None, Unset, str]:
75
+ if data is None:
76
+ return data
77
+ if isinstance(data, Unset):
78
+ return data
79
+ return cast(Union[None, Unset, str], data)
80
+
81
+ file = _parse_file(d.pop("file", UNSET))
82
+
83
+ onboarding_justification_documentation = cls(
84
+ uuid=uuid,
85
+ file_name=file_name,
86
+ file_size=file_size,
87
+ created=created,
88
+ file=file,
89
+ )
90
+
91
+ onboarding_justification_documentation.additional_properties = d
92
+ return onboarding_justification_documentation
93
+
94
+ @property
95
+ def additional_keys(self) -> list[str]:
96
+ return list(self.additional_properties.keys())
97
+
98
+ def __getitem__(self, key: str) -> Any:
99
+ return self.additional_properties[key]
100
+
101
+ def __setitem__(self, key: str, value: Any) -> None:
102
+ self.additional_properties[key] = value
103
+
104
+ def __delitem__(self, key: str) -> None:
105
+ del self.additional_properties[key]
106
+
107
+ def __contains__(self, key: str) -> bool:
108
+ return key in self.additional_properties
@@ -0,0 +1,84 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="OnboardingJustificationDocumentationRequest")
12
+
13
+
14
+ @_attrs_define
15
+ class OnboardingJustificationDocumentationRequest:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation.
19
+ """
20
+
21
+ file: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
44
+ d = dict(src_dict)
45
+
46
+ def _parse_file(data: object) -> Union[File, None, Unset]:
47
+ if data is None:
48
+ return data
49
+ if isinstance(data, Unset):
50
+ return data
51
+ try:
52
+ if not isinstance(data, bytes):
53
+ raise TypeError()
54
+ file_type_0 = File(payload=BytesIO(data))
55
+
56
+ return file_type_0
57
+ except: # noqa: E722
58
+ pass
59
+ return cast(Union[File, None, Unset], data)
60
+
61
+ file = _parse_file(d.pop("file", UNSET))
62
+
63
+ onboarding_justification_documentation_request = cls(
64
+ file=file,
65
+ )
66
+
67
+ onboarding_justification_documentation_request.additional_properties = d
68
+ return onboarding_justification_documentation_request
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties
@@ -0,0 +1,84 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="OnboardingJustificationDocumentationRequestForm")
12
+
13
+
14
+ @_attrs_define
15
+ class OnboardingJustificationDocumentationRequestForm:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation.
19
+ """
20
+
21
+ file: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
44
+ d = dict(src_dict)
45
+
46
+ def _parse_file(data: object) -> Union[File, None, Unset]:
47
+ if data is None:
48
+ return data
49
+ if isinstance(data, Unset):
50
+ return data
51
+ try:
52
+ if not isinstance(data, bytes):
53
+ raise TypeError()
54
+ file_type_0 = File(payload=BytesIO(data))
55
+
56
+ return file_type_0
57
+ except: # noqa: E722
58
+ pass
59
+ return cast(Union[File, None, Unset], data)
60
+
61
+ file = _parse_file(d.pop("file", UNSET))
62
+
63
+ onboarding_justification_documentation_request_form = cls(
64
+ file=file,
65
+ )
66
+
67
+ onboarding_justification_documentation_request_form.additional_properties = d
68
+ return onboarding_justification_documentation_request_form
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties
@@ -0,0 +1,98 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="OnboardingJustificationDocumentationRequestMultipart")
12
+
13
+
14
+ @_attrs_define
15
+ class OnboardingJustificationDocumentationRequestMultipart:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation.
19
+ """
20
+
21
+ file: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ def to_multipart(self) -> types.RequestFiles:
43
+ files: types.RequestFiles = []
44
+
45
+ if not isinstance(self.file, Unset):
46
+ if isinstance(self.file, File):
47
+ files.append(("file", self.file.to_tuple()))
48
+ else:
49
+ files.append(("file", (None, str(self.file).encode(), "text/plain")))
50
+
51
+ for prop_name, prop in self.additional_properties.items():
52
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
53
+
54
+ return files
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+
60
+ def _parse_file(data: object) -> Union[File, None, Unset]:
61
+ if data is None:
62
+ return data
63
+ if isinstance(data, Unset):
64
+ return data
65
+ try:
66
+ if not isinstance(data, bytes):
67
+ raise TypeError()
68
+ file_type_0 = File(payload=BytesIO(data))
69
+
70
+ return file_type_0
71
+ except: # noqa: E722
72
+ pass
73
+ return cast(Union[File, None, Unset], data)
74
+
75
+ file = _parse_file(d.pop("file", UNSET))
76
+
77
+ onboarding_justification_documentation_request_multipart = cls(
78
+ file=file,
79
+ )
80
+
81
+ onboarding_justification_documentation_request_multipart.additional_properties = d
82
+ return onboarding_justification_documentation_request_multipart
83
+
84
+ @property
85
+ def additional_keys(self) -> list[str]:
86
+ return list(self.additional_properties.keys())
87
+
88
+ def __getitem__(self, key: str) -> Any:
89
+ return self.additional_properties[key]
90
+
91
+ def __setitem__(self, key: str, value: Any) -> None:
92
+ self.additional_properties[key] = value
93
+
94
+ def __delitem__(self, key: str) -> None:
95
+ del self.additional_properties[key]
96
+
97
+ def __contains__(self, key: str) -> bool:
98
+ return key in self.additional_properties
@@ -0,0 +1,75 @@
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="OnboardingJustificationRequest")
8
+
9
+
10
+ @_attrs_define
11
+ class OnboardingJustificationRequest:
12
+ """
13
+ Attributes:
14
+ verification (int):
15
+ user (int):
16
+ user_justification (str): User's explanation for why they should be authorized
17
+ """
18
+
19
+ verification: int
20
+ user: int
21
+ user_justification: str
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ verification = self.verification
26
+
27
+ user = self.user
28
+
29
+ user_justification = self.user_justification
30
+
31
+ field_dict: dict[str, Any] = {}
32
+ field_dict.update(self.additional_properties)
33
+ field_dict.update(
34
+ {
35
+ "verification": verification,
36
+ "user": user,
37
+ "user_justification": user_justification,
38
+ }
39
+ )
40
+
41
+ return field_dict
42
+
43
+ @classmethod
44
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
45
+ d = dict(src_dict)
46
+ verification = d.pop("verification")
47
+
48
+ user = d.pop("user")
49
+
50
+ user_justification = d.pop("user_justification")
51
+
52
+ onboarding_justification_request = cls(
53
+ verification=verification,
54
+ user=user,
55
+ user_justification=user_justification,
56
+ )
57
+
58
+ onboarding_justification_request.additional_properties = d
59
+ return onboarding_justification_request
60
+
61
+ @property
62
+ def additional_keys(self) -> list[str]:
63
+ return list(self.additional_properties.keys())
64
+
65
+ def __getitem__(self, key: str) -> Any:
66
+ return self.additional_properties[key]
67
+
68
+ def __setitem__(self, key: str, value: Any) -> None:
69
+ self.additional_properties[key] = value
70
+
71
+ def __delitem__(self, key: str) -> None:
72
+ del self.additional_properties[key]
73
+
74
+ def __contains__(self, key: str) -> bool:
75
+ return key in self.additional_properties