Office365-REST-Python-Client 3.0.0__py3-none-any.whl → 3.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1199) hide show
  1. office365/admin/baseline_parameter.py +15 -0
  2. office365/admin/baseline_resource.py +17 -0
  3. office365/admin/drift_status.py +13 -0
  4. office365/admin/exchange/exchange_message_trace_status.py +18 -0
  5. office365/admin/snapshot_job_status.py +16 -0
  6. office365/backuprestore/artifact_query.py +16 -0
  7. office365/backuprestore/notification_events_type.py +13 -0
  8. office365/backuprestore/restorejobtype.py +1 -0
  9. office365/backuprestore/restorepoints/search_response.py +21 -0
  10. office365/backuprestore/restorepoints/search_result.py +14 -0
  11. office365/backuprestore/restoresessions/artifact_count.py +17 -0
  12. office365/backuprestore/restoresessions/browsable_resource_type.py +15 -0
  13. office365/backuprestore/restoresessions/browse_query_order.py +15 -0
  14. office365/backuprestore/restoresessions/browse_query_response_item.py +20 -0
  15. office365/backuprestore/restoresessions/browse_query_response_item_type.py +16 -0
  16. office365/backuprestore/restoresessions/browse_session_status.py +14 -0
  17. office365/backuprestore/restoresessions/browser_shared_cookie_history.py +24 -0
  18. office365/backuprestore/service_status.py +28 -1
  19. office365/backuprestore/time_period.py +16 -0
  20. office365/booking/assigned_place_mode.py +15 -0
  21. office365/booking/business/import_building_map_setting.py +14 -0
  22. office365/booking/chedulingpolicy.py +4 -2
  23. office365/booking/customers/information.py +4 -2
  24. office365/booking/drop_in_place_mode.py +10 -0
  25. office365/booking/mailbox_details.py +15 -0
  26. office365/booking/place_mode.py +10 -0
  27. office365/booking/place_service_plan_info.py +14 -0
  28. office365/booking/reservable_place_mode.py +10 -0
  29. office365/booking/unavailable_place_mode.py +14 -0
  30. office365/communications/adhoc_call.py +31 -0
  31. office365/communications/broadcastmeetingaudience.py +9 -1
  32. office365/communications/callrecords/audio_codec.py +33 -0
  33. office365/communications/callrecords/media_stream_direction.py +12 -0
  34. office365/communications/callrecords/modality.py +0 -1
  35. office365/communications/callrecords/network_connection_type.py +16 -0
  36. office365/communications/callrecords/network_transport_protocol.py +14 -0
  37. office365/communications/callrecords/product_family.py +16 -0
  38. office365/communications/callrecords/pstn_call_duration_source.py +12 -0
  39. office365/communications/callrecords/service_role.py +32 -0
  40. office365/communications/callrecords/user_feedback_rating.py +17 -0
  41. office365/communications/callrecords/video_codec.py +22 -0
  42. office365/communications/cloud_communications.py +3 -6
  43. office365/communications/onlinemeetings/attendee_notification_info.py +15 -0
  44. office365/communications/onlinemeetings/base.py +152 -1
  45. office365/communications/onlinemeetings/broadcast_settings.py +4 -0
  46. office365/communications/onlinemeetings/lobby_bypass_settings.py +16 -0
  47. office365/communications/onlinemeetings/online_meeting.py +48 -23
  48. office365/communications/onlinemeetings/online_meeting_info.py +22 -0
  49. office365/communications/onlinemeetings/online_meeting_type.py +16 -0
  50. office365/communications/onlinemeetings/participants.py +5 -3
  51. office365/communications/onlinemeetings/watermark_protection_values.py +15 -0
  52. office365/communications/presences/presence.py +15 -5
  53. office365/communications/presences/work_location_source.py +15 -0
  54. office365/communications/presences/work_location_type.py +15 -0
  55. office365/communications/virtualevents/communications_identity_set.py +23 -0
  56. office365/copilot/ai_agent_info.py +14 -0
  57. office365/copilot/ai_interaction_entity.py +16 -0
  58. office365/copilot/ai_interaction_plugin.py +10 -0
  59. office365/copilot/package_access_entity.py +14 -0
  60. office365/copilot/package_element.py +16 -0
  61. office365/copilot/package_element_detail.py +19 -0
  62. office365/copilot/retrieval_data_source.py +14 -0
  63. office365/copilot/retrieval_entity_type.py +17 -0
  64. office365/count_collection.py +1 -1
  65. office365/delta_collection.py +41 -2
  66. office365/directory/applications/all_allowed_scopes.py +10 -0
  67. office365/directory/applications/custom_security_attribute_exemption.py +18 -0
  68. office365/directory/applications/custom_security_attribute_string_value_exemption.py +14 -0
  69. office365/directory/applications/enumerated_scopes.py +15 -0
  70. office365/directory/applications/identifier_uri_restriction.py +22 -0
  71. office365/directory/applications/implicitgrantsettings.py +8 -1
  72. office365/directory/applications/inheritable_scopes.py +15 -0
  73. office365/directory/applications/key_credential_configuration.py +22 -0
  74. office365/directory/applications/no_scopes.py +10 -0
  75. office365/directory/applications/optional_claim.py +14 -1
  76. office365/directory/applications/password_credential_configuration.py +22 -0
  77. office365/directory/applications/preauthorized.py +11 -1
  78. office365/directory/applications/redirecturisettings.py +8 -1
  79. office365/directory/applications/resource_access.py +4 -0
  80. office365/directory/applications/template.py +63 -3
  81. office365/directory/attribute_rule_members.py +15 -0
  82. office365/directory/audit/directory.py +9 -0
  83. office365/directory/audit/log_root.py +15 -15
  84. office365/directory/audit/logs/recordtype.py +476 -1
  85. office365/directory/audit/logs/usertype.py +16 -1
  86. office365/directory/audit/provisioning/object_summary.py +67 -3
  87. office365/directory/audit/signins/authentication_app_device_details.py +17 -0
  88. office365/directory/audit/signins/governance_insight.py +17 -0
  89. office365/directory/audit/signins/membership_outlier_insight.py +55 -0
  90. office365/directory/audit/signins/signin.py +78 -8
  91. office365/directory/authentication/attributecollection/external_users_self_service_sign_up.py +20 -0
  92. office365/directory/authentication/attributecollection/handler.py +10 -0
  93. office365/directory/authentication/attributecollection/method_load_start_handler.py +10 -0
  94. office365/directory/authentication/attributecollection/start_custom_extension_handler.py +17 -0
  95. office365/directory/authentication/attributecollection/start_handler.py +10 -0
  96. office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +17 -0
  97. office365/directory/authentication/attributecollection/submit_handler.py +10 -0
  98. office365/directory/authentication/authentication.py +13 -36
  99. office365/directory/authentication/error_correction_level.py +14 -0
  100. office365/directory/authentication/fraud_protection_configuration.py +10 -0
  101. office365/directory/authentication/fraud_protection_provider_configuration.py +12 -0
  102. office365/directory/authentication/generic_error.py +8 -1
  103. office365/directory/authentication/methods/configuration.py +17 -0
  104. office365/directory/authentication/methods/details.py +36 -0
  105. office365/directory/authentication/methods/mode_detail.py +17 -0
  106. office365/directory/authentication/methods/passkey_type.py +13 -0
  107. office365/directory/authentication/methods/root.py +8 -12
  108. office365/directory/authentication/methods/target.py +17 -0
  109. office365/directory/authentication/oidc_address_inbound_claims.py +18 -0
  110. office365/directory/authentication/oidc_client_authentication.py +10 -0
  111. office365/directory/authentication/oidc_client_secret_authentication.py +14 -0
  112. office365/directory/authentication/oidc_inbound_claim_mapping_override.py +23 -0
  113. office365/directory/authentication/oidc_private_jwt_key_client_authentication.py +10 -0
  114. office365/directory/authentication/signing_certificate_update_status.py +16 -0
  115. office365/directory/authentication/strength/root.py +39 -0
  116. office365/directory/authentication/strength/usage.py +4 -0
  117. office365/directory/certificates/authority.py +5 -0
  118. office365/directory/certificates/pkcs12_certificate.py +15 -0
  119. office365/directory/certificates/self_signed.py +4 -0
  120. office365/directory/certificates/x509/issuer_hints_configuration.py +2 -1
  121. office365/directory/connected_organization_members.py +15 -0
  122. office365/directory/connection_info.py +14 -0
  123. office365/directory/domains/state.py +13 -1
  124. office365/directory/domains/verified.py +14 -4
  125. office365/directory/extensions/custom/http_request_endpoint.py +16 -0
  126. office365/directory/groups/access_type.py +15 -0
  127. office365/directory/groups/group_members.py +15 -0
  128. office365/directory/groups/setting_template_value.py +17 -0
  129. office365/directory/identities/application_context.py +15 -0
  130. office365/directory/identities/application_enforced_restrictions_session_control.py +10 -0
  131. office365/directory/identities/auth_context.py +14 -0
  132. office365/directory/identities/authentication_flow.py +15 -0
  133. office365/directory/identities/conditional_access_root.py +35 -3
  134. office365/directory/identities/conditional_access_session_control.py +14 -0
  135. office365/directory/identities/ip_range.py +10 -0
  136. office365/directory/identities/on_fraud_protection_load_start_external_users_auth_handler.py +15 -0
  137. office365/directory/identities/on_interactive_auth_flow_start_external_users_self_service_sign_up.py +14 -0
  138. office365/directory/identities/on_interactive_auth_flow_start_handler.py +10 -0
  139. office365/directory/identities/on_otp_send_custom_extension_handler.py +17 -0
  140. office365/directory/identities/on_otp_send_handler.py +10 -0
  141. office365/directory/identities/on_password_submit_handler.py +10 -0
  142. office365/directory/identities/providers/on_authentication_method_load_start_external_users_self_service_sign_up.py +16 -0
  143. office365/directory/identities/providers/on_fraud_protection_load_start_handler.py +10 -0
  144. office365/directory/identities/providers/verified_id_profile_state.py +13 -0
  145. office365/directory/identities/providers/verified_id_usage_configuration_purpose.py +14 -0
  146. office365/directory/identities/riskPrevention/web_application_firewall_dns_configuration.py +21 -0
  147. office365/directory/identities/riskPrevention/web_application_firewall_verification_result.py +23 -0
  148. office365/directory/identities/riskPrevention/web_application_firewall_verified_details.py +8 -1
  149. office365/directory/identities/sign_in_context.py +10 -0
  150. office365/directory/identities/userflows/user_attribute_values_item.py +16 -0
  151. office365/directory/identities/userflows/user_flow_api_connector_configuration.py +16 -0
  152. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +12 -0
  153. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_stats.py +15 -0
  154. office365/directory/identitygovernance/accessreview/disable_and_delete_user_apply_action.py +10 -0
  155. office365/directory/identitygovernance/accessreview/error.py +10 -0
  156. office365/directory/identitygovernance/accessreview/history/definition.py +3 -3
  157. office365/directory/identitygovernance/accessreview/history_schedule_settings.py +16 -0
  158. office365/directory/identitygovernance/accessreview/inactive_users_query_scope.py +15 -0
  159. office365/directory/identitygovernance/accessreview/instance.py +2 -2
  160. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_assignment_policy_resource.py +15 -0
  161. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_resource.py +15 -0
  162. office365/directory/identitygovernance/accessreview/instance_decision_item_azure_role_resource.py +17 -0
  163. office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +16 -0
  164. office365/directory/identitygovernance/accessreview/instance_decision_item_service_principal_resource.py +16 -0
  165. office365/directory/identitygovernance/accessreview/notification_recipient_item.py +20 -0
  166. office365/directory/identitygovernance/accessreview/notification_recipient_query_scope.py +16 -0
  167. office365/directory/identitygovernance/accessreview/notification_recipients_type.py +16 -0
  168. office365/directory/identitygovernance/accessreview/notify_members.py +14 -0
  169. office365/directory/identitygovernance/accessreview/principal_resource_memberships_scope.py +20 -0
  170. office365/directory/identitygovernance/accessreview/principal_scope.py +12 -0
  171. office365/directory/identitygovernance/accessreview/query_scope.py +16 -0
  172. office365/directory/identitygovernance/accessreview/recommendation_insight_setting.py +10 -0
  173. office365/directory/identitygovernance/accessreview/remove_access_apply_action.py +10 -0
  174. office365/directory/identitygovernance/accessreview/resource_scope.py +15 -0
  175. office365/directory/identitygovernance/accessreview/reviewer_scope.py +17 -0
  176. office365/directory/identitygovernance/accessreview/schedule/settings.py +33 -1
  177. office365/directory/identitygovernance/accessreview/stage.py +1 -1
  178. office365/directory/identitygovernance/accessreview/stage_settings.py +33 -0
  179. office365/directory/identitygovernance/accessreview/target_owners.py +17 -0
  180. office365/directory/identitygovernance/activate_processing_result_scope.py +3 -0
  181. office365/directory/identitygovernance/activate_run_scope.py +2 -0
  182. office365/directory/identitygovernance/appconsent/request_scope.py +8 -1
  183. office365/directory/identitygovernance/attribute_set_entry.py +15 -0
  184. office365/directory/identitygovernance/awaited_workflow_processing_result.py +17 -0
  185. office365/directory/identitygovernance/cancel_runs_scope.py +16 -0
  186. office365/directory/identitygovernance/cancel_scope.py +10 -0
  187. office365/directory/identitygovernance/content_base.py +10 -0
  188. office365/directory/identitygovernance/content_category.py +24 -0
  189. office365/directory/identitygovernance/count_based_quarantine_condition.py +14 -0
  190. office365/directory/identitygovernance/custom_task_extension_callout_data.py +4 -0
  191. office365/directory/identitygovernance/custom_task_extension_response_data.py +21 -0
  192. office365/directory/identitygovernance/directory_object_workflow_subject.py +15 -0
  193. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer.py +16 -0
  194. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_choice.py +22 -0
  195. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_string.py +14 -0
  196. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approval_stage.py +36 -0
  197. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approver_information_visibility.py +14 -0
  198. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_approval_settings.py +23 -0
  199. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy_scope.py +17 -0
  200. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_callback_data.py +20 -0
  201. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_parameters.py +14 -0
  202. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_requirements.py +25 -0
  203. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_requestor_settings.py +25 -0
  204. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_review_settings.py +29 -0
  205. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentfilterbycurrentuseroptions.py +2 -0
  206. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentrequestfilterbycurrentuseroptions.py +4 -0
  207. office365/directory/identitygovernance/entitlementmanagement/accesspackage/automatic_request_settings.py +17 -0
  208. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_status.py +14 -0
  209. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_extension_callout_instance.py +21 -0
  210. office365/directory/identitygovernance/entitlementmanagement/accesspackage/dynamic_approval_stage.py +10 -0
  211. office365/directory/identitygovernance/entitlementmanagement/accesspackage/expiration_pattern.py +20 -0
  212. office365/directory/identitygovernance/entitlementmanagement/accesspackage/localized_text.py +15 -0
  213. office365/directory/identitygovernance/entitlementmanagement/accesspackage/notification_settings.py +14 -0
  214. office365/directory/identitygovernance/entitlementmanagement/accesspackage/request_approval_stage_callback_configuration.py +10 -0
  215. office365/directory/identitygovernance/entitlementmanagement/accesspackage/requesttype.py +1 -0
  216. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute.py +26 -0
  217. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_destination.py +10 -0
  218. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_question.py +15 -0
  219. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_source.py +10 -0
  220. office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject_lifecycle.py +14 -0
  221. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_filter_by_current_user_options.py +14 -0
  222. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_reason.py +10 -0
  223. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_based.py +17 -0
  224. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_insight_level.py +14 -0
  225. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_self_assignment_history_based.py +16 -0
  226. office365/directory/identitygovernance/entitlementmanagement/accesspackage/user_directory_attribute_store.py +10 -0
  227. office365/directory/identitygovernance/entitlementmanagement/assignment_request_approval_stage_callback_data.py +17 -0
  228. office365/directory/identitygovernance/entitlementmanagement/azure_active_directory_tenant.py +15 -0
  229. office365/directory/identitygovernance/entitlementmanagement/domain_identity_source.py +15 -0
  230. office365/directory/identitygovernance/entitlementmanagement/fallback_to_microsoft_provider_on_error.py +12 -0
  231. office365/directory/identitygovernance/entitlementmanagement/identity_source.py +10 -0
  232. office365/directory/identitygovernance/entitlementmanagement/schedule.py +21 -0
  233. office365/directory/identitygovernance/entitlementmanagement/social_identity_source.py +18 -0
  234. office365/directory/identitygovernance/guest_sponsor_trigger.py +14 -0
  235. office365/directory/identitygovernance/percentage_based_quarantine_condition.py +14 -0
  236. office365/directory/identitygovernance/preview_failed_task.py +17 -0
  237. office365/directory/identitygovernance/process_content_metadata_base.py +26 -0
  238. office365/directory/identitygovernance/provisioning_attribute_mapping.py +10 -0
  239. office365/directory/identitygovernance/provisioning_object_workflow_subject.py +19 -0
  240. office365/directory/identitygovernance/quarantine_condition.py +10 -0
  241. office365/directory/identitygovernance/quarantine_configuration.py +20 -0
  242. office365/directory/identitygovernance/quarantine_details.py +18 -0
  243. office365/directory/identitygovernance/resource_access_detail.py +23 -0
  244. office365/directory/identitygovernance/subject_summary.py +18 -0
  245. office365/directory/identitygovernance/termsofuse/agreement_file_data.py +14 -0
  246. office365/directory/identitygovernance/termsofuse/terms_expiration.py +16 -0
  247. office365/directory/identitygovernance/text_content.py +14 -0
  248. office365/directory/identitygovernance/workflow.py +23 -0
  249. office365/directory/identitygovernance/workflow_setting.py +15 -0
  250. office365/directory/identitygovernance/workflow_subject.py +10 -0
  251. office365/directory/insights/office_graph.py +7 -6
  252. office365/directory/invitations/invitation.py +45 -2
  253. office365/directory/licenses/service_plan_info.py +4 -0
  254. office365/directory/licenses/units_detail.py +4 -0
  255. office365/directory/objects/collection.py +34 -8
  256. office365/directory/objects/service_provisioning_xml_error.py +14 -0
  257. office365/directory/permissions/comment_action.py +18 -0
  258. office365/directory/permissions/create_action.py +10 -0
  259. office365/directory/permissions/default_user_role.py +16 -1
  260. office365/directory/permissions/delete_action.py +15 -0
  261. office365/directory/permissions/email_identity.py +7 -9
  262. office365/directory/policies/all_devices_assignment_target.py +12 -0
  263. office365/directory/policies/all_domains.py +10 -0
  264. office365/directory/policies/all_licensed_users_assignment_target.py +10 -0
  265. office365/directory/policies/allowedtargetscope.py +1 -0
  266. office365/directory/policies/app_management_application_configuration.py +15 -0
  267. office365/directory/policies/app_management_configuration.py +22 -0
  268. office365/directory/policies/app_management_policy_actor_exemptions.py +18 -0
  269. office365/directory/policies/app_management_service_principal_configuration.py +10 -0
  270. office365/directory/policies/authentication_combination_configuration.py +18 -0
  271. office365/directory/policies/authentication_context_class_reference.py +26 -0
  272. office365/directory/policies/authentication_methods.py +59 -0
  273. office365/directory/policies/authentication_strength.py +65 -8
  274. office365/directory/policies/azure_ad_registration_policy.py +16 -0
  275. office365/directory/policies/ca_policies_deletable_root.py +33 -0
  276. office365/directory/policies/claims_mapping_policy.py +7 -0
  277. office365/directory/policies/cloud_app_security_session_control.py +15 -0
  278. office365/directory/policies/conditionalaccess/all_external_tenants.py +10 -0
  279. office365/directory/policies/conditionalaccess/applications.py +20 -0
  280. office365/directory/policies/conditionalaccess/authentication_flows.py +15 -0
  281. office365/directory/policies/conditionalaccess/client_applications.py +18 -0
  282. office365/directory/policies/conditionalaccess/condition_set.py +42 -0
  283. office365/directory/policies/conditionalaccess/device_and_app_management_assignment_target.py +10 -0
  284. office365/directory/policies/conditionalaccess/device_info.py +43 -0
  285. office365/directory/policies/conditionalaccess/devices.py +15 -0
  286. office365/directory/policies/conditionalaccess/enumerated_external_tenants.py +15 -0
  287. office365/directory/policies/conditionalaccess/external_tenants.py +17 -0
  288. office365/directory/policies/conditionalaccess/filter.py +16 -0
  289. office365/directory/policies/conditionalaccess/grant_controls.py +24 -0
  290. office365/directory/policies/conditionalaccess/grantcontrol.py +1 -0
  291. office365/directory/policies/conditionalaccess/guests_or_external_users.py +19 -0
  292. office365/directory/policies/conditionalaccess/locations.py +16 -0
  293. office365/directory/policies/conditionalaccess/persistent_browser_session_control.py +15 -0
  294. office365/directory/policies/conditionalaccess/platforms.py +21 -0
  295. office365/directory/policies/conditionalaccess/policy_deletable_item.py +17 -0
  296. office365/directory/policies/conditionalaccess/policy_detail.py +19 -0
  297. office365/directory/policies/conditionalaccess/secure_sign_in_session_control.py +10 -0
  298. office365/directory/policies/conditionalaccess/service_principal_sign_in.py +14 -0
  299. office365/directory/policies/conditionalaccess/session_controls.py +32 -0
  300. office365/directory/policies/conditionalaccess/sign_in_conditions.py +29 -0
  301. office365/directory/policies/conditionalaccess/sign_in_frequency_session_control.py +24 -0
  302. office365/directory/policies/conditionalaccess/sign_in_identity.py +10 -0
  303. office365/directory/policies/conditionalaccess/user_action_context.py +15 -0
  304. office365/directory/policies/conditionalaccess/user_sign_in.py +19 -0
  305. office365/directory/policies/conditionalaccess/users.py +29 -0
  306. office365/directory/policies/crosstenant/app_service_connect_setting.py +19 -0
  307. office365/directory/policies/crosstenant/b2_b_setting.py +22 -0
  308. office365/directory/policies/crosstenant/inbound_trust.py +16 -0
  309. office365/directory/policies/crosstenant/m365_collaboration_inbound_setting.py +17 -0
  310. office365/directory/policies/crosstenant/m365_collaboration_outbound_setting.py +19 -0
  311. office365/directory/policies/crosstenant/target.py +16 -0
  312. office365/directory/policies/crosstenant/target_configuration.py +24 -0
  313. office365/directory/policies/crosstenant/tenant_restrictions.py +15 -0
  314. office365/directory/policies/crosstenant/user_sync_inbound.py +14 -0
  315. office365/directory/policies/custom_app_management_application_configuration.py +15 -0
  316. office365/directory/policies/custom_app_management_configuration.py +19 -0
  317. office365/directory/policies/default_invitation_redemption_identity_provider_configuration.py +10 -0
  318. office365/directory/policies/devices_filter.py +20 -0
  319. office365/directory/policies/enumerated_domains.py +15 -0
  320. office365/directory/policies/face_check_configuration.py +15 -0
  321. office365/directory/policies/group_scope.py +10 -0
  322. office365/directory/policies/identifier_uri_configuration.py +16 -0
  323. office365/directory/policies/inbound_outbound_policy_configuration.py +15 -0
  324. office365/directory/policies/invitation_redemption_identity_provider_configuration.py +19 -0
  325. office365/directory/policies/match_confidence_level.py +13 -0
  326. office365/directory/policies/protected_application_metadata.py +15 -0
  327. office365/directory/policies/protection_policy_artifact_count.py +17 -0
  328. office365/directory/policies/restrict_access_action.py +10 -0
  329. office365/directory/policies/restrict_access_action_base.py +15 -0
  330. office365/directory/policies/retention_setting.py +16 -0
  331. office365/directory/policies/root.py +14 -1
  332. office365/directory/policies/scope_base.py +14 -0
  333. office365/directory/policies/security_defaults.py +16 -0
  334. office365/directory/policies/self_service_sign_up_authentication_flow_configuration.py +14 -0
  335. office365/directory/policies/tenant_scope.py +10 -0
  336. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_filter_by_current_user_options.py +12 -0
  337. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_instance_filter_by_current_user_options.py +12 -0
  338. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_request_filter_by_current_user_options.py +14 -0
  339. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_filter_by_current_user_options.py +12 -0
  340. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_instance_filter_by_current_user_options.py +12 -0
  341. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_request_filter_by_current_user_options.py +14 -0
  342. office365/directory/policies/user_scope.py +10 -0
  343. office365/directory/policies/validating_domains.py +15 -0
  344. office365/directory/policies/verified_id_profile_configuration.py +15 -0
  345. office365/directory/policies/verified_id_usage_configuration.py +14 -0
  346. office365/directory/protection/riskyusers/activity.py +7 -1
  347. office365/directory/protection/riskyusers/risk_service_principal_activity.py +17 -0
  348. office365/directory/recovery/recovery_action.py +14 -0
  349. office365/directory/recovery/recovery_status.py +18 -0
  350. office365/directory/recovery/resource_type_name.py +23 -0
  351. office365/directory/requestor_manager.py +14 -0
  352. office365/directory/rolemanagement/unifiedrole/notification_recipients.py +20 -0
  353. office365/directory/rolemanagement/unifiedrole/permission.py +4 -0
  354. office365/directory/security/account.py +0 -1
  355. office365/directory/security/action.py +17 -0
  356. office365/directory/security/ai_agent_platform.py +15 -0
  357. office365/directory/security/alerts/alert.py +17 -0
  358. office365/directory/security/{blob_container_evidence.py → alerts/blob_container_evidence.py} +1 -1
  359. office365/directory/security/{blob_evidence.py → alerts/blob_evidence.py} +1 -1
  360. office365/directory/security/alerts/connection_direction.py +14 -0
  361. office365/directory/security/{sas_token_evidence.py → alerts/sas_token_evidence.py} +1 -1
  362. office365/directory/security/alerts/status.py +1 -2
  363. office365/directory/security/analyzed_message_evidence.py +3 -0
  364. office365/directory/security/antispam_directionality.py +15 -0
  365. office365/directory/security/attacksimulations/account_target_content_type.py +14 -0
  366. office365/directory/security/audit/audit_data.py +15 -0
  367. office365/directory/security/audit/audit_log_query_status.py +16 -0
  368. office365/directory/security/audit/multi_tenant_organization_join_request_transition_details.py +20 -0
  369. office365/directory/security/audit/multi_tenant_organization_member_transition_details.py +22 -0
  370. office365/directory/security/audit/whois_domain_status.py +16 -0
  371. office365/directory/security/{whois_record.py → audit/whois_record.py} +1 -1
  372. office365/directory/security/cases/additionaldataoptions.py +1 -0
  373. office365/directory/security/cases/ediscovery.py +3 -0
  374. office365/directory/security/cloud_application_evidence.py +3 -1
  375. office365/directory/security/cloud_logon_session_evidence.py +2 -0
  376. office365/directory/security/{analyzed_email_attachment.py → collaboration/analyzed_email_attachment.py} +3 -1
  377. office365/directory/security/{collaboration_root.py → collaboration/collaboration_root.py} +1 -1
  378. office365/directory/security/container_evidence.py +4 -0
  379. office365/directory/security/container_image_evidence.py +4 -1
  380. office365/directory/security/correlation_reason.py +28 -0
  381. office365/directory/security/datasecurity/classifcation_error_base.py +18 -0
  382. office365/directory/security/{audit_data.py → datasecurity/classification_error.py} +2 -2
  383. office365/directory/security/datasecurity/classification_inner_error.py +18 -0
  384. office365/directory/security/datasecurity/compute_rights_and_inheritance_result.py +17 -0
  385. office365/directory/security/datasecurity/custom_metadata_dictionary.py +10 -0
  386. office365/directory/security/datasecurity/dlp_action_info.py +15 -0
  387. office365/directory/security/{data_security → datasecurity}/governance.py +1 -1
  388. office365/directory/security/datasecurity/integrated_application_metadata.py +15 -0
  389. office365/directory/security/datasecurity/policy_binding.py +17 -0
  390. office365/directory/security/datasecurity/policy_location.py +14 -0
  391. office365/directory/security/datasecurity/policy_location_application.py +10 -0
  392. office365/directory/security/datasecurity/policy_location_domain.py +10 -0
  393. office365/directory/security/datasecurity/policy_location_url.py +10 -0
  394. office365/directory/security/datasecurity/policy_scope_base.py +26 -0
  395. office365/directory/security/datasecurity/policy_tenant_scope.py +15 -0
  396. office365/directory/security/datasecurity/policy_tip_action.py +16 -0
  397. office365/directory/security/datasecurity/policy_user_scope.py +10 -0
  398. office365/directory/security/datasecurity/process_content_batch_request.py +17 -0
  399. office365/directory/security/datasecurity/process_content_request.py +24 -0
  400. office365/directory/security/datasecurity/process_content_response.py +24 -0
  401. office365/directory/security/datasecurity/process_content_responses.py +16 -0
  402. office365/directory/security/datasecurity/process_conversation_metadata.py +27 -0
  403. office365/directory/security/datasecurity/process_file_metadata.py +16 -0
  404. office365/directory/security/datasecurity/protected_content.py +16 -0
  405. office365/directory/security/delivery_action.py +16 -0
  406. office365/directory/security/delivery_location.py +20 -0
  407. office365/directory/security/detonation_details.py +11 -0
  408. office365/directory/security/device_evidence.py +11 -0
  409. office365/directory/security/dns_evidence.py +6 -1
  410. office365/directory/security/event_source.py +14 -0
  411. office365/directory/security/file_plan_applied_category.py +4 -1
  412. office365/directory/security/formatted_content.py +16 -0
  413. office365/directory/security/indicator_source.py +14 -0
  414. office365/directory/security/intelligence_profile_kind.py +13 -0
  415. office365/directory/security/investigation_state.py +29 -0
  416. office365/directory/security/invoke_action_result.py +0 -1
  417. office365/directory/security/io_t_device_evidence.py +6 -1
  418. office365/directory/security/ip_evidence.py +2 -0
  419. office365/directory/security/kubernetes_controller_evidence.py +2 -0
  420. office365/directory/security/kubernetes_pod_evidence.py +10 -0
  421. office365/directory/security/labels/retention/duration_in_days.py +3 -0
  422. office365/directory/security/mailbox_configuration_type.py +16 -0
  423. office365/directory/security/mailbox_evidence.py +3 -1
  424. office365/directory/security/onboarding_status.py +15 -0
  425. office365/directory/security/passive_dns_record.py +1 -1
  426. office365/directory/security/processing_error.py +15 -0
  427. office365/directory/security/protocol_type.py +13 -0
  428. office365/directory/security/public_error_response.py +4 -1
  429. office365/directory/security/query_type.py +13 -0
  430. office365/directory/security/recipient_type.py +13 -0
  431. office365/directory/security/remediation_action.py +17 -0
  432. office365/directory/security/remediation_severity.py +14 -0
  433. office365/directory/security/security.py +1 -1
  434. office365/directory/security/sensor_candidate_activation_mode.py +13 -0
  435. office365/directory/security/service_principal_type.py +15 -0
  436. office365/directory/security/service_source.py +25 -0
  437. office365/directory/security/ssl_certificate.py +1 -1
  438. office365/directory/security/subdomain.py +1 -1
  439. office365/directory/security/subjectrightsrequests/all_mailbox_location.py +10 -0
  440. office365/directory/security/subjectrightsrequests/all_site_location.py +10 -0
  441. office365/directory/security/subjectrightsrequests/data_subject.py +17 -0
  442. office365/directory/security/subjectrightsrequests/detail.py +26 -0
  443. office365/directory/security/subjectrightsrequests/enumerated_mailbox_location.py +15 -0
  444. office365/directory/security/subjectrightsrequests/enumerated_site_location.py +15 -0
  445. office365/directory/security/subjectrightsrequests/history.py +22 -0
  446. office365/directory/security/subjectrightsrequests/mailbox_location.py +10 -0
  447. office365/directory/security/subjectrightsrequests/site_location.py +10 -0
  448. office365/directory/security/subjectrightsrequests/stage_detail.py +19 -0
  449. office365/directory/security/teams_delivery_location.py +15 -0
  450. office365/directory/security/teams_message_delivery_action.py +16 -0
  451. office365/directory/security/threat_type.py +16 -0
  452. office365/directory/security/{host.py → threatintelligence/host.py} +8 -8
  453. office365/directory/security/{host_component.py → threatintelligence/host_component.py} +1 -1
  454. office365/directory/security/{host_cookie.py → threatintelligence/host_cookie.py} +1 -1
  455. office365/directory/security/{host_pair.py → threatintelligence/host_pair.py} +1 -1
  456. office365/directory/security/{host_port.py → threatintelligence/host_port.py} +1 -1
  457. office365/directory/security/threatintelligence/host_port_banner.py +19 -0
  458. office365/directory/security/threatintelligence/host_port_component.py +19 -0
  459. office365/directory/security/threatintelligence/host_port_protocol.py +13 -0
  460. office365/directory/security/threatintelligence/host_port_status.py +14 -0
  461. office365/directory/security/threatintelligence/host_reputation_classification.py +15 -0
  462. office365/directory/security/threatintelligence/host_reputation_rule.py +16 -0
  463. office365/directory/security/threatintelligence/host_reputation_rule_severity.py +15 -0
  464. office365/directory/security/{host_ssl_certificate.py → threatintelligence/host_ssl_certificate.py} +1 -1
  465. office365/directory/security/{host_tracker.py → threatintelligence/host_tracker.py} +1 -1
  466. office365/directory/security/threatintelligence/hosts/__init__.py +0 -0
  467. office365/directory/security/threatintelligence/threat_intelligence.py +9 -9
  468. office365/directory/security/threatintelligence/whoisrecords/__init__.py +0 -0
  469. office365/directory/security/timeline_event_type.py +20 -0
  470. office365/directory/security/user_evidence.py +2 -0
  471. office365/directory/security/verdict_category.py +20 -0
  472. office365/directory/security/vm_cloud_provider.py +13 -0
  473. office365/directory/security/vulnerability_severity.py +16 -0
  474. office365/directory/security/whois_base_record.py +1 -1
  475. office365/directory/serviceprincipals/delegated_permission_classification.py +27 -0
  476. office365/directory/serviceprincipals/remote_desktop_security_configuration.py +16 -0
  477. office365/directory/single_service_principal.py +15 -0
  478. office365/directory/single_user.py +15 -0
  479. office365/directory/synchronization/attribute_mapping.py +23 -0
  480. office365/directory/synchronization/error.py +10 -1
  481. office365/directory/synchronization/job_application_parameters.py +19 -0
  482. office365/directory/synchronization/job_restart_criteria.py +7 -1
  483. office365/directory/synchronization/job_subject.py +17 -0
  484. office365/directory/synchronization/linked_objects.py +22 -0
  485. office365/directory/synchronization/metadata_entry.py +16 -0
  486. office365/directory/synchronization/on_premises_accidental_deletion_prevention.py +20 -0
  487. office365/directory/synchronization/on_premises_directory_synchronization_configuration.py +19 -0
  488. office365/directory/synchronization/on_premises_directory_synchronization_feature.py +33 -0
  489. office365/directory/synchronization/progress.py +4 -0
  490. office365/directory/synchronization/quarantine.py +11 -0
  491. office365/directory/synchronization/rule.py +32 -0
  492. office365/directory/synchronization/schedule.py +18 -0
  493. office365/directory/synchronization/secret_key_string_value_pair.py +16 -0
  494. office365/directory/synchronization/status.py +17 -3
  495. office365/directory/synchronization/task_execution.py +26 -1
  496. office365/directory/target_agent_identity_sponsors_or_owners.py +10 -0
  497. office365/directory/target_application_owners.py +10 -0
  498. office365/directory/target_manager.py +14 -0
  499. office365/directory/target_user_sponsors.py +10 -0
  500. office365/directory/tenantinformation/information.py +4 -0
  501. office365/directory/users/activities/activity.py +42 -8
  502. office365/directory/users/settings.py +5 -13
  503. office365/directory/users/user.py +4 -3
  504. office365/directory/users/work_location_update_scope.py +13 -0
  505. office365/education/related_contact.py +19 -0
  506. office365/entity_collection.py +0 -20
  507. office365/externalconnectors/acl_type.py +16 -0
  508. office365/externalconnectors/binary_operator.py +12 -0
  509. office365/externalconnectors/connection_operation_status.py +15 -0
  510. office365/externalconnectors/connection_state.py +15 -0
  511. office365/externalconnectors/external_activity_type.py +15 -0
  512. office365/externalconnectors/external_item_content_type.py +13 -0
  513. office365/externalconnectors/identity_type.py +14 -0
  514. office365/externalconnectors/label.py +65 -0
  515. office365/externalconnectors/property_type.py +22 -0
  516. office365/externalconnectors/rule_operation.py +19 -0
  517. office365/graph_client.py +120 -16
  518. office365/graph_request.py +3 -1
  519. office365/intune/browser/browser_site_history.py +25 -0
  520. office365/intune/devices/alternative_security_id.py +5 -0
  521. office365/intune/devices/cloud_pc_launch_detail.py +22 -0
  522. office365/intune/devices/cloud_pc_windows_setting.py +14 -0
  523. office365/intune/devices/device_metadata.py +17 -0
  524. office365/intune/devices/enumerated_device_registration_membership.py +16 -0
  525. office365/intune/devices/imported_windows_autopilot_device_identity_import_status.py +15 -0
  526. office365/intune/devices/imported_windows_autopilot_device_identity_upload_status.py +14 -0
  527. office365/intune/devices/management/all_device_registration_membership.py +10 -0
  528. office365/intune/devices/management/device_protection_overview.py +24 -0
  529. office365/intune/devices/management/managed/managed.py +79 -0
  530. office365/intune/devices/management/managed/windows/autopilot_device_type.py +13 -0
  531. office365/intune/devices/management/managed/windows/defender_product_status.py +36 -0
  532. office365/intune/devices/management/managed/windows/information_protection_enforcement_level.py +14 -0
  533. office365/intune/devices/management/mobileapps/file_encryption_info.py +20 -0
  534. office365/intune/devices/management/mobileapps/ios/ios_device_type.py +15 -0
  535. office365/intune/devices/management/user_experience_analytics_settings.py +14 -0
  536. office365/intune/devices/management/user_experience_analytics_summarized_by.py +17 -0
  537. office365/intune/devices/management/virtualendpoint/cloudpcs/exclusion_group_assignment_target.py +10 -0
  538. office365/intune/devices/management/virtualendpoint/cloudpcs/group_assignment_target.py +16 -0
  539. office365/intune/devices/management/virtualendpoint/provisioningpolicies/microsoft_managed_desktop.py +18 -0
  540. office365/intune/devices/management/windows_malware_overview.py +16 -0
  541. office365/intune/devices/no_device_registration_membership.py +10 -0
  542. office365/intune/devices/operating_system_specifications.py +15 -0
  543. office365/intune/enrollment_state.py +15 -0
  544. office365/intune/instance_resource_access.py +19 -0
  545. office365/intune/organizations/content_customization.py +15 -0
  546. office365/intune/organizations/login_page_layout_configuration.py +17 -0
  547. office365/intune/organizations/login_page_text_visibility_settings.py +19 -0
  548. office365/intune/organizations/physical_office_address.py +19 -0
  549. office365/intune/organizations/privacy_profile.py +15 -0
  550. office365/intune/policies/azure_ad_join_policy.py +18 -0
  551. office365/intune/policies/local_admin_password_settings.py +14 -0
  552. office365/intune/policies/local_admin_settings.py +16 -0
  553. office365/intune/print/printers/incompatible_printer_settings.py +13 -0
  554. office365/intune/print/user_print.py +0 -2
  555. office365/intune/process_integrity_level.py +17 -0
  556. office365/intune/resource_permission.py +15 -0
  557. office365/migration/__init__.py +122 -7
  558. office365/migration/_util.py +73 -0
  559. office365/migration/adapters/__init__.py +94 -0
  560. office365/migration/adapters/filesystem.py +174 -0
  561. office365/migration/assessment/__init__.py +27 -0
  562. office365/migration/assessment/containers.py +24 -0
  563. office365/migration/assessment/export.py +51 -0
  564. office365/migration/assessment/registry.py +60 -0
  565. office365/migration/assessment/report.py +142 -31
  566. office365/migration/assessment/runner.py +57 -0
  567. office365/migration/assessment/scanners/__init__.py +13 -0
  568. office365/migration/assessment/scanners/base.py +135 -0
  569. office365/migration/base.py +53 -4
  570. office365/migration/checkpoint.py +76 -0
  571. office365/migration/job.py +209 -0
  572. office365/migration/manifest.py +71 -0
  573. office365/migration/outlook/__init__.py +20 -0
  574. office365/migration/outlook/assessor.py +73 -0
  575. office365/migration/outlook/registry.py +27 -0
  576. office365/migration/outlook/scanner.py +82 -0
  577. office365/migration/report.py +111 -0
  578. office365/migration/runner.py +208 -0
  579. office365/migration/server_job.py +90 -0
  580. office365/migration/session.py +105 -0
  581. office365/migration/sharepoint/__init__.py +53 -0
  582. office365/migration/sharepoint/adapters.py +354 -0
  583. office365/migration/sharepoint/assessor.py +312 -0
  584. office365/migration/sharepoint/registry.py +48 -0
  585. office365/migration/sharepoint/scanners/__init__.py +27 -0
  586. office365/migration/sharepoint/scanners/fields.py +52 -0
  587. office365/migration/sharepoint/scanners/files.py +25 -0
  588. office365/migration/sharepoint/scanners/large_sites.py +124 -0
  589. office365/migration/sharepoint/scanners/locked_sites.py +38 -0
  590. office365/migration/sharepoint/scanners/paths.py +45 -0
  591. office365/migration/sharepoint/scanners/permissions.py +24 -0
  592. office365/migration/sharepoint/scanners/summary.py +37 -0
  593. office365/migration/sharepoint/tenant_assessor.py +93 -0
  594. office365/migration/sharepoint/transfer.py +92 -0
  595. office365/migration/teams/__init__.py +29 -0
  596. office365/migration/teams/_extract.py +108 -0
  597. office365/migration/teams/adapters.py +190 -0
  598. office365/migration/teams/models.py +73 -0
  599. office365/migration/validators.py +65 -0
  600. office365/onedrive/base_item.py +10 -15
  601. office365/onedrive/contenttypes/content_type.py +8 -13
  602. office365/onedrive/documentsets/version.py +3 -6
  603. office365/onedrive/driveitems/audio.py +16 -0
  604. office365/onedrive/driveitems/bundle.py +4 -0
  605. office365/onedrive/driveitems/driveItem.py +126 -24
  606. office365/onedrive/driveitems/image.py +4 -0
  607. office365/onedrive/driveitems/malware.py +14 -0
  608. office365/onedrive/driveitems/package.py +14 -0
  609. office365/onedrive/driveitems/photo.py +13 -1
  610. office365/onedrive/driveitems/publication_facet.py +4 -0
  611. office365/onedrive/driveitems/remote_item.py +18 -0
  612. office365/onedrive/driveitems/special_folder.py +4 -0
  613. office365/onedrive/driveitems/uploadable_properties.py +2 -2
  614. office365/onedrive/driveitems/video.py +15 -1
  615. office365/onedrive/drives/drive.py +9 -0
  616. office365/onedrive/drives/quota.py +9 -1
  617. office365/onedrive/files/file.py +4 -0
  618. office365/onedrive/files/system_info.py +4 -0
  619. office365/onedrive/filestorage/containertypes/app_permission.py +20 -1
  620. office365/onedrive/filestorage/containertypes/billing_classification.py +8 -0
  621. office365/onedrive/filestorage/containertypes/billing_status.py +7 -0
  622. office365/onedrive/filestorage/containertypes/settings_override.py +17 -0
  623. office365/onedrive/folders/folder.py +4 -0
  624. office365/onedrive/internal/paths/shared.py +1 -3
  625. office365/onedrive/internal/paths/site.py +2 -1
  626. office365/onedrive/listitems/collection.py +2 -2
  627. office365/onedrive/lists/info.py +4 -0
  628. office365/onedrive/operations/pending.py +4 -0
  629. office365/onedrive/operations/public_inner_error.py +21 -0
  630. office365/onedrive/sensitivitylabels/usagerights.py +1 -1
  631. office365/onedrive/share_point_migration_job_error_level.py +15 -0
  632. office365/onedrive/share_point_migration_object_type.py +20 -0
  633. office365/onedrive/shares/shared.py +4 -0
  634. office365/onedrive/sites/collection.py +4 -0
  635. office365/onedrive/sites/sites_with_root.py +3 -3
  636. office365/onedrive/sites/website.py +17 -0
  637. office365/onedrive/sites/website_type.py +15 -0
  638. office365/onedrive/termstore/groups/collection.py +6 -6
  639. office365/onedrive/termstore/groups/group.py +6 -1
  640. office365/onedrive/termstore/relation_type.py +13 -0
  641. office365/onedrive/termstore/sets/collection.py +6 -6
  642. office365/onedrive/termstore/store.py +14 -29
  643. office365/onedrive/termstore/store_manager.py +128 -0
  644. office365/onedrive/termstore/terms/collection.py +6 -6
  645. office365/onedrive/workbooks/charts/axes.py +4 -10
  646. office365/onedrive/workbooks/filter_criteria.py +9 -0
  647. office365/onedrive/workbooks/filter_datetime.py +15 -0
  648. office365/onedrive/workbooks/icon.py +7 -1
  649. office365/onedrive/workbooks/operations/error.py +4 -0
  650. office365/onedrive/workbooks/ranges/reference.py +4 -0
  651. office365/onedrive/workbooks/session_info.py +4 -0
  652. office365/onedrive/workbooks/sort_field.py +5 -0
  653. office365/onedrive/workbooks/worksheets/protection_options.py +4 -0
  654. office365/onedrive/workbooks/worksheets/worksheet.py +5 -3
  655. office365/onenote/pages/collection.py +1 -1
  656. office365/onenote/pages/page.py +5 -11
  657. office365/outlook/calendar/attendees/attendee.py +4 -0
  658. office365/outlook/calendar/attendees/availability.py +4 -0
  659. office365/outlook/calendar/attendees/base.py +4 -0
  660. office365/outlook/calendar/collection.py +7 -0
  661. office365/outlook/calendar/events/event.py +8 -14
  662. office365/outlook/calendar/events/reminder.py +4 -0
  663. office365/outlook/calendar/location_constraint.py +4 -0
  664. office365/outlook/calendar/meetingtimes/suggestion.py +8 -0
  665. office365/outlook/calendar/meetingtimes/suggestions_result.py +4 -0
  666. office365/outlook/calendar/meetingtimes/time_constraint.py +4 -0
  667. office365/outlook/calendar/response_status.py +7 -1
  668. office365/outlook/calendar/schedule/free_busy_error.py +15 -0
  669. office365/outlook/calendar/schedule/information.py +4 -0
  670. office365/outlook/calendar/schedule/item.py +4 -0
  671. office365/outlook/calendar/sharing/message_action.py +11 -1
  672. office365/outlook/calendar/timezones/base.py +4 -0
  673. office365/outlook/calendar/timezones/custom.py +9 -1
  674. office365/outlook/calendar/timezones/daylight_time_zone_offset.py +14 -0
  675. office365/outlook/calendar/working_hours.py +4 -0
  676. office365/outlook/check_in_method.py +15 -0
  677. office365/outlook/contacts/folders/collection.py +1 -1
  678. office365/outlook/convert_id_result.py +7 -1
  679. office365/outlook/item.py +3 -11
  680. office365/outlook/locale_info.py +4 -0
  681. office365/outlook/mail/attachments/attachment_item.py +7 -0
  682. office365/outlook/mail/attachments/collection.py +33 -18
  683. office365/outlook/mail/automaticreplies/mailtips.py +4 -0
  684. office365/outlook/mail/automaticreplies/setting.py +4 -0
  685. office365/outlook/mail/email_details.py +16 -0
  686. office365/outlook/mail/export_item_response.py +19 -0
  687. office365/outlook/mail/folders/folder.py +5 -11
  688. office365/outlook/mail/location.py +1 -1
  689. office365/outlook/mail/location_constraint_item.py +8 -1
  690. office365/outlook/mail/mailbox_item_import_session.py +16 -0
  691. office365/outlook/mail/messages/collection.py +1 -1
  692. office365/outlook/mail/messages/followup_flag.py +4 -0
  693. office365/outlook/mail/messages/internet_header.py +4 -0
  694. office365/outlook/mail/messages/message.py +21 -7
  695. office365/outlook/mail/messages/rules/actions.py +4 -0
  696. office365/outlook/mail/messages/rules/predicates.py +29 -0
  697. office365/outlook/mail/messages/rules/rule.py +1 -1
  698. office365/outlook/mail/messages/rules/size_range.py +15 -0
  699. office365/outlook/mail/patterned_recurrence.py +4 -0
  700. office365/outlook/mail/recurrence_pattern.py +4 -0
  701. office365/outlook/mail/recurrence_range.py +4 -0
  702. office365/outlook/mail/tips/error.py +7 -1
  703. office365/outlook/people/person_type.py +14 -0
  704. office365/outlook/place_feature_enablement.py +14 -0
  705. office365/outlook/resource_link.py +17 -0
  706. office365/outlook/resource_link_type.py +12 -0
  707. office365/outlook/scored_email_address.py +18 -0
  708. office365/outlook/timezones/information.py +4 -0
  709. office365/outlook/timezones/standard_time_zone_offset.py +20 -0
  710. office365/partners/billing/attribute_set.py +13 -0
  711. office365/partners/billing/billing_period.py +13 -0
  712. office365/partners/partners.py +5 -4
  713. office365/planner/buckets/collection.py +2 -2
  714. office365/planner/plans/details.py +3 -9
  715. office365/planner/user.py +6 -4
  716. office365/reports/internal/queries/create_report_query.py +26 -12
  717. office365/reports/print_usage.py +67 -0
  718. office365/reports/print_usage_by_printer.py +21 -0
  719. office365/reports/print_usage_by_user.py +16 -0
  720. office365/reports/relying_party_detailed_summary.py +70 -0
  721. office365/reports/root.py +77 -95
  722. office365/runtime/auth/authentication_context.py +41 -15
  723. office365/runtime/auth/entra/authentication_context.py +22 -2
  724. office365/runtime/auth/providers/acs_token_provider.py +6 -2
  725. office365/runtime/auth/providers/cookie_provider.py +7 -3
  726. office365/runtime/auth/providers/saml_token_provider.py +6 -2
  727. office365/runtime/auth/sts_profile.py +1 -1
  728. office365/runtime/client_object.py +50 -67
  729. office365/runtime/client_object_collection.py +297 -14
  730. office365/runtime/client_request_exception.py +63 -4
  731. office365/runtime/client_result.py +26 -18
  732. office365/runtime/client_runtime_context.py +232 -25
  733. office365/runtime/client_value.py +14 -40
  734. office365/runtime/client_value_collection.py +4 -8
  735. office365/runtime/converters/__init__.py +1 -0
  736. office365/runtime/converters/csv_reader.py +94 -0
  737. office365/runtime/converters/csv_writer.py +60 -0
  738. office365/runtime/converters/dataframe.py +122 -0
  739. office365/runtime/converters/excel.py +44 -0
  740. office365/runtime/converters/json_file.py +21 -0
  741. office365/runtime/converters/keyvalue.py +95 -0
  742. office365/runtime/converters/ndjson.py +17 -0
  743. office365/runtime/converters/records.py +82 -0
  744. office365/runtime/converters/scalars.py +128 -0
  745. office365/runtime/converters/value.py +186 -0
  746. office365/runtime/decorators.py +27 -0
  747. office365/runtime/http/mime.py +12 -0
  748. office365/runtime/http/throttling.py +205 -0
  749. office365/runtime/http/url.py +36 -0
  750. office365/runtime/odata/batch_util.py +92 -0
  751. office365/runtime/odata/query_options.py +26 -1
  752. office365/runtime/odata/request.py +27 -16
  753. office365/runtime/odata/type.py +47 -105
  754. office365/runtime/odata/v3/batch_request.py +88 -1
  755. office365/runtime/odata/v4/batch_request.py +88 -0
  756. office365/runtime/odata/v4/upload_session.py +4 -0
  757. office365/runtime/odata/v4/upload_session_request.py +26 -10
  758. office365/runtime/operations.py +135 -0
  759. office365/runtime/parallel.py +96 -0
  760. office365/runtime/paths/builder.py +4 -2
  761. office365/runtime/queries/batch.py +23 -14
  762. office365/runtime/queries/client_query.py +8 -10
  763. office365/runtime/queries/deferred.py +72 -0
  764. office365/runtime/queries/delete_entity.py +2 -2
  765. office365/runtime/queries/function.py +35 -1
  766. office365/runtime/queries/read_entity.py +23 -4
  767. office365/runtime/queries/update_entity.py +2 -2
  768. office365/runtime/queries/upload_session.py +1 -1
  769. office365/runtime/retry.py +137 -0
  770. office365/runtime/types/binary_content.py +14 -0
  771. office365/runtime/types/ipv4_cidr_range.py +14 -0
  772. office365/runtime/types/ipv6_cidr_range.py +14 -0
  773. office365/runtime/types/json.py +10 -0
  774. office365/runtime/types/odata_property.py +7 -0
  775. office365/runtime/types/public_error.py +23 -0
  776. office365/runtime/types/public_inner_error.py +21 -0
  777. office365/runtime/types/setting_value.py +15 -0
  778. office365/search/request.py +2 -2
  779. office365/sharepoint/agreements/summarydata.py +15 -5
  780. office365/sharepoint/authentication/auth_file_detonation_request_response.py +48 -0
  781. office365/sharepoint/authentication/spo_auth_file_detonation_request.py +7 -0
  782. office365/sharepoint/brandcenter/brand_font_file_delete_result.py +9 -0
  783. office365/sharepoint/changes/change.py +6 -0
  784. office365/sharepoint/changes/collection.py +1 -1
  785. office365/sharepoint/changes/item.py +4 -10
  786. office365/sharepoint/client_context.py +78 -33
  787. office365/sharepoint/clientsidecomponent/agreementssolutionfilecontext.py +1 -0
  788. office365/sharepoint/clientsidecomponent/spteamsappcomponent.py +3 -0
  789. office365/sharepoint/comments/comment.py +2 -10
  790. office365/sharepoint/comments/contentanchor.py +6 -0
  791. office365/sharepoint/compliance/store_proxy.py +306 -68
  792. office365/sharepoint/compliance/tags/tag.py +3 -0
  793. office365/sharepoint/containers/active/properties.py +3 -0
  794. office365/sharepoint/contentcenter/machinelearning/column_autofill_choice_settings.py +15 -0
  795. office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_data.py +25 -0
  796. office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_result.py +12 -0
  797. office365/sharepoint/contentcenter/machinelearning/hub.py +231 -29
  798. office365/sharepoint/contentcenter/machinelearning/list_autofill_entity_data.py +15 -0
  799. office365/sharepoint/contentcenter/machinelearning/list_autofill_item_results.py +18 -0
  800. office365/sharepoint/contentcenter/machinelearning/modeldependencies.py +4 -3
  801. office365/sharepoint/contentcenter/machinelearning/models/model.py +254 -0
  802. office365/sharepoint/contentcenter/machinelearning/publications/publication.py +177 -0
  803. office365/sharepoint/contentcenter/machinelearning/samples/sample.py +134 -0
  804. office365/sharepoint/contentcenter/machinelearning/sp_machine_learning_doc_lib_autofill_item_results.py +19 -0
  805. office365/sharepoint/contentcenter/machinelearning/workitems/item.py +149 -0
  806. office365/sharepoint/contenttypes/collection.py +9 -10
  807. office365/sharepoint/contenttypes/content_type.py +4 -10
  808. office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -7
  809. office365/sharepoint/directory/helper.py +5 -5
  810. office365/sharepoint/directory/multi_conditional_access_policy.py +37 -0
  811. office365/sharepoint/directory/named_location_policy.py +62 -0
  812. office365/sharepoint/directory/provider/provider.py +1 -1
  813. office365/sharepoint/entity.py +8 -4
  814. office365/sharepoint/eventreceivers/definition_collection.py +32 -0
  815. office365/sharepoint/fields/collection.py +165 -67
  816. office365/sharepoint/fields/field.py +4 -2
  817. office365/sharepoint/fields/name.py +11 -0
  818. office365/sharepoint/files/checked_out_file.py +2 -6
  819. office365/sharepoint/files/collection.py +75 -8
  820. office365/sharepoint/files/file.py +68 -6
  821. office365/sharepoint/files/file_url_virus_status_update.py +22 -0
  822. office365/sharepoint/files/versionbatchdeleteparameters.py +1 -0
  823. office365/sharepoint/files/versions/version.py +2 -8
  824. office365/sharepoint/folders/collection.py +5 -2
  825. office365/sharepoint/folders/folder.py +198 -26
  826. office365/sharepoint/internal/image_content_part.py +5 -0
  827. office365/sharepoint/internal/paths/web.py +3 -1
  828. office365/sharepoint/internal/sticky_routing_options.py +13 -0
  829. office365/sharepoint/likes/liked_by_information.py +2 -6
  830. office365/sharepoint/listitems/collection.py +28 -0
  831. office365/sharepoint/listitems/compliance_info.py +1 -0
  832. office365/sharepoint/listitems/form_update_value.py +2 -1
  833. office365/sharepoint/listitems/listdata_validation_exception_value.py +3 -1
  834. office365/sharepoint/listitems/listitem.py +5 -5
  835. office365/sharepoint/listitems/versions/version.py +3 -15
  836. office365/sharepoint/lists/batch_convert_item_result.py +19 -0
  837. office365/sharepoint/lists/batch_convert_result.py +17 -0
  838. office365/sharepoint/lists/collection.py +36 -0
  839. office365/sharepoint/lists/conversion_loss_item.py +13 -0
  840. office365/sharepoint/lists/conversion_loss_report.py +18 -0
  841. office365/sharepoint/lists/extended_share_point_permission_settings.py +17 -0
  842. office365/sharepoint/lists/list.py +95 -20
  843. office365/sharepoint/lists/list_forms_api.py +7 -0
  844. office365/sharepoint/logger/activityrequest.py +3 -0
  845. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +7 -3
  846. office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +3 -1
  847. office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +4 -10
  848. office365/sharepoint/microfeed/attachment_store.py +69 -0
  849. office365/sharepoint/microfeed/data.py +64 -0
  850. office365/sharepoint/microfeed/manager.py +259 -0
  851. office365/sharepoint/microfeed/microfeedstore.py +69 -0
  852. office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +4 -2
  853. office365/sharepoint/multigeo/service/dfdeprecationjob.py +8 -1
  854. office365/sharepoint/multigeo/service/geoexperience.py +15 -0
  855. office365/sharepoint/multigeo/service/groupmovejob.py +9 -0
  856. office365/sharepoint/multigeo/service/move_job_report.py +23 -0
  857. office365/sharepoint/multigeo/service/movesiterostate.py +8 -1
  858. office365/sharepoint/multigeo/service/partner_company_id_lookup.py +22 -0
  859. office365/sharepoint/multigeo/service/services.py +3 -6
  860. office365/sharepoint/multigeo/service/sitemovejob.py +9 -0
  861. office365/sharepoint/navigation/menu/node.py +5 -3
  862. office365/sharepoint/navigation/menu/state.py +1 -1
  863. office365/sharepoint/navigation/nodes/collection.py +36 -1
  864. office365/sharepoint/navigation/service.py +2 -8
  865. office365/sharepoint/permissions/roles/assignments/assignment.py +2 -8
  866. office365/sharepoint/permissions/roles/definitions/definition.py +3 -9
  867. office365/sharepoint/portal/groups/service.py +12 -0
  868. office365/sharepoint/portal/groups/site_manager.py +283 -32
  869. office365/sharepoint/portal/linkedsites/manager.py +25 -3
  870. office365/sharepoint/portal/sites/manager.py +197 -0
  871. office365/sharepoint/principal/principal.py +3 -8
  872. office365/sharepoint/principal/users/user.py +5 -6
  873. office365/sharepoint/publishing/announcements/controller.py +31 -0
  874. office365/sharepoint/publishing/content_distribution_controller.py +23 -0
  875. office365/sharepoint/publishing/copytoparams.py +3 -0
  876. office365/sharepoint/publishing/diagnostics/controller.py +12 -0
  877. office365/sharepoint/publishing/emailpublishingstatus.py +4 -2
  878. office365/sharepoint/publishing/engage_distribution_info.py +2 -0
  879. office365/sharepoint/publishing/feedvideopage.py +358 -0
  880. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +40 -0
  881. office365/sharepoint/publishing/pages/3d/page.py +314 -0
  882. office365/sharepoint/publishing/pages/campaign/publication.py +549 -7
  883. office365/sharepoint/publishing/pages/metadata.py +6 -11
  884. office365/sharepoint/publishing/pages/page.py +469 -0
  885. office365/sharepoint/publishing/pages/reposts/repost.py +334 -0
  886. office365/sharepoint/publishing/pages/service.py +95 -43
  887. office365/sharepoint/publishing/pages/topics/topic.py +314 -0
  888. office365/sharepoint/publishing/point/post.py +28 -0
  889. office365/sharepoint/publishing/point/postservicemanager.py +31 -0
  890. office365/sharepoint/publishing/point/tenantmanager.py +9 -0
  891. office365/sharepoint/publishing/point/user.py +9 -0
  892. office365/sharepoint/publishing/portallaunchwavesmanager.py +36 -0
  893. office365/sharepoint/publishing/portalnavigationcachewrapper.py +21 -0
  894. office365/sharepoint/publishing/rich_sharing.py +12 -0
  895. office365/sharepoint/publishing/sites/communication/site.py +14 -6
  896. office365/sharepoint/publishing/subtitlefile.py +40 -0
  897. office365/sharepoint/publishing/video/channel.py +112 -0
  898. office365/sharepoint/publishing/video/item.py +231 -0
  899. office365/sharepoint/publishing/videopermissiongroup.py +16 -0
  900. office365/sharepoint/request.py +35 -7
  901. office365/sharepoint/search/analytics/signal_store.py +15 -0
  902. office365/sharepoint/search/promoted_result_query_rule.py +6 -2
  903. office365/sharepoint/search/ranking_labeling.py +11 -0
  904. office365/sharepoint/search/relevant_results.py +1 -1
  905. office365/sharepoint/search/reordering_rule_collection.py +30 -0
  906. office365/sharepoint/search/result.py +1 -1
  907. office365/sharepoint/search/service.py +61 -0
  908. office365/sharepoint/search/setting.py +75 -15
  909. office365/sharepoint/search/simple_data_row.py +1 -1
  910. office365/sharepoint/sharing/direct_abilities.py +1 -0
  911. office365/sharepoint/sharing/main_link_audience_role_abilities.py +17 -0
  912. office365/sharepoint/sharing/mainlinkabilities.py +3 -3
  913. office365/sharepoint/sharing/mainlinkaudienceabilities.py +4 -0
  914. office365/sharepoint/sharing/mainlinkinfo.py +4 -0
  915. office365/sharepoint/sharing/object_sharing_settings.py +4 -10
  916. office365/sharepoint/sitedesigns/app_settings_in_teams.py +6 -1
  917. office365/sharepoint/sitedesigns/creation_info.py +1 -1
  918. office365/sharepoint/sitedesigns/insert_field_response.py +10 -1
  919. office365/sharepoint/sitedesigns/main_link_details.py +2 -0
  920. office365/sharepoint/sitedesigns/sectiondesignideasapi.py +26 -0
  921. office365/sharepoint/sitedesigns/thread_engagement_data.py +2 -0
  922. office365/sharepoint/sites/home/sharepointhomeservicemanager.py +18 -0
  923. office365/sharepoint/sites/manager/baaa_request.py +2 -0
  924. office365/sharepoint/sites/manager/service.py +192 -5
  925. office365/sharepoint/sites/site.py +12 -0
  926. office365/sharepoint/sites/version_policy_manager.py +6 -10
  927. office365/sharepoint/sitescripts/utility.py +1 -1
  928. office365/sharepoint/social/rest_thread.py +2 -6
  929. office365/sharepoint/taxonomy/field.py +1 -0
  930. office365/sharepoint/taxonomy/groups/group.py +2 -6
  931. office365/sharepoint/taxonomy/item.py +12 -6
  932. office365/sharepoint/taxonomy/service.py +18 -2
  933. office365/sharepoint/teams/manage_channel_capabilities_request.py +3 -0
  934. office365/sharepoint/tenant/administration/bulk_insert_operation_result.py +5 -0
  935. office365/sharepoint/tenant/administration/catalog_management_category.py +23 -0
  936. office365/sharepoint/tenant/administration/catalog_management_custom_property_map.py +3 -0
  937. office365/sharepoint/tenant/administration/catalog_management_group.py +16 -0
  938. office365/sharepoint/tenant/administration/catalog_management_schema.py +18 -0
  939. office365/sharepoint/tenant/administration/catalog_management_status.py +23 -0
  940. office365/sharepoint/tenant/administration/container/properties.py +6 -0
  941. office365/sharepoint/tenant/administration/dataset_metadata_response.py +6 -0
  942. office365/sharepoint/tenant/administration/ransomware/activitiesoverview.py +2 -1
  943. office365/sharepoint/tenant/administration/rcd_categories_map.py +19 -0
  944. office365/sharepoint/tenant/administration/rcd_category_detail_result.py +17 -0
  945. office365/sharepoint/tenant/administration/rcd_group_definition.py +19 -0
  946. office365/sharepoint/tenant/administration/rcd_group_metadata.py +20 -0
  947. office365/sharepoint/tenant/administration/rcd_save_result.py +12 -0
  948. office365/sharepoint/tenant/administration/rcd_site_status_detail.py +18 -0
  949. office365/sharepoint/tenant/administration/secondary_administrators_info.py +0 -7
  950. office365/sharepoint/tenant/administration/site_property_scope_config.py +1 -0
  951. office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +3 -1
  952. office365/sharepoint/tenant/administration/tenant.py +94 -227
  953. office365/sharepoint/tenant/administration/tenant_admin_ransomware_event_site_restore_point.py +1 -0
  954. office365/sharepoint/tenant/administration/tenant_data_loss_prevention_quarantine_settings.py +17 -0
  955. office365/sharepoint/tenant/cdn_api.py +18 -4
  956. office365/sharepoint/tenant/management/office365_tenant.py +15 -10
  957. office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +28 -0
  958. office365/sharepoint/tenantadministration/spo_file_archive_policy_report_info.py +20 -0
  959. office365/sharepoint/tenantadministration/spo_file_archive_policy_site_info.py +15 -0
  960. office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +14 -0
  961. office365/sharepoint/types/resource_path.py +2 -1
  962. office365/sharepoint/usercustomactions/collection.py +41 -0
  963. office365/sharepoint/userprofiles/person_properties.py +4 -10
  964. office365/sharepoint/utilities/autofillcolumninfo.py +2 -0
  965. office365/sharepoint/utilities/llmcolumninfo.py +2 -0
  966. office365/sharepoint/utilities/move_copy_util.py +284 -10
  967. office365/sharepoint/viva/site_manager.py +10 -0
  968. office365/sharepoint/webhooks/subscription.py +41 -1
  969. office365/sharepoint/webhooks/subscription_information.py +2 -2
  970. office365/sharepoint/webparts/definitions/definition.py +8 -10
  971. office365/sharepoint/webparts/limited_manager.py +2 -6
  972. office365/sharepoint/webs/regional_settings.py +11 -15
  973. office365/sharepoint/webs/time_zone.py +9 -6
  974. office365/sharepoint/webs/web.py +57 -10
  975. office365/sharepoint/webs/web_fetch_result.py +13 -0
  976. office365/subscriptions/subscription.py +2 -8
  977. office365/teams/administration/account_type.py +17 -0
  978. office365/teams/administration/activation_state.py +16 -0
  979. office365/teams/administration/assignment_category.py +8 -1
  980. office365/teams/administration/assignment_status.py +18 -0
  981. office365/teams/administration/customer_action.py +13 -0
  982. office365/teams/administration/number_capability.py +15 -0
  983. office365/teams/administration/number_source.py +13 -0
  984. office365/teams/administration/number_type.py +15 -0
  985. office365/teams/administration/port_in_status.py +13 -0
  986. office365/teams/administration/reverse_number_lookup_option.py +12 -0
  987. office365/teams/apps/app.py +5 -5
  988. office365/teams/apps/installed_event_message_detail.py +17 -0
  989. office365/teams/apps/removed_event_message_detail.py +17 -0
  990. office365/teams/apps/upgraded_event_message_detail.py +17 -0
  991. office365/teams/archived_event_message_detail.py +16 -0
  992. office365/teams/channels/channel.py +23 -22
  993. office365/teams/channels/collection.py +10 -5
  994. office365/teams/chats/chat.py +36 -27
  995. office365/teams/chats/collection.py +19 -0
  996. office365/teams/chats/messages/body.py +32 -0
  997. office365/teams/chats/messages/collection.py +43 -0
  998. office365/teams/chats/messages/hosted_content.py +27 -0
  999. office365/teams/chats/messages/message.py +68 -3
  1000. office365/teams/class_settings.py +14 -0
  1001. office365/teams/collection.py +89 -14
  1002. office365/teams/created_event_message_detail.py +18 -0
  1003. office365/teams/description_updated_event_message_detail.py +17 -0
  1004. office365/teams/joining_disabled_event_message_detail.py +16 -0
  1005. office365/teams/joining_enabled_event_message_detail.py +16 -0
  1006. office365/teams/licensing_details.py +14 -0
  1007. office365/teams/members/aad_user_conversation.py +4 -4
  1008. office365/teams/members/conversation.py +3 -3
  1009. office365/teams/members/conversation_collection.py +7 -9
  1010. office365/teams/members_notification_recipient.py +14 -0
  1011. office365/teams/operations/async_operation.py +59 -8
  1012. office365/teams/operations/type.py +4 -1
  1013. office365/teams/renamed_event_message_detail.py +17 -0
  1014. office365/teams/schedule/entitytheme.py +23 -0
  1015. office365/teams/schedule/time_card_break.py +19 -0
  1016. office365/teams/schedule/time_card_entry.py +19 -0
  1017. office365/teams/schedule/time_card_event.py +18 -0
  1018. office365/teams/schedule/time_card_state.py +14 -0
  1019. office365/teams/schedule/time_clock_settings.py +15 -0
  1020. office365/teams/schedule/time_off_details.py +15 -0
  1021. office365/teams/schedule/time_off_item.py +14 -0
  1022. office365/teams/schedule/time_off_reason_icon_type.py +32 -0
  1023. office365/teams/tabs/updated_event_message_detail.py +16 -0
  1024. office365/teams/team.py +88 -46
  1025. office365/teams/teamwork/application_identity.py +15 -0
  1026. office365/teams/teamwork/shiftmanagement/user_solution_root.py +4 -0
  1027. office365/teams/teamwork/user.py +6 -8
  1028. office365/teams/teamwork/workforce_integration_encryption_protocol.py +12 -0
  1029. office365/teams/teamwork/workforce_integration_supported_entities.py +22 -0
  1030. office365/teams/unarchived_event_message_detail.py +16 -0
  1031. office365/teams/viva/employee_experience_user.py +5 -3
  1032. office365/todo/attachments/collection.py +78 -3
  1033. office365/todo/attachments/info.py +17 -1
  1034. office365/todo/attachments/session.py +74 -0
  1035. office365/todo/attachments/type.py +14 -2
  1036. office365/todo/linked_resource.py +10 -0
  1037. office365/todo/tasks/collection.py +5 -3
  1038. office365/todo/tasks/lists/collection.py +4 -4
  1039. office365/todo/tasks/lists/list.py +36 -0
  1040. office365/todo/tasks/task.py +95 -8
  1041. office365/todo/todo.py +5 -2
  1042. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/METADATA +13 -3
  1043. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/RECORD +1179 -598
  1044. office365/migration/assessor.py +0 -243
  1045. office365/onedrive/termstore/store_exporter.py +0 -40
  1046. office365/onedrive/termstore/store_importer.py +0 -34
  1047. office365/runtime/csv_writer.py +0 -77
  1048. office365/runtime/odata/member.py +0 -14
  1049. office365/runtime/odata/method.py +0 -19
  1050. office365/runtime/odata/model.py +0 -54
  1051. office365/runtime/odata/parameter.py +0 -19
  1052. office365/runtime/odata/property.py +0 -19
  1053. office365/runtime/odata/query_options_builder.py +0 -38
  1054. office365/runtime/odata/reader.py +0 -99
  1055. office365/runtime/odata/type_information.py +0 -32
  1056. office365/runtime/odata/v3/metadata_reader.py +0 -52
  1057. office365/runtime/odata/v4/metadata_reader.py +0 -28
  1058. office365/runtime/queries/noop.py +0 -17
  1059. office365/runtime/utilities.py +0 -226
  1060. office365/sharepoint/migration/assessment/scanners/base.py +0 -57
  1061. office365/sharepoint/migration/assessment/scanners/list.py +0 -68
  1062. office365/sharepoint/migration/assessment/scanners/site.py +0 -25
  1063. office365/todo/wellknown_list_name.py +0 -2
  1064. /office365/directory/identitygovernance/accessreview/{access_review_history_instance.py → history_instance.py} +0 -0
  1065. /office365/directory/identitygovernance/accessreview/{access_review_instance_decision_item.py → instance_decision_item.py} +0 -0
  1066. /office365/directory/identitygovernance/accessreview/{access_review_reviewer.py → reviewer.py} +0 -0
  1067. /office365/directory/identitygovernance/accessreview/{access_review_schedule_definition.py → schedule_definition.py} +0 -0
  1068. /office365/directory/identitygovernance/{accessreview/access_package_text_input_question.py → entitlementmanagement/accesspackage/text_input_question.py} +0 -0
  1069. /office365/directory/{security/data_security → recovery}/__init__.py +0 -0
  1070. /office365/directory/security/{active_directory_domain_evidence.py → alerts/active_directory_domain_evidence.py} +0 -0
  1071. /office365/directory/security/{azure_resource_evidence.py → alerts/azure_resource_evidence.py} +0 -0
  1072. /office365/{sharepoint/migration → directory/security/audit}/__init__.py +0 -0
  1073. /office365/directory/security/{a365_ai_execute_tool.py → audit/a365_ai_execute_tool.py} +0 -0
  1074. /office365/directory/security/{aad_risk_detection_audit_record.py → audit/aad_risk_detection_audit_record.py} +0 -0
  1075. /office365/directory/security/{ai_app_interaction_audit_record.py → audit/ai_app_interaction_audit_record.py} +0 -0
  1076. /office365/directory/security/{ai_execute_tool_audit_record.py → audit/ai_execute_tool_audit_record.py} +0 -0
  1077. /office365/directory/security/{ai_interactions_change_notification_audit_record.py → audit/ai_interactions_change_notification_audit_record.py} +0 -0
  1078. /office365/directory/security/{ai_interactions_export_audit_record.py → audit/ai_interactions_export_audit_record.py} +0 -0
  1079. /office365/directory/security/{ai_interactions_subscription_audit_record.py → audit/ai_interactions_subscription_audit_record.py} +0 -0
  1080. /office365/directory/security/{ai_invoke_agent_audit_record.py → audit/ai_invoke_agent_audit_record.py} +0 -0
  1081. /office365/directory/security/{ai_span_outputs_audit_record.py → audit/ai_span_outputs_audit_record.py} +0 -0
  1082. /office365/directory/security/{air_manual_investigation_data.py → audit/air_manual_investigation_data.py} +0 -0
  1083. /office365/directory/security/{alert_submission_audit_record.py → audit/alert_submission_audit_record.py} +0 -0
  1084. /office365/directory/security/{alert_submission_result_detail_audit_record.py → audit/alert_submission_result_detail_audit_record.py} +0 -0
  1085. /office365/directory/security/{attack_sim_admin_audit_record.py → audit/attack_sim_admin_audit_record.py} +0 -0
  1086. /office365/directory/security/{attack_sim_audit_record.py → audit/attack_sim_audit_record.py} +0 -0
  1087. /office365/directory/security/{audit_config_audit_record.py → audit/audit_config_audit_record.py} +0 -0
  1088. /office365/directory/security/{audit_record_type_dictionary.py → audit/audit_record_type_dictionary.py} +0 -0
  1089. /office365/directory/security/{audit_search_audit_record.py → audit/audit_search_audit_record.py} +0 -0
  1090. /office365/directory/security/{azfw_application_rule_aggregation_event_record.py → audit/azfw_application_rule_aggregation_event_record.py} +0 -0
  1091. /office365/directory/security/{azfw_dns_query_event_record.py → audit/azfw_dns_query_event_record.py} +0 -0
  1092. /office365/directory/security/{azfw_network_rule_event_record.py → audit/azfw_network_rule_event_record.py} +0 -0
  1093. /office365/directory/security/{azure_active_directory_account_logon_audit_record.py → audit/azure_active_directory_account_logon_audit_record.py} +0 -0
  1094. /office365/directory/security/{azure_active_directory_audit_record.py → audit/azure_active_directory_audit_record.py} +0 -0
  1095. /office365/directory/security/{azure_active_directory_sts_logon_audit_record.py → audit/azure_active_directory_sts_logon_audit_record.py} +0 -0
  1096. /office365/directory/security/{azure_ai_search_audit_record.py → audit/azure_ai_search_audit_record.py} +0 -0
  1097. /office365/directory/security/{campaign_audit_record.py → audit/campaign_audit_record.py} +0 -0
  1098. /office365/directory/security/{ccrai_policy_violation_record.py → audit/ccrai_policy_violation_record.py} +0 -0
  1099. /office365/directory/security/{cdp_classifier_health_record.py → audit/cdp_classifier_health_record.py} +0 -0
  1100. /office365/directory/security/{cdp_cold_crawl_status_record.py → audit/cdp_cold_crawl_status_record.py} +0 -0
  1101. /office365/directory/security/{cdp_consumption_resource_record.py → audit/cdp_consumption_resource_record.py} +0 -0
  1102. /office365/directory/security/{cdp_content_explorer_aggregate_record.py → audit/cdp_content_explorer_aggregate_record.py} +0 -0
  1103. /office365/directory/security/{cdp_dlp_sensitive_endpoint_audit_record.py → audit/cdp_dlp_sensitive_endpoint_audit_record.py} +0 -0
  1104. /office365/directory/security/{cdp_log_record.py → audit/cdp_log_record.py} +0 -0
  1105. /office365/directory/security/{cdp_ocr_billing_record.py → audit/cdp_ocr_billing_record.py} +0 -0
  1106. /office365/directory/security/{cdp_resource_scope_change_event_record.py → audit/cdp_resource_scope_change_event_record.py} +0 -0
  1107. /office365/directory/security/{cdpdlmai_interaction_insights_record.py → audit/cdpdlmai_interaction_insights_record.py} +0 -0
  1108. /office365/directory/security/{cloud_update_device_config_audit_record.py → audit/cloud_update_device_config_audit_record.py} +0 -0
  1109. /office365/directory/security/{cloud_update_profile_config_audit_record.py → audit/cloud_update_profile_config_audit_record.py} +0 -0
  1110. /office365/directory/security/{cloud_update_tenant_config_audit_record.py → audit/cloud_update_tenant_config_audit_record.py} +0 -0
  1111. /office365/directory/security/{compliance_connector_audit_record.py → audit/compliance_connector_audit_record.py} +0 -0
  1112. /office365/directory/security/{compliance_dlm_exchange_audit_record.py → audit/compliance_dlm_exchange_audit_record.py} +0 -0
  1113. /office365/directory/security/{compliance_dlm_share_point_audit_record.py → audit/compliance_dlm_share_point_audit_record.py} +0 -0
  1114. /office365/directory/security/{compliance_dlp_applications_audit_record.py → audit/compliance_dlp_applications_audit_record.py} +0 -0
  1115. /office365/directory/security/{compliance_dlp_applications_classification_audit_record.py → audit/compliance_dlp_applications_classification_audit_record.py} +0 -0
  1116. /office365/directory/security/{compliance_dlp_endpoint_audit_record.py → audit/compliance_dlp_endpoint_audit_record.py} +0 -0
  1117. /office365/directory/security/{compliance_dlp_endpoint_discovery_audit_record.py → audit/compliance_dlp_endpoint_discovery_audit_record.py} +0 -0
  1118. /office365/directory/security/{compliance_dlp_enforcement_audit_record.py → audit/compliance_dlp_enforcement_audit_record.py} +0 -0
  1119. /office365/directory/security/{compliance_dlp_exchange_audit_record.py → audit/compliance_dlp_exchange_audit_record.py} +0 -0
  1120. /office365/directory/security/{compliance_dlp_exchange_classification_audit_record.py → audit/compliance_dlp_exchange_classification_audit_record.py} +0 -0
  1121. /office365/directory/security/{compliance_dlp_exchange_classification_cdp_record.py → audit/compliance_dlp_exchange_classification_cdp_record.py} +0 -0
  1122. /office365/directory/security/{compliance_dlp_exchange_discovery_audit_record.py → audit/compliance_dlp_exchange_discovery_audit_record.py} +0 -0
  1123. /office365/directory/security/{compliance_dlp_share_point_audit_record.py → audit/compliance_dlp_share_point_audit_record.py} +0 -0
  1124. /office365/directory/security/{compliance_dlp_share_point_classification_audit_record.py → audit/compliance_dlp_share_point_classification_audit_record.py} +0 -0
  1125. /office365/directory/security/{compliance_dlp_share_point_classification_cdp_record.py → audit/compliance_dlp_share_point_classification_cdp_record.py} +0 -0
  1126. /office365/directory/security/{compliance_dlp_share_point_classification_extended_audit_record.py → audit/compliance_dlp_share_point_classification_extended_audit_record.py} +0 -0
  1127. /office365/directory/security/{compliance_exchange_ocr_audit_record.py → audit/compliance_exchange_ocr_audit_record.py} +0 -0
  1128. /office365/directory/security/{compliance_manager_action_record.py → audit/compliance_manager_action_record.py} +0 -0
  1129. /office365/directory/security/{compliance_policy_grading_share_point_audit_record.py → audit/compliance_policy_grading_share_point_audit_record.py} +0 -0
  1130. /office365/directory/security/{compliance_settings_change_audit_record.py → audit/compliance_settings_change_audit_record.py} +0 -0
  1131. /office365/directory/security/{compliance_sit_grading_share_point_audit_record.py → audit/compliance_sit_grading_share_point_audit_record.py} +0 -0
  1132. /office365/directory/security/{compliance_supervision_exchange_audit_record.py → audit/compliance_supervision_exchange_audit_record.py} +0 -0
  1133. /office365/directory/security/{connected_ai_app_interaction_audit_record.py → audit/connected_ai_app_interaction_audit_record.py} +0 -0
  1134. /office365/directory/security/{consumption_resource_audit_record.py → audit/consumption_resource_audit_record.py} +0 -0
  1135. /office365/directory/security/{content_store_metadata_record.py → audit/content_store_metadata_record.py} +0 -0
  1136. /office365/directory/security/{copilot_agent_management_audit_record.py → audit/copilot_agent_management_audit_record.py} +0 -0
  1137. /office365/directory/security/{copilot_for_security_logging_audit_record.py → audit/copilot_for_security_logging_audit_record.py} +0 -0
  1138. /office365/directory/security/{copilot_for_security_trigger_audit_record.py → audit/copilot_for_security_trigger_audit_record.py} +0 -0
  1139. /office365/directory/security/{copilot_interaction_audit_record.py → audit/copilot_interaction_audit_record.py} +0 -0
  1140. /office365/directory/security/{copilot_plugin_setting_audit_record.py → audit/copilot_plugin_setting_audit_record.py} +0 -0
  1141. /office365/directory/security/{copilot_prompt_book_setting_audit_record.py → audit/copilot_prompt_book_setting_audit_record.py} +0 -0
  1142. /office365/directory/security/{copilot_session_sharing_audit_record.py → audit/copilot_session_sharing_audit_record.py} +0 -0
  1143. /office365/directory/security/{copilot_setting_audit_record.py → audit/copilot_setting_audit_record.py} +0 -0
  1144. /office365/directory/security/{copilot_workspace_setting_audit_record.py → audit/copilot_workspace_setting_audit_record.py} +0 -0
  1145. /office365/directory/security/{core_reporting_settings_audit_record.py → audit/core_reporting_settings_audit_record.py} +0 -0
  1146. /office365/directory/security/{critical_asset_management_classification_record.py → audit/critical_asset_management_classification_record.py} +0 -0
  1147. /office365/directory/security/{crm_entity_operation_audit_record.py → audit/crm_entity_operation_audit_record.py} +0 -0
  1148. /office365/directory/security/{cross_tenant_access_policy_audit_record.py → audit/cross_tenant_access_policy_audit_record.py} +0 -0
  1149. /office365/directory/security/{device_discovery_settings_authenticated_scans_record.py → audit/device_discovery_settings_authenticated_scans_record.py} +0 -0
  1150. /office365/directory/security/{device_discovery_settings_exclusion_record.py → audit/device_discovery_settings_exclusion_record.py} +0 -0
  1151. /office365/directory/security/{device_discovery_settings_record.py → audit/device_discovery_settings_record.py} +0 -0
  1152. /office365/directory/security/{discovery_audit_record.py → audit/discovery_audit_record.py} +0 -0
  1153. /office365/directory/security/{dlp_endpoint_audit_record.py → audit/dlp_endpoint_audit_record.py} +0 -0
  1154. /office365/directory/security/{dlp_import_result_audit_record.py → audit/dlp_import_result_audit_record.py} +0 -0
  1155. /office365/directory/security/{dragon_copilot_access_record.py → audit/dragon_copilot_access_record.py} +0 -0
  1156. /office365/directory/security/{dragon_copilot_admin_record.py → audit/dragon_copilot_admin_record.py} +0 -0
  1157. /office365/directory/security/{dragon_copilot_clinical_data_record.py → audit/dragon_copilot_clinical_data_record.py} +0 -0
  1158. /office365/directory/security/{dragon_copilot_session_record.py → audit/dragon_copilot_session_record.py} +0 -0
  1159. /office365/directory/security/{dynamics365_business_central_audit_record.py → audit/dynamics365_business_central_audit_record.py} +0 -0
  1160. /office365/directory/security/{ehr_connector_audit_base_record.py → audit/ehr_connector_audit_base_record.py} +0 -0
  1161. /office365/directory/security/{eop_submission_feed_entity_audit_record.py → audit/eop_submission_feed_entity_audit_record.py} +0 -0
  1162. /office365/directory/security/{exchange_admin_audit_record.py → audit/exchange_admin_audit_record.py} +0 -0
  1163. /office365/directory/security/{exchange_aggregated_mailbox_audit_record.py → audit/exchange_aggregated_mailbox_audit_record.py} +0 -0
  1164. /office365/directory/security/{exchange_aggregated_operation_record.py → audit/exchange_aggregated_operation_record.py} +0 -0
  1165. /office365/directory/security/{exchange_mailbox_audit_group_record.py → audit/exchange_mailbox_audit_group_record.py} +0 -0
  1166. /office365/directory/security/{exchange_mailbox_audit_record.py → audit/exchange_mailbox_audit_record.py} +0 -0
  1167. /office365/directory/security/{hosted_rpa_audit_record.py → audit/hosted_rpa_audit_record.py} +0 -0
  1168. /office365/directory/security/{hr_signal_audit_record.py → audit/hr_signal_audit_record.py} +0 -0
  1169. /office365/directory/security/{hygiene_event_record.py → audit/hygiene_event_record.py} +0 -0
  1170. /office365/directory/security/{information_barrier_policy_application_audit_record.py → audit/information_barrier_policy_application_audit_record.py} +0 -0
  1171. /office365/directory/security/{information_worker_protection_audit_record.py → audit/information_worker_protection_audit_record.py} +0 -0
  1172. /office365/directory/security/{insider_risk_scoped_user_insights_record.py → audit/insider_risk_scoped_user_insights_record.py} +0 -0
  1173. /office365/directory/security/{insider_risk_scoped_users_record.py → audit/insider_risk_scoped_users_record.py} +0 -0
  1174. /office365/directory/security/{microsoft_stream_audit_record.py → audit/microsoft_stream_audit_record.py} +0 -0
  1175. /office365/directory/security/{microsoft_teams_admin_audit_record.py → audit/microsoft_teams_admin_audit_record.py} +0 -0
  1176. /office365/directory/security/{microsoft_teams_analytics_audit_record.py → audit/microsoft_teams_analytics_audit_record.py} +0 -0
  1177. /office365/directory/security/{microsoft_teams_audit_record.py → audit/microsoft_teams_audit_record.py} +0 -0
  1178. /office365/directory/security/{microsoft_teams_device_audit_record.py → audit/microsoft_teams_device_audit_record.py} +0 -0
  1179. /office365/directory/security/{microsoft_teams_retention_label_action_audit_record.py → audit/microsoft_teams_retention_label_action_audit_record.py} +0 -0
  1180. /office365/directory/security/{microsoft_teams_sensitivity_label_action_audit_record.py → audit/microsoft_teams_sensitivity_label_action_audit_record.py} +0 -0
  1181. /office365/directory/security/{microsoft_teams_shifts_audit_record.py → audit/microsoft_teams_shifts_audit_record.py} +0 -0
  1182. /office365/directory/security/{microsoft_teams_user_concern_audit_record.py → audit/microsoft_teams_user_concern_audit_record.py} +0 -0
  1183. /office365/directory/security/{whois_history_record.py → audit/whois_history_record.py} +0 -0
  1184. /office365/directory/security/{case.py → cases/case.py} +0 -0
  1185. /office365/{sharepoint/migration/assessment → directory/security/collaboration}/__init__.py +0 -0
  1186. /office365/directory/security/{analyzed_email.py → collaboration/analyzed_email.py} +0 -0
  1187. /office365/directory/security/{analyzed_email_authentication_detail.py → collaboration/analyzed_email_authentication_detail.py} +0 -0
  1188. /office365/directory/security/{analyzed_email_delivery_detail.py → collaboration/analyzed_email_delivery_detail.py} +0 -0
  1189. /office365/directory/security/{analyzed_email_dlp_rule_info.py → collaboration/analyzed_email_dlp_rule_info.py} +0 -0
  1190. /office365/directory/security/{analyzed_email_exchange_transport_rule_info.py → collaboration/analyzed_email_exchange_transport_rule_info.py} +0 -0
  1191. /office365/directory/security/{analyzed_email_recipient_detail.py → collaboration/analyzed_email_recipient_detail.py} +0 -0
  1192. /office365/directory/security/{analyzed_email_sender_detail.py → collaboration/analyzed_email_sender_detail.py} +0 -0
  1193. /office365/directory/security/{analyzed_email_url.py → collaboration/analyzed_email_url.py} +0 -0
  1194. /office365/{sharepoint/migration/assessment/scanners → directory/security/datasecurity}/__init__.py +0 -0
  1195. /office365/directory/security/{data_security → datasecurity}/sensitivity_label.py +0 -0
  1196. /office365/directory/security/{host_logon_session_evidence.py → threatintelligence/host_logon_session_evidence.py} +0 -0
  1197. /office365/directory/security/{host_reputation.py → threatintelligence/host_reputation.py} +0 -0
  1198. /office365/directory/security/{hostname.py → threatintelligence/hostname.py} +0 -0
  1199. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/WHEEL +0 -0
office365/reports/root.py CHANGED
@@ -4,8 +4,14 @@ from typing import Optional, Union
4
4
  from office365.directory.authentication.methods.root import AuthenticationMethodsRoot
5
5
  from office365.directory.permissions.require_permission import require_permission
6
6
  from office365.entity import Entity
7
+ from office365.entity_collection import EntityCollection
7
8
  from office365.partners.partners import Partners
8
- from office365.reports.internal.queries.create_report_query import create_report_query
9
+ from office365.reports.internal.queries.create_report_query import (
10
+ create_report_query,
11
+ create_report_stream_query,
12
+ )
13
+ from office365.reports.print_usage_by_printer import PrintUsageByPrinter
14
+ from office365.reports.print_usage_by_user import PrintUsageByUser
9
15
  from office365.reports.report import Report
10
16
  from office365.reports.security.root import SecurityReportsRoot
11
17
  from office365.runtime.client_result import ClientResult
@@ -84,9 +90,7 @@ class ReportRoot(Entity):
84
90
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
85
91
  the number of days over which the report is aggregated. Required.
86
92
  """
87
- qry = create_report_query(self, "getEmailActivityUserCounts", period)
88
- self.context.add_query(qry)
89
- return qry.return_type
93
+ return create_report_query(self, "getEmailActivityUserCounts", period)
90
94
 
91
95
  def get_email_activity_user_detail(self, period: str) -> ClientResult[bytes]:
92
96
  """Get details about email activity users have performed.
@@ -96,10 +100,7 @@ class ReportRoot(Entity):
96
100
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
97
101
  the number of days over which the report is aggregated. Required.
98
102
  """
99
- qry = create_report_query(self, "getEmailActivityUserDetail", period, return_stream=True)
100
- self.context.add_query(qry)
101
- assert qry.return_type is not None
102
- return qry.return_type # type: ignore[return-type]
103
+ return create_report_stream_query(self, "getEmailActivityUserDetail", period)
103
104
 
104
105
  def get_email_app_usage_apps_user_counts(self, period: str) -> ClientResult[Report]:
105
106
  """Get the count of unique users per email app.
@@ -109,10 +110,7 @@ class ReportRoot(Entity):
109
110
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
110
111
  the number of days over which the report is aggregated. Required.
111
112
  """
112
- qry = create_report_query(self, "getEmailAppUsageAppsUserCounts", period)
113
- self.context.add_query(qry)
114
- assert qry.return_type is not None
115
- return qry.return_type # type: ignore[return-type]
113
+ return create_report_query(self, "getEmailAppUsageAppsUserCounts", period)
116
114
 
117
115
  def get_email_app_usage_user_counts(self, period) -> ClientResult[bytes]:
118
116
  """Get the count of unique users that connected to Exchange Online using any email app.
@@ -122,12 +120,8 @@ class ReportRoot(Entity):
122
120
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
123
121
  the number of days over which the report is aggregated. Required.
124
122
  """
125
- qry = create_report_query(self, "getEmailAppUsageUserCounts", period, True)
126
- self.context.add_query(qry)
127
- assert qry.return_type is not None
128
- return qry.return_type # type: ignore[return-type]
123
+ return create_report_stream_query(self, "getEmailAppUsageUserCounts", period)
129
124
 
130
- ###
131
125
  def get_email_app_usage_user_detail(self, period: str) -> ClientResult[bytes]:
132
126
  """Get details about which activities users performed on the various email apps.
133
127
 
@@ -136,10 +130,7 @@ class ReportRoot(Entity):
136
130
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
137
131
  the number of days over which the report is aggregated. Required.
138
132
  """
139
- qry = create_report_query(self, "getEmailAppUsageUserDetail", period, True)
140
- self.context.add_query(qry)
141
- assert qry.return_type is not None
142
- return qry.return_type # type: ignore[return-type]
133
+ return create_report_stream_query(self, "getEmailAppUsageUserDetail", period)
143
134
 
144
135
  def get_mailbox_usage_storage(self, period: str) -> ClientResult[bytes]:
145
136
  """Get the amount of storage used in your organization.
@@ -149,10 +140,7 @@ class ReportRoot(Entity):
149
140
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
150
141
  the number of days over which the report is aggregated. Required.
151
142
  """
152
- qry = create_report_query(self, "getMailboxUsageStorage", period, True)
153
- self.context.add_query(qry)
154
- assert qry.return_type is not None
155
- return qry.return_type # type: ignore[return-type]
143
+ return create_report_stream_query(self, "getMailboxUsageStorage", period)
156
144
 
157
145
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
158
146
  def get_m365_app_user_counts(self, period: Optional[str] = None) -> ClientResult[bytes]:
@@ -177,16 +165,11 @@ class ReportRoot(Entity):
177
165
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
178
166
  def get_office365_activation_counts(self):
179
167
  """Get the count of Microsoft 365 activations on desktops and devices."""
180
- qry = create_report_query(self, "getOffice365ActivationCounts")
181
- self.context.add_query(qry)
182
- return qry.return_type
168
+ return create_report_query(self, "getOffice365ActivationCounts")
183
169
 
184
170
  def get_office365_activations_user_counts(self) -> ClientResult[Report]:
185
171
  """Get the count of Microsoft 365 activations on desktops and devices."""
186
- qry = create_report_query(self, "getOffice365ActivationsUserCounts")
187
- self.context.add_query(qry)
188
- assert qry.return_type is not None
189
- return qry.return_type # type: ignore[return-type]
172
+ return create_report_query(self, "getOffice365ActivationsUserCounts")
190
173
 
191
174
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
192
175
  def get_onedrive_activity_file_counts(self, period: str) -> ClientResult[Report]:
@@ -197,10 +180,7 @@ class ReportRoot(Entity):
197
180
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
198
181
  the number of days over which the report is aggregated. Required.
199
182
  """
200
- qry = create_report_query(self, "getOneDriveActivityFileCounts", period)
201
- self.context.add_query(qry)
202
- assert qry.return_type is not None
203
- return qry.return_type # type: ignore[return-type]
183
+ return create_report_query(self, "getOneDriveActivityFileCounts", period)
204
184
 
205
185
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
206
186
  def get_onedrive_activity_user_counts(self, period: str) -> ClientResult[Report]:
@@ -211,10 +191,7 @@ class ReportRoot(Entity):
211
191
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
212
192
  the number of days over which the report is aggregated. Required.
213
193
  """
214
- qry = create_report_query(self, "getOneDriveActivityUserCounts", period)
215
- self.context.add_query(qry)
216
- assert qry.return_type is not None
217
- return qry.return_type # type: ignore[return-type]
194
+ return create_report_query(self, "getOneDriveActivityUserCounts", period)
218
195
 
219
196
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
220
197
  def get_onedrive_activity_user_detail(self, period: str):
@@ -225,9 +202,7 @@ class ReportRoot(Entity):
225
202
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
226
203
  the number of days over which the report is aggregated. Required.
227
204
  """
228
- qry = create_report_query(self, "getOneDriveActivityUserDetail", period)
229
- self.context.add_query(qry)
230
- return qry.return_type
205
+ return create_report_query(self, "getOneDriveActivityUserDetail", period)
231
206
 
232
207
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
233
208
  def get_onedrive_usage_file_counts(self, period: str) -> ClientResult[Report]:
@@ -239,10 +214,7 @@ class ReportRoot(Entity):
239
214
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
240
215
  the number of days over which the report is aggregated. Required.
241
216
  """
242
- qry = create_report_query(self, "getOneDriveUsageFileCounts", period)
243
- self.context.add_query(qry)
244
- assert qry.return_type is not None
245
- return qry.return_type # type: ignore[return-type]
217
+ return create_report_query(self, "getOneDriveUsageFileCounts", period)
246
218
 
247
219
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
248
220
  def get_onedrive_usage_storage(self, period) -> ClientResult[bytes]:
@@ -253,9 +225,7 @@ class ReportRoot(Entity):
253
225
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
254
226
  the number of days over which the report is aggregated. Required.
255
227
  """
256
- qry = create_report_query(self, "getOneDriveUsageStorage", period)
257
- self.context.add_query(qry)
258
- return qry.return_type # type: ignore[return-type]
228
+ return create_report_stream_query(self, "getOneDriveUsageStorage", period)
259
229
 
260
230
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
261
231
  def get_mailbox_usage_detail(self, period) -> ClientResult[Report]:
@@ -266,9 +236,7 @@ class ReportRoot(Entity):
266
236
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
267
237
  the number of days over which the report is aggregated. Required.
268
238
  """
269
- qry = create_report_query(self, "getMailboxUsageDetail", period)
270
- self.context.add_query(qry)
271
- return qry.return_type # type: ignore[return-type]
239
+ return create_report_query(self, "getMailboxUsageDetail", period)
272
240
 
273
241
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
274
242
  def get_mailbox_usage_mailbox_counts(self, period: str) -> ClientResult[bytes]:
@@ -280,10 +248,7 @@ class ReportRoot(Entity):
280
248
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
281
249
  the number of days over which the report is aggregated. Required.
282
250
  """
283
- qry = create_report_query(self, "getMailboxUsageMailboxCounts", period, True)
284
- self.context.add_query(qry)
285
- assert qry.return_type is not None
286
- return qry.return_type # type: ignore[return-type]
251
+ return create_report_stream_query(self, "getMailboxUsageMailboxCounts", period)
287
252
 
288
253
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
289
254
  def get_mailbox_usage_quota_status_mailbox_counts(self, period: str):
@@ -292,9 +257,7 @@ class ReportRoot(Entity):
292
257
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
293
258
  the number of days over which the report is aggregated. Required.
294
259
  """
295
- qry = create_report_query(self, "getMailboxUsageQuotaStatusMailboxCounts", period)
296
- self.context.add_query(qry)
297
- return qry.return_type
260
+ return create_report_query(self, "getMailboxUsageQuotaStatusMailboxCounts", period)
298
261
 
299
262
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
300
263
  def get_sharepoint_activity_pages(self, period: str):
@@ -305,9 +268,7 @@ class ReportRoot(Entity):
305
268
  for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
306
269
  the number of days over which the report is aggregated. Required.
307
270
  """
308
- qry = create_report_query(self, "getSharePointActivityPages", period)
309
- self.context.add_query(qry)
310
- return qry.return_type
271
+ return create_report_query(self, "getSharePointActivityPages", period)
311
272
 
312
273
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
313
274
  def get_teams_user_activity_user_counts(self, period: str) -> ClientResult[Report]:
@@ -317,10 +278,7 @@ class ReportRoot(Entity):
317
278
  Args:
318
279
  period (str): Specifies the length of time over which the report is aggregated.
319
280
  """
320
- qry = create_report_query(self, "getTeamsUserActivityUserCounts", period)
321
- self.context.add_query(qry)
322
- assert qry.return_type is not None
323
- return qry.return_type # type: ignore[return-type]
281
+ return create_report_query(self, "getTeamsUserActivityUserCounts", period)
324
282
 
325
283
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
326
284
  def get_sharepoint_activity_user_counts(self, period: str):
@@ -332,9 +290,7 @@ class ReportRoot(Entity):
332
290
  The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
333
291
  format Dn where n represents the number of days over which the report is aggregated. Required.
334
292
  """
335
- qry = create_report_query(self, "getSharePointActivityUserCounts", period)
336
- self.context.add_query(qry)
337
- return qry.return_type
293
+ return create_report_query(self, "getSharePointActivityUserCounts", period)
338
294
 
339
295
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
340
296
  def get_sharepoint_activity_user_detail(self, period: str):
@@ -345,9 +301,7 @@ class ReportRoot(Entity):
345
301
  The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
346
302
  format Dn where n represents the number of days over which the report is aggregated. Required.
347
303
  """
348
- qry = create_report_query(self, "getSharePointActivityUserDetail", period)
349
- self.context.add_query(qry)
350
- return qry.return_type
304
+ return create_report_query(self, "getSharePointActivityUserDetail", period)
351
305
 
352
306
  def get_sharepoint_site_usage_detail(self, period: str) -> ClientResult[Report]:
353
307
  """Get details about SharePoint site usage.
@@ -357,10 +311,7 @@ class ReportRoot(Entity):
357
311
  The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the format
358
312
  Dn where n represents the number of days over which the report is aggregated. Required.
359
313
  """
360
- qry = create_report_query(self, "getSharePointSiteUsageDetail", period)
361
- self.context.add_query(qry)
362
- assert qry.return_type is not None
363
- return qry.return_type # type: ignore[return-type]
314
+ return create_report_query(self, "getSharePointSiteUsageDetail", period)
364
315
 
365
316
  def get_sharepoint_site_usage_site_counts(self, period: str) -> ClientResult[Report]:
366
317
  """Get the trend of total and active site count during the reporting period.
@@ -370,10 +321,7 @@ class ReportRoot(Entity):
370
321
  The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the format
371
322
  Dn where n represents the number of days over which the report is aggregated. Required.
372
323
  """
373
- qry = create_report_query(self, "getSharePointSiteUsageSiteCounts", period)
374
- self.context.add_query(qry)
375
- assert qry.return_type is not None
376
- return qry.return_type # type: ignore[return-type]
324
+ return create_report_query(self, "getSharePointSiteUsageSiteCounts", period)
377
325
 
378
326
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
379
327
  def get_teams_team_counts(self, period: str) -> ClientResult[bytes]:
@@ -384,10 +332,7 @@ class ReportRoot(Entity):
384
332
  The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
385
333
  format Dn where n represents the number of days over which the report is aggregated. Required.
386
334
  """
387
- qry = create_report_query(self, "getTeamsTeamCounts", period, return_stream=True)
388
- self.context.add_query(qry)
389
- assert qry.return_type is not None
390
- return qry.return_type # type: ignore[return-type]
335
+ return create_report_stream_query(self, "getTeamsTeamCounts", period)
391
336
 
392
337
  @require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
393
338
  def get_teams_user_activity_counts(self, period: str) -> ClientResult[bytes]:
@@ -395,10 +340,7 @@ class ReportRoot(Entity):
395
340
  Get the number of Microsoft Teams activities by activity type.
396
341
  The activities are performed by Microsoft Teams licensed users.
397
342
  """
398
- qry = create_report_query(self, "getTeamsUserActivityCounts", period, return_stream=True)
399
- self.context.add_query(qry)
400
- assert qry.return_type is not None
401
- return qry.return_type # type: ignore[return-type]
343
+ return create_report_stream_query(self, "getTeamsUserActivityCounts", period)
402
344
 
403
345
  @odata(name="authenticationMethods")
404
346
  @property
@@ -412,15 +354,55 @@ class ReportRoot(Entity):
412
354
  @property
413
355
  def partners(self) -> Partners:
414
356
  """Represents billing details for a Microsoft direct partner."""
415
- return self.properties.get(
416
- "partners",
417
- Partners(self.context, ResourcePath("partners", self.resource_path)),
418
- )
357
+ return self.properties.get("partners", Partners(self.context, ResourcePath("partners", self.resource_path)))
419
358
 
420
359
  @property
421
360
  def security(self) -> SecurityReportsRoot:
422
361
  """Container for navigation properties for Azure AD authentication methods resources."""
423
362
  return self.properties.get(
424
- "security",
425
- SecurityReportsRoot(self.context, ResourcePath("security", self.resource_path)),
363
+ "security", SecurityReportsRoot(self.context, ResourcePath("security", self.resource_path))
364
+ )
365
+
366
+ @property
367
+ def daily_print_usage_by_printer(self) -> EntityCollection[PrintUsageByPrinter]:
368
+ """Gets the dailyPrintUsageByPrinter property"""
369
+ return self.properties.get(
370
+ "dailyPrintUsageByPrinter",
371
+ EntityCollection[PrintUsageByPrinter](
372
+ self.context, PrintUsageByPrinter, ResourcePath("dailyPrintUsageByPrinter", self.resource_path)
373
+ ),
374
+ )
375
+
376
+ @property
377
+ def daily_print_usage_by_user(self) -> EntityCollection[PrintUsageByUser]:
378
+ """Gets the dailyPrintUsageByUser property"""
379
+ return self.properties.get(
380
+ "dailyPrintUsageByUser",
381
+ EntityCollection[PrintUsageByUser](
382
+ self.context, PrintUsageByUser, ResourcePath("dailyPrintUsageByUser", self.resource_path)
383
+ ),
384
+ )
385
+
386
+ @property
387
+ def monthly_print_usage_by_printer(self) -> EntityCollection[PrintUsageByPrinter]:
388
+ """Gets the monthlyPrintUsageByPrinter property"""
389
+ return self.properties.get(
390
+ "monthlyPrintUsageByPrinter",
391
+ EntityCollection[PrintUsageByPrinter](
392
+ self.context, PrintUsageByPrinter, ResourcePath("monthlyPrintUsageByPrinter", self.resource_path)
393
+ ),
426
394
  )
395
+
396
+ @property
397
+ def monthly_print_usage_by_user(self) -> EntityCollection[PrintUsageByUser]:
398
+ """Gets the monthlyPrintUsageByUser property"""
399
+ return self.properties.get(
400
+ "monthlyPrintUsageByUser",
401
+ EntityCollection[PrintUsageByUser](
402
+ self.context, PrintUsageByUser, ResourcePath("monthlyPrintUsageByUser", self.resource_path)
403
+ ),
404
+ )
405
+
406
+ @property
407
+ def entity_type_name(self) -> str:
408
+ return "microsoft.graph.ReportRoot"
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  import sys
5
+ import threading
5
6
  from datetime import datetime, timedelta, timezone
6
7
  from typing import Any, Callable, Dict, List, Union
7
8
 
@@ -14,8 +15,9 @@ from office365.runtime.auth.providers.cookie_provider import CookieAuthProvider
14
15
  from office365.runtime.auth.providers.saml_token_provider import SamlTokenProvider
15
16
  from office365.runtime.auth.token_response import TokenResponse
16
17
  from office365.runtime.auth.user_credential import UserCredential
18
+ from office365.runtime.decorators import deprecated
17
19
  from office365.runtime.http.request_options import RequestOptions
18
- from office365.runtime.utilities import deprecated, get_absolute_url
20
+ from office365.runtime.http.url import get_absolute_url
19
21
 
20
22
 
21
23
  def _get_authorization_header(token: Any) -> str:
@@ -31,6 +33,7 @@ class AuthenticationContext:
31
33
  environment: AzureEnvironment = AzureEnvironment.Global,
32
34
  allow_ntlm: bool = False,
33
35
  browser_mode: bool = False,
36
+ authority: str | None = None,
34
37
  ):
35
38
  """
36
39
  Initialize authentication context
@@ -40,14 +43,35 @@ class AuthenticationContext:
40
43
  environment: Office 365 Cloud Environment endpoint (default: AzureEnvironment.Global)
41
44
  allow_ntlm: Whether NTLM authentication is enabled (default: False)
42
45
  browser_mode: Enable browser authentication (default: False)
46
+ authority: Override the MSAL authority URL, e.g. for Entra External ID (CIAM):
47
+ https://<tenant>.ciamlogin.com
43
48
  """
44
49
  self.url = url.rstrip("/")
45
50
  self._authenticate = None
46
51
  self._cached_token = None
47
52
  self._environment = environment
53
+ self._lock = threading.RLock()
48
54
  self._allow_ntlm = allow_ntlm
49
55
  self._browser_mode = browser_mode
50
56
  self._token_expires = datetime.max.replace(tzinfo=timezone.utc)
57
+ self._authority = authority
58
+
59
+ def _get_authority_url(self, tenant: str) -> str:
60
+ """MSAL authority URL, overridable for Entra External ID (CIAM) tenants."""
61
+ if self._authority is not None:
62
+ return self._authority
63
+ return f"{get_login_authority(self._environment)}/{tenant}"
64
+
65
+ def with_authority(self, authority: str) -> Self:
66
+ """Override the MSAL authority URL, e.g. for Entra External ID (CIAM) tenants:
67
+
68
+ https://<tenant>.ciamlogin.com
69
+
70
+ Args:
71
+ authority: Full authority URL used by all subsequent token acquisitions
72
+ """
73
+ self._authority = authority
74
+ return self
51
75
 
52
76
  def with_client_secret(
53
77
  self,
@@ -72,7 +96,7 @@ class AuthenticationContext:
72
96
  scopes = [f"{resource}/.default"]
73
97
 
74
98
  def _acquire_token():
75
- authority_url = f"{get_login_authority(self._environment)}/{tenant}"
99
+ authority_url = self._get_authority_url(tenant)
76
100
  import msal
77
101
 
78
102
  app = msal.ConfidentialClientApplication(
@@ -121,7 +145,7 @@ class AuthenticationContext:
121
145
  private_key = f.read()
122
146
 
123
147
  def _acquire_token():
124
- authority_url = f"{get_login_authority(self._environment)}/{tenant}"
148
+ authority_url = self._get_authority_url(tenant)
125
149
  credentials = {
126
150
  "thumbprint": thumbprint,
127
151
  "private_key": private_key,
@@ -161,7 +185,7 @@ class AuthenticationContext:
161
185
 
162
186
  app = msal.PublicClientApplication(
163
187
  client_id,
164
- authority=f"{get_login_authority(self._environment)}/{tenant}",
188
+ authority=self._get_authority_url(tenant),
165
189
  client_credential=None,
166
190
  )
167
191
  result = app.acquire_token_interactive(scopes=scopes)
@@ -191,7 +215,7 @@ class AuthenticationContext:
191
215
 
192
216
  app = msal.PublicClientApplication(
193
217
  client_id,
194
- authority=f"{get_login_authority(self._environment)}/{tenant}",
218
+ authority=self._get_authority_url(tenant),
195
219
  client_credential=None,
196
220
  )
197
221
 
@@ -223,15 +247,17 @@ class AuthenticationContext:
223
247
  request_time = datetime.now(timezone.utc)
224
248
 
225
249
  if self._cached_token is None or request_time > self._token_expires:
226
- token_res = token_func()
227
- if isinstance(token_res, TokenResponse):
228
- self._cached_token = token_res
229
- else:
230
- self._cached_token = TokenResponse.from_json(token_res)
231
-
232
- if hasattr(self._cached_token, "expiresIn"): # type: ignore[reportAttributeAccessIssue]
233
- expires_in = self._cached_token.expiresIn # type: ignore[reportAttributeAccessIssue]
234
- self._token_expires = request_time + timedelta(seconds=int(expires_in))
250
+ with self._lock:
251
+ if self._cached_token is None or request_time > self._token_expires:
252
+ token_res = token_func()
253
+ if isinstance(token_res, TokenResponse):
254
+ self._cached_token = token_res
255
+ else:
256
+ self._cached_token = TokenResponse.from_json(token_res)
257
+
258
+ if hasattr(self._cached_token, "expiresIn"): # type: ignore[reportAttributeAccessIssue]
259
+ expires_in = self._cached_token.expiresIn # type: ignore[reportAttributeAccessIssue]
260
+ self._token_expires = request_time + timedelta(seconds=int(expires_in))
235
261
  request.set_header("Authorization", _get_authorization_header(self._cached_token))
236
262
 
237
263
  self._authenticate = _authenticate
@@ -271,7 +297,7 @@ class AuthenticationContext:
271
297
  """
272
298
  import msal
273
299
 
274
- authority_url = f"{get_login_authority(self._environment)}/{tenant}"
300
+ authority_url = self._get_authority_url(tenant)
275
301
 
276
302
  app = msal.PublicClientApplication(
277
303
  authority=authority_url,
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import sys
4
+ import threading
4
5
  from typing import Any, Callable, Dict, List, Optional
5
6
 
6
7
  from typing_extensions import Self
@@ -22,11 +23,14 @@ class AuthenticationContext:
22
23
  scopes: List[str] | None = None,
23
24
  token_cache: Any = None,
24
25
  environment: AzureEnvironment = AzureEnvironment.Global,
26
+ authority: str | None = None,
25
27
  ):
26
28
  """Args:
27
29
  tenant (str): Tenant name, for example: contoso.onmicrosoft.com
28
30
  scopes (list[str] or None): Scopes requested to access an API
29
31
  token_cache (Any): Default cache is in memory only, Refer https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
32
+ authority (str or None): Override the MSAL authority URL, e.g. for Entra External ID (CIAM):
33
+ https://<tenant>.ciamlogin.com
30
34
  """
31
35
  self._tenant = tenant
32
36
  if scopes is None:
@@ -36,12 +40,15 @@ class AuthenticationContext:
36
40
  self._token_callback = None
37
41
  self._environment = environment
38
42
  self._client_id: str | None = None
43
+ self._authority = authority
44
+ self._lock = threading.Lock()
39
45
 
40
46
  def acquire_token(self) -> TokenResponse:
41
- """Acquire access token"""
47
+ """Acquire access token (single-flight under concurrent batches)."""
42
48
  if not self._token_callback:
43
49
  raise ValueError("Token callback is not set.")
44
- token_resp = self._token_callback()
50
+ with self._lock:
51
+ token_resp = self._token_callback()
45
52
  token = TokenResponse.from_json(token_resp)
46
53
  return token
47
54
 
@@ -196,4 +203,17 @@ class AuthenticationContext:
196
203
 
197
204
  @property
198
205
  def authority_url(self) -> str:
206
+ if self._authority is not None:
207
+ return self._authority
199
208
  return f"{get_login_authority(self._environment)}/{self._tenant}"
209
+
210
+ def with_authority(self, authority: str) -> Self:
211
+ """Override the MSAL authority URL, e.g. for Entra External ID (CIAM) tenants:
212
+
213
+ https://<tenant>.ciamlogin.com
214
+
215
+ Args:
216
+ authority: Full authority URL used by all subsequent token acquisitions
217
+ """
218
+ self._authority = authority
219
+ return self
@@ -1,6 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import threading
3
4
  from typing import Optional
5
+ from urllib.parse import urlparse
4
6
 
5
7
  import requests
6
8
 
@@ -9,7 +11,6 @@ from office365.runtime.auth.authentication_provider import AuthenticationProvide
9
11
  from office365.runtime.auth.client_credential import ClientCredential
10
12
  from office365.runtime.auth.token_response import TokenResponse
11
13
  from office365.runtime.http.request_options import RequestOptions
12
- from office365.runtime.utilities import urlparse
13
14
 
14
15
 
15
16
  class ACSTokenProvider(AuthenticationProvider):
@@ -36,11 +37,14 @@ class ACSTokenProvider(AuthenticationProvider):
36
37
  self._credential = credential
37
38
  self._cached_token: Optional[TokenResponse] = None
38
39
  self._environment = environment
40
+ self._lock = threading.Lock()
39
41
 
40
42
  def authenticate_request(self, request: RequestOptions) -> None:
41
43
  """Authenticate the request with an access token."""
42
44
  if self._cached_token is None:
43
- self._cached_token = self.get_app_only_access_token()
45
+ with self._lock:
46
+ if self._cached_token is None:
47
+ self._cached_token = self.get_app_only_access_token()
44
48
  request.set_header("Authorization", self._cached_token.authorization_header)
45
49
 
46
50
  def get_app_only_access_token(self) -> TokenResponse:
@@ -1,3 +1,4 @@
1
+ import threading
1
2
  from datetime import datetime, timedelta, timezone
2
3
  from typing import Callable, Dict, Optional, Union
3
4
 
@@ -23,6 +24,7 @@ class CookieAuthProvider(AuthenticationProvider):
23
24
  self._ttl_seconds = ttl_seconds
24
25
  self._cached_auth_cookies: Optional[AuthCookies] = None
25
26
  self._acquired_at: Optional[datetime] = None
27
+ self._lock = threading.Lock()
26
28
 
27
29
  def refresh(self) -> None:
28
30
  """Clears the cached cookies so that the next request reacquires them."""
@@ -60,9 +62,11 @@ class CookieAuthProvider(AuthenticationProvider):
60
62
  def _ensure_cookies_cached(self) -> None:
61
63
  now_utc = datetime.now(timezone.utc)
62
64
  if self._is_expired(now_utc):
63
- cookies = self._acquire_from_source()
64
- self._cached_auth_cookies = cookies
65
- self._acquired_at = now_utc
65
+ with self._lock:
66
+ if self._is_expired(now_utc):
67
+ cookies = self._acquire_from_source()
68
+ self._cached_auth_cookies = cookies
69
+ self._acquired_at = now_utc
66
70
 
67
71
  def authenticate_request(self, request) -> None:
68
72
  """Sets the Cookie header using cached or freshly acquired cookies."""
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import threading
2
3
  import uuid
3
4
  from datetime import datetime, timezone
4
5
  from typing import Dict, Optional
@@ -60,6 +61,7 @@ class SamlTokenProvider(AuthenticationProvider, office365.logger.LoggerContext):
60
61
  self.error = ""
61
62
  self._credential = credential
62
63
  self._cached_auth_cookies: Optional[AuthCookies] = None
64
+ self._lock = threading.Lock()
63
65
  self.__ns_prefixes = {
64
66
  "S": "{http://www.w3.org/2003/05/soap-envelope}",
65
67
  "s": "{http://www.w3.org/2003/05/soap-envelope}",
@@ -84,8 +86,10 @@ class SamlTokenProvider(AuthenticationProvider, office365.logger.LoggerContext):
84
86
 
85
87
  request_time = datetime.now(timezone.utc)
86
88
  if self._cached_auth_cookies is None or request_time >= self._sts_profile.expires:
87
- self._sts_profile.reset()
88
- self._cached_auth_cookies = self.get_authentication_cookie()
89
+ with self._lock:
90
+ if self._cached_auth_cookies is None or request_time >= self._sts_profile.expires:
91
+ self._sts_profile.reset()
92
+ self._cached_auth_cookies = self.get_authentication_cookie()
89
93
  logger.debug_secrets(self._cached_auth_cookies) # type: ignore[reportAttributeAccessIssue]
90
94
  request.set_header("Cookie", self._cached_auth_cookies.cookie_header)
91
95
 
@@ -1,7 +1,7 @@
1
1
  from datetime import datetime, timedelta, timezone
2
+ from urllib.parse import urlparse
2
3
 
3
4
  from office365.azure_env import AzureEnvironment, get_login_authority
4
- from office365.runtime.utilities import urlparse
5
5
 
6
6
 
7
7
  class STSProfile: