Office365-REST-Python-Client 2.6.1__py3-none-any.whl → 2.6.2__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.
- {Office365_REST_Python_Client-2.6.1.dist-info → Office365_REST_Python_Client-2.6.2.dist-info}/METADATA +1 -1
- {Office365_REST_Python_Client-2.6.1.dist-info → Office365_REST_Python_Client-2.6.2.dist-info}/RECORD +232 -155
- office365/admin/people_settings.py +16 -0
- office365/admin/sharepoint_settings.py +50 -1
- office365/admin/sharing_capabilities.py +2 -0
- office365/communications/calls/participant.py +6 -0
- office365/communications/onlinemeetings/broadcast_settings.py +5 -0
- office365/communications/onlinemeetings/collection.py +29 -0
- office365/communications/onlinemeetings/online_meeting.py +1 -1
- office365/communications/onlinemeetings/recordings/call.py +5 -0
- office365/communications/onlinemeetings/restricted.py +5 -0
- office365/directory/applications/collection.py +11 -0
- office365/directory/audit/directory.py +31 -0
- office365/directory/audit/signins/signin.py +14 -0
- office365/directory/audit/target_resource.py +5 -0
- office365/directory/authentication/conditions/conditions.py +5 -1
- office365/directory/datapolicy/operation.py +39 -0
- office365/directory/directory.py +13 -0
- office365/directory/identitygovernance/accessreview/instance.py +29 -0
- office365/directory/identitygovernance/accessreview/stage.py +13 -0
- office365/directory/identitygovernance/accessreview/stages.py +11 -0
- office365/directory/identitygovernance/appconsent/request.py +9 -0
- office365/directory/identitygovernance/privilegedaccess/group.py +1 -1
- office365/directory/identitygovernance/privilegedaccess/schedule/__init__.py +0 -0
- office365/directory/identitygovernance/privilegedaccess/{group_assignment_schedule_instance.py → schedule/group_assignment_instance.py} +1 -1
- office365/directory/identitygovernance/privilegedaccess/schedule/schedule.py +6 -0
- office365/directory/insights/trending.py +25 -0
- office365/directory/licenses/assignment_state.py +5 -5
- office365/directory/licenses/details.py +6 -0
- office365/directory/permissions/scoped_role_membership.py +8 -0
- office365/directory/policies/applied_conditional_access.py +31 -0
- office365/directory/policies/feature_rollout.py +24 -0
- office365/directory/protection/information.py +73 -2
- office365/directory/protection/riskyusers/collection.py +1 -1
- office365/directory/protection/threatassessment/requests/__init__.py +0 -0
- office365/directory/protection/threatassessment/{email_file_request.py → requests/email_file.py} +9 -1
- office365/directory/protection/threatassessment/requests/file.py +10 -0
- office365/directory/protection/threatassessment/{mail_request.py → requests/mail.py} +1 -1
- office365/directory/protection/threatassessment/requests/url.py +9 -0
- office365/directory/rolemanagement/app_scope.py +14 -0
- office365/directory/rolemanagement/application.py +3 -2
- office365/directory/rolemanagement/role.py +15 -0
- office365/directory/rolemanagement/unifiedrole/__init__.py +0 -0
- office365/directory/rolemanagement/{unified_role_assignment.py → unifiedrole/assignment.py} +37 -1
- office365/directory/rolemanagement/{unified_role_definition.py → unifiedrole/definition.py} +6 -1
- office365/directory/security/alerts/file_security_state.py +5 -0
- office365/directory/security/attacksimulations/automation.py +8 -0
- office365/directory/security/attacksimulations/automation_run.py +8 -0
- office365/directory/security/attacksimulations/repeat_offender.py +7 -0
- office365/directory/security/attacksimulations/report.py +2 -2
- office365/directory/security/attacksimulations/user.py +5 -0
- office365/directory/security/incidents/incident.py +6 -1
- office365/directory/security/security.py +5 -0
- office365/directory/subscriptions/__init__.py +0 -0
- office365/directory/subscriptions/company.py +7 -0
- office365/directory/synchronization/progress.py +12 -0
- office365/directory/users/activities/activity.py +10 -1
- office365/directory/users/settings.py +51 -1
- office365/directory/users/storage.py +5 -0
- office365/directory/users/user.py +114 -3
- office365/entity_collection.py +21 -0
- office365/onedrive/contenttypes/collection.py +2 -0
- office365/onedrive/driveitems/driveItem.py +3 -2
- office365/onedrive/driveitems/publication_facet.py +6 -1
- office365/onedrive/filestorage/container.py +22 -0
- office365/onedrive/filestorage/container_collection.py +37 -0
- office365/onedrive/filestorage/file_storage.py +4 -4
- office365/onedrive/listitems/collection.py +38 -0
- office365/onedrive/lists/list.py +3 -5
- office365/onedrive/sitepages/base.py +8 -0
- office365/onedrive/sitepages/collection.py +8 -2
- office365/onedrive/sitepages/site_page.py +13 -2
- office365/onedrive/sites/site.py +1 -1
- office365/onedrive/workbooks/charts/title.py +12 -0
- office365/onedrive/workbooks/charts/title_format.py +5 -0
- office365/onedrive/workbooks/functions/functions.py +16 -0
- office365/onedrive/workbooks/ranges/border.py +30 -0
- office365/onedrive/workbooks/ranges/font.py +39 -0
- office365/onedrive/workbooks/ranges/range.py +6 -0
- office365/onedrive/workbooks/worksheets/protection_options.py +34 -5
- office365/outlook/calendar/events/event.py +57 -0
- office365/outlook/mail/automatic_replies_mailtips.py +20 -0
- office365/outlook/mail/folders/folder.py +3 -4
- office365/outlook/mail/messages/message.py +21 -4
- office365/outlook/mail/messages/rules/collection.py +26 -0
- office365/outlook/mail/tips/__init__.py +0 -0
- office365/outlook/mail/tips/error.py +5 -0
- office365/outlook/mail/tips/tips.py +41 -0
- office365/outlook/people/__init__.py +0 -0
- office365/outlook/people/profile_card_property.py +15 -0
- office365/outlook/person.py +7 -0
- office365/planner/category_descriptions.py +6 -0
- office365/planner/external_references.py +7 -0
- office365/planner/planner.py +4 -4
- office365/planner/plans/container.py +12 -0
- office365/planner/plans/details.py +31 -0
- office365/planner/tasks/collection.py +37 -0
- office365/planner/tasks/task.py +24 -0
- office365/planner/tasks/task_details.py +34 -1
- office365/planner/user_ids.py +8 -0
- office365/reports/internal/queries/create_report_query.py +12 -3
- office365/reports/root.py +61 -2
- office365/runtime/auth/authentication_context.py +10 -1
- office365/runtime/auth/sts_profile.py +3 -1
- office365/runtime/client_object.py +1 -1
- office365/runtime/client_object_collection.py +3 -5
- office365/runtime/client_result.py +3 -3
- office365/runtime/client_runtime_context.py +2 -2
- office365/runtime/odata/json_format.py +14 -3
- office365/runtime/odata/request.py +1 -3
- office365/runtime/odata/v3/json_light_format.py +18 -0
- office365/runtime/odata/v4/json_format.py +19 -0
- office365/runtime/queries/client_query.py +13 -8
- office365/runtime/queries/create_entity.py +7 -5
- office365/runtime/queries/delete_entity.py +6 -2
- office365/runtime/queries/function.py +3 -4
- office365/runtime/queries/read_entity.py +3 -5
- office365/runtime/queries/service_operation.py +2 -7
- office365/search/acronyms/__init__.py +0 -0
- office365/search/answer.py +35 -0
- office365/search/bookmarks/__init__.py +0 -0
- office365/search/bookmarks/bookmark.py +7 -0
- office365/search/entity.py +81 -2
- office365/search/entity_type.py +6 -1
- office365/search/external/item.py +5 -0
- office365/search/identity_set.py +11 -0
- office365/search/qnas/__init__.py +0 -0
- office365/search/qnas/qna.py +9 -0
- office365/sharepoint/activities/client_response.py +2 -2
- office365/sharepoint/apps/launcher.py +9 -0
- office365/sharepoint/brandcenter/brand_center.py +26 -0
- office365/sharepoint/client_context.py +19 -1
- office365/sharepoint/compliance/preserve_document_submitter.py +5 -0
- office365/sharepoint/compliance/store_proxy.py +75 -0
- office365/sharepoint/convergence/migration_complete_state_api.py +9 -0
- office365/sharepoint/copilot/file_metadata.py +5 -0
- office365/sharepoint/fields/builtin_field_id.py +8 -0
- office365/sharepoint/files/collection.py +10 -0
- office365/sharepoint/files/file.py +24 -3
- office365/sharepoint/listitems/listitem.py +61 -3
- office365/sharepoint/lists/exporter.py +1 -0
- office365/sharepoint/lists/list.py +37 -3
- office365/sharepoint/migrationcenter/common/results/batch_creation.py +24 -0
- office365/sharepoint/migrationcenter/common/task.py +8 -0
- office365/sharepoint/migrationcenter/common/task_definition.py +7 -1
- office365/sharepoint/migrationcenter/common/teams/__init__.py +0 -0
- office365/sharepoint/migrationcenter/common/teams/channel_resource.py +5 -0
- office365/sharepoint/migrationcenter/common/teams/team_resource.py +5 -0
- office365/sharepoint/migrationcenter/common/url_parser.py +39 -0
- office365/sharepoint/migrationcenter/service/services.py +13 -1
- office365/sharepoint/migrationcenter/service/teams.py +11 -0
- office365/sharepoint/navigation/node.py +7 -16
- office365/sharepoint/policy/license_utilities.py +1 -0
- office365/sharepoint/portal/groups/creation_context.py +11 -0
- office365/sharepoint/portal/groups/service.py +1 -1
- office365/sharepoint/portal/groups/site_manager.py +1 -1
- office365/sharepoint/publishing/pages/3d/__init__.py +0 -0
- office365/sharepoint/publishing/pages/3d/types.py +5 -0
- office365/sharepoint/publishing/pages/campaign/__init__.py +0 -0
- office365/sharepoint/publishing/pages/{campaign_publication.py → campaign/publication.py} +2 -0
- office365/sharepoint/publishing/pages/campaign/types.py +18 -0
- office365/sharepoint/publishing/pages/coauth_state.py +20 -0
- office365/sharepoint/publishing/pages/dependency_metadata.py +9 -0
- office365/sharepoint/publishing/pages/metadata.py +0 -10
- office365/sharepoint/publishing/pages/page.py +29 -0
- office365/sharepoint/publishing/pages/service.py +27 -6
- office365/sharepoint/publishing/pages/topics/collection.py +1 -1
- office365/sharepoint/request.py +5 -1
- office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +16 -0
- office365/sharepoint/sharing/access_request_settings.py +18 -0
- office365/sharepoint/sharing/address_bar_link_settings.py +5 -0
- office365/sharepoint/sharing/information.py +2 -0
- office365/sharepoint/sharing/links/partial_success_response.py +4 -0
- office365/sharepoint/sites/azure_container_Info.py +4 -1
- office365/sharepoint/sites/brand_center_configuration.py +5 -0
- office365/sharepoint/sites/manager/__init__.py +0 -0
- office365/sharepoint/sites/manager/service.py +34 -0
- office365/sharepoint/sites/manager/types.py +5 -0
- office365/sharepoint/sites/site.py +54 -0
- office365/sharepoint/sites/themes.py +5 -0
- office365/sharepoint/storagemetrics/storage_metrics.py +18 -0
- office365/sharepoint/tenant/administration/copilot/agentinsights/__init__.py +0 -0
- office365/sharepoint/tenant/administration/copilot/agentinsights/client.py +42 -0
- office365/sharepoint/tenant/administration/copilot/agentinsights/report_metadata.py +5 -0
- office365/sharepoint/tenant/administration/group.py +34 -0
- office365/sharepoint/tenant/administration/policies/file_version_types.py +17 -0
- office365/sharepoint/tenant/administration/policies/list_parameters.py +9 -0
- office365/sharepoint/tenant/administration/policies/resource_storage.py +9 -0
- office365/sharepoint/tenant/administration/sites/properties_enumerable_filter.py +6 -0
- office365/sharepoint/tenant/administration/tenant.py +182 -5
- office365/sharepoint/userprofiles/people_manager.py +3 -1
- office365/sharepoint/utilities/utility.py +16 -0
- office365/sharepoint/webparts/definition.py +26 -0
- office365/sharepoint/webparts/limited_manager.py +53 -0
- office365/sharepoint/webparts/webpart.py +47 -0
- office365/sharepoint/webs/regional_settings.py +27 -0
- office365/sharepoint/webs/web.py +20 -1
- office365/teams/apps/app.py +17 -0
- office365/teams/apps/authorization.py +16 -0
- office365/teams/apps/permission_set.py +14 -0
- office365/teams/apps/resource_specific_permission.py +5 -0
- office365/teams/chats/chat.py +60 -0
- office365/teams/chats/messages/message.py +17 -0
- office365/teams/chats/type.py +13 -0
- office365/teams/chats/viewpoint.py +5 -0
- office365/teams/fun_settings.py +14 -2
- office365/teams/info.py +1 -1
- office365/teams/schedule/entity.py +3 -0
- office365/teams/schedule/shifts/item.py +1 -0
- office365/teams/schedule/shifts/offer/request.py +41 -1
- office365/teams/teamwork/activity_topic.py +5 -0
- office365/teams/teamwork/online_meeting_info.py +21 -0
- office365/teams/teamwork/shiftmanagement/__init__.py +0 -0
- office365/teams/teamwork/shiftmanagement/user_solution_root.py +5 -0
- office365/teams/teamwork/user.py +48 -1
- office365/teams/teamwork/user_identity.py +5 -0
- office365/teams/viva/community.py +13 -0
- office365/teams/viva/employee_experience.py +27 -0
- office365/teams/viva/employee_experience_user.py +16 -0
- office365/teams/viva/learning/courses/self_initiated.py +5 -0
- office365/todo/attachments/task_file.py +3 -0
- office365/todo/checklist_item.py +11 -0
- office365/todo/tasks/list.py +11 -0
- office365/todo/tasks/task.py +31 -0
- office365/outlook/mail/tips.py +0 -17
- {Office365_REST_Python_Client-2.6.1.dist-info → Office365_REST_Python_Client-2.6.2.dist-info}/LICENSE +0 -0
- {Office365_REST_Python_Client-2.6.1.dist-info → Office365_REST_Python_Client-2.6.2.dist-info}/WHEEL +0 -0
- {Office365_REST_Python_Client-2.6.1.dist-info → Office365_REST_Python_Client-2.6.2.dist-info}/top_level.txt +0 -0
- /office365/directory/identitygovernance/privilegedaccess/{schedule_instance.py → schedule/instance.py} +0 -0
- /office365/directory/protection/threatassessment/{request.py → requests/request.py} +0 -0
- /office365/directory/rolemanagement/{unified_role_permission.py → unifiedrole/permission.py} +0 -0
- /office365/search/{acronym.py → acronyms/acronym.py} +0 -0
- /office365/sharepoint/publishing/pages/{page_3d.py → 3d/page.py} +0 -0
|
@@ -96,6 +96,33 @@ class RegionalSettings(Entity):
|
|
|
96
96
|
Specifies which week of a year is considered the first week."""
|
|
97
97
|
return self.properties.get("FirstWeekOfYear", None)
|
|
98
98
|
|
|
99
|
+
@property
|
|
100
|
+
def is_east_asia(self):
|
|
101
|
+
# type: () -> Optional[bool]
|
|
102
|
+
"""Returns "true" if the web locale is an East Asia locale; "false" otherwise."""
|
|
103
|
+
return self.properties.get("IsEastAsia", None)
|
|
104
|
+
|
|
105
|
+
@property
|
|
106
|
+
def is_right_to_left(self):
|
|
107
|
+
# type: () -> Optional[bool]
|
|
108
|
+
"""Specifies whether the site uses a right-to-left language. If it uses a right-to-left language,
|
|
109
|
+
this value MUST be "true". Otherwise, this value MUST be "false"."""
|
|
110
|
+
return self.properties.get("IsRightToLeft", None)
|
|
111
|
+
|
|
112
|
+
@property
|
|
113
|
+
def is_ui_right_to_left(self):
|
|
114
|
+
# type: () -> Optional[bool]
|
|
115
|
+
"""Specifies whether the UI of the site (2) uses a right-to-left language. If it uses a right-to-left language,
|
|
116
|
+
this value MUST be "true". Otherwise, this value MUST be "false"."""
|
|
117
|
+
return self.properties.get("IsUIRightToLeft", None)
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def list_separator(self):
|
|
121
|
+
# type: () -> Optional[str]
|
|
122
|
+
"""Specifies the separator that is used for lists on the server. For example, if the separator is ",",
|
|
123
|
+
items in a list will appear as "1,2,3,4"."""
|
|
124
|
+
return self.properties.get("ListSeparator", None)
|
|
125
|
+
|
|
99
126
|
@property
|
|
100
127
|
def locale_id(self):
|
|
101
128
|
# type: () -> Optional[int]
|
office365/sharepoint/webs/web.py
CHANGED
|
@@ -190,6 +190,20 @@ class Web(SecurableObject):
|
|
|
190
190
|
self.ensure_properties(["AccessRequestListUrl"], _get_access_request_list)
|
|
191
191
|
return return_type
|
|
192
192
|
|
|
193
|
+
def get_adaptive_card_extensions(self, include_errors=None, project=None):
|
|
194
|
+
payload = {
|
|
195
|
+
"includeErrors": include_errors,
|
|
196
|
+
"project": project,
|
|
197
|
+
}
|
|
198
|
+
return_type = ClientResult(
|
|
199
|
+
self.context, ClientValueCollection(SPClientSideComponentQueryResult)
|
|
200
|
+
)
|
|
201
|
+
qry = ServiceOperationQuery(
|
|
202
|
+
self, "GetAdaptiveCardExtensions", None, payload, None, return_type
|
|
203
|
+
)
|
|
204
|
+
self.context.add_query(qry)
|
|
205
|
+
return return_type
|
|
206
|
+
|
|
193
207
|
def get_document_by_doc_id(self, doc_id):
|
|
194
208
|
""" """
|
|
195
209
|
return_type = ClientResult(self.context)
|
|
@@ -252,7 +266,7 @@ class Web(SecurableObject):
|
|
|
252
266
|
"""
|
|
253
267
|
if view_xml is None:
|
|
254
268
|
view_xml = "<View><Query></Query></View>"
|
|
255
|
-
return_type = ClientResult(self.context,
|
|
269
|
+
return_type = ClientResult(self.context, {})
|
|
256
270
|
|
|
257
271
|
def _get_list_data_as_stream():
|
|
258
272
|
list_abs_url = self.url + path
|
|
@@ -947,6 +961,7 @@ class Web(SecurableObject):
|
|
|
947
961
|
return return_type
|
|
948
962
|
|
|
949
963
|
def get_file_by_server_relative_url(self, server_relative_url):
|
|
964
|
+
# type: (str) -> File
|
|
950
965
|
"""
|
|
951
966
|
Returns the file object located at the specified server-relative URL, for example:
|
|
952
967
|
- "/sites/MySite/Shared Documents/MyDocument.docx"
|
|
@@ -964,6 +979,7 @@ class Web(SecurableObject):
|
|
|
964
979
|
)
|
|
965
980
|
|
|
966
981
|
def get_file_by_server_relative_path(self, path):
|
|
982
|
+
# type: (str) -> File
|
|
967
983
|
"""Returns the file object located at the specified server-relative path, for example:
|
|
968
984
|
- "/sites/MySite/Shared Documents/MyDocument.docx"
|
|
969
985
|
- "Shared Documents/MyDocument.docx"
|
|
@@ -981,6 +997,7 @@ class Web(SecurableObject):
|
|
|
981
997
|
)
|
|
982
998
|
|
|
983
999
|
def get_folder_by_server_relative_url(self, url):
|
|
1000
|
+
# type: (str) -> Folder
|
|
984
1001
|
"""Returns the folder object located at the specified server-relative URL.
|
|
985
1002
|
|
|
986
1003
|
:param str url: Specifies the server-relative URL for the folder.
|
|
@@ -994,6 +1011,7 @@ class Web(SecurableObject):
|
|
|
994
1011
|
)
|
|
995
1012
|
|
|
996
1013
|
def get_folder_by_server_relative_path(self, decoded_url):
|
|
1014
|
+
# type: (str) -> Folder
|
|
997
1015
|
"""Returns the folder object located at the specified server-relative URL, for example:
|
|
998
1016
|
- "/sites/MySite/Shared Documents"
|
|
999
1017
|
- "Shared Documents"
|
|
@@ -2673,6 +2691,7 @@ class Web(SecurableObject):
|
|
|
2673
2691
|
"SiteGroups": self.site_groups,
|
|
2674
2692
|
"SiteUsers": self.site_users,
|
|
2675
2693
|
"SiteUserInfoList": self.site_user_info_list,
|
|
2694
|
+
"SupportedUILanguageIds": self.supported_ui_language_ids,
|
|
2676
2695
|
"TenantAppCatalog": self.tenant_app_catalog,
|
|
2677
2696
|
"TitleResource": self.title_resource,
|
|
2678
2697
|
"UserCustomActions": self.user_custom_actions,
|
office365/teams/apps/app.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
from office365.entity_collection import EntityCollection
|
|
3
5
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
@@ -7,6 +9,21 @@ from office365.teams.apps.definition import TeamsAppDefinition
|
|
|
7
9
|
class TeamsApp(Entity):
|
|
8
10
|
"""Represents an app in the Microsoft Teams app catalog."""
|
|
9
11
|
|
|
12
|
+
def __str__(self):
|
|
13
|
+
return self.display_name or self.entity_type_name
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def display_name(self):
|
|
17
|
+
# type: () -> Optional[str]
|
|
18
|
+
"""The title of the TeamsApp."""
|
|
19
|
+
return self.properties.get("displayName", None)
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def distribution_method(self):
|
|
23
|
+
# type: () -> Optional[str]
|
|
24
|
+
"""The title of the TeamsApp."""
|
|
25
|
+
return self.properties.get("distributionMethod", None)
|
|
26
|
+
|
|
10
27
|
@property
|
|
11
28
|
def app_definitions(self):
|
|
12
29
|
# type: () -> EntityCollection[TeamsAppDefinition]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from office365.runtime.client_value import ClientValue
|
|
2
|
+
from office365.teams.apps.permission_set import TeamsAppPermissionSet
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TeamsAppAuthorization(ClientValue):
|
|
6
|
+
"""The authorization details of a teamsApp."""
|
|
7
|
+
|
|
8
|
+
def __init__(
|
|
9
|
+
self, client_app_id=None, required_permission_set=TeamsAppPermissionSet()
|
|
10
|
+
):
|
|
11
|
+
"""
|
|
12
|
+
:param str client_app_id: The registration ID of the Microsoft Entra app ID associated with the teamsApp.
|
|
13
|
+
:param TeamsAppPermissionSet required_permission_set: Set of permissions required by the teamsApp.
|
|
14
|
+
"""
|
|
15
|
+
self.clientAppId = client_app_id
|
|
16
|
+
self.requiredPermissionSet = required_permission_set
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from office365.runtime.client_value import ClientValue
|
|
2
|
+
from office365.runtime.client_value_collection import ClientValueCollection
|
|
3
|
+
from office365.teams.apps.resource_specific_permission import (
|
|
4
|
+
TeamsAppResourceSpecificPermission,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TeamsAppPermissionSet(ClientValue):
|
|
9
|
+
"""Set of required/granted permissions that can be associated with a Teams app."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, resource_specific_permissions=None):
|
|
12
|
+
self.resourceSpecificPermissions = ClientValueCollection(
|
|
13
|
+
TeamsAppResourceSpecificPermission, resource_specific_permissions
|
|
14
|
+
)
|
office365/teams/chats/chat.py
CHANGED
|
@@ -1,24 +1,81 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
1
4
|
from office365.entity import Entity
|
|
2
5
|
from office365.entity_collection import EntityCollection
|
|
3
6
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
7
|
from office365.teams.apps.installation import TeamsAppInstallation
|
|
5
8
|
from office365.teams.chats.messages.info import ChatMessageInfo
|
|
6
9
|
from office365.teams.chats.messages.message import ChatMessage
|
|
10
|
+
from office365.teams.chats.viewpoint import ChatViewpoint
|
|
7
11
|
from office365.teams.members.conversation_collection import ConversationMemberCollection
|
|
8
12
|
from office365.teams.operations.async_operation import TeamsAsyncOperation
|
|
9
13
|
from office365.teams.tabs.tab import TeamsTab
|
|
14
|
+
from office365.teams.teamwork.online_meeting_info import TeamworkOnlineMeetingInfo
|
|
10
15
|
|
|
11
16
|
|
|
12
17
|
class Chat(Entity):
|
|
13
18
|
"""A chat is a collection of chatMessages between one or more participants. Participants can be users or apps."""
|
|
14
19
|
|
|
20
|
+
@property
|
|
21
|
+
def chat_type(self):
|
|
22
|
+
# type: () -> Optional[str]
|
|
23
|
+
"""Specifies the type of chat. Possible values are: group, oneOnOne, meeting, unknownFutureValue."""
|
|
24
|
+
return self.properties.get("chatType", None)
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def created_datetime(self):
|
|
28
|
+
"""Date and time at which the chat was created."""
|
|
29
|
+
return self.properties.get("createdDateTime", datetime.min)
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def is_hidden_for_all_members(self):
|
|
33
|
+
# type: () -> Optional[bool]
|
|
34
|
+
"""Indicates whether the chat is hidden for all its members."""
|
|
35
|
+
return self.properties.get("isHiddenForAllMembers", None)
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def last_updated_datetime(self):
|
|
39
|
+
# type: () -> Optional[datetime]
|
|
40
|
+
"""Date and time at which the chat was renamed or the list of members was last changed."""
|
|
41
|
+
return self.properties.get("lastUpdatedDateTime", datetime.min)
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def online_meeting_info(self):
|
|
45
|
+
# type: () -> TeamworkOnlineMeetingInfo
|
|
46
|
+
"""Represents details about an online meeting. If the chat isn't associated with an online meeting,
|
|
47
|
+
the property is empty. Read-only."""
|
|
48
|
+
return self.properties.get("onlineMeetingInfo", TeamworkOnlineMeetingInfo())
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def tenant_id(self):
|
|
52
|
+
# type: () -> Optional[str]
|
|
53
|
+
"""The identifier of the tenant in which the chat was created. Read-only."""
|
|
54
|
+
return self.properties.get("tenantId", None)
|
|
55
|
+
|
|
15
56
|
@property
|
|
16
57
|
def topic(self):
|
|
58
|
+
# type: () -> Optional[str]
|
|
17
59
|
"""(Optional) Subject or topic for the chat. Only available for group chats."""
|
|
18
60
|
return self.properties.get("topic", None)
|
|
19
61
|
|
|
62
|
+
@property
|
|
63
|
+
def viewpoint(self):
|
|
64
|
+
# type: () -> ChatViewpoint
|
|
65
|
+
"""Represents caller-specific information about the chat, such as the last message read date and time.
|
|
66
|
+
This property is populated only when the request is made in a delegated context.
|
|
67
|
+
"""
|
|
68
|
+
return self.properties.get("viewpoint", ChatViewpoint())
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def web_url(self):
|
|
72
|
+
# type: () -> Optional[str]
|
|
73
|
+
"""The URL for the chat in Microsoft Teams. The URL should be treated as an opaque blob, and not parsed."""
|
|
74
|
+
return self.properties.get("webUrl", None)
|
|
75
|
+
|
|
20
76
|
@property
|
|
21
77
|
def installed_apps(self):
|
|
78
|
+
# type: () -> EntityCollection[TeamsAppInstallation]
|
|
22
79
|
"""A collection of all the apps in the chat. Nullable."""
|
|
23
80
|
return self.properties.get(
|
|
24
81
|
"installedApps",
|
|
@@ -90,8 +147,11 @@ class Chat(Entity):
|
|
|
90
147
|
def get_property(self, name, default_value=None):
|
|
91
148
|
if default_value is None:
|
|
92
149
|
property_mapping = {
|
|
150
|
+
"createdDateTime": self.created_datetime,
|
|
93
151
|
"installedApps": self.installed_apps,
|
|
94
152
|
"lastMessagePreview": self.last_message_preview,
|
|
153
|
+
"lastUpdatedDateTime": self.last_updated_datetime,
|
|
154
|
+
"onlineMeetingInfo": self.online_meeting_info,
|
|
95
155
|
}
|
|
96
156
|
default_value = property_mapping.get(name, None)
|
|
97
157
|
return super(Chat, self).get_property(name, default_value)
|
|
@@ -49,6 +49,23 @@ class ChatMessage(Entity):
|
|
|
49
49
|
),
|
|
50
50
|
)
|
|
51
51
|
|
|
52
|
+
@property
|
|
53
|
+
def subject(self):
|
|
54
|
+
# type: () -> Optional[str]
|
|
55
|
+
"""
|
|
56
|
+
The subject of the chat message, in plaintext.
|
|
57
|
+
"""
|
|
58
|
+
return self.properties.get("subject", None)
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def summary(self):
|
|
62
|
+
# type: () -> Optional[str]
|
|
63
|
+
"""
|
|
64
|
+
Summary text of the chat message that could be used for push notifications and summary views or
|
|
65
|
+
fall back views. Only applies to channel chat messages, not chat messages in a chat.
|
|
66
|
+
"""
|
|
67
|
+
return self.properties.get("summary", None)
|
|
68
|
+
|
|
52
69
|
@property
|
|
53
70
|
def web_url(self):
|
|
54
71
|
# type: () -> Optional[str]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class ChatType:
|
|
2
|
+
|
|
3
|
+
oneOnOne = "oneOnOne"
|
|
4
|
+
"""Indicates that the chat is a 1:1 chat. The roster size is fixed for this type of chat; members can't be
|
|
5
|
+
removed/added."""
|
|
6
|
+
|
|
7
|
+
group = "group"
|
|
8
|
+
"""Indicates that the chat is a group chat. The roster size (of at least two people) can be updated for this
|
|
9
|
+
type of chat. Members can be removed/added later."""
|
|
10
|
+
|
|
11
|
+
meeting = "meeting"
|
|
12
|
+
"""Indicates that the chat is associated with an online meeting. This type of chat is only created as
|
|
13
|
+
part of the creation of an online meeting."""
|
office365/teams/fun_settings.py
CHANGED
|
@@ -4,9 +4,21 @@ from office365.runtime.client_value import ClientValue
|
|
|
4
4
|
class TeamFunSettings(ClientValue):
|
|
5
5
|
"""Settings to configure use of Giphy, memes, and stickers in the team."""
|
|
6
6
|
|
|
7
|
-
def __init__(
|
|
7
|
+
def __init__(
|
|
8
|
+
self,
|
|
9
|
+
allow_custom_memes=None,
|
|
10
|
+
allow_giphy=None,
|
|
11
|
+
allow_stickers_and_memes=None,
|
|
12
|
+
giphy_content_rating=None,
|
|
13
|
+
):
|
|
8
14
|
"""
|
|
9
|
-
:param bool
|
|
15
|
+
:param bool allow_custom_memes: f set to true, enables users to include custom memes.
|
|
16
|
+
:param bool allow_giphy: If set to true, enables Giphy use.
|
|
17
|
+
:param bool allow_stickers_and_memes: If set to true, enables users to include stickers and memes.
|
|
18
|
+
:param str giphy_content_rating: Giphy content rating. Possible values are: moderate, strict.
|
|
10
19
|
"""
|
|
11
20
|
super(TeamFunSettings, self).__init__()
|
|
21
|
+
self.allowCustomMemes = allow_custom_memes
|
|
12
22
|
self.allowGiphy = allow_giphy
|
|
23
|
+
self.allowStickersAndMemes = allow_stickers_and_memes
|
|
24
|
+
self.giphyContentRating = giphy_content_rating
|
office365/teams/info.py
CHANGED
|
@@ -12,5 +12,6 @@ class ShiftItem(ScheduleEntity):
|
|
|
12
12
|
:param list[ShiftActivity] activities: An incremental part of a shift which can cover details of when and
|
|
13
13
|
where an employee is during their shift. For example, an assignment or a scheduled break or lunch.
|
|
14
14
|
"""
|
|
15
|
+
super(ShiftItem, self).__init__()
|
|
15
16
|
self.displayName = display_name
|
|
16
17
|
self.activities = ClientValueCollection(ShiftActivity, activities)
|
|
@@ -1,7 +1,47 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
1
4
|
from office365.teams.schedule.change_request import ScheduleChangeRequest
|
|
2
5
|
|
|
3
6
|
|
|
4
7
|
class OfferShiftRequest(ScheduleChangeRequest):
|
|
5
8
|
"""Represents a request to offer a shift to another user in the team."""
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
@property
|
|
11
|
+
def recipient_action_datetime(self):
|
|
12
|
+
"""
|
|
13
|
+
The Timestamp type represents date and time information using ISO 8601 format and is always in UTC time.
|
|
14
|
+
"""
|
|
15
|
+
return self.properties.get("recipientActionDateTime", datetime.min)
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def recipient_action_message(self):
|
|
19
|
+
# type: () -> Optional[str]
|
|
20
|
+
"""
|
|
21
|
+
Custom message sent by recipient of the offer shift request.
|
|
22
|
+
"""
|
|
23
|
+
return self.properties.get("recipientActionMessage", None)
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def recipient_user_id(self):
|
|
27
|
+
# type: () -> Optional[str]
|
|
28
|
+
"""
|
|
29
|
+
User ID of the recipient of the offer shift request.
|
|
30
|
+
"""
|
|
31
|
+
return self.properties.get("recipientUserId", None)
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def sender_shift_id(self):
|
|
35
|
+
# type: () -> Optional[str]
|
|
36
|
+
"""
|
|
37
|
+
User ID of the sender of the offer shift request.
|
|
38
|
+
"""
|
|
39
|
+
return self.properties.get("senderShiftId", None)
|
|
40
|
+
|
|
41
|
+
def get_property(self, name, default_value=None):
|
|
42
|
+
if default_value is None:
|
|
43
|
+
property_mapping = {
|
|
44
|
+
"recipientActionDateTime": self.recipient_action_datetime,
|
|
45
|
+
}
|
|
46
|
+
default_value = property_mapping.get(name, None)
|
|
47
|
+
return super(OfferShiftRequest, self).get_property(name, default_value)
|
|
@@ -3,3 +3,8 @@ from office365.runtime.client_value import ClientValue
|
|
|
3
3
|
|
|
4
4
|
class TeamworkActivityTopic(ClientValue):
|
|
5
5
|
"""Represents the topic of an activity feed notification."""
|
|
6
|
+
|
|
7
|
+
def __init__(self, source=None, value=None, web_url=None):
|
|
8
|
+
self.source = source
|
|
9
|
+
self.value = value
|
|
10
|
+
self.webUrl = web_url
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from office365.runtime.client_value import ClientValue
|
|
2
|
+
from office365.teams.teamwork.user_identity import TeamworkUserIdentity
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TeamworkOnlineMeetingInfo(ClientValue):
|
|
6
|
+
"""Represents details about an online meeting in Microsoft Teams."""
|
|
7
|
+
|
|
8
|
+
def __init__(
|
|
9
|
+
self,
|
|
10
|
+
calendar_event_id=None,
|
|
11
|
+
join_web_url=None,
|
|
12
|
+
organizer=TeamworkUserIdentity(),
|
|
13
|
+
):
|
|
14
|
+
"""
|
|
15
|
+
:param calendar_event_id: The identifier of the calendar event associated with the meeting.
|
|
16
|
+
:param join_web_url: The URL that users click to join or uniquely identify the meeting.
|
|
17
|
+
:param organizer: The organizer associated with the meeting.
|
|
18
|
+
"""
|
|
19
|
+
self.calendarEventId = calendar_event_id
|
|
20
|
+
self.joinWebUrl = join_web_url
|
|
21
|
+
self.organizer = organizer
|
|
File without changes
|
office365/teams/teamwork/user.py
CHANGED
|
@@ -1,15 +1,59 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
from office365.entity_collection import EntityCollection
|
|
3
5
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
6
|
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
5
7
|
from office365.teams.apps.user_scope_installation import UserScopeTeamsAppInstallation
|
|
8
|
+
from office365.teams.associated_info import AssociatedTeamInfo
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
class UserTeamwork(Entity):
|
|
9
12
|
"""A container for the range of Microsoft Teams functionalities that are available per user in the tenant."""
|
|
10
13
|
|
|
14
|
+
@property
|
|
15
|
+
def locale(self):
|
|
16
|
+
# type: () -> Optional[str]
|
|
17
|
+
"""Represents the location that a user selected in Microsoft Teams and doesn't follow the Office's locale
|
|
18
|
+
setting. A user's locale is represented by their preferred language and country or region.
|
|
19
|
+
For example, en-us. The language component follows two-letter codes as defined in ISO 639-1,
|
|
20
|
+
and the country component follows two-letter codes as defined in ISO 3166-1 alpha-2.
|
|
21
|
+
"""
|
|
22
|
+
return self.properties.get("locale", None)
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def region(self):
|
|
26
|
+
# type: () -> Optional[str]
|
|
27
|
+
"""Represents the region of the organization or the user. For users with multigeo licenses, the property
|
|
28
|
+
contains the user's region (if available). For users without multigeo licenses, the property contains
|
|
29
|
+
the organization's region.
|
|
30
|
+
|
|
31
|
+
The region value can be any region supported by the Teams payload.
|
|
32
|
+
The possible values are: Americas, Europe and MiddleEast, Asia Pacific, UAE, Australia, Brazil, Canada,
|
|
33
|
+
Switzerland, Germany, France, India, Japan, South Korea, Norway, Singapore, United Kingdom, South Africa,
|
|
34
|
+
Sweden, Qatar, Poland, Italy, Israel, Spain, Mexico, USGov Community Cloud, USGov Community Cloud High,
|
|
35
|
+
USGov Department of Defense, and China.
|
|
36
|
+
"""
|
|
37
|
+
return self.properties.get("region", None)
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def associated_teams(self):
|
|
41
|
+
# type: () -> EntityCollection[AssociatedTeamInfo]
|
|
42
|
+
"""
|
|
43
|
+
The apps installed in the personal scope of this user.
|
|
44
|
+
"""
|
|
45
|
+
return self.properties.get(
|
|
46
|
+
"associatedTeams",
|
|
47
|
+
EntityCollection(
|
|
48
|
+
self.context,
|
|
49
|
+
AssociatedTeamInfo,
|
|
50
|
+
ResourcePath("associatedTeams", self.resource_path),
|
|
51
|
+
),
|
|
52
|
+
)
|
|
53
|
+
|
|
11
54
|
@property
|
|
12
55
|
def installed_apps(self):
|
|
56
|
+
# type: () -> EntityCollection[UserScopeTeamsAppInstallation]
|
|
13
57
|
"""
|
|
14
58
|
The apps installed in the personal scope of this user.
|
|
15
59
|
"""
|
|
@@ -51,6 +95,9 @@ class UserTeamwork(Entity):
|
|
|
51
95
|
|
|
52
96
|
def get_property(self, name, default_value=None):
|
|
53
97
|
if default_value is None:
|
|
54
|
-
property_mapping = {
|
|
98
|
+
property_mapping = {
|
|
99
|
+
"associatedTeams": self.associated_teams,
|
|
100
|
+
"installedApps": self.installed_apps,
|
|
101
|
+
}
|
|
55
102
|
default_value = property_mapping.get(name, None)
|
|
56
103
|
return super(UserTeamwork, self).get_property(name, default_value)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from office365.entity import Entity
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Community(Entity):
|
|
5
|
+
"""Represents a community in Viva Engage that is a central place for conversations, files, events, and
|
|
6
|
+
updates for people sharing a common interest or goal.
|
|
7
|
+
|
|
8
|
+
Every community is associated with a Microsoft 365 group, but the group doesn't have the same ID as the community.
|
|
9
|
+
For more information about managing communities in Viva Engage, see Use the Microsoft Graph API to work
|
|
10
|
+
with Viva Engage.
|
|
11
|
+
|
|
12
|
+
This resource is an open type that allows other properties to be passed in.
|
|
13
|
+
"""
|
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
from office365.entity import Entity
|
|
2
2
|
from office365.entity_collection import EntityCollection
|
|
3
3
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
|
+
from office365.teams.viva.community import Community
|
|
5
|
+
from office365.teams.viva.learning.courses.activity import LearningCourseActivity
|
|
4
6
|
from office365.teams.viva.learning.provider import LearningProvider
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
class EmployeeExperience(Entity):
|
|
8
10
|
"""Represents a container that exposes navigation properties for employee experience resources."""
|
|
9
11
|
|
|
12
|
+
@property
|
|
13
|
+
def communities(self):
|
|
14
|
+
"""A collection of communities in Viva Engage."""
|
|
15
|
+
return self.properties.get(
|
|
16
|
+
"communities",
|
|
17
|
+
EntityCollection(
|
|
18
|
+
self.context,
|
|
19
|
+
Community,
|
|
20
|
+
ResourcePath("communities", self.resource_path),
|
|
21
|
+
),
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def learning_course_activities(self):
|
|
26
|
+
"""A collection of learning course activities."""
|
|
27
|
+
return self.properties.get(
|
|
28
|
+
"learningCourseActivities",
|
|
29
|
+
EntityCollection(
|
|
30
|
+
self.context,
|
|
31
|
+
LearningCourseActivity,
|
|
32
|
+
ResourcePath("learningCourseActivities", self.resource_path),
|
|
33
|
+
),
|
|
34
|
+
)
|
|
35
|
+
|
|
10
36
|
@property
|
|
11
37
|
def learning_providers(self):
|
|
12
38
|
"""A collection of learning providers."""
|
|
@@ -22,6 +48,7 @@ class EmployeeExperience(Entity):
|
|
|
22
48
|
def get_property(self, name, default_value=None):
|
|
23
49
|
if default_value is None:
|
|
24
50
|
property_mapping = {
|
|
51
|
+
"learningCourseActivities": self.learning_course_activities,
|
|
25
52
|
"learningProviders": self.learning_providers,
|
|
26
53
|
}
|
|
27
54
|
default_value = property_mapping.get(name, None)
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
from office365.entity import Entity
|
|
2
|
+
from office365.entity_collection import EntityCollection
|
|
3
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
|
+
from office365.teams.viva.learning.courses.activity import LearningCourseActivity
|
|
2
5
|
|
|
3
6
|
|
|
4
7
|
class EmployeeExperienceUser(Entity):
|
|
5
8
|
""""""
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def learning_course_activities(self):
|
|
12
|
+
# type: () -> EntityCollection[LearningCourseActivity]
|
|
13
|
+
"""Get a list of the learningCourseActivity objects (assigned or self-initiated) for a user."""
|
|
14
|
+
return self.properties.get(
|
|
15
|
+
"learningCourseActivities",
|
|
16
|
+
EntityCollection(
|
|
17
|
+
self.context,
|
|
18
|
+
LearningCourseActivity,
|
|
19
|
+
ResourcePath("learningCourseActivities", self.resource_path),
|
|
20
|
+
),
|
|
21
|
+
)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import AnyStr, Optional
|
|
2
|
+
|
|
1
3
|
from office365.todo.attachments.base import AttachmentBase
|
|
2
4
|
|
|
3
5
|
|
|
@@ -10,5 +12,6 @@ class TaskFileAttachment(AttachmentBase):
|
|
|
10
12
|
|
|
11
13
|
@property
|
|
12
14
|
def content_bytes(self):
|
|
15
|
+
# type: () -> Optional[AnyStr]
|
|
13
16
|
"""The base64-encoded contents of the file."""
|
|
14
17
|
return self.properties.get("contentBytes", None)
|
office365/todo/checklist_item.py
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
1
3
|
from office365.entity import Entity
|
|
2
4
|
|
|
3
5
|
|
|
4
6
|
class ChecklistItem(Entity):
|
|
5
7
|
"""Represents a subtask in a bigger todoTask. ChecklistItem allows breaking down a complex task into more
|
|
6
8
|
actionable, smaller tasks."""
|
|
9
|
+
|
|
10
|
+
def __str__(self):
|
|
11
|
+
return self.display_name or self.entity_type_name
|
|
12
|
+
|
|
13
|
+
@property
|
|
14
|
+
def display_name(self):
|
|
15
|
+
# type: () -> Optional[str]
|
|
16
|
+
"""Indicates the title of the checklistItem."""
|
|
17
|
+
return self.properties.get("displayName", None)
|