Office365-REST-Python-Client 2.4.3__py3-none-any.whl → 2.4.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.
Files changed (255) hide show
  1. {Office365_REST_Python_Client-2.4.3.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/METADATA +8 -7
  2. {Office365_REST_Python_Client-2.4.3.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/RECORD +254 -162
  3. office365/base_item.py +26 -4
  4. office365/communications/calls/invitation_participant_info.py +17 -1
  5. office365/communications/calls/options.py +9 -0
  6. office365/communications/onlinemeetings/provider_type.py +3 -0
  7. office365/communications/presences/presence.py +14 -0
  8. office365/communications/presences/status_message.py +12 -0
  9. office365/directory/audit/signins/activity.py +31 -0
  10. office365/directory/audit/signins/location.py +17 -0
  11. office365/directory/audit/signins/signin.py +25 -0
  12. office365/directory/authentication/authentication.py +9 -0
  13. office365/directory/authentication/methods/details.py +18 -0
  14. office365/directory/authentication/methods/email.py +16 -0
  15. office365/directory/authentication/methods/root.py +10 -0
  16. office365/directory/certificates/authority.py +6 -1
  17. office365/directory/extensions/extended_property.py +8 -1
  18. office365/directory/extensions/extension_property.py +0 -3
  19. office365/directory/extensions/open_type.py +8 -0
  20. office365/directory/groups/group.py +2 -1
  21. office365/directory/identities/governance.py +2 -0
  22. office365/directory/insights/shared.py +15 -1
  23. office365/directory/insights/usage_details.py +16 -0
  24. office365/directory/insights/used.py +7 -0
  25. office365/directory/licenses/assigned_plan.py +14 -2
  26. office365/directory/licenses/service_plan_info.py +4 -0
  27. office365/directory/licenses/subscribed_sku.py +26 -0
  28. office365/directory/licenses/units_detail.py +11 -0
  29. office365/directory/permissions/email_identity.py +5 -0
  30. office365/directory/permissions/grants/condition_set.py +26 -0
  31. office365/directory/permissions/grants/resource_specific.py +21 -0
  32. office365/directory/policies/authentication_flows.py +9 -0
  33. office365/directory/policies/authentication_strength.py +10 -0
  34. office365/directory/policies/authorization.py +8 -0
  35. office365/directory/policies/cross_tenant_access.py +5 -0
  36. office365/directory/policies/root.py +35 -2
  37. office365/directory/rolemanagement/template.py +8 -0
  38. office365/directory/rolemanagement/unified_role_assignment.py +37 -0
  39. office365/directory/security/alerts/alert.py +21 -0
  40. office365/directory/security/alerts/history_state.py +5 -0
  41. office365/directory/security/attacksimulations/automation.py +21 -0
  42. office365/directory/security/attacksimulations/automation_run.py +5 -0
  43. office365/directory/security/attacksimulations/repeat_offender.py +6 -0
  44. office365/directory/security/attacksimulations/root.py +26 -0
  45. office365/directory/security/attacksimulations/simulation.py +17 -0
  46. office365/directory/security/cases/ediscovery.py +6 -0
  47. office365/directory/security/cases/root.py +22 -0
  48. office365/directory/security/incidents/incident.py +67 -0
  49. office365/directory/security/security.py +10 -1
  50. office365/directory/serviceprincipals/service_principal.py +88 -3
  51. office365/directory/synchronization/job.py +16 -0
  52. office365/directory/synchronization/progress.py +5 -0
  53. office365/directory/synchronization/status.py +13 -0
  54. office365/directory/synchronization/synchronization.py +24 -0
  55. office365/directory/tenant_information.py +12 -0
  56. office365/directory/users/password_profile.py +15 -3
  57. office365/directory/users/user.py +136 -8
  58. office365/graph_client.py +28 -1
  59. office365/intune/audit/actor.py +5 -0
  60. office365/intune/audit/event.py +21 -25
  61. office365/intune/audit/event_collection.py +26 -0
  62. office365/intune/audit/property.py +5 -0
  63. office365/intune/audit/resource.py +11 -0
  64. office365/intune/brand.py +6 -0
  65. office365/intune/devices/compliance/__init__.py +0 -0
  66. office365/intune/devices/compliance/policy.py +6 -0
  67. office365/intune/devices/compliance/policy_state.py +5 -0
  68. office365/intune/devices/enrollment/__init__.py +0 -0
  69. office365/intune/devices/enrollment/configuration.py +25 -0
  70. office365/intune/devices/enrollment/configuration_assignment.py +5 -0
  71. office365/intune/devices/enrollment/limit_configuration.py +5 -0
  72. office365/intune/devices/managed.py +28 -3
  73. office365/intune/devices/management/__init__.py +0 -0
  74. office365/intune/devices/management/management.py +69 -0
  75. office365/intune/devices/management/reports/__init__.py +0 -0
  76. office365/intune/devices/management/reports/reports.py +5 -0
  77. office365/intune/devices/management/settings.py +18 -0
  78. office365/intune/organizations/branding.py +15 -0
  79. office365/intune/organizations/organization.py +14 -0
  80. office365/intune/printing/base.py +11 -0
  81. office365/intune/printing/capabilities.py +5 -0
  82. office365/intune/printing/connectors/__init__.py +0 -0
  83. office365/intune/printing/connectors/connector.py +6 -0
  84. office365/intune/printing/operations/__init__.py +0 -0
  85. office365/intune/printing/print.py +24 -0
  86. office365/intune/printing/printer.py +6 -0
  87. office365/intune/printing/services/__init__.py +0 -0
  88. office365/intune/printing/services/endpoint.py +5 -0
  89. office365/intune/printing/services/service.py +17 -0
  90. office365/intune/printing/share.py +5 -0
  91. office365/intune/printing/shares/__init__.py +0 -0
  92. office365/intune/printing/taskdefinitions/__init__.py +0 -0
  93. office365/intune/provisioned_plan.py +5 -1
  94. office365/intune/servicecommunications/issues/issue.py +15 -0
  95. office365/intune/vpp_token.py +10 -0
  96. office365/onedrive/columns/content_approval_status.py +5 -0
  97. office365/onedrive/columns/datetime.py +15 -0
  98. office365/onedrive/columns/definition.py +49 -3
  99. office365/onedrive/columns/definition_collection.py +17 -6
  100. office365/onedrive/columns/types.py +13 -0
  101. office365/onedrive/driveitems/audio.py +12 -1
  102. office365/onedrive/driveitems/driveItem.py +66 -15
  103. office365/onedrive/driveitems/image.py +8 -1
  104. office365/onedrive/driveitems/remote_item.py +19 -4
  105. office365/onedrive/drives/recipient.py +4 -0
  106. office365/onedrive/files/system_info.py +8 -6
  107. office365/onedrive/lists/collection.py +11 -5
  108. office365/onedrive/lists/list.py +13 -5
  109. office365/onedrive/operations/pending.py +13 -0
  110. office365/onedrive/operations/pending_content_update.py +5 -0
  111. office365/onedrive/permissions/collection.py +1 -1
  112. office365/onedrive/sensitivitylabels/__init__.py +0 -0
  113. office365/onedrive/sensitivitylabels/assignment.py +17 -0
  114. office365/onedrive/sensitivitylabels/assignment_method.py +4 -0
  115. office365/onedrive/sensitivitylabels/extract_result.py +13 -0
  116. office365/onedrive/sharepoint_settings.py +25 -0
  117. office365/outlook/calendar/calendar.py +116 -5
  118. office365/outlook/calendar/dateTimeTimeZone.py +3 -0
  119. office365/outlook/calendar/email_address.py +7 -0
  120. office365/outlook/calendar/events/event.py +0 -4
  121. office365/outlook/calendar/events/reminder.py +22 -3
  122. office365/outlook/calendar/group.py +0 -2
  123. office365/outlook/calendar/location_constraint.py +16 -1
  124. office365/outlook/calendar/permissions/__init__.py +0 -0
  125. office365/outlook/calendar/permissions/collection.py +24 -0
  126. office365/outlook/calendar/{permission.py → permissions/permission.py} +35 -2
  127. office365/outlook/calendar/role_type.py +17 -0
  128. office365/outlook/calendar/sharing_message.py +2 -2
  129. office365/outlook/calendar/time_zone_base.py +3 -0
  130. office365/outlook/calendar/working_hours.py +17 -1
  131. office365/outlook/contacts/collection.py +39 -0
  132. office365/outlook/contacts/contact.py +21 -11
  133. office365/outlook/geo_coordinates.py +20 -0
  134. office365/outlook/item.py +5 -2
  135. office365/outlook/locale_info.py +3 -0
  136. office365/outlook/mail/folders/folder.py +51 -2
  137. office365/outlook/mail/folders/search.py +11 -0
  138. office365/outlook/mail/importance.py +1 -0
  139. office365/outlook/mail/item_body.py +3 -0
  140. office365/outlook/mail/location.py +27 -2
  141. office365/outlook/mail/location_constraint_item.py +5 -0
  142. office365/outlook/mail/messages/collection.py +7 -0
  143. office365/outlook/mail/messages/followup_flag.py +21 -0
  144. office365/outlook/mail/messages/internet_header.py +16 -0
  145. office365/outlook/mail/messages/message.py +183 -4
  146. office365/outlook/mail/messages/rules/actions.py +33 -0
  147. office365/outlook/mail/patterned_recurrence.py +14 -1
  148. office365/outlook/mail/physical_address.py +5 -1
  149. office365/outlook/mail/recipient.py +3 -0
  150. office365/outlook/mail/recurrence_pattern.py +18 -1
  151. office365/outlook/mail/recurrence_range.py +16 -2
  152. office365/reports/root.py +19 -1
  153. office365/reports/security/__init__.py +0 -0
  154. office365/reports/security/root.py +21 -0
  155. office365/reports/userregistration/__init__.py +0 -0
  156. office365/reports/userregistration/method_count.py +17 -0
  157. office365/reports/userregistration/method_summary.py +21 -0
  158. office365/sharepoint/activities/logger.py +25 -0
  159. office365/sharepoint/addtoonedrive/mount_point.py +25 -0
  160. office365/sharepoint/addtoonedrive/mounted_folder_info.py +5 -0
  161. office365/sharepoint/alerts/alert.py +31 -0
  162. office365/sharepoint/changes/item.py +14 -0
  163. office365/sharepoint/client_context.py +6 -0
  164. office365/sharepoint/clientsidecomponent/component_context_info.py +7 -0
  165. office365/sharepoint/clientsidecomponent/identifier.py +3 -0
  166. office365/sharepoint/compliance/tag_info.py +17 -0
  167. office365/sharepoint/contenttypes/content_type.py +42 -0
  168. office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -6
  169. office365/sharepoint/features/known_list.py +2 -0
  170. office365/sharepoint/fields/collection.py +60 -41
  171. office365/sharepoint/fields/creation_information.py +5 -4
  172. office365/sharepoint/fields/field.py +73 -15
  173. office365/sharepoint/fields/user.py +3 -3
  174. office365/sharepoint/files/file.py +9 -4
  175. office365/sharepoint/folders/coloring.py +39 -0
  176. office365/sharepoint/folders/coloring_information.py +15 -0
  177. office365/sharepoint/folders/folder.py +21 -10
  178. office365/sharepoint/forms/customization.py +8 -0
  179. office365/sharepoint/listitems/listitem.py +10 -3
  180. office365/sharepoint/lists/bloom_filter.py +0 -1
  181. office365/sharepoint/lists/creation_information.py +18 -4
  182. office365/sharepoint/lists/list.py +199 -24
  183. office365/sharepoint/lists/render_data_parameters.py +21 -1
  184. office365/sharepoint/navigation/configured_metadata_items.py +25 -1
  185. office365/sharepoint/navigation/metadata_settings.py +6 -4
  186. office365/sharepoint/permissions/irm/file_settings.py +43 -0
  187. office365/sharepoint/portal/userprofiles/documents_shared_with_group.py +3 -0
  188. office365/sharepoint/publishing/base_custom_property.py +8 -0
  189. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +8 -0
  190. office365/sharepoint/publishing/pagecopywithassets/__init__.py +0 -0
  191. office365/sharepoint/publishing/pagecopywithassets/response.py +8 -0
  192. office365/sharepoint/publishing/pages/campaign_publication.py +7 -0
  193. office365/sharepoint/publishing/pages/page.py +4 -1
  194. office365/sharepoint/publishing/pages/reposts/metadata.py +8 -0
  195. office365/sharepoint/publishing/personmagazine/person_magazine.py +4 -1
  196. office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +8 -1
  197. office365/sharepoint/search/query/auto_completion_match.py +3 -0
  198. office365/sharepoint/search/query/property_value.py +18 -0
  199. office365/sharepoint/search/request.py +16 -2
  200. office365/sharepoint/sharing/abilities.py +22 -0
  201. office365/sharepoint/sharing/direct_abilities.py +27 -0
  202. office365/sharepoint/sharing/link_abilities.py +9 -1
  203. office365/sharepoint/sharing/links/data.py +26 -1
  204. office365/sharepoint/sharing/links/info.py +1 -1
  205. office365/sharepoint/sharing/links/partial_success_response.py +5 -0
  206. office365/sharepoint/sharing/links/share_settings.py +24 -1
  207. office365/sharepoint/sharing/object_sharing_information.py +65 -2
  208. office365/sharepoint/sharing/object_sharing_information_user.py +9 -0
  209. office365/sharepoint/sharing/object_sharing_settings.py +17 -4
  210. office365/sharepoint/sharing/principal.py +10 -0
  211. office365/sharepoint/sharing/securable_object_extensions.py +1 -17
  212. office365/sharepoint/sharing/site_sharing_report_helper.py +2 -1
  213. office365/sharepoint/sharing/user_sharing_result.py +18 -8
  214. office365/sharepoint/sitehealth/result.py +10 -0
  215. office365/sharepoint/sites/language.py +11 -1
  216. office365/sharepoint/sites/language_collection.py +1 -0
  217. office365/sharepoint/sites/site.py +34 -6
  218. office365/sharepoint/tenant/administration/audit/search_request_status.py +8 -0
  219. office365/sharepoint/tenant/administration/hubsites/permission.py +10 -0
  220. office365/sharepoint/tenant/administration/tenant.py +1 -0
  221. office365/sharepoint/tenant/apps/information.py +3 -1
  222. office365/sharepoint/tenant/management/office365_tenant.py +0 -1
  223. office365/sharepoint/types/resource_path.py +3 -1
  224. office365/sharepoint/userprofiles/people_manager.py +0 -2
  225. office365/sharepoint/userprofiles/sharedwithme/document.py +16 -0
  226. office365/sharepoint/userprofiles/sharedwithme/document_user.py +12 -0
  227. office365/sharepoint/userprofiles/sharedwithme/item_collection.py +41 -0
  228. office365/sharepoint/userprofiles/sharedwithme/items.py +18 -1
  229. office365/sharepoint/webs/web.py +2 -3
  230. office365/subscriptions/collection.py +12 -6
  231. office365/subscriptions/subscription.py +119 -1
  232. office365/teams/channels/iIdentity.py +5 -0
  233. office365/teams/chats/collection.py +1 -2
  234. office365/teams/chats/messages/info.py +9 -0
  235. office365/teams/chats/messages/message.py +17 -2
  236. office365/teams/members/aad_user_conversation.py +2 -2
  237. office365/teams/members/conversation_collection.py +3 -3
  238. office365/teams/schedule/change_tracked_entity.py +11 -2
  239. office365/teams/tabs/configuration.py +12 -1
  240. office365/teams/tabs/tab.py +0 -1
  241. office365/teams/team.py +23 -1
  242. office365/teams/teamwork/__init__.py +0 -0
  243. office365/teams/teamwork/activity_topic.py +5 -0
  244. office365/teams/teamwork/tags/__init__.py +0 -0
  245. office365/teams/teamwork/tags/member.py +5 -0
  246. office365/{directory/security/cases_root.py → teams/viva/employee_experience_user.py} +1 -1
  247. office365/intune/devices/management.py +0 -35
  248. {Office365_REST_Python_Client-2.4.3.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/LICENSE +0 -0
  249. {Office365_REST_Python_Client-2.4.3.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/WHEEL +0 -0
  250. {Office365_REST_Python_Client-2.4.3.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/top_level.txt +0 -0
  251. /office365/{teams/messages → directory/security/cases}/__init__.py +0 -0
  252. /office365/{teams/tags → directory/synchronization}/__init__.py +0 -0
  253. /office365/teams/{tags → teamwork/tags}/identity.py +0 -0
  254. /office365/teams/{tags → teamwork/tags}/tag.py +0 -0
  255. /office365/teams/{user_teamwork.py → teamwork/user.py} +0 -0
@@ -12,8 +12,10 @@ from office365.onedrive.driveitems.image import Image
12
12
  from office365.onedrive.driveitems.item_preview_info import ItemPreviewInfo
13
13
  from office365.onedrive.driveitems.photo import Photo
14
14
  from office365.onedrive.driveitems.publication_facet import PublicationFacet
15
+ from office365.onedrive.driveitems.remote_item import RemoteItem
15
16
  from office365.onedrive.driveitems.special_folder import SpecialFolder
16
17
  from office365.onedrive.driveitems.thumbnail_set import ThumbnailSet
18
+ from office365.onedrive.drives.recipient import DriveRecipient
17
19
  from office365.onedrive.files.file import File
18
20
  from office365.onedrive.files.system_info import FileSystemInfo
19
21
  from office365.onedrive.folders.folder import Folder
@@ -22,19 +24,22 @@ from office365.onedrive.internal.paths.url import UrlPath
22
24
  from office365.onedrive.internal.queries.resumable_file_upload import create_resumable_file_upload_query
23
25
  from office365.onedrive.listitems.item_reference import ItemReference
24
26
  from office365.onedrive.listitems.list_item import ListItem
27
+ from office365.onedrive.operations.pending import PendingOperations
25
28
  from office365.onedrive.permissions.collection import PermissionCollection
26
29
  from office365.onedrive.permissions.permission import Permission
30
+ from office365.onedrive.sensitivitylabels.extract_result import ExtractSensitivityLabelsResult
27
31
  from office365.onedrive.shares.shared import Shared
28
32
  from office365.onedrive.versions.drive_item import DriveItemVersion
29
33
  from office365.onedrive.workbooks.workbook import Workbook
30
34
  from office365.runtime.client_result import ClientResult
35
+ from office365.runtime.client_value_collection import ClientValueCollection
31
36
  from office365.runtime.http.http_method import HttpMethod
32
37
  from office365.runtime.paths.resource_path import ResourcePath
33
38
  from office365.runtime.queries.create_entity import CreateEntityQuery
34
39
  from office365.runtime.queries.function import FunctionQuery
35
40
  from office365.runtime.queries.service_operation import ServiceOperationQuery
36
41
  from office365.runtime.queries.upload_session import UploadSessionQuery
37
- from office365.subscriptions.subscription import Subscription
42
+ from office365.subscriptions.collection import SubscriptionCollection
38
43
 
39
44
 
40
45
  class DriveItem(BaseItem):
@@ -66,7 +71,7 @@ class DriveItem(BaseItem):
66
71
 
67
72
  :param str link_type: The type of sharing link to create. Either view, edit, or embed.
68
73
  :param str scope: The scope of link to create. Either anonymous or organization.
69
- :param str expiration_datetime: A String with format of yyyy-MM-ddTHH:mm:ssZ of DateTime indicates
74
+ :param str or datetime.datetime expiration_datetime: A String with format of yyyy-MM-ddTHH:mm:ssZ of DateTime indicates
70
75
  the expiration time of the permission.
71
76
  :param str password: The password of the sharing link that is set by the creator. Optional
72
77
  and OneDrive Personal only.
@@ -89,6 +94,17 @@ class DriveItem(BaseItem):
89
94
  self.context.add_query(qry)
90
95
  return return_type
91
96
 
97
+ def extract_sensitivity_labels(self):
98
+ """
99
+ Extract one or more sensitivity labels assigned to a drive item and update the metadata of a drive
100
+ item with the latest details of the assigned label. In case of failure to extract the sensitivity labels
101
+ of a file, an extraction error will be thrown with the applicable error code and message.
102
+ """
103
+ return_type = ClientResult(self.context, ExtractSensitivityLabelsResult())
104
+ qry = ServiceOperationQuery(self, "extractSensitivityLabels", return_type=return_type)
105
+ self.context.add_query(qry)
106
+ return return_type
107
+
92
108
  def follow(self):
93
109
  """
94
110
  Follow a driveItem.
@@ -397,31 +413,43 @@ class DriveItem(BaseItem):
397
413
  self.context.add_query(qry)
398
414
  return return_type
399
415
 
400
- def invite(self, recipients, message, require_sign_in=True, send_invitation=True, roles=None):
401
- """Sends a sharing invitation for a driveItem. A sharing invitation provides permissions to the recipients
416
+ def invite(self, recipients, message, require_sign_in=True, send_invitation=True, roles=None,
417
+ expiration_datetime=None, password=None, retain_inherited_permissions=None):
418
+ """
419
+ Sends a sharing invitation for a driveItem. A sharing invitation provides permissions to the recipients
402
420
  and optionally sends them an email with a sharing link.
403
421
 
404
- :param list[DriveRecipient] recipients: A collection of recipients who will receive access and the sharing
405
- invitation.
422
+ :param list[str] recipients: A collection of recipients who will receive access and the sharing
423
+ invitation.
406
424
  :param str message: A plain text formatted message that is included in the sharing invitation.
407
- Maximum length 2000 characters.
425
+ Maximum length 2000 characters.
408
426
  :param bool require_sign_in: Specifies whether the recipient of the invitation is required to sign-in to view
409
- the shared item.
427
+ the shared item.
410
428
  :param bool send_invitation: If true, a sharing link is sent to the recipient. Otherwise, a permission is
411
- granted directly without sending a notification.
429
+ granted directly without sending a notification.
412
430
  :param list[str] roles: Specify the roles that are to be granted to the recipients of the sharing invitation.
431
+ :param datetime.datetime expiration_datetime: Specifies the dateTime after which the permission expires.
432
+ For OneDrive for Business and SharePoint, expirationDateTime is only applicable for sharingLink permissions.
433
+ Available on OneDrive for Business, SharePoint, and premium personal OneDrive accounts.
434
+ :param str password: The password set on the invite by the creator. Optional and OneDrive Personal only.
435
+ :param bool retain_inherited_permissions: Optional. If true (default), any existing inherited permissions
436
+ are retained on the shared item when sharing this item for the first time. If false, all existing
437
+ permissions are removed when sharing for the first time.
413
438
  """
414
439
  if roles is None:
415
440
  roles = ["read"]
416
- return_type = EntityCollection(self.context, Permission)
441
+ return_type = PermissionCollection(self.context)
417
442
  payload = {
418
443
  "requireSignIn": require_sign_in,
419
444
  "sendInvitation": send_invitation,
420
445
  "roles": roles,
421
- "recipients": recipients,
422
- "message": message
446
+ "recipients": ClientValueCollection(DriveRecipient, [DriveRecipient.from_email(r) for r in recipients]),
447
+ "message": message,
448
+ "expirationDateTime": expiration_datetime.isoformat() + "Z" if expiration_datetime else None,
449
+ "password": password,
450
+ "retainInheritedPermissions": retain_inherited_permissions
423
451
  }
424
- qry = ServiceOperationQuery(self, "invite", payload, None, None, return_type)
452
+ qry = ServiceOperationQuery(self, "invite", None, payload, None, return_type)
425
453
  self.context.add_query(qry)
426
454
  return return_type
427
455
 
@@ -449,6 +477,16 @@ class DriveItem(BaseItem):
449
477
 
450
478
  return return_type
451
479
 
480
+ def permanent_delete(self):
481
+ """
482
+ Permanently delete a driveItem.
483
+ Note that if you delete items using this method, they will be permanently removed and won't be sent to the
484
+ recycle bin. Therefore, they cannot be restored afterward.
485
+ """
486
+ qry = ServiceOperationQuery(self, "permanentDelete")
487
+ self.context.add_query(qry)
488
+ return self
489
+
452
490
  def restore(self, parent_reference=None, name=None):
453
491
  """
454
492
  Restore a driveItem that has been deleted and is currently in the recycle bin.
@@ -587,6 +625,12 @@ class DriveItem(BaseItem):
587
625
  """For files that are Excel spreadsheets, accesses the workbook API to work with the spreadsheet's contents. """
588
626
  return self.properties.get('workbook', Workbook(self.context, ResourcePath("workbook", self.resource_path)))
589
627
 
628
+ @property
629
+ def pending_operations(self):
630
+ """If present, indicates that one or more operations that might affect the state of the driveItem are pending
631
+ completion. Read-only."""
632
+ return self.properties.get('pendingOperations', PendingOperations())
633
+
590
634
  @property
591
635
  def permissions(self):
592
636
  """The set of permissions for the item. Read-only. Nullable."""
@@ -599,6 +643,11 @@ class DriveItem(BaseItem):
599
643
  in locations that support such actions. This property is not returned by default. Read-only."""
600
644
  return self.properties.get('publication', PublicationFacet())
601
645
 
646
+ @property
647
+ def remote_item(self):
648
+ """Remote item data, if the item is shared from a drive other than the one being accessed. Read-only."""
649
+ return self.properties.get('remoteItem', RemoteItem())
650
+
602
651
  @property
603
652
  def special_folder(self):
604
653
  """If the current item is also available as a special folder, this facet is returned. Read-only."""
@@ -637,13 +686,15 @@ class DriveItem(BaseItem):
637
686
  """The set of subscriptions on the driveItem.
638
687
  """
639
688
  return self.properties.get('subscriptions',
640
- EntityCollection(self.context, Subscription,
641
- ResourcePath("subscriptions", self.resource_path)))
689
+ SubscriptionCollection(self.context,
690
+ ResourcePath("subscriptions", self.resource_path)))
642
691
 
643
692
  def get_property(self, name, default_value=None):
644
693
  if default_value is None:
645
694
  property_mapping = {
646
695
  "fileSystemInfo": self.file_system_info,
696
+ "remoteItem": self.remote_item,
697
+ "specialFolder": self.special_folder
647
698
  }
648
699
  default_value = property_mapping.get(name, None)
649
700
  return super(DriveItem, self).get_property(name, default_value)
@@ -8,4 +8,11 @@ class Image(ClientValue):
8
8
 
9
9
  Note: If the service is unable to determine the width and height of the image, the Image resource may be empty.
10
10
  """
11
- pass
11
+
12
+ def __init__(self, height=None, width=None):
13
+ """
14
+ :param int height:
15
+ :param int width:
16
+ """
17
+ self.height = height
18
+ self.width = width
@@ -1,4 +1,8 @@
1
1
  from office365.directory.permissions.identity_set import IdentitySet
2
+ from office365.onedrive.driveitems.image import Image
3
+ from office365.onedrive.files.file import File
4
+ from office365.onedrive.files.system_info import FileSystemInfo
5
+ from office365.onedrive.folders.folder import Folder
2
6
  from office365.runtime.client_value import ClientValue
3
7
 
4
8
 
@@ -8,13 +12,24 @@ class RemoteItem(ClientValue):
8
12
  This resource provides the unique IDs of the source drive and target item.
9
13
 
10
14
  DriveItems with a non-null remoteItem facet are resources that are shared, added to the user's OneDrive,
11
- or on items returned from hetrogenous collections of items (like search results).
15
+ or on items returned from heterogeneous collections of items (like search results).
12
16
  """
13
17
 
14
- def __init__(self, created_by=IdentitySet(), created_datetime=None):
18
+ def __init__(self, _id=None, created_by=IdentitySet(), created_datetime=None,
19
+ file=File(), file_system_info=FileSystemInfo(), folder=Folder(), image=Image()):
15
20
  """
16
- :param IdentitySet created_by:
17
- :param datetime.datetime created_datetime:
21
+ :param str _id: Unique identifier for the remote item in its drive. Read-only.
22
+ :param IdentitySet created_by: Identity of the user, device, and application which created the item. Read-only.
23
+ :param datetime.datetime created_datetime: Date and time of item creation. Read-only.
24
+ :param File file: Indicates that the remote item is a file. Read-only.
25
+ :param FileSystemInfo file_system_info: Information about the remote item from the local file system. Read-only.
26
+ :param Folder folder: Indicates that the remote item is a folder. Read-only.
27
+ :param Image image: Image metadata, if the item is an image. Read-only.
18
28
  """
29
+ self.id = _id
19
30
  self.createdBy = created_by
20
31
  self.createdDateTime = created_datetime
32
+ self.file = file
33
+ self.fileSystemInfo = file_system_info
34
+ self.folder = folder
35
+ self.image = image
@@ -21,4 +21,8 @@ class DriveRecipient(ClientValue):
21
21
 
22
22
  @staticmethod
23
23
  def from_email(value):
24
+ """
25
+ Creates Drive recipient from email address
26
+ :type value: str
27
+ """
24
28
  return DriveRecipient(email=value)
@@ -5,12 +5,14 @@ class FileSystemInfo(ClientValue):
5
5
  """The FileSystemInfo resource contains properties that are reported by the device's local file system for the
6
6
  local version of an item. """
7
7
 
8
- def __init__(self, created_date_time=None):
8
+ def __init__(self, created_datetime=None, last_accessed_datetime=None, last_modified_datetime=None):
9
9
  """
10
- :param str created_date_time: The UTC date and time the file was created on a client.
11
-
10
+ :param datetime.datetime created_datetime: The UTC date and time the file was created on a client.
11
+ :param datetime.datetime last_accessed_datetime: The UTC date and time the file was last accessed.
12
+ Available for the recent file list only.
13
+ :param datetime.datetime last_modified_datetime: The UTC date and time the file was last modified on a client.
12
14
  """
13
15
  super(FileSystemInfo, self).__init__()
14
- self.createdDateTime = created_date_time
15
- self.lastAccessedDateTime = None
16
- self.lastModifiedDateTime = None
16
+ self.createdDateTime = created_datetime
17
+ self.lastAccessedDateTime = last_accessed_datetime
18
+ self.lastModifiedDateTime = last_modified_datetime
@@ -1,5 +1,6 @@
1
1
  from office365.entity_collection import EntityCollection
2
2
  from office365.onedrive.lists.list import List
3
+ from office365.runtime.paths.item import ItemPath
3
4
  from office365.runtime.queries.create_entity import CreateEntityQuery
4
5
 
5
6
 
@@ -17,14 +18,19 @@ class ListCollection(EntityCollection):
17
18
  """
18
19
  return super(ListCollection, self).__getitem__(key)
19
20
 
20
- def add(self, creation_information):
21
+ def add(self, display_name, list_template="genericList"):
21
22
  """
22
- Creates a Drive list resource
23
+ Create a new list.
23
24
 
24
- :param Any creation_information:
25
+ :param str display_name: The displayable title of the list.
26
+ :param str list_template: The base list template used in creating the list
25
27
  """
26
- return_type = List(self.context)
28
+ return_type = List(self.context, ItemPath(self.resource_path))
27
29
  self.add_child(return_type)
28
- qry = CreateEntityQuery(self, creation_information, return_type)
30
+ payload = {
31
+ "displayName": display_name,
32
+ "list": {"template": list_template},
33
+ }
34
+ qry = CreateEntityQuery(self, payload, return_type)
29
35
  self.context.add_query(qry)
30
36
  return return_type
@@ -4,6 +4,7 @@ from office365.onedrive.columns.definition_collection import ColumnDefinitionCol
4
4
  from office365.onedrive.contenttypes.collection import ContentTypeCollection
5
5
  from office365.onedrive.listitems.list_item import ListItem
6
6
  from office365.onedrive.lists.info import ListInfo
7
+ from office365.onedrive.operations.rich_long_running import RichLongRunningOperation
7
8
  from office365.onedrive.sharepoint_ids import SharePointIds
8
9
  from office365.runtime.paths.resource_path import ResourcePath
9
10
  from office365.subscriptions.subscription import Subscription
@@ -17,7 +18,6 @@ class List(BaseItem):
17
18
  def display_name(self):
18
19
  """
19
20
  The displayable title of the list.
20
-
21
21
  :rtype: str or None
22
22
  """
23
23
  return self.properties.get("displayName", None)
@@ -42,9 +42,9 @@ class List(BaseItem):
42
42
  @property
43
43
  def columns(self):
44
44
  """The collection of columns under this site."""
45
- return self.properties.get('columns',
46
- ColumnDefinitionCollection(self.context,
47
- ResourcePath("columns", self.resource_path), self))
45
+ return self.properties.setdefault('columns',
46
+ ColumnDefinitionCollection(self.context,
47
+ ResourcePath("columns", self.resource_path), self))
48
48
 
49
49
  @property
50
50
  def content_types(self):
@@ -57,7 +57,15 @@ class List(BaseItem):
57
57
  def items(self):
58
58
  """All items contained in the list."""
59
59
  return self.properties.get('items',
60
- EntityCollection(self.context, ListItem, ResourcePath("items", self.resource_path)))
60
+ EntityCollection(self.context, ListItem,
61
+ ResourcePath("items", self.resource_path)))
62
+
63
+ @property
64
+ def operations(self):
65
+ """The collection of long-running operations on the list."""
66
+ return self.properties.get('operations',
67
+ EntityCollection(self.context, RichLongRunningOperation,
68
+ ResourcePath("operations", self.resource_path)))
61
69
 
62
70
  @property
63
71
  def subscriptions(self):
@@ -0,0 +1,13 @@
1
+ from office365.onedrive.operations.pending_content_update import PendingContentUpdate
2
+ from office365.runtime.client_value import ClientValue
3
+
4
+
5
+ class PendingOperations(ClientValue):
6
+ """Indicates that one or more operations that might affect the state of the driveItem are pending completion."""
7
+
8
+ def __init__(self, pending_content_update=PendingContentUpdate()):
9
+ """
10
+ :param str pending_content_update: A property that indicates that an operation that might update the binary
11
+ content of a file is pending completion.
12
+ """
13
+ self.pendingContentUpdate = pending_content_update
@@ -0,0 +1,5 @@
1
+ from office365.runtime.client_value import ClientValue
2
+
3
+
4
+ class PendingContentUpdate(ClientValue):
5
+ """Indicates that an operation that might affect the binary content of the driveItem is pending completion."""
@@ -6,7 +6,7 @@ from office365.runtime.queries.create_entity import CreateEntityQuery
6
6
 
7
7
 
8
8
  class PermissionCollection(EntityCollection):
9
- """Drive list's collection"""
9
+ """Permission's collection"""
10
10
 
11
11
  def __init__(self, context, resource_path=None):
12
12
  super(PermissionCollection, self).__init__(context, Permission, resource_path)
File without changes
@@ -0,0 +1,17 @@
1
+ from office365.runtime.client_value import ClientValue
2
+
3
+
4
+ class SensitivityLabelAssignment(ClientValue):
5
+ """Provides details about a sensitivity label assigned to a file in SharePoint or OneDrive for Business."""
6
+
7
+ def __init__(self, assignment_method=None, sensitivity_label_id=None, tenant_id=None):
8
+ """
9
+ :param str assignment_method: Indicates whether the label assignment is done automatically, as a standard,
10
+ or a privileged operation.
11
+ :param str sensitivity_label_id: The unique identifier for the sensitivity label assigned to the file.
12
+ : The unique identifier for the tenant that hosts the file when this label is applied.
13
+ :param str tenant_id: The unique identifier for the tenant that hosts the file when this label is applied.
14
+ """
15
+ self.assignmentMethod = assignment_method
16
+ self.sensitivityLabelId = sensitivity_label_id
17
+ self.tenantId = tenant_id
@@ -0,0 +1,4 @@
1
+ class SensitivityLabelAssignmentMethod:
2
+
3
+ standard = "standard"
4
+ """The assignment method for the label is standard."""
@@ -0,0 +1,13 @@
1
+ from office365.onedrive.sensitivitylabels.assignment import SensitivityLabelAssignment
2
+ from office365.runtime.client_value import ClientValue
3
+ from office365.runtime.client_value_collection import ClientValueCollection
4
+
5
+
6
+ class ExtractSensitivityLabelsResult(ClientValue):
7
+ """Represents the response format for the extractSensitivityLabels API."""
8
+
9
+ def __init__(self, labels=None):
10
+ """
11
+ :param list[SensitivityLabelAssignment] labels: List of sensitivity labels assigned to a file.
12
+ """
13
+ self.labels = ClientValueCollection(SensitivityLabelAssignment, labels)
@@ -20,6 +20,31 @@ class SharepointSettings(Entity):
20
20
  """Collection of file extensions not uploaded by the OneDrive sync app. """
21
21
  return self.properties.get("excludedFileExtensionsForSyncApp", StringCollection())
22
22
 
23
+ @property
24
+ def site_creation_default_managed_path(self):
25
+ """
26
+ The value of the team site managed path. This is the path under which new team sites will be created.
27
+ :rtype: str
28
+ """
29
+ return self.properties.get("siteCreationDefaultManagedPath", None)
30
+
31
+ @property
32
+ def site_creation_default_storage_limit_in_mb(self):
33
+ """
34
+ The default storage quota for a new site upon creation. Measured in megabytes (MB).
35
+ :rtype: int
36
+ """
37
+ return self.properties.get("siteCreationDefaultStorageLimitInMB", None)
38
+
39
+ @property
40
+ def tenant_default_timezone(self):
41
+ """
42
+ The default timezone of a tenant for newly created sites. For a list of possible values,
43
+ see SPRegionalSettings.TimeZones property.
44
+ :rtype: str
45
+ """
46
+ return self.properties.get("tenantDefaultTimezone", None)
47
+
23
48
  def get_property(self, name, default_value=None):
24
49
  if default_value is None:
25
50
  property_mapping = {
@@ -1,14 +1,18 @@
1
+ from office365.directory.extensions.extended_property import MultiValueLegacyExtendedProperty, \
2
+ SingleValueLegacyExtendedProperty
1
3
  from office365.entity import Entity
2
4
  from office365.entity_collection import EntityCollection
3
5
  from office365.outlook.calendar.dateTimeTimeZone import DateTimeTimeZone
4
6
  from office365.outlook.calendar.email_address import EmailAddress
5
7
  from office365.outlook.calendar.events.collection import EventCollection
6
- from office365.outlook.calendar.permission import CalendarPermission
8
+ from office365.outlook.calendar.permissions.collection import CalendarPermissionCollection
7
9
  from office365.outlook.calendar.schedule.information import ScheduleInformation
8
10
  from office365.runtime.client_result import ClientResult
9
11
  from office365.runtime.client_value_collection import ClientValueCollection
10
12
  from office365.runtime.paths.resource_path import ResourcePath
13
+ from office365.runtime.queries.function import FunctionQuery
11
14
  from office365.runtime.queries.service_operation import ServiceOperationQuery
15
+ from office365.runtime.types.collections import StringCollection
12
16
 
13
17
 
14
18
  class Calendar(Entity):
@@ -16,6 +20,17 @@ class Calendar(Entity):
16
20
  A calendar which is a container for events. It can be a calendar for a user, or the default calendar
17
21
  of a Microsoft 365 group.
18
22
  """
23
+
24
+ def allowed_calendar_sharing_roles(self, user):
25
+ """
26
+ :param str user: User identifier or principal name
27
+ """
28
+ params = {"user": user}
29
+ return_type = ClientResult(self.context, StringCollection())
30
+ qry = FunctionQuery(self, "allowedCalendarSharingRoles", params, return_type)
31
+ self.context.add_query(qry)
32
+ return return_type
33
+
19
34
  def get_schedule(self, schedules, start_time, end_time, availability_view_interval=30):
20
35
  """
21
36
  Get the free/busy availability information for a collection of users, distributions lists, or resources
@@ -39,24 +54,102 @@ class Calendar(Entity):
39
54
  self.context.add_query(qry)
40
55
  return return_type
41
56
 
57
+ @property
58
+ def allowed_online_meeting_providers(self):
59
+ """
60
+ Represent the online meeting service providers that can be used to create online meetings in this calendar.
61
+ Possible values are: unknown, skypeForBusiness, skypeForConsumer, teamsForBusiness.
62
+ """
63
+ return self.properties.get('allowedOnlineMeetingProviders', StringCollection())
64
+
42
65
  @property
43
66
  def can_edit(self):
44
67
  """
45
68
  true if the user can write to the calendar, false otherwise.
46
69
  This property is true for the user who created the calendar.
47
70
  This property is also true for a user who has been shared a calendar and granted write access.
48
-
49
71
  :rtype: bool or None
50
72
  """
51
73
  return self.properties.get('canEdit', None)
52
74
 
75
+ @property
76
+ def can_share(self):
77
+ """
78
+ true if the user has the permission to share the calendar, false otherwise.
79
+ Only the user who created the calendar can share it.
80
+ :rtype: bool or None
81
+ """
82
+ return self.properties.get('canShare', None)
83
+
84
+ @property
85
+ def can_view_private_items(self):
86
+ """
87
+ true if the user can read calendar items that have been marked private, false otherwise.
88
+ :rtype: bool or None
89
+ """
90
+ return self.properties.get('canViewPrivateItems', None)
91
+
92
+ @property
93
+ def change_key(self):
94
+ """
95
+ Identifies the version of the calendar object. Every time the calendar is changed, changeKey changes as well.
96
+ This allows Exchange to apply changes to the correct version of the object.
97
+ :rtype: str
98
+ """
99
+ return self.properties.get('changeKey', None)
100
+
101
+ @property
102
+ def color(self):
103
+ """
104
+ Specifies the color theme to distinguish the calendar from other calendars in a UI.
105
+ The property values are: auto, lightBlue, lightGreen, lightOrange, lightGray, lightYellow, lightTeal,
106
+ lightPink, lightBrown, lightRed, maxColor.
107
+ :rtype: str
108
+ """
109
+ return self.properties.get('color', None)
110
+
111
+ @property
112
+ def default_online_meeting_provider(self):
113
+ """
114
+ The default online meeting provider for meetings sent from this calendar.
115
+ Possible values are: unknown, skypeForBusiness, skypeForConsumer, teamsForBusiness.
116
+ :rtype: str
117
+ """
118
+ return self.properties.get('defaultOnlineMeetingProvider', None)
119
+
53
120
  @property
54
121
  def name(self):
55
122
  """
56
123
  The calendar name.
124
+ :rtype: str
57
125
  """
58
126
  return self.properties.get('name', None)
59
127
 
128
+ @property
129
+ def is_default_calendar(self):
130
+ """
131
+ true if this is the default calendar where new events are created by default, false otherwise.
132
+ :rtype: bool or None
133
+ """
134
+ return self.properties.get('isDefaultCalendar', None)
135
+
136
+ @property
137
+ def is_removable(self):
138
+ """
139
+ Indicates whether this user calendar can be deleted from the user mailbox.
140
+ :rtype: bool or None
141
+ """
142
+ return self.properties.get("isRemovable", None)
143
+
144
+ @property
145
+ def is_tallying_responses(self):
146
+ """
147
+ Indicates whether this user calendar supports tracking of meeting responses.
148
+ Only meeting invites sent from users' primary calendars support tracking of meeting responses.
149
+ :rtype: bool or None
150
+ """
151
+ return self.properties.get("isTallyingResponses", None)
152
+
60
153
  @property
61
154
  def owner(self):
62
155
  """If set, this represents the user who created or added the calendar.
@@ -82,14 +175,32 @@ class Calendar(Entity):
82
175
  def calendar_permissions(self):
83
176
  """The permissions of the users with whom the calendar is shared."""
84
177
  return self.properties.get('calendarPermissions',
85
- EntityCollection(self.context, CalendarPermission,
86
- ResourcePath("calendarPermissions", self.resource_path)))
178
+ CalendarPermissionCollection(self.context,
179
+ ResourcePath("calendarPermissions",
180
+ self.resource_path)))
181
+
182
+ @property
183
+ def multi_value_extended_properties(self):
184
+ """The collection of multi-value extended properties defined for the Calendar."""
185
+ return self.properties.get('multiValueExtendedProperties',
186
+ EntityCollection(self.context, MultiValueLegacyExtendedProperty,
187
+ ResourcePath("multiValueExtendedProperties", self.resource_path)))
188
+
189
+ @property
190
+ def single_value_extended_properties(self):
191
+ """The collection of single-value extended properties defined for the calendar. Read-only. Nullable."""
192
+ return self.properties.get('singleValueExtendedProperties',
193
+ EntityCollection(self.context, SingleValueLegacyExtendedProperty,
194
+ ResourcePath("singleValueExtendedProperties", self.resource_path)))
87
195
 
88
196
  def get_property(self, name, default_value=None):
89
197
  if default_value is None:
90
198
  property_mapping = {
199
+ "allowedOnlineMeetingProviders": self.allowed_online_meeting_providers,
91
200
  "calendarView": self.calendar_view,
92
- "calendarPermissions": self.calendar_permissions
201
+ "calendarPermissions": self.calendar_permissions,
202
+ "multiValueExtendedProperties": self.multi_value_extended_properties,
203
+ "singleValueExtendedProperties": self.single_value_extended_properties
93
204
  }
94
205
  default_value = property_mapping.get(name, None)
95
206
  return super(Calendar, self).get_property(name, default_value)
@@ -16,6 +16,9 @@ class DateTimeTimeZone(ClientValue):
16
16
  self.dateTime = datetime
17
17
  self.timeZone = timezone
18
18
 
19
+ def __repr__(self):
20
+ return "{0}, {1}".format(self.dateTime, self.timeZone)
21
+
19
22
  @staticmethod
20
23
  def parse(dt):
21
24
  """
@@ -5,6 +5,13 @@ class EmailAddress(ClientValue):
5
5
  """The name and email address of a contact or message recipient."""
6
6
 
7
7
  def __init__(self, address=None, name=None):
8
+ """
9
+ :param str address:
10
+ :param str name:
11
+ """
8
12
  super(EmailAddress, self).__init__()
9
13
  self.address = address
10
14
  self.name = name
15
+
16
+ def __repr__(self):
17
+ return "{0} <{1}>".format(self.name, self.address)