Office365-REST-Python-Client 2.4.2__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 (411) hide show
  1. {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/METADATA +65 -31
  2. {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/RECORD +401 -259
  3. office365/base_item.py +27 -5
  4. office365/booking/business.py +7 -0
  5. office365/booking/currency.py +5 -0
  6. office365/booking/solutions_root.py +32 -0
  7. office365/communications/calls/invitation_participant_info.py +17 -1
  8. office365/communications/calls/options.py +9 -0
  9. office365/communications/onlinemeetings/provider_type.py +3 -0
  10. office365/communications/presences/presence.py +14 -0
  11. office365/communications/presences/status_message.py +12 -0
  12. office365/directory/administrative_unit.py +22 -0
  13. office365/directory/applications/collection.py +2 -1
  14. office365/directory/applications/roles/assignment.py +45 -5
  15. office365/directory/applications/roles/assignment_collection.py +8 -0
  16. office365/directory/applications/roles/role.py +6 -1
  17. office365/directory/audit/signins/activity.py +31 -0
  18. office365/directory/audit/signins/location.py +17 -0
  19. office365/directory/audit/signins/signin.py +33 -0
  20. office365/directory/authentication/authentication.py +9 -0
  21. office365/directory/authentication/methods/details.py +25 -0
  22. office365/directory/authentication/methods/email.py +16 -0
  23. office365/directory/authentication/methods/root.py +27 -0
  24. office365/directory/certificates/authority.py +6 -1
  25. office365/directory/extensions/extended_property.py +8 -1
  26. office365/directory/extensions/extension.py +1 -1
  27. office365/directory/extensions/extension_property.py +0 -3
  28. office365/directory/extensions/open_type.py +8 -0
  29. office365/directory/groups/collection.py +2 -4
  30. office365/directory/groups/group.py +18 -4
  31. office365/directory/identities/governance.py +2 -0
  32. office365/directory/identities/object_identity.py +3 -3
  33. office365/directory/insights/resource_reference.py +15 -0
  34. office365/directory/insights/shared.py +36 -0
  35. office365/directory/insights/sharing_detail.py +11 -0
  36. office365/directory/insights/trending.py +8 -0
  37. office365/directory/insights/usage_details.py +16 -0
  38. office365/directory/insights/used.py +30 -0
  39. office365/directory/invitations/invitation.py +33 -1
  40. office365/directory/licenses/assigned_plan.py +19 -1
  41. office365/directory/licenses/assignment_state.py +5 -0
  42. office365/directory/licenses/service_plan_info.py +4 -0
  43. office365/directory/licenses/subscribed_sku.py +41 -0
  44. office365/directory/licenses/units_detail.py +11 -0
  45. office365/directory/object.py +3 -1
  46. office365/directory/object_collection.py +3 -4
  47. office365/directory/password_credential.py +5 -1
  48. office365/directory/permissions/email_identity.py +5 -0
  49. office365/directory/permissions/grants/condition_set.py +26 -0
  50. office365/directory/permissions/grants/resource_specific.py +21 -0
  51. office365/directory/policies/authentication_flows.py +9 -0
  52. office365/directory/policies/authentication_strength.py +10 -0
  53. office365/directory/policies/authorization.py +8 -0
  54. office365/directory/policies/cross_tenant_access.py +5 -0
  55. office365/directory/policies/root.py +35 -2
  56. office365/directory/protection/information.py +5 -0
  57. office365/directory/protection/risk_detection.py +11 -0
  58. office365/directory/protection/riskyusers/activity.py +5 -0
  59. office365/directory/protection/riskyusers/collection.py +32 -0
  60. office365/directory/protection/riskyusers/history_item.py +20 -0
  61. office365/directory/protection/riskyusers/risky_user.py +26 -0
  62. office365/directory/protection/root.py +31 -0
  63. office365/directory/rolemanagement/application.py +35 -0
  64. office365/directory/{roles → rolemanagement}/management.py +8 -1
  65. office365/directory/{roles → rolemanagement}/role.py +14 -0
  66. office365/directory/{roles → rolemanagement}/template.py +8 -0
  67. office365/directory/rolemanagement/unified_role_assignment.py +45 -0
  68. office365/directory/rolemanagement/unified_role_definition.py +6 -0
  69. office365/directory/security/alerts/alert.py +21 -0
  70. office365/directory/security/alerts/history_state.py +5 -0
  71. office365/directory/security/attacksimulations/automation.py +21 -0
  72. office365/directory/security/attacksimulations/automation_run.py +5 -0
  73. office365/directory/security/attacksimulations/repeat_offender.py +6 -0
  74. office365/directory/security/attacksimulations/root.py +26 -0
  75. office365/directory/security/attacksimulations/simulation.py +17 -0
  76. office365/directory/security/cases/__init__.py +0 -0
  77. office365/directory/security/cases/ediscovery.py +6 -0
  78. office365/directory/security/cases/root.py +22 -0
  79. office365/directory/security/incidents/incident.py +67 -0
  80. office365/directory/security/security.py +10 -1
  81. office365/directory/serviceprincipals/service_principal.py +89 -4
  82. office365/directory/synchronization/__init__.py +0 -0
  83. office365/directory/synchronization/job.py +16 -0
  84. office365/directory/synchronization/progress.py +5 -0
  85. office365/directory/synchronization/status.py +13 -0
  86. office365/directory/synchronization/synchronization.py +24 -0
  87. office365/directory/tenant_information.py +17 -0
  88. office365/directory/tenant_relationship.py +21 -0
  89. office365/directory/users/activities/activity.py +45 -1
  90. office365/directory/users/collection.py +8 -0
  91. office365/directory/users/password_profile.py +18 -2
  92. office365/directory/users/user.py +254 -29
  93. office365/entity.py +3 -3
  94. office365/graph_client.py +64 -12
  95. office365/intune/audit/actor.py +5 -0
  96. office365/intune/audit/event.py +21 -24
  97. office365/intune/audit/event_collection.py +26 -0
  98. office365/intune/audit/property.py +5 -0
  99. office365/intune/audit/resource.py +11 -0
  100. office365/intune/brand.py +6 -0
  101. office365/intune/devices/compliance/__init__.py +0 -0
  102. office365/intune/devices/compliance/policy.py +6 -0
  103. office365/intune/devices/compliance/policy_state.py +5 -0
  104. office365/intune/devices/data.py +5 -0
  105. office365/intune/devices/detail.py +10 -0
  106. office365/intune/devices/enrollment/__init__.py +0 -0
  107. office365/intune/devices/enrollment/configuration.py +25 -0
  108. office365/intune/devices/enrollment/configuration_assignment.py +5 -0
  109. office365/intune/devices/enrollment/limit_configuration.py +5 -0
  110. office365/intune/devices/managed.py +44 -3
  111. office365/intune/devices/management/__init__.py +0 -0
  112. office365/intune/devices/management/management.py +69 -0
  113. office365/intune/devices/management/reports/__init__.py +0 -0
  114. office365/intune/devices/management/reports/reports.py +5 -0
  115. office365/intune/devices/management/settings.py +18 -0
  116. office365/intune/organizations/branding.py +15 -0
  117. office365/intune/organizations/organization.py +14 -0
  118. office365/intune/printing/__init__.py +0 -0
  119. office365/intune/printing/base.py +11 -0
  120. office365/intune/printing/capabilities.py +5 -0
  121. office365/intune/printing/connectors/__init__.py +0 -0
  122. office365/intune/printing/connectors/connector.py +6 -0
  123. office365/intune/printing/operations/__init__.py +0 -0
  124. office365/intune/printing/print.py +24 -0
  125. office365/intune/printing/printer.py +6 -0
  126. office365/intune/printing/services/__init__.py +0 -0
  127. office365/intune/printing/services/endpoint.py +5 -0
  128. office365/intune/printing/services/service.py +17 -0
  129. office365/intune/printing/share.py +5 -0
  130. office365/intune/printing/shares/__init__.py +0 -0
  131. office365/intune/printing/taskdefinitions/__init__.py +0 -0
  132. office365/intune/provisioned_plan.py +5 -1
  133. office365/intune/servicecommunications/__init__.py +0 -0
  134. office365/intune/servicecommunications/announcement.py +39 -0
  135. office365/intune/servicecommunications/announcement_base.py +5 -0
  136. office365/intune/servicecommunications/health/__init__.py +0 -0
  137. office365/intune/servicecommunications/health/health.py +7 -0
  138. office365/intune/servicecommunications/issues/__init__.py +0 -0
  139. office365/intune/servicecommunications/issues/issue.py +29 -0
  140. office365/intune/servicecommunications/messages/__init__.py +0 -0
  141. office365/intune/servicecommunications/messages/update.py +10 -0
  142. office365/intune/termsandconditions/__init__.py +0 -0
  143. office365/intune/vpp_token.py +10 -0
  144. office365/onedrive/admin.py +16 -0
  145. office365/onedrive/columns/content_approval_status.py +5 -0
  146. office365/onedrive/columns/datetime.py +15 -0
  147. office365/onedrive/columns/default_value.py +4 -0
  148. office365/onedrive/columns/definition.py +49 -3
  149. office365/onedrive/columns/definition_collection.py +17 -6
  150. office365/onedrive/columns/lookup.py +5 -1
  151. office365/onedrive/columns/types.py +13 -0
  152. office365/onedrive/contenttypes/content_type.py +8 -0
  153. office365/onedrive/driveitems/audio.py +12 -1
  154. office365/onedrive/driveitems/driveItem.py +147 -69
  155. office365/onedrive/driveitems/image.py +8 -1
  156. office365/onedrive/driveitems/item_preview_info.py +20 -2
  157. office365/onedrive/driveitems/remote_item.py +19 -4
  158. office365/onedrive/drives/drive.py +7 -1
  159. office365/onedrive/drives/quota.py +18 -0
  160. office365/onedrive/drives/recipient.py +4 -0
  161. office365/onedrive/files/system_info.py +8 -6
  162. office365/onedrive/folders/folder.py +3 -3
  163. office365/onedrive/internal/paths/children.py +1 -4
  164. office365/onedrive/internal/paths/shared.py +7 -2
  165. office365/onedrive/lists/collection.py +12 -6
  166. office365/onedrive/lists/list.py +13 -5
  167. office365/onedrive/operations/long_running.py +7 -0
  168. office365/onedrive/operations/pending.py +13 -0
  169. office365/onedrive/operations/pending_content_update.py +5 -0
  170. office365/onedrive/permissions/collection.py +5 -6
  171. office365/onedrive/permissions/sharing_link.py +16 -1
  172. office365/onedrive/sensitivitylabels/__init__.py +0 -0
  173. office365/onedrive/sensitivitylabels/assignment.py +17 -0
  174. office365/onedrive/sensitivitylabels/assignment_method.py +4 -0
  175. office365/onedrive/sensitivitylabels/extract_result.py +13 -0
  176. office365/onedrive/sharepoint_settings.py +25 -0
  177. office365/onedrive/sites/sites_with_root.py +11 -1
  178. office365/onedrive/termstore/groups/collection.py +1 -1
  179. office365/onedrive/termstore/groups/group.py +1 -0
  180. office365/onedrive/termstore/sets/collection.py +1 -1
  181. office365/onenote/operations/operation.py +10 -1
  182. office365/onenote/resources/resource.py +1 -0
  183. office365/outlook/calendar/calendar.py +116 -6
  184. office365/outlook/calendar/dateTimeTimeZone.py +4 -0
  185. office365/outlook/calendar/email_address.py +7 -0
  186. office365/outlook/calendar/events/event.py +0 -4
  187. office365/outlook/calendar/events/reminder.py +22 -3
  188. office365/outlook/calendar/group.py +0 -2
  189. office365/outlook/calendar/location_constraint.py +16 -1
  190. office365/outlook/calendar/meetingtimes/activity_domain.py +10 -0
  191. office365/outlook/calendar/meetingtimes/suggestion.py +1 -1
  192. office365/outlook/calendar/meetingtimes/time_constraint.py +18 -0
  193. office365/outlook/calendar/permissions/__init__.py +0 -0
  194. office365/outlook/calendar/permissions/collection.py +24 -0
  195. office365/outlook/calendar/{permission.py → permissions/permission.py} +35 -2
  196. office365/outlook/calendar/place.py +7 -0
  197. office365/outlook/calendar/role_type.py +17 -0
  198. office365/outlook/calendar/schedule/information.py +5 -4
  199. office365/outlook/calendar/schedule/item.py +20 -1
  200. office365/outlook/calendar/sharing_message.py +2 -2
  201. office365/outlook/calendar/time_zone_base.py +3 -0
  202. office365/outlook/calendar/working_hours.py +17 -1
  203. office365/outlook/contacts/collection.py +39 -0
  204. office365/outlook/contacts/contact.py +21 -11
  205. office365/outlook/geo_coordinates.py +20 -0
  206. office365/outlook/item.py +5 -4
  207. office365/outlook/locale_info.py +3 -0
  208. office365/outlook/mail/automatic_replies_setting.py +14 -0
  209. office365/outlook/mail/folders/folder.py +52 -3
  210. office365/outlook/mail/folders/search.py +11 -0
  211. office365/outlook/mail/importance.py +1 -0
  212. office365/outlook/mail/item_body.py +3 -0
  213. office365/outlook/mail/location.py +27 -2
  214. office365/outlook/mail/location_constraint_item.py +5 -0
  215. office365/outlook/mail/mailbox_settings.py +13 -1
  216. office365/outlook/mail/messages/collection.py +7 -0
  217. office365/outlook/mail/messages/followup_flag.py +21 -0
  218. office365/outlook/mail/messages/internet_header.py +16 -0
  219. office365/outlook/mail/messages/message.py +184 -6
  220. office365/outlook/mail/messages/rules/__init__.py +0 -0
  221. office365/outlook/mail/messages/rules/actions.py +38 -0
  222. office365/outlook/mail/messages/rules/predicates.py +5 -0
  223. office365/outlook/mail/messages/rules/rule.py +32 -0
  224. office365/outlook/mail/patterned_recurrence.py +14 -1
  225. office365/outlook/mail/physical_address.py +5 -1
  226. office365/outlook/mail/recipient.py +3 -0
  227. office365/outlook/mail/recurrence_pattern.py +18 -1
  228. office365/outlook/mail/recurrence_range.py +16 -2
  229. office365/outlook/timezone_information.py +3 -0
  230. office365/reports/root.py +28 -1
  231. office365/reports/security/__init__.py +0 -0
  232. office365/reports/security/root.py +21 -0
  233. office365/reports/userregistration/__init__.py +0 -0
  234. office365/reports/userregistration/method_count.py +17 -0
  235. office365/reports/userregistration/method_summary.py +21 -0
  236. office365/runtime/auth/authentication_context.py +123 -25
  237. office365/runtime/auth/client_credential.py +2 -2
  238. office365/runtime/auth/providers/acs_token_provider.py +6 -3
  239. office365/runtime/auth/providers/saml_token_provider.py +10 -7
  240. office365/runtime/auth/token_response.py +3 -3
  241. office365/runtime/client_object_collection.py +12 -7
  242. office365/runtime/client_result.py +9 -0
  243. office365/runtime/client_runtime_context.py +10 -8
  244. office365/runtime/http/request_options.py +2 -1
  245. office365/runtime/odata/request.py +4 -4
  246. office365/runtime/paths/appid.py +2 -1
  247. office365/runtime/paths/entity.py +2 -2
  248. office365/{sharepoint/internal/paths/entity.py → runtime/paths/key.py} +5 -3
  249. office365/runtime/paths/resource_path.py +3 -0
  250. office365/runtime/types/event_handler.py +6 -0
  251. office365/search/external/__init__.py +0 -0
  252. office365/search/external/configuration.py +8 -0
  253. office365/search/external/connection.py +27 -0
  254. office365/{external → search/external}/external.py +1 -1
  255. office365/search/external/search_settings.py +5 -0
  256. office365/search/query.py +3 -1
  257. office365/search/request.py +3 -1
  258. office365/search/sharepoint_onedrive_options.py +3 -0
  259. office365/search/sort_property.py +9 -0
  260. office365/sharepoint/activities/client_request.py +4 -1
  261. office365/sharepoint/activities/logger.py +25 -0
  262. office365/sharepoint/activities/revision_info.py +9 -0
  263. office365/sharepoint/addtoonedrive/mount_point.py +25 -0
  264. office365/sharepoint/addtoonedrive/mounted_folder_info.py +5 -0
  265. office365/sharepoint/alerts/alert.py +31 -0
  266. office365/sharepoint/apps/license_collection.py +1 -2
  267. office365/sharepoint/changes/item.py +14 -0
  268. office365/sharepoint/client_context.py +91 -30
  269. office365/sharepoint/clientsidecomponent/component_context_info.py +7 -0
  270. office365/sharepoint/clientsidecomponent/identifier.py +3 -0
  271. office365/sharepoint/compliance/tag_info.py +17 -0
  272. office365/sharepoint/contenttypes/collection.py +6 -7
  273. office365/sharepoint/contenttypes/content_type.py +49 -1
  274. office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -6
  275. office365/sharepoint/features/known_list.py +2 -0
  276. office365/sharepoint/fields/collection.py +70 -39
  277. office365/sharepoint/fields/computed.py +5 -2
  278. office365/sharepoint/fields/creation_information.py +5 -4
  279. office365/sharepoint/fields/field.py +73 -15
  280. office365/sharepoint/fields/user.py +3 -3
  281. office365/sharepoint/files/checked_out_file.py +3 -2
  282. office365/sharepoint/files/file.py +9 -4
  283. office365/sharepoint/files/versions/version.py +7 -9
  284. office365/sharepoint/folders/collection.py +2 -2
  285. office365/sharepoint/folders/coloring.py +39 -0
  286. office365/sharepoint/folders/coloring_information.py +15 -0
  287. office365/sharepoint/folders/folder.py +21 -10
  288. office365/sharepoint/forms/customization.py +8 -0
  289. office365/sharepoint/listitems/listitem.py +29 -10
  290. office365/sharepoint/lists/bloom_filter.py +0 -1
  291. office365/sharepoint/lists/creation_information.py +18 -4
  292. office365/sharepoint/lists/list.py +203 -27
  293. office365/sharepoint/lists/render_data_parameters.py +21 -1
  294. office365/sharepoint/lists/template_type.py +10 -0
  295. office365/sharepoint/navigation/configured_metadata_items.py +25 -1
  296. office365/sharepoint/navigation/metadata_settings.py +6 -4
  297. office365/sharepoint/permissions/irm/file_settings.py +43 -0
  298. office365/sharepoint/permissions/securable_object.py +5 -6
  299. office365/sharepoint/portal/sites/manager.py +5 -6
  300. office365/sharepoint/portal/userprofiles/documents_shared_with_group.py +3 -0
  301. office365/sharepoint/publishing/base_custom_property.py +8 -0
  302. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +8 -0
  303. office365/sharepoint/publishing/pagecopywithassets/__init__.py +0 -0
  304. office365/sharepoint/publishing/pagecopywithassets/response.py +8 -0
  305. office365/sharepoint/publishing/pages/campaign_publication.py +7 -0
  306. office365/sharepoint/publishing/pages/collection.py +1 -1
  307. office365/sharepoint/publishing/pages/page.py +4 -1
  308. office365/sharepoint/publishing/pages/reposts/metadata.py +8 -0
  309. office365/sharepoint/publishing/personmagazine/person_magazine.py +4 -1
  310. office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +8 -1
  311. office365/sharepoint/search/query/auto_completion_match.py +3 -0
  312. office365/sharepoint/search/query/property_value.py +18 -0
  313. office365/sharepoint/search/request.py +16 -2
  314. office365/sharepoint/sharing/abilities.py +22 -0
  315. office365/sharepoint/sharing/direct_abilities.py +27 -0
  316. office365/sharepoint/sharing/link_abilities.py +9 -1
  317. office365/sharepoint/sharing/links/data.py +26 -1
  318. office365/sharepoint/sharing/links/info.py +1 -1
  319. office365/sharepoint/sharing/links/partial_success_response.py +5 -0
  320. office365/sharepoint/sharing/links/share_settings.py +24 -1
  321. office365/sharepoint/sharing/object_sharing_information.py +65 -2
  322. office365/sharepoint/sharing/object_sharing_information_user.py +9 -0
  323. office365/sharepoint/sharing/object_sharing_settings.py +17 -4
  324. office365/sharepoint/sharing/principal.py +10 -0
  325. office365/sharepoint/sharing/securable_object_extensions.py +1 -17
  326. office365/sharepoint/sharing/site_sharing_report_helper.py +2 -1
  327. office365/sharepoint/sharing/user_sharing_result.py +18 -8
  328. office365/sharepoint/sitehealth/result.py +10 -0
  329. office365/sharepoint/sites/language.py +11 -1
  330. office365/sharepoint/sites/language_collection.py +1 -0
  331. office365/sharepoint/sites/site.py +42 -7
  332. office365/sharepoint/taxonomy/create_xml_parameters.py +22 -15
  333. office365/sharepoint/taxonomy/field.py +10 -8
  334. office365/sharepoint/taxonomy/groups/collection.py +8 -1
  335. office365/sharepoint/taxonomy/groups/group.py +26 -0
  336. office365/sharepoint/taxonomy/sets/collection.py +15 -0
  337. office365/sharepoint/taxonomy/sets/name.py +23 -0
  338. office365/sharepoint/taxonomy/sets/set.py +16 -1
  339. office365/sharepoint/taxonomy/stores/store.py +0 -8
  340. office365/sharepoint/tenant/administration/audit/search_request_status.py +8 -0
  341. office365/sharepoint/tenant/administration/deny_add_and_customize_pages_status.py +3 -0
  342. office365/sharepoint/tenant/administration/hubsites/permission.py +10 -0
  343. office365/sharepoint/tenant/administration/sites/properties.py +12 -10
  344. office365/sharepoint/tenant/administration/tenant.py +2 -1
  345. office365/sharepoint/tenant/apps/information.py +3 -1
  346. office365/sharepoint/tenant/management/office365_tenant.py +14 -11
  347. office365/sharepoint/types/resource_path.py +3 -1
  348. office365/sharepoint/userprofiles/people_manager.py +0 -2
  349. office365/sharepoint/userprofiles/sharedwithme/document.py +16 -0
  350. office365/sharepoint/userprofiles/sharedwithme/document_user.py +12 -0
  351. office365/sharepoint/userprofiles/sharedwithme/item_collection.py +41 -0
  352. office365/sharepoint/userprofiles/sharedwithme/items.py +18 -1
  353. office365/sharepoint/viva/site_manager.py +14 -0
  354. office365/sharepoint/webhooks/subscription_collection.py +5 -6
  355. office365/sharepoint/webparts/definition.py +1 -1
  356. office365/sharepoint/webparts/webpart.py +18 -4
  357. office365/sharepoint/webs/context_web_information.py +2 -4
  358. office365/sharepoint/webs/web.py +31 -12
  359. office365/sharepoint/workflowservices/manager.py +0 -2
  360. office365/subscriptions/collection.py +42 -0
  361. office365/subscriptions/subscription.py +120 -2
  362. office365/teams/apps/catalog.py +23 -0
  363. office365/teams/associated_info.py +12 -0
  364. office365/teams/channels/channel.py +2 -3
  365. office365/teams/channels/collection.py +1 -1
  366. office365/teams/channels/iIdentity.py +5 -0
  367. office365/teams/chats/chat.py +12 -2
  368. office365/teams/chats/collection.py +1 -2
  369. office365/teams/chats/messages/__init__.py +0 -0
  370. office365/teams/chats/messages/info.py +14 -0
  371. office365/teams/chats/{message.py → messages/message.py} +18 -3
  372. office365/teams/info.py +20 -0
  373. office365/teams/members/aad_user_conversation.py +2 -2
  374. office365/teams/members/conversation_collection.py +3 -3
  375. office365/teams/schedule/change_request.py +4 -2
  376. office365/teams/schedule/change_tracked_entity.py +11 -2
  377. office365/teams/summary.py +15 -0
  378. office365/teams/tabs/configuration.py +12 -1
  379. office365/teams/tabs/tab.py +0 -1
  380. office365/teams/team.py +34 -1
  381. office365/teams/teamwork/__init__.py +0 -0
  382. office365/teams/teamwork/activity_topic.py +5 -0
  383. office365/teams/teamwork/tags/__init__.py +0 -0
  384. office365/teams/teamwork/tags/identity.py +6 -0
  385. office365/teams/teamwork/tags/member.py +5 -0
  386. office365/teams/teamwork/tags/tag.py +15 -0
  387. office365/{directory/security/cases_root.py → teams/viva/employee_experience_user.py} +1 -1
  388. office365/todo/attachments/session.py +34 -0
  389. office365/todo/linked_resource.py +10 -1
  390. office365/todo/tasks/task.py +4 -0
  391. office365/directory/identities/protection_root.py +0 -5
  392. office365/directory/rbac/application.py +0 -18
  393. office365/directory/rbac/unified_role_assignment.py +0 -8
  394. office365/external/connection.py +0 -5
  395. office365/intune/devices/management.py +0 -35
  396. office365/onedrive/internal/queries/download_content.py +0 -26
  397. office365/onedrive/internal/queries/upload_content.py +0 -23
  398. office365/outlook/mail/messages/message_rule.py +0 -15
  399. office365/runtime/auth/providers/oauth_token_provider.py +0 -25
  400. office365/teams/team_info.py +0 -6
  401. {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/LICENSE +0 -0
  402. {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/WHEEL +0 -0
  403. {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/top_level.txt +0 -0
  404. /office365/{directory/rbac → booking}/__init__.py +0 -0
  405. /office365/directory/{roles → protection}/__init__.py +0 -0
  406. /office365/{external → directory/protection/riskyusers}/__init__.py +0 -0
  407. /office365/{teams/messages → directory/rolemanagement}/__init__.py +0 -0
  408. /office365/outlook/calendar/{time_slot.py → meetingtimes/time_slot.py} +0 -0
  409. /office365/teams/chats/{message_attachment.py → messages/attachment.py} +0 -0
  410. /office365/teams/{member_settings.py → members/settings.py} +0 -0
  411. /office365/teams/{user_teamwork.py → teamwork/user.py} +0 -0
office365/base_item.py CHANGED
@@ -1,10 +1,12 @@
1
+ from datetime import datetime
1
2
  from office365.directory.permissions.identity_set import IdentitySet
2
3
  from office365.entity import Entity
3
4
  from office365.onedrive.listitems.item_reference import ItemReference
5
+ from office365.runtime.paths.resource_path import ResourcePath
4
6
 
5
7
 
6
8
  class BaseItem(Entity):
7
- """The baseItem resource is an abstract resource that contains a common set of properties shared among several
9
+ """The baseItem resource is an abstract resource that contains a auth set of properties shared among several
8
10
  other resources types """
9
11
 
10
12
  @property
@@ -17,20 +19,38 @@ class BaseItem(Entity):
17
19
  """Identity of the user, device, or application which created the item."""
18
20
  return self.properties.get('createdBy', IdentitySet())
19
21
 
22
+ @property
23
+ def created_by_user(self):
24
+ """
25
+ Identity of the user who created the item
26
+ """
27
+ from office365.directory.users.user import User
28
+ return self.properties.get('createdByUser',
29
+ User(self.context, ResourcePath("createdByUser", self.resource_path)))
30
+
20
31
  @property
21
32
  def last_modified_by(self):
22
33
  """Identity of the user, device, and application which last modified the item."""
23
34
  return self.properties.get('lastModifiedBy', IdentitySet())
24
35
 
36
+ @property
37
+ def last_modified_by_user(self):
38
+ """
39
+ Identity of the user who last modified the item.
40
+ """
41
+ from office365.directory.users.user import User
42
+ return self.properties.get('lastModifiedByUser',
43
+ User(self.context, ResourcePath("lastModifiedByUser", self.resource_path)))
44
+
25
45
  @property
26
46
  def created_datetime(self):
27
47
  """Gets date and time of item creation."""
28
- return self.properties.get('createdDateTime', None)
48
+ return self.properties.get('createdDateTime', datetime.min)
29
49
 
30
50
  @property
31
51
  def last_modified_datetime(self):
32
52
  """Gets date and time the item was last modified."""
33
- return self.properties.get('lastModifiedDateTime', None)
53
+ return self.properties.get('lastModifiedDateTime', datetime.min)
34
54
 
35
55
  @property
36
56
  def name(self):
@@ -50,7 +70,6 @@ class BaseItem(Entity):
50
70
  def description(self):
51
71
  """
52
72
  Provides a user-visible description of the item.
53
-
54
73
  :rtype: str or None
55
74
  """
56
75
  return self.properties.get('description', None)
@@ -63,7 +82,6 @@ class BaseItem(Entity):
63
82
  def web_url(self):
64
83
  """
65
84
  URL that displays the resource in the browser.
66
-
67
85
  :rtype: str or None
68
86
  """
69
87
  return self.properties.get('webUrl', None)
@@ -81,7 +99,11 @@ class BaseItem(Entity):
81
99
  if default_value is None:
82
100
  property_mapping = {
83
101
  "createdBy": self.created_by,
102
+ "createdByUser": self.created_by_user,
103
+ "createdDateTime": self.created_datetime,
104
+ "lastModifiedDateTime": self.last_modified_datetime,
84
105
  "lastModifiedBy": self.last_modified_by,
106
+ "lastModifiedByUser": self.last_modified_by_user,
85
107
  "parentReference": self.parent_reference
86
108
  }
87
109
  default_value = property_mapping.get(name, None)
@@ -0,0 +1,7 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class BookingBusiness(Entity):
5
+ """Represents a business in Microsoft Bookings. This is the top level object in the Microsoft Bookings API.
6
+ It contains business information and related business objects such as appointments, customers, services,
7
+ and staff members."""
@@ -0,0 +1,5 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class BookingCurrency(Entity):
5
+ """Represents a monetary currency supported by a bookingBusiness."""
@@ -0,0 +1,32 @@
1
+ from office365.booking.business import BookingBusiness
2
+ from office365.booking.currency import BookingCurrency
3
+ from office365.entity import Entity
4
+ from office365.entity_collection import EntityCollection
5
+ from office365.runtime.paths.resource_path import ResourcePath
6
+
7
+
8
+ class SolutionsRoot(Entity):
9
+ """"""
10
+
11
+ @property
12
+ def booking_businesses(self):
13
+ """ Get a collection of bookingBusiness objects that has been created for the tenant."""
14
+ return self.properties.get('bookingBusinesses',
15
+ EntityCollection(self.context, BookingBusiness,
16
+ ResourcePath("bookingBusinesses", self.resource_path)))
17
+
18
+ @property
19
+ def booking_currencies(self):
20
+ """Get a list of bookingCurrency objects available to a Microsoft Bookings business"""
21
+ return self.properties.get('bookingCurrencies',
22
+ EntityCollection(self.context, BookingCurrency,
23
+ ResourcePath("bookingCurrencies", self.resource_path)))
24
+
25
+ def get_property(self, name, default_value=None):
26
+ if default_value is None:
27
+ property_mapping = {
28
+ "bookingBusinesses": self.booking_businesses,
29
+ "bookingCurrencies": self.booking_currencies
30
+ }
31
+ default_value = property_mapping.get(name, None)
32
+ return super(SolutionsRoot, self).get_property(name, default_value)
@@ -1,6 +1,22 @@
1
+ from office365.directory.permissions.identity_set import IdentitySet
1
2
  from office365.runtime.client_value import ClientValue
2
3
 
3
4
 
4
5
  class InvitationParticipantInfo(ClientValue):
5
6
  """This resource is used to represent the entity that is being invited to a group call."""
6
- pass
7
+
8
+ def __init__(self, hidden=None, identity=IdentitySet(), participant_id=None,
9
+ remove_from_default_audio_routing_group=None, replaces_call_id=None):
10
+ """
11
+ :param bool hidden: Optional. Whether to hide the participant from the roster.
12
+ :param IdentitySet identity: The identitySet associated with this invitation.
13
+ :param str participant_id: Optional. The ID of the target participant.
14
+ :param bool remove_from_default_audio_routing_group: Optional. Whether to remove them from the main mixer.
15
+ :param str replaces_call_id: Optional. The call which the target identity is currently a part of.
16
+ For peer-to-peer case, the call will be dropped once the participant is added successfully.
17
+ """
18
+ self.hidden = hidden
19
+ self.identity = identity
20
+ self.participantId = participant_id
21
+ self.removeFromDefaultAudioRoutingGroup = remove_from_default_audio_routing_group
22
+ self.replacesCallId = replaces_call_id
@@ -3,3 +3,12 @@ from office365.runtime.client_value import ClientValue
3
3
 
4
4
  class CallOptions(ClientValue):
5
5
  """Represents an abstract base class that contains the optional features for a call."""
6
+
7
+ def __init__(self, hide_bot_after_escalation=None, is_content_sharing_notification_enabled=None):
8
+ """
9
+ :param bool hide_bot_after_escalation: Indicates whether to hide the app after the call is escalated.
10
+ :param bool is_content_sharing_notification_enabled: Indicates whether content sharing notifications should be
11
+ enabled for the call.
12
+ """
13
+ self.hideBotAfterEscalation = hide_bot_after_escalation
14
+ self.isContentSharingNotificationEnabled = is_content_sharing_notification_enabled
@@ -5,6 +5,9 @@ class OnlineMeetingProviderType:
5
5
  pass
6
6
 
7
7
  unknown = 0
8
+
8
9
  skypeForBusiness = 1
10
+
9
11
  skypeForConsumer = 2
12
+
10
13
  teamsForBusiness = 3
@@ -1,4 +1,6 @@
1
+ from office365.communications.presences.status_message import PresenceStatusMessage
1
2
  from office365.entity import Entity
3
+ from office365.outlook.mail.item_body import ItemBody
2
4
  from office365.runtime.queries.service_operation import ServiceOperationQuery
3
5
 
4
6
 
@@ -46,6 +48,18 @@ class Presence(Entity):
46
48
  self.context.add_query(qry)
47
49
  return self
48
50
 
51
+ def set_status_message(self, message):
52
+ """
53
+ Set a presence status message for a user. An optional expiration date and time can be supplied.
54
+ :param str message: Status message item.
55
+ """
56
+ payload = {
57
+ "statusMessage": PresenceStatusMessage(ItemBody(message))
58
+ }
59
+ qry = ServiceOperationQuery(self, "setStatusMessage", None, payload)
60
+ self.context.add_query(qry)
61
+ return self
62
+
49
63
  def set_user_preferred_presence(self, availability="Available", activity="Available", expiration_duration=None):
50
64
  """
51
65
  Set the preferred availability and activity status for a user. If the preferred presence of a user is set,
@@ -0,0 +1,12 @@
1
+ from office365.outlook.mail.item_body import ItemBody
2
+ from office365.runtime.client_value import ClientValue
3
+
4
+
5
+ class PresenceStatusMessage(ClientValue):
6
+ """Represents a presence status message related to the presence of a user in Microsoft Teams."""
7
+
8
+ def __init__(self, message=ItemBody()):
9
+ """
10
+ :param ItemBody message: Status message item.
11
+ """
12
+ self.message = message
@@ -1,4 +1,7 @@
1
+ from office365.directory.extensions.extension import Extension
1
2
  from office365.directory.object import DirectoryObject
3
+ from office365.entity_collection import EntityCollection
4
+ from office365.runtime.paths.resource_path import ResourcePath
2
5
 
3
6
 
4
7
  class AdministrativeUnit(DirectoryObject):
@@ -8,3 +11,22 @@ class AdministrativeUnit(DirectoryObject):
8
11
  the users, groups, and devices contained within or scoped to an administrative unit to a regional or
9
12
  departmental administrator. This resource is an open type that allows other properties to be passed in.
10
13
  """
14
+
15
+ @property
16
+ def members(self):
17
+ """
18
+ Users and groups that are members of this administrative unit
19
+ """
20
+ from office365.directory.object_collection import DirectoryObjectCollection
21
+ return self.properties.get('members',
22
+ DirectoryObjectCollection(self.context, ResourcePath("members", self.resource_path)))
23
+
24
+ @property
25
+ def extensions(self):
26
+ """
27
+ The collection of open extensions defined for this administrative unit.
28
+ """
29
+ return self.properties.get('extensions',
30
+ EntityCollection(self.context, Extension,
31
+ ResourcePath("extensions", self.resource_path)))
32
+
@@ -1,5 +1,6 @@
1
1
  from office365.delta_collection import DeltaCollection
2
2
  from office365.directory.applications.application import Application
3
+ from office365.runtime.paths.appid import AppIdPath
3
4
 
4
5
 
5
6
  class ApplicationCollection(DeltaCollection):
@@ -14,4 +15,4 @@ class ApplicationCollection(DeltaCollection):
14
15
  :param str app_id: Application client identifier
15
16
  :rtype: Application
16
17
  """
17
- return self.filter("appId eq '{0}'".format(app_id)).single()
18
+ return Application(self.context, AppIdPath(app_id, self.resource_path))
@@ -1,5 +1,6 @@
1
+ from datetime import datetime
2
+
1
3
  from office365.directory.object import DirectoryObject
2
- from office365.entity_collection import EntityCollection
3
4
 
4
5
 
5
6
  class AppRoleAssignment(DirectoryObject):
@@ -9,10 +10,49 @@ class AppRoleAssignment(DirectoryObject):
9
10
  An app role assignment is a relationship between the assigned principal (a user, a group, or a service principal),
10
11
  a resource application (the app's service principal) and an app role defined on the resource application.
11
12
  """
12
- pass
13
13
 
14
+ @property
15
+ def app_role_id(self):
16
+ """
17
+ The identifier (id) for the app role which is assigned to the principal.
18
+ This app role must be exposed in the appRoles property on
19
+ the resource application's service principal (resourceId). If the resource application has not declared
20
+ any app roles, a default app role ID of 00000000-0000-0000-0000-000000000000 can be specified to signal
21
+ that the principal is assigned to the resource app without any specific app roles. Required on create.
22
+ :rtype: str
23
+ """
24
+ return self.properties.get("appRoleId", None)
25
+
26
+ @property
27
+ def created_datetime(self):
28
+ """The time when the app role assignment was created."""
29
+ return self.properties.get('createdDateTime', datetime.min)
30
+
31
+ @property
32
+ def principal_display_name(self):
33
+ """The display name of the user, group, or service principal that was granted the app role assignment."""
34
+ return self.properties.get('principalDisplayName', None)
35
+
36
+ @property
37
+ def principal_id(self):
38
+ """The unique identifier (id) for the user, security group, or service principal being granted the app role.
39
+ Security groups with dynamic memberships are supported. Required on create."""
40
+ return self.properties.get('principalId', None)
41
+
42
+ @property
43
+ def principal_type(self):
44
+ """The type of the assigned principal. This can either be User, Group, or ServicePrincipal."""
45
+ return self.properties.get('principalType', None)
46
+
47
+ @property
48
+ def resource_display_name(self):
49
+ """The display name of the resource app's service principal to which the assignment is made."""
50
+ return self.properties.get('resourceDisplayName', None)
51
+
52
+ @property
53
+ def resource_id(self):
54
+ """The unique identifier (id) for the resource service principal for which the assignment is made.
55
+ Required on create. """
56
+ return self.properties.get('resourceId', None)
14
57
 
15
- class AppRoleAssignmentCollection(EntityCollection):
16
58
 
17
- def __init__(self, context, resource_path=None):
18
- super(AppRoleAssignmentCollection, self).__init__(context, AppRoleAssignment, resource_path)
@@ -0,0 +1,8 @@
1
+ from office365.directory.applications.roles.assignment import AppRoleAssignment
2
+ from office365.entity_collection import EntityCollection
3
+
4
+
5
+ class AppRoleAssignmentCollection(EntityCollection):
6
+
7
+ def __init__(self, context, resource_path=None):
8
+ super(AppRoleAssignmentCollection, self).__init__(context, AppRoleAssignment, resource_path)
@@ -8,7 +8,7 @@ class AppRole(ClientValue):
8
8
  or that can be used to assign an application to users or groups in a specified role.
9
9
  """
10
10
 
11
- def __init__(self, allowed_member_types=None):
11
+ def __init__(self, allowed_member_types=None, description=None, display_name=None, is_enabled=None, origin=None):
12
12
  """
13
13
  :param list[str] allowed_member_types: Specifies whether this app role can be assigned to users and groups
14
14
  (by setting to ["User"]), to other application's (by setting to ["Application"], or both (by setting to
@@ -17,3 +17,8 @@ class AppRole(ClientValue):
17
17
  on application entities.
18
18
  """
19
19
  self.allowedMemberTypes = StringCollection(allowed_member_types)
20
+ self.description = description
21
+ self.displayName = display_name
22
+ self.isEnabled = is_enabled
23
+ self.origin = origin
24
+
@@ -0,0 +1,31 @@
1
+ from office365.runtime.client_value import ClientValue
2
+
3
+
4
+ class SignInActivity(ClientValue):
5
+ """Provides the last interactive or non-interactive sign-in time for a specific user. Since signInActivity
6
+ describes a property of the user object, Azure AD stores sign in activity for your users for as long as the
7
+ user object exists."""
8
+
9
+ def __init__(self, last_non_interactive_sign_in_datetime=None, last_non_interactive_sign_in_request_id=None,
10
+ last_sign_in_datetime=None, last_sign_in_request_id=None):
11
+ """
12
+ :param datetime.datetime last_non_interactive_sign_in_datetime: The last non-interactive sign-in date for a
13
+ specific user. You can use this field to calculate the last time a client attempted to sign into the
14
+ directory on behalf of a user. Because some users may use clients to access tenant resources rather
15
+ than signing into your tenant directly, you can use the non-interactive sign-in date to along with
16
+ lastSignInDateTime to identify inactive users.
17
+ :param str last_non_interactive_sign_in_request_id: Request identifier of the last non-interactive sign-in
18
+ performed by this user.
19
+ :param datetime.datetime last_sign_in_datetime: The last interactive sign-in date and time for a specific user.
20
+ You can use this field to calculate the last time a user attempted to sign into the directory with an
21
+ interactive authentication method. This field can be used to build reports, such as inactive users.
22
+ The timestamp represents date and time information using ISO 8601 format and is always in UTC time.
23
+ For example, midnight UTC on Jan 1, 2014 is: '2014-01-01T00:00:00Z'. Azure AD maintains interactive
24
+ sign-ins going back to April 2020. For more information about using the value of this property,
25
+ see Manage inactive user accounts in Azure AD.
26
+ :param str last_sign_in_request_id: Request identifier of the last interactive sign-in performed by this user.
27
+ """
28
+ self.lastNonInteractiveSignInDateTime = last_non_interactive_sign_in_datetime
29
+ self.lastNonInteractiveSignInRequestId = last_non_interactive_sign_in_request_id
30
+ self.lastSignInDateTime = last_sign_in_datetime
31
+ self.lastSignInRequestId = last_sign_in_request_id
@@ -1,5 +1,22 @@
1
+ from office365.onedrive.driveitems.geo_coordinates import GeoCoordinates
1
2
  from office365.runtime.client_value import ClientValue
2
3
 
3
4
 
4
5
  class SignInLocation(ClientValue):
5
6
  """Provides the city, state and country/region from where the sign-in happened."""
7
+
8
+ def __init__(self, city=None, country_or_region=None, geo_coordinates=GeoCoordinates(), state=None):
9
+ """
10
+ :param str city: Provides the city where the sign-in originated. This is calculated using latitude/longitude
11
+ information from the sign-in activity.
12
+ :param str country_or_region: Provides the country code info (2 letter code) where the sign-in originated.
13
+ This is calculated using latitude/longitude information from the sign-in activity.
14
+ :param GeoCoordinates geo_coordinates: Provides the latitude, longitude and altitude where the sign-in
15
+ originated.
16
+ :param str state: Provides the State where the sign-in originated. This is calculated using latitude/longitude
17
+ information from the sign-in activity.
18
+ """
19
+ self.city = city
20
+ self.countryOrRegion = country_or_region
21
+ self.geoCoordinates = geo_coordinates
22
+ self.state = state
@@ -9,6 +9,31 @@ class SignIn(Entity):
9
9
  You must have an Azure AD Premium P1 or P2 license to download sign-in logs using the Microsoft Graph API.
10
10
  """
11
11
 
12
+ @property
13
+ def app_display_name(self):
14
+ """
15
+ App name displayed in the Azure Portal.
16
+ :rtype: str
17
+ """
18
+ return self.properties.get("appDisplayName", None)
19
+
20
+ @property
21
+ def app_id(self):
22
+ """
23
+ Unique GUID representing the app ID in the Azure Active Directory.
24
+ :rtype: str
25
+ """
26
+ return self.properties.get("appId", None)
27
+
28
+ @property
29
+ def client_app_used(self):
30
+ """
31
+ Identifies the client used for the sign-in activity. Modern authentication clients include Browser, modern
32
+ clients. Legacy authentication clients include Exchange ActiveSync, IMAP, MAPI, SMTP, POP, and other clients.
33
+ :rtype: str
34
+ """
35
+ return self.properties.get("clientAppUsed", None)
36
+
12
37
  @property
13
38
  def device_detail(self):
14
39
  """Device information from where the sign-in occurred; includes device ID, operating system, and browser.
@@ -47,3 +72,11 @@ class SignIn(Entity):
47
72
  :rtype: str or None
48
73
  """
49
74
  return self.properties.get("status", SignInStatus())
75
+
76
+ def get_property(self, name, default_value=None):
77
+ if default_value is None:
78
+ property_mapping = {
79
+ "deviceDetail": self.device_detail
80
+ }
81
+ default_value = property_mapping.get(name, None)
82
+ return super(SignIn, self).get_property(name, default_value)
@@ -10,6 +10,14 @@ class Authentication(Entity):
10
10
  for users.
11
11
  """
12
12
 
13
+ @property
14
+ def email_methods(self):
15
+ """The email address registered to a user for authentication."""
16
+ from office365.directory.authentication.methods.email import EmailAuthenticationMethod
17
+ return self.properties.get('emailMethods',
18
+ EntityCollection(self.context, EmailAuthenticationMethod,
19
+ ResourcePath("emailMethods", self.resource_path)))
20
+
13
21
  @property
14
22
  def fido2_methods(self):
15
23
  """Represents the FIDO2 security keys registered to a user for authentication."""
@@ -45,6 +53,7 @@ class Authentication(Entity):
45
53
  def get_property(self, name, default_value=None):
46
54
  if default_value is None:
47
55
  property_mapping = {
56
+ "emailMethods": self.email_methods,
48
57
  "fido2Methods": self.fido2_methods,
49
58
  "passwordMethods": self.password_methods,
50
59
  "phoneMethods": self.phone_methods
@@ -0,0 +1,25 @@
1
+ from office365.entity import Entity
2
+
3
+
4
+ class UserRegistrationDetails(Entity):
5
+ """Represents the state of a user's authentication methods, including which methods are registered and which
6
+ features the user is registered and capable of (such as multi-factor authentication, self-service password reset,
7
+ and passwordless authentication)."""
8
+
9
+ @property
10
+ def is_admin(self):
11
+ """
12
+ Indicates whether the user has an admin role in the tenant. This value can be used to check the authentication
13
+ methods that privileged accounts are registered for and capable of.
14
+ :rtype: bool
15
+ """
16
+ return self.properties.get("isAdmin", None)
17
+
18
+ @property
19
+ def is_mfa_registered(self):
20
+ """
21
+ Indicates whether the user has registered a strong authentication method for multi-factor authentication.
22
+ The method may not necessarily be allowed by the authentication methods policy.
23
+ :rtype: bool
24
+ """
25
+ return self.properties.get("isMfaRegistered", None)
@@ -0,0 +1,16 @@
1
+ from office365.directory.authentication.methods.method import AuthenticationMethod
2
+
3
+
4
+ class EmailAuthenticationMethod(AuthenticationMethod):
5
+ """
6
+ Represents an email address registered to a user. Email as an authentication method is available only for
7
+ self-service password reset (SSPR). Users may only have one email authentication method.
8
+ """
9
+
10
+ @property
11
+ def email_address(self):
12
+ """
13
+ The email address registered to this user.
14
+ :rtype: str
15
+ """
16
+ return self.properties.get("emailAddress", None)
@@ -0,0 +1,27 @@
1
+ from office365.directory.authentication.methods.details import UserRegistrationDetails
2
+ from office365.entity import Entity
3
+ from office365.entity_collection import EntityCollection
4
+ from office365.reports.userregistration.method_summary import UserRegistrationMethodSummary
5
+ from office365.runtime.client_result import ClientResult
6
+ from office365.runtime.paths.resource_path import ResourcePath
7
+ from office365.runtime.queries.function import FunctionQuery
8
+
9
+
10
+ class AuthenticationMethodsRoot(Entity):
11
+ """Container for navigation properties for Azure AD authentication methods resources."""
12
+
13
+ def users_registered_by_method(self):
14
+ """Get the number of users registered for each authentication method."""
15
+ return_type = ClientResult(self.context, UserRegistrationMethodSummary())
16
+ qry = FunctionQuery(self, "usersRegisteredByMethod", None, return_type)
17
+ self.context.add_query(qry)
18
+ return return_type
19
+
20
+ @property
21
+ def user_registration_details(self):
22
+ """Represents the state of a user's authentication methods, including which methods are registered and which
23
+ features the user is registered and capable of (such as multi-factor authentication, self-service password
24
+ reset, and passwordless authentication)."""
25
+ return self.properties.get('userRegistrationDetails',
26
+ EntityCollection(self.context, UserRegistrationDetails,
27
+ ResourcePath("userRegistrationDetails", self.resource_path)))
@@ -4,14 +4,19 @@ from office365.runtime.client_value import ClientValue
4
4
  class CertificateAuthority(ClientValue):
5
5
  """Represents a certificate authority."""
6
6
 
7
- def __init__(self, certificate=None, certificate_revocation_list_url=None, is_root_authority=None):
7
+ def __init__(self, certificate=None, certificate_revocation_list_url=None, is_root_authority=None,
8
+ issuer=None, issuer_ski=None):
8
9
  """
9
10
  :param str certificate: The base64 encoded string representing the public certificate.
10
11
  :param str certificate_revocation_list_url: The URL of the certificate revocation list.
11
12
  :param str is_root_authority: Required. true if the trusted certificate is a root authority, false if the
12
13
  trusted certificate is an intermediate authority.
14
+ :param str issuer: The issuer of the certificate, calculated from the certificate value
15
+ :param str issuer_ski: The subject key identifier of the certificate, calculated from the certificate value.
13
16
  """
14
17
  super(CertificateAuthority, self).__init__()
15
18
  self.certificate = certificate
16
19
  self.certificateRevocationListUrl = certificate_revocation_list_url
17
20
  self.isRootAuthority = is_root_authority
21
+ self.issuer = issuer
22
+ self.issuerSki = issuer_ski
@@ -4,7 +4,14 @@ from office365.runtime.types.collections import StringCollection
4
4
 
5
5
  class SingleValueLegacyExtendedProperty(Entity):
6
6
  """An extended property that contains a single value."""
7
- pass
7
+
8
+ @property
9
+ def value(self):
10
+ """
11
+ A property value.
12
+ :rtype: str
13
+ """
14
+ return self.properties.get("value", None)
8
15
 
9
16
 
10
17
  class MultiValueLegacyExtendedProperty(Entity):
@@ -3,4 +3,4 @@ from office365.entity import Entity
3
3
 
4
4
  class Extension(Entity):
5
5
  """An abstract type to support the OData v4 open type openTypeExtension."""
6
- pass
6
+
@@ -15,7 +15,6 @@ class ExtensionProperty(DirectoryObject):
15
15
  def name(self):
16
16
  """
17
17
  Name of the extension property.
18
-
19
18
  :rtype: str
20
19
  """
21
20
  return self.properties.get("name", None)
@@ -24,7 +23,6 @@ class ExtensionProperty(DirectoryObject):
24
23
  def app_display_name(self):
25
24
  """
26
25
  Display name of the application object on which this extension property is defined. Read-only.
27
-
28
26
  :rtype: str
29
27
  """
30
28
  return self.properties.get("appDisplayName", None)
@@ -39,7 +37,6 @@ class ExtensionProperty(DirectoryObject):
39
37
  Integer - 32-bit value.
40
38
  LargeInteger - 64-bit value.
41
39
  String - 256 characters maximum
42
-
43
40
  :rtype: str
44
41
  """
45
42
  return self.properties.get("dataType", None)
@@ -7,3 +7,11 @@ class OpenTypeExtension(Extension):
7
7
  an extensibility option that provides an easy way to directly add untyped properties to a resource
8
8
  in Microsoft Graph.
9
9
  """
10
+
11
+ @property
12
+ def extension_name(self):
13
+ """
14
+ A unique text identifier for an open type data extension. Optional.
15
+ :rtype: str
16
+ """
17
+ return self.properties.get("extensionName", None)
@@ -31,9 +31,7 @@ class GroupCollection(DeltaCollection):
31
31
  params.securityEnabled = False
32
32
  params.mailEnabled = True
33
33
  params.groupTypes = ["Unified"]
34
- return_type = self.context.groups.add(params)
35
34
 
36
- def _after_group_created():
35
+ def _after_group_created(return_type):
37
36
  return_type.add_team()
38
- self.context.after_query_execute(_after_group_created)
39
- return return_type
37
+ return self.context.groups.add(params).after_execute(_after_group_created)