msgraph-sdk 1.18.0__py3-none-any.whl → 1.20.0__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.
- msgraph/_version.py +1 -1
- msgraph/generated/app_role_assignments/app_role_assignments_request_builder.py +248 -0
- msgraph/generated/app_role_assignments/count/count_request_builder.py +104 -0
- msgraph/generated/app_role_assignments/delta/delta_get_response.py +58 -0
- msgraph/generated/app_role_assignments/delta/delta_request_builder.py +138 -0
- msgraph/generated/app_role_assignments/get_available_extension_properties/get_available_extension_properties_post_request_body.py +50 -0
- msgraph/generated/app_role_assignments/get_available_extension_properties/get_available_extension_properties_post_response.py +58 -0
- msgraph/generated/app_role_assignments/get_available_extension_properties/get_available_extension_properties_request_builder.py +90 -0
- msgraph/generated/app_role_assignments/get_by_ids/get_by_ids_post_request_body.py +54 -0
- msgraph/generated/app_role_assignments/get_by_ids/get_by_ids_post_response.py +58 -0
- msgraph/generated/app_role_assignments/get_by_ids/get_by_ids_request_builder.py +90 -0
- msgraph/generated/app_role_assignments/item/app_role_assignment_item_request_builder.py +238 -0
- msgraph/generated/app_role_assignments/item/check_member_groups/check_member_groups_post_request_body.py +50 -0
- msgraph/generated/app_role_assignments/item/check_member_groups/check_member_groups_post_response.py +55 -0
- msgraph/generated/app_role_assignments/item/check_member_groups/check_member_groups_request_builder.py +90 -0
- msgraph/generated/app_role_assignments/item/check_member_objects/check_member_objects_post_request_body.py +50 -0
- msgraph/generated/app_role_assignments/item/check_member_objects/check_member_objects_post_response.py +55 -0
- msgraph/generated/app_role_assignments/item/check_member_objects/check_member_objects_request_builder.py +89 -0
- msgraph/generated/app_role_assignments/item/get_member_groups/get_member_groups_post_request_body.py +50 -0
- msgraph/generated/app_role_assignments/item/get_member_groups/get_member_groups_post_response.py +55 -0
- msgraph/generated/app_role_assignments/item/get_member_groups/get_member_groups_request_builder.py +90 -0
- msgraph/generated/app_role_assignments/item/get_member_objects/get_member_objects_post_request_body.py +50 -0
- msgraph/generated/app_role_assignments/item/get_member_objects/get_member_objects_post_response.py +55 -0
- msgraph/generated/app_role_assignments/item/get_member_objects/get_member_objects_request_builder.py +90 -0
- msgraph/generated/app_role_assignments/item/restore/restore_request_builder.py +82 -0
- msgraph/generated/app_role_assignments/validate_properties/validate_properties_post_request_body.py +63 -0
- msgraph/generated/app_role_assignments/validate_properties/validate_properties_request_builder.py +87 -0
- msgraph/generated/applications/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/applications/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/base_graph_service_client.py +10 -0
- msgraph/generated/chats/item/messages/messages_request_builder.py +3 -3
- msgraph/generated/contacts/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/contacts/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/contracts/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/contracts/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/device_app_management/device_app_management_request_builder.py +2 -2
- msgraph/generated/device_app_management/managed_app_policies/item/managed_app_policy_item_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_app_policies/item/target_apps/target_apps_request_builder.py +1 -1
- msgraph/generated/device_app_management/managed_app_policies/managed_app_policies_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_app_registrations/item/applied_policies/item/target_apps/target_apps_request_builder.py +1 -1
- msgraph/generated/device_app_management/managed_app_registrations/item/intended_policies/item/target_apps/target_apps_request_builder.py +1 -1
- msgraph/generated/device_app_management/managed_app_registrations/managed_app_registrations_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_app_statuses/item/managed_app_status_item_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_app_statuses/managed_app_statuses_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_e_books/item/assignments/item/managed_e_book_assignment_item_request_builder.py +4 -4
- msgraph/generated/device_app_management/managed_e_books/managed_e_books_request_builder.py +4 -4
- msgraph/generated/device_app_management/mobile_apps/item/mobile_app_item_request_builder.py +10 -10
- msgraph/generated/device_app_management/mobile_apps/mobile_apps_request_builder.py +3 -3
- msgraph/generated/device_management/device_compliance_policies/device_compliance_policies_request_builder.py +7 -7
- msgraph/generated/device_management/device_compliance_policies/item/device_compliance_policy_item_request_builder.py +10 -10
- msgraph/generated/device_management/device_configurations/device_configurations_request_builder.py +7 -7
- msgraph/generated/device_management/device_configurations/item/device_configuration_item_request_builder.py +10 -10
- msgraph/generated/device_management/device_enrollment_configurations/device_enrollment_configurations_request_builder.py +7 -7
- msgraph/generated/device_management/device_enrollment_configurations/item/device_enrollment_configuration_item_request_builder.py +3 -3
- msgraph/generated/device_management/device_management_request_builder.py +2 -2
- msgraph/generated/device_management/role_definitions/item/role_definition_item_request_builder.py +7 -7
- msgraph/generated/device_management/role_definitions/role_definitions_request_builder.py +7 -7
- msgraph/generated/devices/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/devices/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/directory/deleted_items/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/directory/deleted_items/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/directory_objects/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/directory_objects/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/directory_role_templates/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/directory_role_templates/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/directory_roles/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/directory_roles/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/drives/item/items/item/retention_label/retention_label_request_builder.py +3 -3
- msgraph/generated/drives/item/items/item/workbook/names/item/range/range_request_builder.py +3 -3
- msgraph/generated/drives/item/items/item/workbook/tables/add/add_request_builder.py +3 -3
- msgraph/generated/drives/item/items/item/workbook/worksheets/item/names/item/range/range_request_builder.py +3 -3
- msgraph/generated/drives/item/items/item/workbook/worksheets/item/tables/add/add_request_builder.py +3 -3
- msgraph/generated/group_setting_templates/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/group_setting_templates/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/groups/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/groups/item/conversations/conversations_request_builder.py +3 -3
- msgraph/generated/groups/item/conversations/item/conversation_item_request_builder.py +5 -5
- msgraph/generated/groups/item/conversations/item/threads/item/reply/reply_request_builder.py +3 -3
- msgraph/generated/groups/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/groups/item/threads/item/conversation_thread_item_request_builder.py +4 -4
- msgraph/generated/groups/item/threads/item/posts/posts_request_builder.py +4 -4
- msgraph/generated/groups/item/threads/item/reply/reply_request_builder.py +3 -3
- msgraph/generated/identity/conditional_access/named_locations/item/named_location_item_request_builder.py +10 -10
- msgraph/generated/identity_governance/entitlement_management/catalogs/item/custom_workflow_extensions/item/custom_callout_extension_item_request_builder.py +3 -3
- msgraph/generated/identity_governance/terms_of_use/agreements/item/agreement_item_request_builder.py +4 -4
- msgraph/generated/kiota-dom-export.txt +295 -0
- msgraph/generated/kiota-lock.json +1 -1
- msgraph/generated/models/certification.py +1 -1
- msgraph/generated/models/chat_restrictions.py +1 -1
- msgraph/generated/models/cloud_pc_provisioning_policy.py +7 -0
- msgraph/generated/models/cloud_pc_provisioning_policy_autopatch.py +54 -0
- msgraph/generated/models/device_configuration_device_status.py +3 -0
- msgraph/generated/models/device_configuration_state.py +1 -1
- msgraph/generated/models/device_enrollment_platform_restrictions_configuration.py +1 -1
- msgraph/generated/models/device_enrollment_type.py +5 -5
- msgraph/generated/models/device_management.py +0 -3
- msgraph/generated/models/managed_device_owner_type.py +5 -3
- msgraph/generated/models/online_meeting_base.py +1 -1
- msgraph/generated/models/schedule.py +1 -1
- msgraph/generated/models/shift.py +1 -1
- msgraph/generated/models/user.py +1 -1
- msgraph/generated/models/user_teamwork.py +1 -1
- msgraph/generated/models/workforce_integration.py +2 -2
- msgraph/generated/organization/item/branding/localizations/item/banner_logo/banner_logo_request_builder.py +3 -3
- msgraph/generated/organization/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/organization/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/organization/item/organization_item_request_builder.py +3 -3
- msgraph/generated/organization/organization_request_builder.py +4 -4
- msgraph/generated/permission_grants/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/permission_grants/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/security/cases/ediscovery_cases/item/tags/item/child_tags/child_tags_request_builder.py +4 -3
- msgraph/generated/service_principals/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/service_principals/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/sites/item/lists/item/list_item_request_builder.py +4 -4
- msgraph/generated/teams/item/channels/item/members/item/conversation_member_item_request_builder.py +3 -3
- msgraph/generated/teams/item/channels/item/members/members_request_builder.py +3 -3
- msgraph/generated/teamwork/workforce_integrations/workforce_integrations_request_builder.py +2 -2
- msgraph/generated/tenant_relationships/multi_tenant_organization/multi_tenant_organization_request_builder.py +3 -3
- msgraph/generated/users/item/check_member_groups/check_member_groups_request_builder.py +2 -2
- msgraph/generated/users/item/get_member_objects/get_member_objects_request_builder.py +2 -2
- msgraph/generated/users/item/presence/presence_request_builder.py +4 -4
- msgraph/generated/users/item/user_item_request_builder.py +7 -7
- msgraph/generated/users/users_request_builder.py +4 -4
- msgraph/generated/users_with_user_principal_name/users_with_user_principal_name_request_builder.py +7 -7
- {msgraph_sdk-1.18.0.dist-info → msgraph_sdk-1.20.0.dist-info}/METADATA +7 -9
- {msgraph_sdk-1.18.0.dist-info → msgraph_sdk-1.20.0.dist-info}/RECORD +128 -101
- {msgraph_sdk-1.18.0.dist-info → msgraph_sdk-1.20.0.dist-info}/LICENSE +0 -0
- {msgraph_sdk-1.18.0.dist-info → msgraph_sdk-1.20.0.dist-info}/WHEEL +0 -0
msgraph/_version.py
CHANGED
@@ -0,0 +1,248 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
8
|
+
from kiota_abstractions.method import Method
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
14
|
+
from warnings import warn
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from ..models.app_role_assignment import AppRoleAssignment
|
18
|
+
from ..models.app_role_assignment_collection_response import AppRoleAssignmentCollectionResponse
|
19
|
+
from ..models.o_data_errors.o_data_error import ODataError
|
20
|
+
from .count.count_request_builder import CountRequestBuilder
|
21
|
+
from .delta.delta_request_builder import DeltaRequestBuilder
|
22
|
+
from .get_available_extension_properties.get_available_extension_properties_request_builder import GetAvailableExtensionPropertiesRequestBuilder
|
23
|
+
from .get_by_ids.get_by_ids_request_builder import GetByIdsRequestBuilder
|
24
|
+
from .item.app_role_assignment_item_request_builder import AppRoleAssignmentItemRequestBuilder
|
25
|
+
from .validate_properties.validate_properties_request_builder import ValidatePropertiesRequestBuilder
|
26
|
+
|
27
|
+
class AppRoleAssignmentsRequestBuilder(BaseRequestBuilder):
|
28
|
+
"""
|
29
|
+
Provides operations to manage the collection of appRoleAssignment entities.
|
30
|
+
"""
|
31
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
32
|
+
"""
|
33
|
+
Instantiates a new AppRoleAssignmentsRequestBuilder and sets the default values.
|
34
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
35
|
+
param request_adapter: The request adapter to use to execute the requests.
|
36
|
+
Returns: None
|
37
|
+
"""
|
38
|
+
super().__init__(request_adapter, "{+baseurl}/appRoleAssignments{?%24count,%24expand,%24filter,%24orderby,%24search,%24select,%24skip,%24top}", path_parameters)
|
39
|
+
|
40
|
+
def by_app_role_assignment_id(self,app_role_assignment_id: str) -> AppRoleAssignmentItemRequestBuilder:
|
41
|
+
"""
|
42
|
+
Provides operations to manage the collection of appRoleAssignment entities.
|
43
|
+
param app_role_assignment_id: The unique identifier of appRoleAssignment
|
44
|
+
Returns: AppRoleAssignmentItemRequestBuilder
|
45
|
+
"""
|
46
|
+
if app_role_assignment_id is None:
|
47
|
+
raise TypeError("app_role_assignment_id cannot be null.")
|
48
|
+
from .item.app_role_assignment_item_request_builder import AppRoleAssignmentItemRequestBuilder
|
49
|
+
|
50
|
+
url_tpl_params = get_path_parameters(self.path_parameters)
|
51
|
+
url_tpl_params["appRoleAssignment%2Did"] = app_role_assignment_id
|
52
|
+
return AppRoleAssignmentItemRequestBuilder(self.request_adapter, url_tpl_params)
|
53
|
+
|
54
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[AppRoleAssignmentsRequestBuilderGetQueryParameters]] = None) -> Optional[AppRoleAssignmentCollectionResponse]:
|
55
|
+
"""
|
56
|
+
Get entities from appRoleAssignments
|
57
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
58
|
+
Returns: Optional[AppRoleAssignmentCollectionResponse]
|
59
|
+
"""
|
60
|
+
request_info = self.to_get_request_information(
|
61
|
+
request_configuration
|
62
|
+
)
|
63
|
+
from ..models.o_data_errors.o_data_error import ODataError
|
64
|
+
|
65
|
+
error_mapping: dict[str, type[ParsableFactory]] = {
|
66
|
+
"XXX": ODataError,
|
67
|
+
}
|
68
|
+
if not self.request_adapter:
|
69
|
+
raise Exception("Http core is null")
|
70
|
+
from ..models.app_role_assignment_collection_response import AppRoleAssignmentCollectionResponse
|
71
|
+
|
72
|
+
return await self.request_adapter.send_async(request_info, AppRoleAssignmentCollectionResponse, error_mapping)
|
73
|
+
|
74
|
+
async def post(self,body: AppRoleAssignment, request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> Optional[AppRoleAssignment]:
|
75
|
+
"""
|
76
|
+
Add new entity to appRoleAssignments
|
77
|
+
param body: The request body
|
78
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
79
|
+
Returns: Optional[AppRoleAssignment]
|
80
|
+
"""
|
81
|
+
if body is None:
|
82
|
+
raise TypeError("body cannot be null.")
|
83
|
+
request_info = self.to_post_request_information(
|
84
|
+
body, request_configuration
|
85
|
+
)
|
86
|
+
from ..models.o_data_errors.o_data_error import ODataError
|
87
|
+
|
88
|
+
error_mapping: dict[str, type[ParsableFactory]] = {
|
89
|
+
"XXX": ODataError,
|
90
|
+
}
|
91
|
+
if not self.request_adapter:
|
92
|
+
raise Exception("Http core is null")
|
93
|
+
from ..models.app_role_assignment import AppRoleAssignment
|
94
|
+
|
95
|
+
return await self.request_adapter.send_async(request_info, AppRoleAssignment, error_mapping)
|
96
|
+
|
97
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[AppRoleAssignmentsRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
|
98
|
+
"""
|
99
|
+
Get entities from appRoleAssignments
|
100
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
101
|
+
Returns: RequestInformation
|
102
|
+
"""
|
103
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
104
|
+
request_info.configure(request_configuration)
|
105
|
+
request_info.headers.try_add("Accept", "application/json")
|
106
|
+
return request_info
|
107
|
+
|
108
|
+
def to_post_request_information(self,body: AppRoleAssignment, request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> RequestInformation:
|
109
|
+
"""
|
110
|
+
Add new entity to appRoleAssignments
|
111
|
+
param body: The request body
|
112
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
113
|
+
Returns: RequestInformation
|
114
|
+
"""
|
115
|
+
if body is None:
|
116
|
+
raise TypeError("body cannot be null.")
|
117
|
+
request_info = RequestInformation(Method.POST, self.url_template, self.path_parameters)
|
118
|
+
request_info.configure(request_configuration)
|
119
|
+
request_info.headers.try_add("Accept", "application/json")
|
120
|
+
request_info.set_content_from_parsable(self.request_adapter, "application/json", body)
|
121
|
+
return request_info
|
122
|
+
|
123
|
+
def with_url(self,raw_url: str) -> AppRoleAssignmentsRequestBuilder:
|
124
|
+
"""
|
125
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
126
|
+
param raw_url: The raw URL to use for the request builder.
|
127
|
+
Returns: AppRoleAssignmentsRequestBuilder
|
128
|
+
"""
|
129
|
+
if raw_url is None:
|
130
|
+
raise TypeError("raw_url cannot be null.")
|
131
|
+
return AppRoleAssignmentsRequestBuilder(self.request_adapter, raw_url)
|
132
|
+
|
133
|
+
@property
|
134
|
+
def count(self) -> CountRequestBuilder:
|
135
|
+
"""
|
136
|
+
Provides operations to count the resources in the collection.
|
137
|
+
"""
|
138
|
+
from .count.count_request_builder import CountRequestBuilder
|
139
|
+
|
140
|
+
return CountRequestBuilder(self.request_adapter, self.path_parameters)
|
141
|
+
|
142
|
+
@property
|
143
|
+
def delta(self) -> DeltaRequestBuilder:
|
144
|
+
"""
|
145
|
+
Provides operations to call the delta method.
|
146
|
+
"""
|
147
|
+
from .delta.delta_request_builder import DeltaRequestBuilder
|
148
|
+
|
149
|
+
return DeltaRequestBuilder(self.request_adapter, self.path_parameters)
|
150
|
+
|
151
|
+
@property
|
152
|
+
def get_available_extension_properties(self) -> GetAvailableExtensionPropertiesRequestBuilder:
|
153
|
+
"""
|
154
|
+
Provides operations to call the getAvailableExtensionProperties method.
|
155
|
+
"""
|
156
|
+
from .get_available_extension_properties.get_available_extension_properties_request_builder import GetAvailableExtensionPropertiesRequestBuilder
|
157
|
+
|
158
|
+
return GetAvailableExtensionPropertiesRequestBuilder(self.request_adapter, self.path_parameters)
|
159
|
+
|
160
|
+
@property
|
161
|
+
def get_by_ids(self) -> GetByIdsRequestBuilder:
|
162
|
+
"""
|
163
|
+
Provides operations to call the getByIds method.
|
164
|
+
"""
|
165
|
+
from .get_by_ids.get_by_ids_request_builder import GetByIdsRequestBuilder
|
166
|
+
|
167
|
+
return GetByIdsRequestBuilder(self.request_adapter, self.path_parameters)
|
168
|
+
|
169
|
+
@property
|
170
|
+
def validate_properties(self) -> ValidatePropertiesRequestBuilder:
|
171
|
+
"""
|
172
|
+
Provides operations to call the validateProperties method.
|
173
|
+
"""
|
174
|
+
from .validate_properties.validate_properties_request_builder import ValidatePropertiesRequestBuilder
|
175
|
+
|
176
|
+
return ValidatePropertiesRequestBuilder(self.request_adapter, self.path_parameters)
|
177
|
+
|
178
|
+
@dataclass
|
179
|
+
class AppRoleAssignmentsRequestBuilderGetQueryParameters():
|
180
|
+
"""
|
181
|
+
Get entities from appRoleAssignments
|
182
|
+
"""
|
183
|
+
def get_query_parameter(self,original_name: str) -> str:
|
184
|
+
"""
|
185
|
+
Maps the query parameters names to their encoded names for the URI template parsing.
|
186
|
+
param original_name: The original query parameter name in the class.
|
187
|
+
Returns: str
|
188
|
+
"""
|
189
|
+
if original_name is None:
|
190
|
+
raise TypeError("original_name cannot be null.")
|
191
|
+
if original_name == "count":
|
192
|
+
return "%24count"
|
193
|
+
if original_name == "expand":
|
194
|
+
return "%24expand"
|
195
|
+
if original_name == "filter":
|
196
|
+
return "%24filter"
|
197
|
+
if original_name == "orderby":
|
198
|
+
return "%24orderby"
|
199
|
+
if original_name == "search":
|
200
|
+
return "%24search"
|
201
|
+
if original_name == "select":
|
202
|
+
return "%24select"
|
203
|
+
if original_name == "skip":
|
204
|
+
return "%24skip"
|
205
|
+
if original_name == "top":
|
206
|
+
return "%24top"
|
207
|
+
return original_name
|
208
|
+
|
209
|
+
# Include count of items
|
210
|
+
count: Optional[bool] = None
|
211
|
+
|
212
|
+
# Expand related entities
|
213
|
+
expand: Optional[list[str]] = None
|
214
|
+
|
215
|
+
# Filter items by property values
|
216
|
+
filter: Optional[str] = None
|
217
|
+
|
218
|
+
# Order items by property values
|
219
|
+
orderby: Optional[list[str]] = None
|
220
|
+
|
221
|
+
# Search items by search phrases
|
222
|
+
search: Optional[str] = None
|
223
|
+
|
224
|
+
# Select properties to be returned
|
225
|
+
select: Optional[list[str]] = None
|
226
|
+
|
227
|
+
# Skip the first n items
|
228
|
+
skip: Optional[int] = None
|
229
|
+
|
230
|
+
# Show only the first n items
|
231
|
+
top: Optional[int] = None
|
232
|
+
|
233
|
+
|
234
|
+
@dataclass
|
235
|
+
class AppRoleAssignmentsRequestBuilderGetRequestConfiguration(RequestConfiguration[AppRoleAssignmentsRequestBuilderGetQueryParameters]):
|
236
|
+
"""
|
237
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
238
|
+
"""
|
239
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
240
|
+
|
241
|
+
@dataclass
|
242
|
+
class AppRoleAssignmentsRequestBuilderPostRequestConfiguration(RequestConfiguration[QueryParameters]):
|
243
|
+
"""
|
244
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
245
|
+
"""
|
246
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
247
|
+
|
248
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
8
|
+
from kiota_abstractions.method import Method
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
14
|
+
from warnings import warn
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from ...models.o_data_errors.o_data_error import ODataError
|
18
|
+
|
19
|
+
class CountRequestBuilder(BaseRequestBuilder):
|
20
|
+
"""
|
21
|
+
Provides operations to count the resources in the collection.
|
22
|
+
"""
|
23
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
24
|
+
"""
|
25
|
+
Instantiates a new CountRequestBuilder and sets the default values.
|
26
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
27
|
+
param request_adapter: The request adapter to use to execute the requests.
|
28
|
+
Returns: None
|
29
|
+
"""
|
30
|
+
super().__init__(request_adapter, "{+baseurl}/appRoleAssignments/$count{?%24filter,%24search}", path_parameters)
|
31
|
+
|
32
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[CountRequestBuilderGetQueryParameters]] = None) -> Optional[int]:
|
33
|
+
"""
|
34
|
+
Get the number of the resource
|
35
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
36
|
+
Returns: Optional[int]
|
37
|
+
"""
|
38
|
+
request_info = self.to_get_request_information(
|
39
|
+
request_configuration
|
40
|
+
)
|
41
|
+
from ...models.o_data_errors.o_data_error import ODataError
|
42
|
+
|
43
|
+
error_mapping: dict[str, type[ParsableFactory]] = {
|
44
|
+
"XXX": ODataError,
|
45
|
+
}
|
46
|
+
if not self.request_adapter:
|
47
|
+
raise Exception("Http core is null")
|
48
|
+
return await self.request_adapter.send_primitive_async(request_info, "int", error_mapping)
|
49
|
+
|
50
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[CountRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
|
51
|
+
"""
|
52
|
+
Get the number of the resource
|
53
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
54
|
+
Returns: RequestInformation
|
55
|
+
"""
|
56
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
57
|
+
request_info.configure(request_configuration)
|
58
|
+
request_info.headers.try_add("Accept", "text/plain;q=0.9")
|
59
|
+
return request_info
|
60
|
+
|
61
|
+
def with_url(self,raw_url: str) -> CountRequestBuilder:
|
62
|
+
"""
|
63
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
64
|
+
param raw_url: The raw URL to use for the request builder.
|
65
|
+
Returns: CountRequestBuilder
|
66
|
+
"""
|
67
|
+
if raw_url is None:
|
68
|
+
raise TypeError("raw_url cannot be null.")
|
69
|
+
return CountRequestBuilder(self.request_adapter, raw_url)
|
70
|
+
|
71
|
+
@dataclass
|
72
|
+
class CountRequestBuilderGetQueryParameters():
|
73
|
+
"""
|
74
|
+
Get the number of the resource
|
75
|
+
"""
|
76
|
+
def get_query_parameter(self,original_name: str) -> str:
|
77
|
+
"""
|
78
|
+
Maps the query parameters names to their encoded names for the URI template parsing.
|
79
|
+
param original_name: The original query parameter name in the class.
|
80
|
+
Returns: str
|
81
|
+
"""
|
82
|
+
if original_name is None:
|
83
|
+
raise TypeError("original_name cannot be null.")
|
84
|
+
if original_name == "filter":
|
85
|
+
return "%24filter"
|
86
|
+
if original_name == "search":
|
87
|
+
return "%24search"
|
88
|
+
return original_name
|
89
|
+
|
90
|
+
# Filter items by property values
|
91
|
+
filter: Optional[str] = None
|
92
|
+
|
93
|
+
# Search items by search phrases
|
94
|
+
search: Optional[str] = None
|
95
|
+
|
96
|
+
|
97
|
+
@dataclass
|
98
|
+
class CountRequestBuilderGetRequestConfiguration(RequestConfiguration[CountRequestBuilderGetQueryParameters]):
|
99
|
+
"""
|
100
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
101
|
+
"""
|
102
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
103
|
+
|
104
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.serialization import Parsable, ParseNode, SerializationWriter
|
5
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from ...models.base_delta_function_response import BaseDeltaFunctionResponse
|
9
|
+
from ...models.directory_object import DirectoryObject
|
10
|
+
|
11
|
+
from ...models.base_delta_function_response import BaseDeltaFunctionResponse
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class DeltaGetResponse(BaseDeltaFunctionResponse, Parsable):
|
15
|
+
# The value property
|
16
|
+
value: Optional[list[DirectoryObject]] = None
|
17
|
+
|
18
|
+
@staticmethod
|
19
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> DeltaGetResponse:
|
20
|
+
"""
|
21
|
+
Creates a new instance of the appropriate class based on discriminator value
|
22
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
23
|
+
Returns: DeltaGetResponse
|
24
|
+
"""
|
25
|
+
if parse_node is None:
|
26
|
+
raise TypeError("parse_node cannot be null.")
|
27
|
+
return DeltaGetResponse()
|
28
|
+
|
29
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
30
|
+
"""
|
31
|
+
The deserialization information for the current model
|
32
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
33
|
+
"""
|
34
|
+
from ...models.base_delta_function_response import BaseDeltaFunctionResponse
|
35
|
+
from ...models.directory_object import DirectoryObject
|
36
|
+
|
37
|
+
from ...models.base_delta_function_response import BaseDeltaFunctionResponse
|
38
|
+
from ...models.directory_object import DirectoryObject
|
39
|
+
|
40
|
+
fields: dict[str, Callable[[Any], None]] = {
|
41
|
+
"value": lambda n : setattr(self, 'value', n.get_collection_of_object_values(DirectoryObject)),
|
42
|
+
}
|
43
|
+
super_fields = super().get_field_deserializers()
|
44
|
+
fields.update(super_fields)
|
45
|
+
return fields
|
46
|
+
|
47
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
48
|
+
"""
|
49
|
+
Serializes information the current object
|
50
|
+
param writer: Serialization writer to use to serialize this model
|
51
|
+
Returns: None
|
52
|
+
"""
|
53
|
+
if writer is None:
|
54
|
+
raise TypeError("writer cannot be null.")
|
55
|
+
super().serialize(writer)
|
56
|
+
writer.write_collection_of_object_values("value", self.value)
|
57
|
+
|
58
|
+
|
@@ -0,0 +1,138 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
8
|
+
from kiota_abstractions.method import Method
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
14
|
+
from warnings import warn
|
15
|
+
|
16
|
+
if TYPE_CHECKING:
|
17
|
+
from ...models.o_data_errors.o_data_error import ODataError
|
18
|
+
from .delta_get_response import DeltaGetResponse
|
19
|
+
|
20
|
+
class DeltaRequestBuilder(BaseRequestBuilder):
|
21
|
+
"""
|
22
|
+
Provides operations to call the delta method.
|
23
|
+
"""
|
24
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
25
|
+
"""
|
26
|
+
Instantiates a new DeltaRequestBuilder and sets the default values.
|
27
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
28
|
+
param request_adapter: The request adapter to use to execute the requests.
|
29
|
+
Returns: None
|
30
|
+
"""
|
31
|
+
super().__init__(request_adapter, "{+baseurl}/appRoleAssignments/delta(){?%24count,%24expand,%24filter,%24orderby,%24search,%24select,%24skip,%24top}", path_parameters)
|
32
|
+
|
33
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[DeltaRequestBuilderGetQueryParameters]] = None) -> Optional[DeltaGetResponse]:
|
34
|
+
"""
|
35
|
+
Get newly created, updated, or deleted directory objects without performing a full read of the entire directoryObject collection. For more information, see Use delta query to track changes in Microsoft Graph data for details.
|
36
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
37
|
+
Returns: Optional[DeltaGetResponse]
|
38
|
+
Find more info here: https://learn.microsoft.com/graph/api/directoryobject-delta?view=graph-rest-1.0
|
39
|
+
"""
|
40
|
+
request_info = self.to_get_request_information(
|
41
|
+
request_configuration
|
42
|
+
)
|
43
|
+
from ...models.o_data_errors.o_data_error import ODataError
|
44
|
+
|
45
|
+
error_mapping: dict[str, type[ParsableFactory]] = {
|
46
|
+
"XXX": ODataError,
|
47
|
+
}
|
48
|
+
if not self.request_adapter:
|
49
|
+
raise Exception("Http core is null")
|
50
|
+
from .delta_get_response import DeltaGetResponse
|
51
|
+
|
52
|
+
return await self.request_adapter.send_async(request_info, DeltaGetResponse, error_mapping)
|
53
|
+
|
54
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[DeltaRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
|
55
|
+
"""
|
56
|
+
Get newly created, updated, or deleted directory objects without performing a full read of the entire directoryObject collection. For more information, see Use delta query to track changes in Microsoft Graph data for details.
|
57
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
58
|
+
Returns: RequestInformation
|
59
|
+
"""
|
60
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
61
|
+
request_info.configure(request_configuration)
|
62
|
+
request_info.headers.try_add("Accept", "application/json")
|
63
|
+
return request_info
|
64
|
+
|
65
|
+
def with_url(self,raw_url: str) -> DeltaRequestBuilder:
|
66
|
+
"""
|
67
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
68
|
+
param raw_url: The raw URL to use for the request builder.
|
69
|
+
Returns: DeltaRequestBuilder
|
70
|
+
"""
|
71
|
+
if raw_url is None:
|
72
|
+
raise TypeError("raw_url cannot be null.")
|
73
|
+
return DeltaRequestBuilder(self.request_adapter, raw_url)
|
74
|
+
|
75
|
+
@dataclass
|
76
|
+
class DeltaRequestBuilderGetQueryParameters():
|
77
|
+
"""
|
78
|
+
Get newly created, updated, or deleted directory objects without performing a full read of the entire directoryObject collection. For more information, see Use delta query to track changes in Microsoft Graph data for details.
|
79
|
+
"""
|
80
|
+
def get_query_parameter(self,original_name: str) -> str:
|
81
|
+
"""
|
82
|
+
Maps the query parameters names to their encoded names for the URI template parsing.
|
83
|
+
param original_name: The original query parameter name in the class.
|
84
|
+
Returns: str
|
85
|
+
"""
|
86
|
+
if original_name is None:
|
87
|
+
raise TypeError("original_name cannot be null.")
|
88
|
+
if original_name == "count":
|
89
|
+
return "%24count"
|
90
|
+
if original_name == "expand":
|
91
|
+
return "%24expand"
|
92
|
+
if original_name == "filter":
|
93
|
+
return "%24filter"
|
94
|
+
if original_name == "orderby":
|
95
|
+
return "%24orderby"
|
96
|
+
if original_name == "search":
|
97
|
+
return "%24search"
|
98
|
+
if original_name == "select":
|
99
|
+
return "%24select"
|
100
|
+
if original_name == "skip":
|
101
|
+
return "%24skip"
|
102
|
+
if original_name == "top":
|
103
|
+
return "%24top"
|
104
|
+
return original_name
|
105
|
+
|
106
|
+
# Include count of items
|
107
|
+
count: Optional[bool] = None
|
108
|
+
|
109
|
+
# Expand related entities
|
110
|
+
expand: Optional[list[str]] = None
|
111
|
+
|
112
|
+
# Filter items by property values
|
113
|
+
filter: Optional[str] = None
|
114
|
+
|
115
|
+
# Order items by property values
|
116
|
+
orderby: Optional[list[str]] = None
|
117
|
+
|
118
|
+
# Search items by search phrases
|
119
|
+
search: Optional[str] = None
|
120
|
+
|
121
|
+
# Select properties to be returned
|
122
|
+
select: Optional[list[str]] = None
|
123
|
+
|
124
|
+
# Skip the first n items
|
125
|
+
skip: Optional[int] = None
|
126
|
+
|
127
|
+
# Show only the first n items
|
128
|
+
top: Optional[int] = None
|
129
|
+
|
130
|
+
|
131
|
+
@dataclass
|
132
|
+
class DeltaRequestBuilderGetRequestConfiguration(RequestConfiguration[DeltaRequestBuilderGetQueryParameters]):
|
133
|
+
"""
|
134
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
135
|
+
"""
|
136
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
137
|
+
|
138
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.serialization import AdditionalDataHolder, Parsable, ParseNode, SerializationWriter
|
5
|
+
from kiota_abstractions.store import BackedModel, BackingStore, BackingStoreFactorySingleton
|
6
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
7
|
+
|
8
|
+
@dataclass
|
9
|
+
class GetAvailableExtensionPropertiesPostRequestBody(AdditionalDataHolder, BackedModel, Parsable):
|
10
|
+
# Stores model information.
|
11
|
+
backing_store: BackingStore = field(default_factory=BackingStoreFactorySingleton(backing_store_factory=None).backing_store_factory.create_backing_store, repr=False)
|
12
|
+
|
13
|
+
# Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
|
14
|
+
additional_data: dict[str, Any] = field(default_factory=dict)
|
15
|
+
# The isSyncedFromOnPremises property
|
16
|
+
is_synced_from_on_premises: Optional[bool] = None
|
17
|
+
|
18
|
+
@staticmethod
|
19
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> GetAvailableExtensionPropertiesPostRequestBody:
|
20
|
+
"""
|
21
|
+
Creates a new instance of the appropriate class based on discriminator value
|
22
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
23
|
+
Returns: GetAvailableExtensionPropertiesPostRequestBody
|
24
|
+
"""
|
25
|
+
if parse_node is None:
|
26
|
+
raise TypeError("parse_node cannot be null.")
|
27
|
+
return GetAvailableExtensionPropertiesPostRequestBody()
|
28
|
+
|
29
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
30
|
+
"""
|
31
|
+
The deserialization information for the current model
|
32
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
33
|
+
"""
|
34
|
+
fields: dict[str, Callable[[Any], None]] = {
|
35
|
+
"isSyncedFromOnPremises": lambda n : setattr(self, 'is_synced_from_on_premises', n.get_bool_value()),
|
36
|
+
}
|
37
|
+
return fields
|
38
|
+
|
39
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
40
|
+
"""
|
41
|
+
Serializes information the current object
|
42
|
+
param writer: Serialization writer to use to serialize this model
|
43
|
+
Returns: None
|
44
|
+
"""
|
45
|
+
if writer is None:
|
46
|
+
raise TypeError("writer cannot be null.")
|
47
|
+
writer.write_bool_value("isSyncedFromOnPremises", self.is_synced_from_on_premises)
|
48
|
+
writer.write_additional_data_value(self.additional_data)
|
49
|
+
|
50
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from collections.abc import Callable
|
3
|
+
from dataclasses import dataclass, field
|
4
|
+
from kiota_abstractions.serialization import Parsable, ParseNode, SerializationWriter
|
5
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
6
|
+
|
7
|
+
if TYPE_CHECKING:
|
8
|
+
from ...models.base_collection_pagination_count_response import BaseCollectionPaginationCountResponse
|
9
|
+
from ...models.extension_property import ExtensionProperty
|
10
|
+
|
11
|
+
from ...models.base_collection_pagination_count_response import BaseCollectionPaginationCountResponse
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class GetAvailableExtensionPropertiesPostResponse(BaseCollectionPaginationCountResponse, Parsable):
|
15
|
+
# The value property
|
16
|
+
value: Optional[list[ExtensionProperty]] = None
|
17
|
+
|
18
|
+
@staticmethod
|
19
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> GetAvailableExtensionPropertiesPostResponse:
|
20
|
+
"""
|
21
|
+
Creates a new instance of the appropriate class based on discriminator value
|
22
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
23
|
+
Returns: GetAvailableExtensionPropertiesPostResponse
|
24
|
+
"""
|
25
|
+
if parse_node is None:
|
26
|
+
raise TypeError("parse_node cannot be null.")
|
27
|
+
return GetAvailableExtensionPropertiesPostResponse()
|
28
|
+
|
29
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
30
|
+
"""
|
31
|
+
The deserialization information for the current model
|
32
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
33
|
+
"""
|
34
|
+
from ...models.base_collection_pagination_count_response import BaseCollectionPaginationCountResponse
|
35
|
+
from ...models.extension_property import ExtensionProperty
|
36
|
+
|
37
|
+
from ...models.base_collection_pagination_count_response import BaseCollectionPaginationCountResponse
|
38
|
+
from ...models.extension_property import ExtensionProperty
|
39
|
+
|
40
|
+
fields: dict[str, Callable[[Any], None]] = {
|
41
|
+
"value": lambda n : setattr(self, 'value', n.get_collection_of_object_values(ExtensionProperty)),
|
42
|
+
}
|
43
|
+
super_fields = super().get_field_deserializers()
|
44
|
+
fields.update(super_fields)
|
45
|
+
return fields
|
46
|
+
|
47
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
48
|
+
"""
|
49
|
+
Serializes information the current object
|
50
|
+
param writer: Serialization writer to use to serialize this model
|
51
|
+
Returns: None
|
52
|
+
"""
|
53
|
+
if writer is None:
|
54
|
+
raise TypeError("writer cannot be null.")
|
55
|
+
super().serialize(writer)
|
56
|
+
writer.write_collection_of_object_values("value", self.value)
|
57
|
+
|
58
|
+
|