Office365-REST-Python-Client 3.3.0__py3-none-any.whl → 3.3.1__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 (4811) hide show
  1. office365/admin/admin.py +9 -3
  2. office365/admin/baseline_parameter.py +0 -3
  3. office365/admin/baseline_resource.py +1 -2
  4. office365/admin/browser_shared_cookie.py +18 -25
  5. office365/admin/browser_site.py +20 -29
  6. office365/admin/browser_site_list.py +13 -8
  7. office365/admin/configuration_management.py +6 -0
  8. office365/admin/edge/edge.py +2 -0
  9. office365/admin/exchange/admin.py +3 -0
  10. office365/admin/exchange/exchange_message_trace.py +12 -10
  11. office365/admin/exchange/exchange_message_trace_detail.py +7 -0
  12. office365/admin/internet_explorer_mode.py +2 -0
  13. office365/admin/message_tracing_root.py +2 -0
  14. office365/admin/microsoft365/apps.py +2 -0
  15. office365/admin/microsoft365/m365_apps_installation_options.py +11 -23
  16. office365/admin/people/insights_settings.py +3 -0
  17. office365/admin/people/profile_property_setting.py +4 -0
  18. office365/admin/people/profile_source.py +8 -10
  19. office365/admin/people/pronouns_settings.py +2 -0
  20. office365/admin/people/settings.py +5 -1
  21. office365/admin/report_settings.py +2 -0
  22. office365/admin/sharepoint/idle_session_signout.py +0 -3
  23. office365/admin/sharepoint/settings.py +25 -6
  24. office365/admin/sharepoint/sharepoint.py +2 -0
  25. office365/backuprestore/artifact_query.py +0 -3
  26. office365/backuprestore/backup_count_statistics.py +22 -0
  27. office365/backuprestore/backup_policy_report.py +16 -0
  28. office365/backuprestore/backup_report.py +9 -0
  29. office365/backuprestore/browse_session_base.py +15 -10
  30. office365/backuprestore/email_notifications_setting.py +7 -15
  31. office365/backuprestore/onedrive_for_business_browse_session.py +2 -0
  32. office365/backuprestore/onedrive_for_business_restore_session.py +4 -0
  33. office365/backuprestore/protection_unit_base.py +24 -17
  34. office365/backuprestore/restorepoints/collection.py +5 -0
  35. office365/backuprestore/restorepoints/search_response.py +1 -2
  36. office365/backuprestore/restorepoints/search_result.py +0 -2
  37. office365/backuprestore/restoresessions/artifact_count.py +0 -3
  38. office365/backuprestore/restoresessions/browse_query_response_item.py +0 -3
  39. office365/backuprestore/restoresessions/browser_shared_cookie_history.py +1 -2
  40. office365/backuprestore/root.py +34 -2
  41. office365/backuprestore/serviceapps/service_app.py +20 -12
  42. office365/backuprestore/sharepoint_browse_session.py +2 -0
  43. office365/backuprestore/sharepoint_protection_policy.py +4 -0
  44. office365/backuprestore/sharepoint_restore_session.py +4 -0
  45. office365/backuprestore/time_period.py +1 -2
  46. office365/booking/appointment.py +40 -25
  47. office365/booking/assigned_place_mode.py +0 -3
  48. office365/booking/availability.py +1 -2
  49. office365/booking/availabilityitem.py +1 -2
  50. office365/booking/availabilitywindow.py +0 -2
  51. office365/{common → booking}/building.py +8 -8
  52. office365/{common → booking}/building_map.py +4 -0
  53. office365/booking/business/business.py +32 -12
  54. office365/booking/business/import_building_map_setting.py +0 -3
  55. office365/booking/chedulingpolicy.py +1 -2
  56. office365/booking/currency.py +2 -0
  57. office365/booking/custom_question.py +8 -6
  58. office365/booking/customer.py +10 -9
  59. office365/booking/customers/information.py +1 -2
  60. office365/booking/customers/informationbase.py +0 -3
  61. office365/booking/drop_in_place_mode.py +0 -3
  62. office365/booking/mailbox_details.py +0 -3
  63. office365/booking/pagesettings.py +0 -3
  64. office365/booking/phone.py +0 -3
  65. office365/booking/place_mode.py +0 -3
  66. office365/booking/place_service_plan_info.py +0 -3
  67. office365/booking/questionanswer.py +0 -3
  68. office365/booking/questionassignment.py +0 -3
  69. office365/booking/reminder.py +0 -2
  70. office365/booking/reservable_place_mode.py +0 -3
  71. office365/booking/service.py +32 -19
  72. office365/booking/solutions/root.py +25 -4
  73. office365/booking/staff/availability_item.py +1 -2
  74. office365/booking/staff/member.py +16 -12
  75. office365/booking/unavailable_place_mode.py +0 -3
  76. office365/booking/work_hours.py +1 -2
  77. office365/booking/work_time_slot.py +0 -3
  78. office365/capabilities.py +144 -0
  79. office365/common/agent_identity.py +5 -0
  80. office365/common/agent_identity_blueprint.py +3 -0
  81. office365/common/agent_identity_blueprint_principal.py +3 -0
  82. office365/common/akamai_web_application_firewall_provider.py +5 -0
  83. office365/common/anonymous_guest_conversation_member.py +2 -0
  84. office365/common/apple_managed_identity_provider.py +5 -0
  85. office365/common/arkose_fraud_protection_provider.py +5 -0
  86. office365/common/attribute_set.py +3 -0
  87. office365/common/azure_communication_services_user_conversation_member.py +2 -0
  88. office365/common/{b2_b_registration_metrics_base.py → b2b_registration_metrics_base.py} +4 -0
  89. office365/common/{b2_b_sign_in_activity_metrics_base.py → b2b_sign_in_activity_metrics_base.py} +6 -0
  90. office365/common/complex_extension_value.py +0 -3
  91. office365/common/configuration_baseline.py +8 -9
  92. office365/common/configuration_drift.py +13 -16
  93. office365/common/configuration_monitor.py +18 -18
  94. office365/common/configuration_monitoring_result.py +11 -9
  95. office365/common/configuration_snapshot_job.py +14 -9
  96. office365/common/contract.py +5 -0
  97. office365/common/cross_tenant_access_policy_configuration_default.py +30 -68
  98. office365/common/cross_tenant_access_policy_configuration_partner.py +31 -61
  99. office365/common/cross_tenant_identity_sync_policy_partner.py +7 -10
  100. office365/common/custom_authentication_extension.py +5 -11
  101. office365/common/custom_data_provided_resource.py +5 -11
  102. office365/common/data_source_configuration.py +1 -2
  103. office365/common/delta_participants.py +3 -0
  104. office365/common/desk.py +11 -15
  105. office365/common/dictionaries.py +0 -3
  106. office365/common/directory_object_partner_reference.py +5 -0
  107. office365/common/distribution_list.py +64 -0
  108. office365/common/distribution_list_member.py +43 -0
  109. office365/common/domain_dns_mx_record.py +3 -0
  110. office365/common/domain_dns_srv_record.py +7 -0
  111. office365/common/domain_dns_txt_record.py +2 -0
  112. office365/common/domain_dns_unavailable_record.py +2 -0
  113. office365/common/drive_protection_unit.py +4 -0
  114. office365/common/drive_protection_units_bulk_addition_job.py +3 -0
  115. office365/common/drive_restore_artifact.py +4 -0
  116. office365/common/drive_restore_artifacts_bulk_addition_request.py +3 -0
  117. office365/common/edition_upgrade_configuration.py +8 -17
  118. office365/common/email_authentication_method_configuration.py +4 -7
  119. office365/common/emergency_call_event.py +6 -6
  120. office365/common/end_user_settings.py +7 -10
  121. office365/common/endpoint.py +6 -0
  122. office365/common/engagement_async_operation.py +5 -10
  123. office365/common/engagement_conversation_question_message.py +2 -0
  124. office365/common/engagement_role.py +3 -0
  125. office365/common/engagement_role_member.py +4 -0
  126. office365/common/enrollment_troubleshooting_event.py +12 -13
  127. office365/common/enterprise_code_signing_certificate.py +11 -6
  128. office365/common/error_detail.py +0 -3
  129. office365/common/event_message_request.py +11 -14
  130. office365/common/event_message_response.py +5 -10
  131. office365/common/exchange_protection_policy.py +4 -0
  132. office365/common/exchange_restore_session.py +4 -0
  133. office365/common/exchange_settings.py +2 -0
  134. office365/common/external_authentication_method.py +3 -0
  135. office365/common/external_authentication_method_configuration.py +6 -7
  136. office365/common/external_users_self_service_sign_up_events_flow.py +15 -46
  137. office365/common/fido2_authentication_method_configuration.py +8 -7
  138. office365/common/fido2_combination_configuration.py +2 -0
  139. office365/common/fixture_map.py +2 -0
  140. office365/common/floor.py +2 -0
  141. office365/common/granular_drive_restore_artifact.py +2 -0
  142. office365/common/granular_mailbox_restore_artifact.py +3 -0
  143. office365/common/granular_restore_artifact_base.py +12 -6
  144. office365/common/granular_site_restore_artifact.py +2 -0
  145. office365/common/human_security_fraud_protection_provider.py +3 -0
  146. office365/common/image_info.py +0 -3
  147. office365/common/imported_windows_autopilot_device_identity_upload.py +7 -7
  148. office365/common/intune_brand.py +1 -2
  149. office365/common/ip_named_location.py +5 -6
  150. office365/common/ipv4_range.py +0 -3
  151. office365/common/ipv6_range.py +0 -3
  152. office365/common/key_value.py +0 -3
  153. office365/common/learning_assignment.py +10 -12
  154. office365/common/level_map.py +5 -0
  155. office365/common/mail_folder_operation.py +27 -0
  156. office365/common/mail_folder_operation_status.py +15 -0
  157. office365/common/mailbox.py +2 -0
  158. office365/common/mailbox_folder.py +11 -0
  159. office365/common/mailbox_item.py +5 -0
  160. office365/common/mailbox_protection_rule.py +2 -0
  161. office365/common/mailbox_protection_unit.py +4 -0
  162. office365/common/mailbox_protection_units_bulk_addition_job.py +3 -0
  163. office365/common/mailbox_restore_artifact.py +4 -0
  164. office365/common/mailbox_restore_artifacts_bulk_addition_request.py +3 -0
  165. office365/common/managed_android_lob_app.py +7 -10
  166. office365/common/managed_android_store_app.py +6 -10
  167. office365/common/managed_app_status_raw.py +3 -7
  168. office365/common/managed_ios_lob_app.py +10 -15
  169. office365/common/managed_ios_store_app.py +8 -15
  170. office365/common/managed_mobile_lob_app.py +5 -0
  171. office365/common/meeting_engagement.py +16 -0
  172. office365/common/meeting_engagement_type.py +15 -0
  173. office365/common/member.py +15 -0
  174. office365/common/mention.py +63 -0
  175. office365/common/mentions_preview.py +11 -0
  176. office365/common/microsoft_account_user_conversation_member.py +2 -0
  177. office365/common/microsoft_authenticator_authentication_method_configuration.py +7 -7
  178. office365/common/microsoft_authenticator_authentication_method_target.py +5 -11
  179. office365/common/microsoft_store_for_business_app.py +8 -10
  180. office365/common/mime_content.py +0 -3
  181. office365/common/oidc_identity_provider.py +12 -24
  182. office365/common/on_attribute_collection_listener.py +3 -11
  183. office365/common/on_attribute_collection_start_listener.py +3 -11
  184. office365/common/on_attribute_collection_submit_listener.py +3 -11
  185. office365/common/on_authentication_method_load_start_listener.py +5 -11
  186. office365/common/on_email_otp_send_listener.py +3 -7
  187. office365/common/on_fraud_protection_load_start_listener.py +5 -11
  188. office365/common/on_interactive_auth_flow_start_listener.py +3 -11
  189. office365/common/on_password_submit_listener.py +3 -11
  190. office365/common/on_token_issuance_start_listener.py +3 -11
  191. office365/common/on_user_create_start_listener.py +3 -11
  192. office365/common/on_verified_id_claim_validation_listener.py +3 -11
  193. office365/common/operation.py +6 -8
  194. office365/common/os_version_count.py +0 -2
  195. office365/common/participant_joining_notification.py +2 -0
  196. office365/common/participant_left_notification.py +3 -0
  197. office365/common/passkey_authentication_method_target.py +2 -0
  198. office365/common/passkey_profile.py +9 -20
  199. office365/common/phone_user_conversation_member.py +2 -0
  200. office365/common/privacy.py +2 -0
  201. office365/common/prompt.py +0 -3
  202. office365/common/protection_units_bulk_job_base.py +12 -18
  203. office365/common/provision_response.py +0 -3
  204. office365/common/proxied_domain.py +0 -3
  205. office365/common/qr_code.py +8 -10
  206. office365/common/qr_code_pin_authentication_method.py +4 -0
  207. office365/common/qr_code_pin_authentication_method_configuration.py +4 -0
  208. office365/common/qr_pin.py +5 -0
  209. office365/common/reading_assignment_submission.py +24 -6
  210. office365/common/reading_coach_passage.py +12 -6
  211. office365/common/record_operation.py +3 -0
  212. office365/common/reflect_check_in_response.py +14 -9
  213. office365/common/related_tenants_refresh_request.py +2 -0
  214. office365/common/reports_root.py +5 -0
  215. office365/common/request.py +9 -6
  216. office365/common/reseller_delegated_admin_relationship.py +3 -0
  217. office365/common/restore_artifact_base.py +10 -9
  218. office365/common/restore_artifacts_bulk_request_base.py +22 -33
  219. office365/common/restore_point.py +6 -3
  220. office365/common/restore_session_base.py +27 -24
  221. office365/common/role_assignment.py +5 -0
  222. office365/common/role_definition.py +7 -3
  223. office365/common/saml_or_ws_fed_external_domain_federation.py +2 -0
  224. office365/common/section_map.py +2 -0
  225. office365/common/send_dtmf_tones_operation.py +3 -11
  226. office365/common/service_announcement_attachment.py +6 -0
  227. office365/common/setting_source.py +0 -3
  228. office365/common/shared_pc_configuration.py +16 -17
  229. office365/common/sharepoint_embedded_configuration.py +0 -3
  230. office365/common/single_value_extended_property.py +18 -0
  231. office365/common/site_protection_rule.py +2 -0
  232. office365/common/site_protection_unit.py +4 -0
  233. office365/common/site_protection_units_bulk_addition_job.py +3 -0
  234. office365/common/site_restore_artifact.py +4 -0
  235. office365/common/site_restore_artifacts_bulk_addition_request.py +3 -0
  236. office365/common/skype_for_business_user_conversation_member.py +3 -0
  237. office365/common/skype_user_conversation_member.py +2 -0
  238. office365/common/software_oath_authentication_method.py +2 -0
  239. office365/common/software_oath_authentication_method_configuration.py +2 -0
  240. office365/common/speaker_assignment_submission.py +20 -0
  241. office365/common/storage_quota_breakdown.py +4 -0
  242. office365/common/string_dictionary.py +7 -0
  243. office365/common/structured_data_entry.py +15 -0
  244. office365/common/structured_data_entry_typed_value.py +16 -0
  245. office365/common/structured_data_entry_value_type.py +21 -0
  246. office365/common/teamwork_hosted_content.py +3 -0
  247. office365/common/telecom_provider_settings.py +16 -0
  248. office365/common/temporary_access_pass_authentication_method_configuration.py +7 -0
  249. office365/common/unit_map.py +2 -0
  250. office365/common/user_configuration.py +33 -0
  251. office365/common/verifiable_credential_authentication_method_target.py +2 -0
  252. office365/common/verifiable_credentials_authentication_method_configuration.py +2 -0
  253. office365/common/voice_authentication_method_configuration.py +10 -0
  254. office365/common/web_app.py +3 -0
  255. office365/common/what_if_analysis_result.py +5 -10
  256. office365/communications/aad_user_conversation_member_result.py +0 -3
  257. office365/communications/aad_user_notification_recipient.py +0 -3
  258. office365/communications/accept_join_response.py +0 -3
  259. office365/communications/adhoc_call.py +3 -0
  260. office365/communications/app_hosted_media_config.py +0 -3
  261. office365/communications/application_identity.py +0 -3
  262. office365/communications/application_instance_identity.py +0 -3
  263. office365/communications/attendance_interval.py +0 -2
  264. office365/communications/audio_conferencing.py +1 -2
  265. office365/communications/azure_communication_services_user_identity.py +0 -3
  266. office365/communications/broadcast_meeting_caption_settings.py +1 -2
  267. office365/communications/call_participant_info.py +1 -2
  268. office365/communications/callrecords/administrative_unit_info.py +0 -3
  269. office365/communications/callrecords/call_record.py +21 -25
  270. office365/communications/callrecords/client_user_agent.py +0 -3
  271. office365/communications/callrecords/collection.py +6 -0
  272. office365/communications/callrecords/device_info.py +0 -3
  273. office365/communications/callrecords/direct_routing_log_row.py +0 -2
  274. office365/communications/callrecords/endpoint.py +1 -2
  275. office365/communications/callrecords/failure_info.py +0 -3
  276. office365/communications/callrecords/feedback_token_set.py +0 -3
  277. office365/communications/callrecords/media.py +1 -2
  278. office365/communications/callrecords/media_stream.py +0 -2
  279. office365/communications/callrecords/network_info.py +1 -2
  280. office365/communications/callrecords/participant_base.py +5 -18
  281. office365/communications/callrecords/participant_endpoint.py +1 -2
  282. office365/communications/callrecords/pstn_call_log_row.py +0 -2
  283. office365/communications/callrecords/segment.py +10 -9
  284. office365/communications/callrecords/service_endpoint.py +0 -3
  285. office365/communications/callrecords/service_user_agent.py +0 -3
  286. office365/communications/callrecords/session.py +8 -6
  287. office365/communications/callrecords/trace_route_hop.py +0 -2
  288. office365/communications/callrecords/user_agent.py +0 -3
  289. office365/communications/callrecords/user_feedback.py +1 -2
  290. office365/communications/callrecords/user_identity.py +0 -3
  291. office365/communications/calls/ai_insight.py +12 -16
  292. office365/communications/calls/ai_insight_view_point.py +1 -2
  293. office365/communications/calls/audio_routing_group.py +5 -7
  294. office365/communications/calls/call.py +37 -17
  295. office365/communications/calls/collection.py +2 -0
  296. office365/communications/calls/ended_event_message_detail.py +1 -2
  297. office365/communications/calls/event.py +5 -3
  298. office365/communications/calls/incoming_context.py +1 -2
  299. office365/communications/calls/invitation_participant_info.py +1 -2
  300. office365/communications/calls/media_state.py +0 -3
  301. office365/communications/calls/options.py +0 -3
  302. office365/communications/calls/participant.py +19 -13
  303. office365/communications/calls/participant_info.py +1 -2
  304. office365/communications/calls/recording_event_message_detail.py +1 -2
  305. office365/communications/calls/route.py +1 -2
  306. office365/communications/calls/started_event_message_detail.py +1 -2
  307. office365/communications/calls/transcript.py +10 -0
  308. office365/communications/calls/transcript_event_message_detail.py +1 -2
  309. office365/communications/calls/transcription_info.py +0 -2
  310. office365/communications/chat_members_notification_recipient.py +0 -3
  311. office365/communications/chat_renamed_event_message_detail.py +1 -2
  312. office365/communications/chat_restrictions.py +0 -3
  313. office365/communications/cloud_communications.py +55 -5
  314. office365/communications/comms_notification.py +0 -3
  315. office365/communications/comms_notifications.py +1 -2
  316. office365/communications/conversation_member_role_updated_event_message_detail.py +1 -2
  317. office365/communications/emergency_caller_info.py +1 -2
  318. office365/communications/encrypted_identity.py +0 -3
  319. office365/communications/engagement_identity_set.py +1 -2
  320. office365/communications/guest_identity.py +0 -3
  321. office365/communications/incoming_call_options.py +0 -3
  322. office365/communications/invite_new_bot_response.py +0 -3
  323. office365/communications/join_meeting_id_settings.py +0 -3
  324. office365/communications/media_config.py +0 -3
  325. office365/communications/media_info.py +0 -3
  326. office365/communications/media_prompt.py +1 -2
  327. office365/communications/meetings/join_meeting_id_info.py +0 -3
  328. office365/communications/onlinemeetings/attendance_record.py +21 -16
  329. office365/communications/onlinemeetings/attendee_notification_info.py +0 -3
  330. office365/communications/onlinemeetings/base.py +41 -25
  331. office365/communications/onlinemeetings/broadcast_settings.py +1 -2
  332. office365/communications/onlinemeetings/collection.py +34 -3
  333. office365/communications/onlinemeetings/engagement_conversation.py +8 -8
  334. office365/communications/onlinemeetings/lobby_bypass_settings.py +0 -3
  335. office365/communications/onlinemeetings/meeting_attendance_report.py +7 -7
  336. office365/communications/onlinemeetings/online_meeting.py +20 -9
  337. office365/communications/onlinemeetings/online_meeting_info.py +1 -2
  338. office365/communications/onlinemeetings/participant_info.py +1 -2
  339. office365/communications/onlinemeetings/participants.py +1 -2
  340. office365/communications/onlinemeetings/recordings/call.py +10 -1
  341. office365/communications/onlinemeetings/restricted.py +0 -3
  342. office365/communications/onlinemeetings/sensitivity_label_assignment.py +0 -3
  343. office365/communications/onlinemeetings/watermark_protection_values.py +0 -3
  344. office365/communications/operations/comms.py +8 -10
  345. office365/communications/operations/invite_participants.py +3 -1
  346. office365/communications/organizer_meeting_info.py +1 -2
  347. office365/communications/out_of_office_settings.py +0 -3
  348. office365/communications/outgoing_call_options.py +0 -3
  349. office365/communications/participant_joining_response.py +0 -3
  350. office365/communications/phone_identity.py +0 -3
  351. office365/communications/presences/presence.py +16 -9
  352. office365/communications/presences/status_message.py +1 -2
  353. office365/communications/quotas.py +136 -6
  354. office365/communications/recording_info.py +1 -2
  355. office365/communications/reject_join_response.py +0 -3
  356. office365/communications/removed_state.py +0 -3
  357. office365/communications/result_info.py +0 -3
  358. office365/communications/service_hosted_media_config.py +1 -2
  359. office365/communications/teleconference_device_audio_quality.py +0 -3
  360. office365/communications/teleconference_device_media_quality.py +0 -2
  361. office365/communications/teleconference_device_screen_sharing_quality.py +0 -3
  362. office365/communications/teleconference_device_video_quality.py +0 -3
  363. office365/communications/teleconferencedevicequality.py +1 -2
  364. office365/communications/token_meeting_info.py +0 -3
  365. office365/communications/tone_info.py +0 -3
  366. office365/communications/user_identity.py +0 -3
  367. office365/communications/user_work_location.py +0 -3
  368. office365/communications/virtualevents/communications_identity_set.py +1 -2
  369. office365/communications/virtualevents/external_information.py +0 -3
  370. office365/communications/virtualevents/external_registration_information.py +0 -3
  371. office365/communications/virtualevents/presenter.py +7 -13
  372. office365/communications/virtualevents/presenter_details.py +1 -2
  373. office365/communications/virtualevents/presenter_info.py +1 -2
  374. office365/communications/virtualevents/registration.py +18 -21
  375. office365/communications/virtualevents/registration_configuration.py +6 -0
  376. office365/communications/virtualevents/registration_custom_question.py +6 -11
  377. office365/communications/virtualevents/registration_predefined_question.py +5 -11
  378. office365/communications/virtualevents/registration_question_answer.py +1 -2
  379. office365/communications/virtualevents/registration_question_base.py +3 -0
  380. office365/communications/virtualevents/root.py +4 -0
  381. office365/communications/virtualevents/session.py +7 -8
  382. office365/communications/virtualevents/settings.py +0 -3
  383. office365/communications/virtualevents/townhall.py +11 -9
  384. office365/communications/virtualevents/virtual_event.py +20 -30
  385. office365/communications/virtualevents/webinar.py +7 -6
  386. office365/copilot/action_item.py +0 -3
  387. office365/copilot/action_result_part.py +1 -2
  388. office365/copilot/admin_catalog.py +2 -0
  389. office365/copilot/admin_limited_mode.py +3 -0
  390. office365/copilot/admin_setting.py +2 -0
  391. office365/copilot/ai_agent_info.py +0 -3
  392. office365/{common → copilot}/ai_interaction.py +23 -24
  393. office365/copilot/ai_interaction_attachment.py +0 -3
  394. office365/copilot/ai_interaction_context.py +0 -3
  395. office365/copilot/ai_interaction_entity.py +0 -3
  396. office365/copilot/ai_interaction_link.py +0 -3
  397. office365/copilot/ai_interaction_mention.py +1 -2
  398. office365/copilot/ai_interaction_mentioned_identity_set.py +1 -2
  399. office365/copilot/ai_interaction_plugin.py +0 -3
  400. office365/copilot/ai_online_meeting.py +2 -0
  401. office365/copilot/ai_user.py +3 -0
  402. office365/copilot/package.py +30 -26
  403. office365/copilot/package_access_entity.py +0 -3
  404. office365/copilot/package_detail.py +23 -13
  405. office365/copilot/package_element.py +1 -2
  406. office365/copilot/package_element_detail.py +1 -2
  407. office365/copilot/package_request_info.py +24 -0
  408. office365/copilot/package_request_metadata.py +17 -0
  409. office365/copilot/package_request_principal.py +13 -0
  410. office365/copilot/package_request_principal_type.py +15 -0
  411. office365/copilot/root.py +3 -0
  412. office365/count_collection.py +2 -2
  413. office365/directory/administrative_unit.py +12 -1
  414. office365/directory/allowed_value.py +2 -0
  415. office365/directory/application_resource_permission.py +0 -3
  416. office365/directory/applications/all_allowed_scopes.py +0 -3
  417. office365/directory/applications/api.py +1 -2
  418. office365/directory/applications/app_identity.py +0 -3
  419. office365/directory/applications/application.py +45 -6
  420. office365/directory/applications/application_risk_factors.py +1 -2
  421. office365/directory/applications/application_risk_score.py +0 -3
  422. office365/directory/applications/applications_required_resource_access.py +1 -2
  423. office365/directory/applications/collection.py +5 -0
  424. office365/directory/applications/custom_security_attribute_exemption.py +0 -3
  425. office365/directory/applications/custom_security_attribute_string_value_exemption.py +0 -3
  426. office365/directory/applications/enumerated_scopes.py +1 -2
  427. office365/directory/applications/identifier_uri_restriction.py +1 -2
  428. office365/directory/applications/inheritable_scopes.py +0 -3
  429. office365/directory/applications/instance_resource_access.py +1 -2
  430. office365/directory/applications/key_credential_configuration.py +1 -2
  431. office365/directory/applications/location.py +0 -3
  432. office365/directory/applications/no_scopes.py +0 -3
  433. office365/directory/applications/optional_claims.py +4 -2
  434. office365/directory/applications/parentalcontrolsettings.py +0 -3
  435. office365/directory/applications/password_credential_configuration.py +1 -2
  436. office365/directory/applications/public_client.py +1 -2
  437. office365/directory/applications/requestsignatureverification.py +0 -3
  438. office365/directory/applications/required_resource_access.py +1 -2
  439. office365/directory/applications/resource_access.py +0 -3
  440. office365/directory/applications/resource_permission.py +0 -3
  441. office365/directory/applications/riskfactors/certificate_info.py +0 -3
  442. office365/directory/applications/riskfactors/general_info.py +1 -2
  443. office365/directory/applications/riskfactors/legal_info.py +1 -2
  444. office365/directory/applications/riskfactors/legal_info_gdpr.py +0 -3
  445. office365/directory/applications/riskfactors/security_info.py +1 -2
  446. office365/directory/applications/roles/assignment.py +9 -0
  447. office365/directory/applications/roles/collection.py +3 -1
  448. office365/directory/applications/roles/role.py +1 -2
  449. office365/directory/applications/security_compliance.py +0 -3
  450. office365/directory/applications/spa.py +1 -2
  451. office365/directory/applications/template.py +18 -0
  452. office365/directory/applications/verifiedpublisher.py +0 -2
  453. office365/directory/applications/web.py +1 -2
  454. office365/directory/approval_settings.py +1 -2
  455. office365/directory/attribute_rule_members.py +0 -3
  456. office365/directory/audit/activity_initiator.py +1 -2
  457. office365/directory/audit/directory.py +9 -0
  458. office365/directory/audit/initiator.py +0 -3
  459. office365/directory/audit/log_root.py +4 -1
  460. office365/directory/audit/logs/recordtype.py +36 -0
  461. office365/directory/audit/provisioning/errorinfo.py +0 -3
  462. office365/directory/audit/provisioning/object_summary.py +18 -7
  463. office365/directory/audit/provisioning/provisionedidentity.py +1 -2
  464. office365/directory/audit/provisioning/statusinfo.py +1 -2
  465. office365/directory/audit/provisioning/step.py +1 -2
  466. office365/directory/audit/provisioning/system.py +1 -2
  467. office365/directory/audit/signins/activity.py +0 -2
  468. office365/directory/audit/signins/authentication_app_device_details.py +0 -3
  469. office365/directory/audit/signins/governance_insight.py +2 -0
  470. office365/directory/audit/signins/location.py +1 -2
  471. office365/directory/audit/signins/membership_outlier_insight.py +8 -0
  472. office365/directory/audit/signins/signin.py +29 -2
  473. office365/directory/audit/signins/status.py +0 -3
  474. office365/directory/audit/signins/user_sign_in_insight.py +2 -0
  475. office365/directory/audit/target_resource.py +1 -2
  476. office365/directory/authentication/attributecollection/external_users_self_service_sign_up.py +1 -2
  477. office365/directory/authentication/attributecollection/handler.py +0 -3
  478. office365/directory/authentication/attributecollection/input_configuration.py +1 -2
  479. office365/directory/authentication/attributecollection/method_load_start_handler.py +0 -3
  480. office365/directory/authentication/attributecollection/option_configuration.py +0 -3
  481. office365/directory/authentication/attributecollection/page.py +1 -2
  482. office365/directory/authentication/attributecollection/page_view_configuration.py +1 -2
  483. office365/directory/authentication/attributecollection/start_custom_extension_handler.py +1 -2
  484. office365/directory/authentication/attributecollection/start_handler.py +0 -3
  485. office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +1 -2
  486. office365/directory/authentication/attributecollection/submit_handler.py +0 -3
  487. office365/directory/authentication/authentication.py +32 -5
  488. office365/directory/authentication/azure_ad_token_authentication.py +0 -3
  489. office365/directory/authentication/behaviors.py +0 -3
  490. office365/directory/authentication/client_certificate.py +1 -2
  491. office365/directory/authentication/conditions/application.py +3 -0
  492. office365/directory/authentication/conditions/conditions.py +1 -2
  493. office365/directory/authentication/conditions/event_listener.py +6 -10
  494. office365/directory/authentication/configuration/base.py +1 -2
  495. office365/directory/authentication/configuration/validation.py +1 -2
  496. office365/directory/authentication/fido2keyrestrictions.py +0 -3
  497. office365/directory/authentication/fraud_protection_configuration.py +0 -3
  498. office365/directory/authentication/fraud_protection_provider.py +2 -0
  499. office365/directory/authentication/fraud_protection_provider_configuration.py +0 -2
  500. office365/directory/authentication/include_target.py +0 -3
  501. office365/directory/authentication/methods/configuration.py +3 -0
  502. office365/directory/authentication/methods/details.py +16 -0
  503. office365/directory/authentication/methods/email.py +2 -0
  504. office365/directory/authentication/methods/excludetarget.py +0 -3
  505. office365/directory/authentication/methods/featureconfiguration.py +1 -2
  506. office365/directory/authentication/methods/featuretarget.py +0 -3
  507. office365/directory/authentication/methods/fido.py +13 -20
  508. office365/directory/authentication/methods/method.py +6 -0
  509. office365/directory/authentication/methods/microsoft_authenticator.py +5 -0
  510. office365/directory/authentication/methods/microsoftauthenticatorfeaturesettings.py +1 -2
  511. office365/directory/authentication/methods/mode_detail.py +3 -0
  512. office365/directory/authentication/methods/password.py +1 -0
  513. office365/directory/authentication/methods/phone.py +15 -14
  514. office365/directory/authentication/methods/registrationcampaign.py +1 -2
  515. office365/directory/authentication/methods/registrationcampaignincludetarget.py +0 -3
  516. office365/directory/authentication/methods/registrationenforcement.py +1 -2
  517. office365/directory/authentication/methods/resource_account_key_authentication_method.py +30 -0
  518. office365/directory/authentication/methods/root.py +10 -1
  519. office365/directory/authentication/methods/sms.py +17 -0
  520. office365/directory/authentication/methods/target.py +3 -0
  521. office365/directory/authentication/oidc_address_inbound_claims.py +0 -3
  522. office365/directory/authentication/oidc_client_authentication.py +0 -3
  523. office365/directory/authentication/oidc_client_secret_authentication.py +0 -3
  524. office365/directory/authentication/oidc_inbound_claim_mapping_override.py +1 -2
  525. office365/directory/authentication/oidc_private_jwt_key_client_authentication.py +0 -3
  526. office365/directory/authentication/open_id_connect_setting.py +0 -3
  527. office365/directory/authentication/password_reset_response.py +0 -3
  528. office365/directory/authentication/platform_credential_authentication_method.py +7 -14
  529. office365/directory/authentication/qr_code_image_details.py +0 -3
  530. office365/directory/authentication/signing_certificate_update_status.py +1 -2
  531. office365/directory/authentication/strength/root.py +4 -0
  532. office365/directory/authentication/strength/usage.py +1 -2
  533. office365/directory/authentication/temporary_access_pass_authentication_method.py +7 -0
  534. office365/directory/authentication/webauthn_authentication_extensions_client_inputs.py +0 -3
  535. office365/directory/authentication/webauthn_authentication_extensions_client_outputs.py +0 -3
  536. office365/directory/authentication/webauthn_authenticator_attestation_response.py +0 -3
  537. office365/directory/authentication/webauthn_authenticator_selection_criteria.py +0 -3
  538. office365/directory/authentication/webauthn_credential_creation_options.py +1 -2
  539. office365/directory/authentication/webauthn_public_key_credential.py +1 -2
  540. office365/directory/authentication/webauthn_public_key_credential_creation_options.py +1 -2
  541. office365/directory/authentication/webauthn_public_key_credential_descriptor.py +1 -2
  542. office365/directory/authentication/webauthn_public_key_credential_parameters.py +0 -3
  543. office365/directory/authentication/webauthn_public_key_credential_rp_entity.py +0 -3
  544. office365/directory/authentication/webauthn_public_key_credential_user_entity.py +0 -3
  545. office365/directory/authentication/windows_hello_for_business_authentication_method.py +5 -7
  546. office365/directory/b2b_registration_metrics.py +3 -0
  547. office365/directory/b2b_registration_metrics_initial.py +2 -0
  548. office365/directory/b2b_registration_metrics_recent.py +2 -0
  549. office365/directory/b2b_sign_in_activity_metrics.py +3 -0
  550. office365/directory/b2b_sign_in_activity_metrics_initial.py +2 -0
  551. office365/directory/b2b_sign_in_activity_metrics_recent.py +2 -0
  552. office365/directory/certificates/auth_configuration.py +2 -0
  553. office365/directory/certificates/auth_pki.py +6 -0
  554. office365/directory/certificates/authority.py +0 -3
  555. office365/directory/certificates/authority_detail.py +14 -8
  556. office365/directory/certificates/certification.py +0 -2
  557. office365/directory/certificates/pkcs12_certificate.py +0 -3
  558. office365/directory/certificates/pkcs12_information.py +0 -3
  559. office365/directory/certificates/public_key_infrastructure_root.py +2 -0
  560. office365/directory/certificates/self_signed.py +0 -2
  561. office365/directory/certificates/x509/authentication_method_configuration.py +14 -35
  562. office365/directory/certificates/x509/authenticationmodeconfiguration.py +1 -2
  563. office365/directory/certificates/x509/authority_scope.py +1 -2
  564. office365/directory/certificates/x509/combination_configuration.py +3 -0
  565. office365/directory/certificates/x509/crlvalidationconfiguration.py +0 -3
  566. office365/directory/certificates/x509/issuer_hints_configuration.py +0 -3
  567. office365/directory/certificates/x509/rule.py +0 -3
  568. office365/directory/certificates/x509/userbinding.py +0 -3
  569. office365/directory/claim_binding.py +0 -3
  570. office365/directory/claim_validation.py +0 -3
  571. office365/directory/connected_organization_members.py +0 -3
  572. office365/directory/connection_info.py +0 -3
  573. office365/directory/credential.py +0 -1
  574. office365/directory/cross_cloud_azure_active_directory_tenant.py +0 -3
  575. office365/directory/cross_tenant_migration_cancel_response.py +12 -0
  576. office365/directory/cross_tenant_migration_job.py +121 -0
  577. office365/directory/cross_tenant_migration_job_status.py +29 -0
  578. office365/directory/cross_tenant_migration_job_type.py +13 -0
  579. office365/directory/cross_tenant_migration_service_status.py +24 -0
  580. office365/directory/cross_tenant_migration_service_status_details.py +19 -0
  581. office365/directory/cross_tenant_migration_task.py +36 -0
  582. office365/directory/custom_security_attribute_definition.py +10 -0
  583. office365/directory/datapolicy/operation.py +7 -0
  584. office365/directory/delegated_administration_role_assignment.py +1 -2
  585. office365/directory/delegated_administration_role_assignment_snapshot.py +1 -2
  586. office365/directory/delegatedadmin/access_assignment.py +10 -24
  587. office365/directory/delegatedadmin/access_container.py +0 -3
  588. office365/directory/delegatedadmin/access_details.py +1 -2
  589. office365/directory/delegatedadmin/customer.py +4 -0
  590. office365/directory/delegatedadmin/relationship.py +20 -22
  591. office365/directory/delegatedadmin/relationship_customer_participant.py +0 -3
  592. office365/directory/delegatedadmin/relationship_operation.py +9 -17
  593. office365/directory/delegatedadmin/relationship_request.py +8 -17
  594. office365/directory/delegatedadmin/service_management_detail.py +3 -0
  595. office365/directory/delegatedadmin/service_provider_constraints.py +4 -0
  596. office365/directory/device_local_credential_info.py +9 -8
  597. office365/directory/directory.py +11 -4
  598. office365/directory/domains/dns_cname_record.py +2 -0
  599. office365/directory/domains/dns_record.py +6 -0
  600. office365/directory/domains/domain.py +29 -4
  601. office365/directory/domains/internal_domain_federation.py +15 -23
  602. office365/directory/drifted_property.py +1 -2
  603. office365/directory/entity_type_and_ids.py +1 -2
  604. office365/directory/exchange_online_cross_tenant_migration_settings.py +12 -0
  605. office365/directory/extensions/custom/callbackconfiguration.py +0 -2
  606. office365/directory/extensions/custom/calloutrequest.py +1 -2
  607. office365/directory/extensions/custom/calloutresponse.py +1 -2
  608. office365/directory/extensions/custom/clientconfiguration.py +0 -3
  609. office365/directory/extensions/custom/http_request_endpoint.py +0 -3
  610. office365/directory/extensions/extended_property.py +3 -0
  611. office365/directory/extensions/extension_property.py +7 -0
  612. office365/directory/extensions/open_type.py +2 -0
  613. office365/directory/extensions/schema.py +5 -0
  614. office365/directory/extensions/schema_property.py +0 -3
  615. office365/directory/external_domain_federation.py +0 -3
  616. office365/directory/external_sponsors.py +0 -3
  617. office365/directory/external_token_based_sap_iag_connection_info.py +0 -3
  618. office365/directory/governance_invitation.py +7 -0
  619. office365/directory/governance_relationship.py +13 -14
  620. office365/directory/governance_request.py +12 -6
  621. office365/directory/groups/assigned_label.py +0 -3
  622. office365/directory/groups/collection.py +1 -1
  623. office365/directory/groups/group.py +78 -19
  624. office365/directory/groups/group_members.py +0 -3
  625. office365/directory/groups/lifecycle_policy.py +7 -0
  626. office365/directory/groups/on_premises_sync_behavior.py +2 -0
  627. office365/directory/groups/profile.py +1 -2
  628. office365/directory/groups/setting.py +6 -6
  629. office365/directory/groups/setting_template.py +6 -8
  630. office365/directory/groups/setting_template_value.py +0 -3
  631. office365/directory/identities/api_connector.py +6 -0
  632. office365/directory/identities/application_context.py +1 -2
  633. office365/directory/identities/application_enforced_restrictions_session_control.py +0 -3
  634. office365/directory/identities/assignment_order.py +1 -2
  635. office365/directory/identities/auth_context.py +0 -3
  636. office365/directory/identities/authentication_events_flow.py +6 -10
  637. office365/directory/identities/authentication_flow.py +0 -3
  638. office365/directory/identities/b2x_identity_user_flow.py +9 -7
  639. office365/directory/identities/conditional_access_root.py +7 -0
  640. office365/directory/identities/conditional_access_session_control.py +0 -3
  641. office365/directory/identities/conditional_access_template.py +8 -17
  642. office365/directory/identities/container.py +16 -6
  643. office365/directory/identities/country_named_location.py +4 -0
  644. office365/directory/identities/ip_range.py +0 -3
  645. office365/directory/identities/named_location.py +5 -0
  646. office365/directory/identities/object_identity.py +0 -3
  647. office365/directory/identities/on_fraud_protection_load_start_external_users_auth_handler.py +1 -2
  648. office365/directory/identities/on_interactive_auth_flow_start_external_users_self_service_sign_up.py +0 -3
  649. office365/directory/identities/on_interactive_auth_flow_start_handler.py +0 -3
  650. office365/directory/identities/on_otp_send_custom_extension_handler.py +1 -2
  651. office365/directory/identities/on_otp_send_handler.py +0 -3
  652. office365/directory/identities/on_password_migration_custom_extension_handler.py +1 -2
  653. office365/directory/identities/on_password_submit_handler.py +0 -3
  654. office365/directory/identities/on_token_issuance_start_custom_extension.py +3 -11
  655. office365/directory/identities/on_token_issuance_start_custom_extension_handler.py +1 -2
  656. office365/directory/identities/on_token_issuance_start_handler.py +0 -3
  657. office365/directory/identities/on_token_issuance_start_return_claim.py +0 -3
  658. office365/directory/identities/on_user_create_start_external_users_self_service_sign_up.py +0 -3
  659. office365/directory/identities/on_user_create_start_handler.py +0 -3
  660. office365/directory/identities/on_verified_id_claim_validation_custom_extension_handler.py +1 -2
  661. office365/directory/identities/on_verified_id_claim_validation_handler.py +0 -3
  662. office365/directory/identities/provider.py +5 -0
  663. office365/directory/identities/provider_collection.py +2 -0
  664. office365/directory/identities/providers/base.py +2 -0
  665. office365/directory/identities/providers/base_collection.py +2 -0
  666. office365/directory/identities/providers/builtin_identity.py +2 -0
  667. office365/directory/identities/providers/on_authentication_method_load_start_external_users_self_service_sign_up.py +0 -3
  668. office365/directory/identities/providers/on_fraud_protection_load_start_handler.py +0 -3
  669. office365/directory/identities/providers/saml_or_wsfed.py +8 -6
  670. office365/directory/identities/providers/social_identity.py +4 -0
  671. office365/directory/identities/riskPrevention/akamai_attack_group_action_model.py +0 -3
  672. office365/directory/identities/riskPrevention/akamai_custom_rule_model.py +0 -3
  673. office365/directory/identities/riskPrevention/akamai_rapid_rules_model.py +0 -3
  674. office365/directory/identities/riskPrevention/akamai_verified_details_model.py +1 -2
  675. office365/directory/identities/riskPrevention/container.py +4 -0
  676. office365/directory/identities/riskPrevention/web_application_firewall_dns_configuration.py +0 -3
  677. office365/directory/identities/riskPrevention/web_application_firewall_verification_result.py +1 -2
  678. office365/directory/identities/riskPrevention/web_application_firewall_verified_details.py +1 -2
  679. office365/directory/identities/sign_in_context.py +0 -3
  680. office365/directory/identities/userflows/attribute.py +8 -17
  681. office365/directory/identities/userflows/b2x/user_flow.py +3 -2
  682. office365/directory/identities/userflows/language_configuration.py +4 -2
  683. office365/directory/identities/userflows/user_attribute_assignment.py +9 -14
  684. office365/directory/identities/userflows/user_attribute_values_item.py +0 -3
  685. office365/directory/identities/userflows/user_flow.py +5 -6
  686. office365/directory/identities/userflows/user_flow_api_connector_configuration.py +0 -3
  687. office365/directory/identities/verified_id_root.py +2 -0
  688. office365/directory/identities/web_application_firewall_provider.py +2 -0
  689. office365/directory/identities/web_application_firewall_verification_model.py +15 -21
  690. office365/directory/identity_set.py +1 -2
  691. office365/directory/identitygovernance/access_package_suggestion.py +6 -7
  692. office365/directory/identitygovernance/accessreview/context_data.py +0 -3
  693. office365/directory/identitygovernance/accessreview/context_data_base.py +0 -3
  694. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +1 -2
  695. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_stats.py +0 -3
  696. office365/directory/identitygovernance/accessreview/disable_and_delete_user_apply_action.py +0 -3
  697. office365/directory/identitygovernance/accessreview/error.py +0 -3
  698. office365/directory/identitygovernance/accessreview/history/definition.py +16 -11
  699. office365/directory/identitygovernance/accessreview/history_instance.py +8 -0
  700. office365/directory/identitygovernance/accessreview/history_schedule_settings.py +1 -2
  701. office365/directory/identitygovernance/accessreview/inactive_users_query_scope.py +0 -2
  702. office365/directory/identitygovernance/accessreview/instance.py +14 -21
  703. office365/directory/identitygovernance/accessreview/instance_decision_item.py +23 -14
  704. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_assignment_policy_resource.py +0 -3
  705. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_resource.py +0 -3
  706. office365/directory/identitygovernance/accessreview/instance_decision_item_azure_role_resource.py +1 -2
  707. office365/directory/identitygovernance/accessreview/instance_decision_item_custom_data_provided_resource.py +0 -3
  708. office365/directory/identitygovernance/accessreview/instance_decision_item_permission.py +0 -3
  709. office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +0 -3
  710. office365/directory/identitygovernance/accessreview/instance_decision_item_service_principal_resource.py +0 -3
  711. office365/directory/identitygovernance/accessreview/notification_recipient_item.py +1 -2
  712. office365/directory/identitygovernance/accessreview/notification_recipient_query_scope.py +0 -3
  713. office365/directory/identitygovernance/accessreview/principal_resource_memberships_scope.py +1 -2
  714. office365/directory/identitygovernance/accessreview/principal_scope.py +0 -3
  715. office365/directory/identitygovernance/accessreview/query_scope.py +0 -3
  716. office365/directory/identitygovernance/accessreview/recommendation_insight_setting.py +0 -3
  717. office365/directory/identitygovernance/accessreview/remove_access_apply_action.py +0 -3
  718. office365/directory/identitygovernance/accessreview/resource_scope.py +0 -3
  719. office365/directory/identitygovernance/accessreview/reviewer.py +4 -0
  720. office365/directory/identitygovernance/accessreview/reviewer_scope.py +0 -3
  721. office365/directory/identitygovernance/accessreview/schedule_definition.py +22 -28
  722. office365/directory/identitygovernance/accessreview/set.py +3 -1
  723. office365/directory/identitygovernance/accessreview/stage.py +9 -14
  724. office365/directory/identitygovernance/accessreview/stage_settings.py +1 -2
  725. office365/directory/identitygovernance/accessreview/target_owners.py +1 -2
  726. office365/directory/identitygovernance/activate_group_scope.py +0 -3
  727. office365/directory/identitygovernance/activate_processing_result_scope.py +0 -3
  728. office365/directory/identitygovernance/activate_run_scope.py +0 -3
  729. office365/directory/identitygovernance/activate_user_scope.py +0 -3
  730. office365/directory/identitygovernance/activities_container.py +2 -0
  731. office365/directory/identitygovernance/appconsent/approval_route.py +2 -0
  732. office365/directory/identitygovernance/appconsent/approval_stage.py +8 -0
  733. office365/directory/identitygovernance/appconsent/request.py +3 -1
  734. office365/directory/identitygovernance/appconsent/request_collection.py +2 -0
  735. office365/directory/identitygovernance/apply_decision_context_data.py +0 -3
  736. office365/directory/identitygovernance/attribute_set_entry.py +0 -3
  737. office365/directory/identitygovernance/awaited_workflow_processing_result.py +1 -2
  738. office365/directory/identitygovernance/cancel_runs_scope.py +0 -3
  739. office365/directory/identitygovernance/cancel_scope.py +0 -3
  740. office365/directory/identitygovernance/content_activity.py +6 -10
  741. office365/directory/identitygovernance/content_base.py +0 -3
  742. office365/directory/identitygovernance/count_based_quarantine_condition.py +0 -3
  743. office365/directory/identitygovernance/custom_extension_resource_type.py +2 -0
  744. office365/directory/identitygovernance/custom_task_extension.py +8 -10
  745. office365/directory/identitygovernance/custom_task_extension_callout_data.py +1 -2
  746. office365/directory/identitygovernance/custom_task_extension_response_data.py +1 -2
  747. office365/directory/identitygovernance/data.py +0 -3
  748. office365/directory/identitygovernance/data_security_and_governance.py +2 -0
  749. office365/directory/identitygovernance/deleted_item_container.py +2 -0
  750. office365/directory/identitygovernance/directory_object_workflow_subject.py +0 -3
  751. office365/directory/identitygovernance/emailsettings.py +0 -3
  752. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer.py +0 -3
  753. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_choice.py +1 -2
  754. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_string.py +0 -3
  755. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approval_stage.py +1 -2
  756. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment.py +14 -17
  757. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_approval_settings.py +1 -2
  758. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy.py +35 -42
  759. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy_scope.py +0 -3
  760. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request.py +23 -31
  761. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_callback_data.py +0 -3
  762. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_parameters.py +0 -3
  763. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_requirements.py +1 -2
  764. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_workflow_extension.py +6 -0
  765. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_requestor_settings.py +1 -2
  766. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_review_settings.py +1 -2
  767. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_workflow_extension.py +6 -0
  768. office365/directory/identitygovernance/entitlementmanagement/accesspackage/automatic_request_settings.py +0 -2
  769. office365/directory/identitygovernance/entitlementmanagement/accesspackage/catalog.py +13 -0
  770. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_file.py +4 -0
  771. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_session.py +15 -17
  772. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_extension_callout_instance.py +0 -3
  773. office365/directory/identitygovernance/entitlementmanagement/accesspackage/dynamic_approval_stage.py +0 -3
  774. office365/directory/identitygovernance/entitlementmanagement/accesspackage/expiration_pattern.py +1 -2
  775. office365/directory/identitygovernance/entitlementmanagement/accesspackage/localized_text.py +0 -3
  776. office365/directory/identitygovernance/entitlementmanagement/accesspackage/multiple_choice_question.py +7 -10
  777. office365/directory/identitygovernance/entitlementmanagement/accesspackage/notification_settings.py +0 -3
  778. office365/directory/identitygovernance/entitlementmanagement/accesspackage/package.py +50 -3
  779. office365/directory/identitygovernance/entitlementmanagement/accesspackage/question.py +10 -10
  780. office365/directory/identitygovernance/entitlementmanagement/accesspackage/request_approval_stage_callback_configuration.py +0 -3
  781. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource.py +16 -7
  782. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute.py +1 -2
  783. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_destination.py +0 -3
  784. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_question.py +0 -3
  785. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_source.py +0 -3
  786. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_environment.py +11 -3
  787. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_request.py +6 -0
  788. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role.py +8 -3
  789. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role_scope.py +4 -0
  790. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_scope.py +7 -0
  791. office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject.py +12 -7
  792. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_reason.py +0 -3
  793. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_based.py +1 -2
  794. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_self_assignment_history_based.py +1 -2
  795. office365/directory/identitygovernance/entitlementmanagement/accesspackage/text_input_question.py +3 -0
  796. office365/directory/identitygovernance/entitlementmanagement/accesspackage/user_directory_attribute_store.py +0 -3
  797. office365/directory/identitygovernance/entitlementmanagement/assignment_request_approval_stage_callback_data.py +1 -2
  798. office365/directory/identitygovernance/entitlementmanagement/available_access_package.py +4 -0
  799. office365/directory/identitygovernance/entitlementmanagement/azure_active_directory_tenant.py +0 -3
  800. office365/directory/identitygovernance/entitlementmanagement/connected_organization.py +11 -10
  801. office365/directory/identitygovernance/entitlementmanagement/control_configuration.py +6 -0
  802. office365/directory/identitygovernance/entitlementmanagement/custom_extension_behavior_on_error.py +0 -3
  803. office365/directory/identitygovernance/entitlementmanagement/custom_extension_overwrite_configuration.py +1 -2
  804. office365/directory/identitygovernance/entitlementmanagement/domain_identity_source.py +0 -3
  805. office365/directory/identitygovernance/entitlementmanagement/entitlement_management.py +18 -0
  806. office365/directory/identitygovernance/entitlementmanagement/external_origin_resource_connector.py +12 -7
  807. office365/directory/identitygovernance/entitlementmanagement/fallback_to_microsoft_provider_on_error.py +0 -3
  808. office365/directory/identitygovernance/entitlementmanagement/identity_source.py +5 -4
  809. office365/directory/identitygovernance/entitlementmanagement/management_settings.py +3 -0
  810. office365/directory/identitygovernance/entitlementmanagement/schedule.py +1 -2
  811. office365/directory/identitygovernance/entitlementmanagement/social_identity_source.py +0 -3
  812. office365/directory/identitygovernance/governance.py +8 -0
  813. office365/directory/identitygovernance/guest_sponsor_trigger.py +0 -3
  814. office365/directory/identitygovernance/lifecycle_management_settings.py +6 -10
  815. office365/directory/identitygovernance/lifecycle_workflows_container.py +8 -0
  816. office365/directory/identitygovernance/parameter.py +1 -2
  817. office365/directory/identitygovernance/percentage_based_quarantine_condition.py +0 -3
  818. office365/directory/identitygovernance/preview_failed_task.py +0 -3
  819. office365/directory/identitygovernance/privilegedaccess/approval.py +2 -0
  820. office365/directory/identitygovernance/privilegedaccess/group.py +9 -0
  821. office365/directory/identitygovernance/privilegedaccess/group_assignment_schedule.py +9 -0
  822. office365/directory/identitygovernance/privilegedaccess/group_assignment_schedule_request.py +9 -0
  823. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule.py +7 -0
  824. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule_instance.py +8 -0
  825. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule_request.py +8 -0
  826. office365/directory/identitygovernance/privilegedaccess/role_management_custom_callout_extension.py +13 -17
  827. office365/directory/identitygovernance/privilegedaccess/root.py +3 -0
  828. office365/directory/identitygovernance/privilegedaccess/schedule/group_assignment_instance.py +10 -0
  829. office365/directory/identitygovernance/privilegedaccess/schedule/instance.py +3 -0
  830. office365/directory/identitygovernance/privilegedaccess/schedule/schedule.py +8 -6
  831. office365/directory/identitygovernance/privilegedaccess/schedule_request.py +9 -9
  832. office365/directory/identitygovernance/process_content_metadata_base.py +6 -2
  833. office365/directory/identitygovernance/provisioning_attribute_mapping.py +0 -3
  834. office365/directory/identitygovernance/provisioning_object_workflow_subject.py +1 -2
  835. office365/directory/identitygovernance/quarantine_condition.py +0 -3
  836. office365/directory/identitygovernance/quarantine_configuration.py +1 -2
  837. office365/directory/identitygovernance/quarantine_details.py +1 -2
  838. office365/directory/identitygovernance/resource_access_detail.py +0 -3
  839. office365/directory/identitygovernance/rulebasedsubjectset.py +0 -3
  840. office365/directory/identitygovernance/run.py +18 -0
  841. office365/directory/identitygovernance/runsummary.py +0 -3
  842. office365/directory/identitygovernance/subject_processing_result.py +18 -22
  843. office365/directory/identitygovernance/subject_summary.py +0 -3
  844. office365/directory/identitygovernance/task.py +10 -0
  845. office365/directory/identitygovernance/task_definition.py +7 -0
  846. office365/directory/identitygovernance/task_processing_result.py +12 -8
  847. office365/directory/identitygovernance/task_report.py +13 -0
  848. office365/directory/identitygovernance/taskreportsummary.py +0 -3
  849. office365/directory/identitygovernance/termsofuse/agreement.py +11 -10
  850. office365/directory/identitygovernance/termsofuse/agreement_acceptance.py +14 -0
  851. office365/directory/identitygovernance/termsofuse/agreement_file.py +2 -0
  852. office365/directory/identitygovernance/termsofuse/agreement_file_data.py +0 -3
  853. office365/directory/identitygovernance/termsofuse/agreement_file_localization.py +2 -0
  854. office365/directory/identitygovernance/termsofuse/agreement_file_properties.py +10 -10
  855. office365/directory/identitygovernance/termsofuse/container.py +3 -0
  856. office365/directory/identitygovernance/termsofuse/terms_expiration.py +1 -2
  857. office365/directory/identitygovernance/text_content.py +0 -3
  858. office365/directory/identitygovernance/timebasedattributetrigger.py +0 -3
  859. office365/directory/identitygovernance/toptasksinsightssummary.py +0 -3
  860. office365/directory/identitygovernance/topworkflowsinsightssummary.py +0 -3
  861. office365/directory/identitygovernance/triggerandscopebasedconditions.py +4 -2
  862. office365/directory/identitygovernance/user_data_security_and_governance.py +3 -0
  863. office365/directory/identitygovernance/user_inactivity_trigger.py +0 -3
  864. office365/directory/identitygovernance/user_processing_result.py +13 -0
  865. office365/directory/identitygovernance/userconsent/request.py +3 -0
  866. office365/directory/identitygovernance/userconsent/request_collection.py +2 -0
  867. office365/directory/identitygovernance/usersprocessingsummary.py +0 -3
  868. office365/directory/identitygovernance/usersummary.py +0 -3
  869. office365/directory/identitygovernance/workflow/attributechangetrigger.py +1 -2
  870. office365/directory/identitygovernance/workflow/base.py +16 -6
  871. office365/directory/identitygovernance/workflow/custom_callout_extension.py +6 -0
  872. office365/directory/identitygovernance/workflow/custom_extension_stage_setting.py +3 -0
  873. office365/directory/identitygovernance/workflow/customtaskextensioncallbackdata.py +0 -3
  874. office365/directory/identitygovernance/workflow/insightsbycategory.py +0 -3
  875. office365/directory/identitygovernance/workflow/insightssummary.py +0 -3
  876. office365/directory/identitygovernance/workflow/membershipchangetrigger.py +0 -3
  877. office365/directory/identitygovernance/workflow/setting.py +1 -2
  878. office365/directory/identitygovernance/workflow/subject.py +0 -3
  879. office365/directory/identitygovernance/workflow/template.py +6 -0
  880. office365/directory/identitygovernance/workflow/triggerattribute.py +0 -3
  881. office365/directory/identitygovernance/workflow/version.py +6 -8
  882. office365/directory/identitygovernance/workflow/workflow.py +14 -0
  883. office365/directory/inheritable_permission.py +6 -8
  884. office365/directory/insights/identity.py +0 -3
  885. office365/directory/insights/office_graph.py +4 -0
  886. office365/directory/insights/resource_reference.py +0 -3
  887. office365/directory/insights/shared.py +5 -8
  888. office365/directory/insights/sharing_detail.py +1 -2
  889. office365/directory/insights/trending.py +6 -7
  890. office365/directory/insights/usage_details.py +0 -2
  891. office365/directory/insights/used.py +4 -8
  892. office365/directory/internal/sponsors.py +0 -3
  893. office365/directory/invitations/collection.py +5 -0
  894. office365/directory/invitations/invitation.py +13 -1
  895. office365/directory/invitations/message_info.py +1 -2
  896. office365/directory/key_credential.py +0 -3
  897. office365/directory/licenses/assigned_license.py +1 -2
  898. office365/directory/licenses/assigned_plan.py +0 -2
  899. office365/directory/licenses/assignment_state.py +1 -2
  900. office365/directory/licenses/details.py +2 -0
  901. office365/directory/licenses/processing_state.py +0 -3
  902. office365/directory/licenses/service_plan_info.py +0 -3
  903. office365/directory/licenses/subscribed_sku.py +4 -0
  904. office365/directory/licenses/units_detail.py +0 -3
  905. office365/directory/migrations_root.py +30 -0
  906. office365/directory/modified_property.py +0 -3
  907. office365/directory/multi_tenant_application_metrics.py +3 -0
  908. office365/directory/multi_tenant_application_metrics_base.py +4 -0
  909. office365/directory/multi_tenant_application_metrics_initial.py +2 -0
  910. office365/directory/multi_tenant_application_metrics_recent.py +2 -0
  911. office365/directory/multi_tenant_applications_to_provision.py +1 -2
  912. office365/directory/multi_tenant_applications_to_provision_snapshot.py +1 -2
  913. office365/directory/multi_tenant_organization_identity_sync_policy_template.py +5 -18
  914. office365/directory/multi_tenant_organization_join_request_record.py +11 -24
  915. office365/directory/multi_tenant_organization_member.py +15 -24
  916. office365/directory/multi_tenant_organization_partner_configuration_template.py +12 -44
  917. office365/directory/o_auth_consent_app_detail.py +0 -3
  918. office365/directory/objects/addin.py +1 -2
  919. office365/directory/objects/collection.py +39 -0
  920. office365/directory/objects/informationalurl.py +0 -3
  921. office365/directory/objects/object.py +27 -0
  922. office365/directory/objects/onpremisesprovisioningerror.py +0 -2
  923. office365/directory/objects/service_provisioning_xml_error.py +0 -3
  924. office365/directory/objects/serviceprovisioningerror.py +0 -2
  925. office365/directory/on_premises_directory_synchronization.py +9 -18
  926. office365/directory/password_credential.py +0 -3
  927. office365/directory/permissions/checker.py +23 -13
  928. office365/directory/permissions/comment_action.py +1 -2
  929. office365/directory/permissions/create_action.py +0 -3
  930. office365/directory/permissions/delete_action.py +0 -3
  931. office365/directory/permissions/grants/condition_set.py +11 -6
  932. office365/directory/permissions/grants/oauth2.py +6 -0
  933. office365/directory/permissions/grants/resource_specific.py +6 -0
  934. office365/directory/permissions/grants/resourcespecificpermission.py +0 -2
  935. office365/directory/permissions/guard.py +36 -13
  936. office365/directory/permissions/identity.py +0 -3
  937. office365/directory/permissions/scope.py +0 -3
  938. office365/directory/permissions/scoped_role_membership.py +4 -0
  939. office365/directory/policies/admin_consent_request.py +9 -10
  940. office365/directory/policies/all_devices_assignment_target.py +0 -3
  941. office365/directory/policies/all_domains.py +0 -3
  942. office365/directory/policies/all_licensed_users_assignment_target.py +0 -3
  943. office365/directory/policies/app_management.py +5 -11
  944. office365/directory/policies/app_management_application_configuration.py +1 -2
  945. office365/directory/policies/app_management_configuration.py +1 -2
  946. office365/directory/policies/app_management_policy_actor_exemptions.py +1 -2
  947. office365/directory/policies/app_management_service_principal_configuration.py +0 -3
  948. office365/directory/policies/applied_conditional_access.py +1 -2
  949. office365/directory/policies/authentication_combination_configuration.py +2 -0
  950. office365/directory/policies/authentication_context_class_reference.py +4 -0
  951. office365/directory/policies/authentication_flows.py +8 -10
  952. office365/directory/policies/authentication_methods.py +9 -0
  953. office365/directory/policies/authentication_strength.py +14 -0
  954. office365/directory/policies/authorization.py +9 -0
  955. office365/directory/policies/azure_ad_registration_policy.py +1 -2
  956. office365/directory/policies/base.py +3 -0
  957. office365/directory/policies/ca_policies_deletable_root.py +3 -0
  958. office365/directory/policies/cloud_app_security_session_control.py +0 -3
  959. office365/directory/policies/conditionalaccess/all_external_tenants.py +0 -3
  960. office365/directory/policies/conditionalaccess/applications.py +1 -2
  961. office365/directory/policies/conditionalaccess/authentication_flows.py +0 -3
  962. office365/directory/policies/conditionalaccess/client_applications.py +1 -2
  963. office365/directory/policies/conditionalaccess/condition_set.py +1 -2
  964. office365/directory/policies/conditionalaccess/conditional_access.py +17 -21
  965. office365/directory/policies/conditionalaccess/device_and_app_management_assignment_target.py +0 -3
  966. office365/directory/policies/conditionalaccess/device_info.py +1 -2
  967. office365/directory/policies/conditionalaccess/devices.py +1 -2
  968. office365/directory/policies/conditionalaccess/enumerated_external_tenants.py +1 -2
  969. office365/directory/policies/conditionalaccess/external_tenants.py +0 -3
  970. office365/directory/policies/conditionalaccess/filter.py +0 -3
  971. office365/directory/policies/conditionalaccess/grant_controls.py +1 -2
  972. office365/directory/policies/conditionalaccess/guests_or_external_users.py +1 -2
  973. office365/directory/policies/conditionalaccess/locations.py +1 -2
  974. office365/directory/policies/conditionalaccess/persistent_browser_session_control.py +0 -3
  975. office365/directory/policies/conditionalaccess/platforms.py +1 -2
  976. office365/directory/policies/conditionalaccess/policy_deletable_item.py +2 -0
  977. office365/directory/policies/conditionalaccess/policy_detail.py +1 -2
  978. office365/directory/policies/conditionalaccess/secure_sign_in_session_control.py +0 -3
  979. office365/directory/policies/conditionalaccess/service_principal_sign_in.py +0 -3
  980. office365/directory/policies/conditionalaccess/session_controls.py +1 -2
  981. office365/directory/policies/conditionalaccess/sign_in_conditions.py +1 -2
  982. office365/directory/policies/conditionalaccess/sign_in_frequency_session_control.py +0 -3
  983. office365/directory/policies/conditionalaccess/sign_in_identity.py +0 -3
  984. office365/directory/policies/conditionalaccess/user_action_context.py +0 -3
  985. office365/directory/policies/conditionalaccess/user_sign_in.py +0 -3
  986. office365/directory/policies/conditionalaccess/users.py +1 -2
  987. office365/directory/policies/crosstenant/access.py +4 -0
  988. office365/directory/policies/crosstenant/app_service_connect_setting.py +1 -2
  989. office365/directory/policies/crosstenant/b2_b_setting.py +1 -2
  990. office365/directory/policies/crosstenant/inbound_trust.py +0 -3
  991. office365/directory/policies/crosstenant/m365_collaboration_inbound_setting.py +1 -2
  992. office365/directory/policies/crosstenant/m365_collaboration_outbound_setting.py +1 -2
  993. office365/directory/policies/crosstenant/target.py +0 -3
  994. office365/directory/policies/crosstenant/target_configuration.py +1 -2
  995. office365/directory/policies/crosstenant/tenant_restrictions.py +1 -2
  996. office365/directory/policies/crosstenant/user_sync_inbound.py +0 -3
  997. office365/directory/policies/custom_app_management_application_configuration.py +1 -2
  998. office365/directory/policies/custom_app_management_configuration.py +1 -2
  999. office365/directory/policies/default_invitation_redemption_identity_provider_configuration.py +0 -3
  1000. office365/directory/policies/device_registration.py +13 -27
  1001. office365/directory/policies/devices_filter.py +0 -3
  1002. office365/directory/policies/enumerated_domains.py +1 -2
  1003. office365/directory/policies/face_check_configuration.py +0 -3
  1004. office365/directory/policies/feature_rollout.py +8 -7
  1005. office365/directory/policies/federated_token_validation_policy.py +3 -7
  1006. office365/directory/policies/group_scope.py +0 -3
  1007. office365/directory/policies/identifier_uri_configuration.py +1 -2
  1008. office365/directory/policies/inbound_outbound_policy_configuration.py +0 -3
  1009. office365/directory/policies/invitation_redemption_identity_provider_configuration.py +1 -2
  1010. office365/directory/policies/ownerless_group_policy.py +11 -13
  1011. office365/directory/policies/permission_grant.py +3 -0
  1012. office365/directory/policies/protected_application_metadata.py +1 -2
  1013. office365/directory/policies/protection_policy_artifact_count.py +0 -3
  1014. office365/directory/policies/restrict_access_action.py +0 -3
  1015. office365/directory/policies/restrict_access_action_base.py +0 -3
  1016. office365/directory/policies/retention_setting.py +0 -2
  1017. office365/directory/policies/root.py +22 -5
  1018. office365/directory/policies/scope_base.py +0 -3
  1019. office365/directory/policies/security_defaults.py +2 -0
  1020. office365/directory/policies/self_service_sign_up_authentication_flow_configuration.py +0 -3
  1021. office365/directory/policies/sts.py +3 -1
  1022. office365/directory/policies/template.py +3 -0
  1023. office365/directory/policies/tenant_app_management.py +9 -17
  1024. office365/directory/policies/tenant_scope.py +0 -3
  1025. office365/directory/policies/unifiedrolemanagement/policy.py +11 -3
  1026. office365/directory/policies/unifiedrolemanagement/unified_role_assignment_schedule_request.py +22 -13
  1027. office365/directory/policies/update_allowed_combinations_result.py +1 -2
  1028. office365/directory/policies/user_scope.py +0 -3
  1029. office365/directory/policies/validating_domains.py +0 -3
  1030. office365/directory/policies/verified_id_profile_configuration.py +1 -2
  1031. office365/directory/policies/verified_id_usage_configuration.py +0 -3
  1032. office365/directory/profile_card_annotation.py +1 -2
  1033. office365/directory/profile_photo.py +3 -0
  1034. office365/directory/profile_source_localization.py +0 -3
  1035. office365/directory/protection/bitlocker.py +2 -0
  1036. office365/directory/protection/bitlocker_recovery_key.py +7 -6
  1037. office365/directory/protection/information.py +8 -0
  1038. office365/directory/protection/policy/base.py +19 -16
  1039. office365/directory/protection/policy/one_drive_for_business.py +4 -0
  1040. office365/directory/protection/risk_detection.py +20 -0
  1041. office365/directory/protection/riskyusers/activity.py +1 -2
  1042. office365/directory/protection/riskyusers/collection.py +3 -0
  1043. office365/directory/protection/riskyusers/history_item.py +2 -0
  1044. office365/directory/protection/riskyusers/risk_service_principal_activity.py +1 -2
  1045. office365/directory/protection/riskyusers/risky_service_principal.py +11 -0
  1046. office365/directory/protection/riskyusers/risky_service_principal_history_item.py +5 -10
  1047. office365/directory/protection/riskyusers/risky_user.py +6 -0
  1048. office365/directory/protection/riskyusers/service_principal_risk_detection.py +21 -0
  1049. office365/directory/protection/root.py +4 -2
  1050. office365/directory/protection/rules/base.py +19 -14
  1051. office365/directory/protection/rules/drive.py +2 -0
  1052. office365/directory/protection/threatassessment/requests/email_file.py +8 -10
  1053. office365/directory/protection/threatassessment/requests/file.py +1 -0
  1054. office365/directory/protection/threatassessment/requests/mail.py +8 -10
  1055. office365/directory/protection/threatassessment/requests/request.py +7 -14
  1056. office365/directory/protection/threatassessment/requests/threat_assessment_result.py +6 -10
  1057. office365/directory/protection/threatassessment/requests/url.py +2 -0
  1058. office365/directory/quotas.py +39 -2
  1059. office365/directory/recovery/change_object_base.py +6 -6
  1060. office365/directory/recovery/job.py +4 -0
  1061. office365/directory/recovery/job_base.py +11 -13
  1062. office365/directory/recovery/job_entity_name_and_ids_filter.py +1 -2
  1063. office365/directory/recovery/job_entity_names_filter.py +1 -2
  1064. office365/directory/recovery/job_filtering_criteria_base.py +0 -3
  1065. office365/directory/recovery/recovery.py +3 -0
  1066. office365/directory/related_tenant.py +8 -0
  1067. office365/directory/related_tenants_refresh_status.py +0 -2
  1068. office365/directory/relationship_policy.py +1 -2
  1069. office365/directory/remote_tenant_group.py +6 -0
  1070. office365/directory/request_schedule.py +1 -2
  1071. office365/directory/requestor_manager.py +0 -3
  1072. office365/directory/resource_visualization.py +0 -3
  1073. office365/directory/role_template.py +0 -3
  1074. office365/directory/rolemanagement/app_scope.py +3 -0
  1075. office365/directory/rolemanagement/application.py +25 -3
  1076. office365/directory/rolemanagement/management.py +2 -1
  1077. office365/directory/rolemanagement/resource_action.py +1 -2
  1078. office365/directory/rolemanagement/roles/collection.py +8 -1
  1079. office365/directory/rolemanagement/roles/management_deleted_item_container.py +30 -0
  1080. office365/directory/rolemanagement/roles/permission.py +1 -2
  1081. office365/directory/rolemanagement/roles/role.py +16 -1
  1082. office365/directory/rolemanagement/templates/template.py +3 -0
  1083. office365/directory/rolemanagement/unifiedrole/assignment.py +10 -2
  1084. office365/directory/rolemanagement/unifiedrole/definition.py +8 -1
  1085. office365/directory/rolemanagement/unifiedrole/notification_recipients.py +1 -2
  1086. office365/directory/rolemanagement/unifiedrole/permission.py +1 -2
  1087. office365/directory/serviceprincipals/approved_client_app.py +2 -0
  1088. office365/directory/serviceprincipals/delegated_permission_classification.py +4 -0
  1089. office365/directory/serviceprincipals/federated_identity_credential.py +6 -0
  1090. office365/directory/serviceprincipals/identity.py +0 -3
  1091. office365/directory/serviceprincipals/lockconfiguration.py +0 -3
  1092. office365/directory/serviceprincipals/remote_desktop_security_configuration.py +4 -0
  1093. office365/directory/serviceprincipals/samlsinglesignonsettings.py +0 -3
  1094. office365/directory/serviceprincipals/service_principal.py +187 -93
  1095. office365/directory/serviceprincipals/target_device_group.py +2 -0
  1096. office365/directory/single_service_principal.py +0 -3
  1097. office365/directory/single_user.py +0 -3
  1098. office365/directory/snapshot.py +5 -0
  1099. office365/directory/subscriptions/company.py +15 -6
  1100. office365/directory/synchronization/attribute_mapping.py +1 -2
  1101. office365/directory/synchronization/attribute_mapping_function_schema.py +2 -0
  1102. office365/directory/synchronization/directory_definition.py +7 -0
  1103. office365/directory/synchronization/filter_operator_schema.py +4 -0
  1104. office365/directory/synchronization/job.py +13 -7
  1105. office365/directory/synchronization/job_application_parameters.py +1 -2
  1106. office365/directory/synchronization/job_subject.py +0 -2
  1107. office365/directory/synchronization/linked_objects.py +0 -2
  1108. office365/directory/synchronization/metadata_entry.py +0 -3
  1109. office365/directory/synchronization/on_premises_accidental_deletion_prevention.py +0 -3
  1110. office365/directory/synchronization/on_premises_directory_synchronization_configuration.py +1 -2
  1111. office365/directory/synchronization/on_premises_directory_synchronization_feature.py +0 -3
  1112. office365/directory/synchronization/progress.py +0 -3
  1113. office365/directory/synchronization/quarantine.py +1 -2
  1114. office365/directory/synchronization/rule.py +1 -2
  1115. office365/directory/synchronization/schedule.py +1 -2
  1116. office365/directory/synchronization/schema.py +8 -6
  1117. office365/directory/synchronization/secret_key_string_value_pair.py +0 -3
  1118. office365/directory/synchronization/status.py +1 -2
  1119. office365/directory/synchronization/synchronization.py +5 -11
  1120. office365/directory/synchronization/template.py +10 -10
  1121. office365/directory/target_agent_identity_sponsors_or_owners.py +0 -3
  1122. office365/directory/target_application_owners.py +0 -3
  1123. office365/directory/target_manager.py +0 -3
  1124. office365/directory/target_user_sponsors.py +0 -3
  1125. office365/directory/tenant_governance.py +7 -0
  1126. office365/directory/tenant_governance_policy_template.py +12 -17
  1127. office365/directory/tenant_governance_setting.py +3 -0
  1128. office365/directory/tenantinformation/information.py +0 -3
  1129. office365/directory/tenantinformation/multi_organization.py +8 -7
  1130. office365/directory/tenantinformation/relationship.py +12 -1
  1131. office365/directory/ticket_info.py +0 -3
  1132. office365/directory/unified_approval_stage.py +1 -2
  1133. office365/directory/unified_rbac_resource_action.py +7 -0
  1134. office365/directory/unified_rbac_resource_namespace.py +3 -0
  1135. office365/directory/unified_role.py +0 -3
  1136. office365/directory/unified_role_assignment_schedule.py +6 -3
  1137. office365/directory/unified_role_assignment_schedule_instance.py +8 -0
  1138. office365/directory/unified_role_eligibility_schedule.py +5 -6
  1139. office365/directory/unified_role_eligibility_schedule_instance.py +5 -0
  1140. office365/directory/unified_role_eligibility_schedule_request.py +21 -13
  1141. office365/directory/unified_role_management_policy_approval_rule.py +3 -7
  1142. office365/directory/unified_role_management_policy_assignment.py +6 -0
  1143. office365/directory/unified_role_management_policy_authentication_context_rule.py +3 -0
  1144. office365/directory/unified_role_management_policy_custom_extension_rule.py +5 -0
  1145. office365/directory/unified_role_management_policy_enablement_rule.py +2 -0
  1146. office365/directory/unified_role_management_policy_expiration_rule.py +5 -4
  1147. office365/directory/unified_role_management_policy_notification_rule.py +6 -0
  1148. office365/directory/unified_role_management_policy_rule.py +3 -11
  1149. office365/directory/unified_role_management_policy_rule_target.py +1 -2
  1150. office365/directory/unified_role_schedule_base.py +13 -0
  1151. office365/directory/unified_role_schedule_instance_base.py +9 -0
  1152. office365/directory/unified_root.py +4 -0
  1153. office365/directory/unified_storage_quota.py +8 -0
  1154. office365/directory/users/activities/activity.py +17 -10
  1155. office365/directory/users/activities/collection.py +2 -0
  1156. office365/directory/users/activities/history_item.py +13 -7
  1157. office365/directory/users/authorizationinfo.py +1 -2
  1158. office365/directory/users/collection.py +1 -1
  1159. office365/directory/users/employeeorgdata.py +0 -3
  1160. office365/directory/users/identity.py +0 -3
  1161. office365/directory/users/inference_classification.py +2 -0
  1162. office365/directory/users/inference_classification_override.py +5 -14
  1163. office365/directory/users/insights_settings.py +2 -0
  1164. office365/directory/users/note.py +11 -3
  1165. office365/directory/users/onpremisesextensionattributes.py +0 -3
  1166. office365/directory/users/password_profile.py +0 -3
  1167. office365/directory/users/profile.py +1 -2
  1168. office365/directory/users/provisioned_plan.py +0 -3
  1169. office365/directory/users/settings.py +8 -2
  1170. office365/directory/users/storage.py +2 -0
  1171. office365/directory/users/user.py +175 -8
  1172. office365/directory/users/windows_setting.py +6 -3
  1173. office365/directory/users/windows_setting_instance.py +5 -0
  1174. office365/directory/users/work_hours_and_locations_setting.py +5 -7
  1175. office365/directory/users/work_plan_occurrence.py +11 -16
  1176. office365/directory/users/work_plan_recurrence.py +10 -16
  1177. office365/directory/verified_id_profile.py +15 -31
  1178. office365/directory/visual_info.py +1 -2
  1179. office365/education/challenging_word.py +0 -3
  1180. office365/education/related_contact.py +0 -3
  1181. office365/education/root.py +4 -0
  1182. office365/education/rubric_criterion.py +0 -3
  1183. office365/education/rubric_level.py +0 -3
  1184. office365/education/rubric_quality.py +1 -2
  1185. office365/education/rubric_quality_feedback_model.py +0 -3
  1186. office365/education/rubric_quality_selected_column_model.py +0 -3
  1187. office365/entity.py +7 -1
  1188. office365/exchange/README.md +170 -0
  1189. office365/exchange/__init__.py +6 -0
  1190. office365/exchange/client.py +163 -0
  1191. office365/exchange/cmdlets.py +68 -0
  1192. office365/exchange/environments.py +30 -0
  1193. office365/exchange/query.py +49 -0
  1194. office365/exchange/request.py +134 -0
  1195. office365/externalconnectors/acl.py +0 -3
  1196. office365/externalconnectors/activity_settings.py +1 -2
  1197. office365/externalconnectors/connection_operation.py +4 -7
  1198. office365/externalconnectors/display_template.py +1 -2
  1199. office365/externalconnectors/external_activity.py +4 -0
  1200. office365/externalconnectors/external_activity_result.py +3 -7
  1201. office365/externalconnectors/external_group.py +4 -0
  1202. office365/externalconnectors/external_item_content.py +0 -3
  1203. office365/externalconnectors/external_item_information_protection_label.py +0 -3
  1204. office365/externalconnectors/identity.py +4 -4
  1205. office365/externalconnectors/item_id_resolver.py +1 -2
  1206. office365/externalconnectors/principal.py +0 -3
  1207. office365/externalconnectors/properties.py +0 -3
  1208. office365/externalconnectors/property.py +1 -2
  1209. office365/externalconnectors/property_rule.py +1 -2
  1210. office365/externalconnectors/schema.py +2 -0
  1211. office365/externalconnectors/url_match_info.py +1 -2
  1212. office365/externalconnectors/url_to_item_resolver_base.py +0 -3
  1213. office365/graph_client.py +91 -50
  1214. office365/intune/audit/actor.py +1 -2
  1215. office365/intune/audit/event.py +14 -2
  1216. office365/intune/audit/event_collection.py +25 -0
  1217. office365/intune/audit/property.py +0 -3
  1218. office365/intune/audit/resource.py +1 -2
  1219. office365/intune/browser/browser_site_history.py +1 -2
  1220. office365/intune/devices/alternative_security_id.py +0 -3
  1221. office365/intune/devices/and_app_management_role_assignment.py +2 -0
  1222. office365/intune/devices/category.py +3 -0
  1223. office365/intune/devices/cloud_pc.py +15 -0
  1224. office365/intune/devices/cloud_pc_launch_detail.py +0 -3
  1225. office365/intune/devices/cloud_pc_windows_setting.py +0 -3
  1226. office365/intune/devices/collection.py +6 -0
  1227. office365/intune/devices/compliance/android_compliance_policy.py +25 -17
  1228. office365/intune/devices/compliance/android_work_profile_compliance_policy.py +25 -17
  1229. office365/intune/devices/compliance/information.py +1 -2
  1230. office365/intune/devices/compliance/ios_compliance_policy.py +18 -17
  1231. office365/intune/devices/compliance/mac_os_compliance_policy.py +21 -17
  1232. office365/intune/devices/compliance/management_partner.py +13 -25
  1233. office365/intune/devices/compliance/management_partner_assignment.py +1 -2
  1234. office365/intune/devices/compliance/policy.py +25 -0
  1235. office365/intune/devices/compliance/policy_state.py +11 -20
  1236. office365/intune/devices/compliance/setting_state_device_summary.py +10 -0
  1237. office365/intune/devices/compliance/windows10_compliance_policy.py +22 -10
  1238. office365/intune/devices/compliance/windows10_mobile_compliance_policy.py +19 -10
  1239. office365/intune/devices/compliance/windows81_compliance_policy.py +14 -10
  1240. office365/intune/devices/compliance/windows_phone81_compliance_policy.py +14 -10
  1241. office365/intune/devices/compliance_action_item.py +7 -10
  1242. office365/intune/devices/compliance_device_overview.py +8 -0
  1243. office365/intune/devices/compliance_device_status.py +10 -6
  1244. office365/intune/devices/compliance_policy_assignment.py +5 -11
  1245. office365/intune/devices/compliance_policy_device_state_summary.py +10 -0
  1246. office365/intune/devices/compliance_policy_setting_state_summary.py +13 -7
  1247. office365/intune/devices/compliance_scheduled_action_for_rule.py +3 -0
  1248. office365/intune/devices/compliance_setting_state.py +14 -6
  1249. office365/intune/devices/compliance_user_overview.py +8 -0
  1250. office365/intune/devices/compliance_user_status.py +8 -6
  1251. office365/intune/devices/configuration_assignment.py +5 -11
  1252. office365/intune/devices/configuration_device_overview.py +8 -0
  1253. office365/intune/devices/configuration_device_state_summary.py +8 -0
  1254. office365/intune/devices/configuration_device_status.py +10 -6
  1255. office365/intune/devices/configuration_state.py +11 -20
  1256. office365/intune/devices/configuration_user_overview.py +8 -0
  1257. office365/intune/devices/configuration_user_status.py +8 -6
  1258. office365/intune/devices/configurations/android/android_lob_app.py +7 -10
  1259. office365/intune/devices/configurations/android/android_store_app.py +6 -10
  1260. office365/intune/devices/configurations/android/custom_configuration.py +3 -7
  1261. office365/intune/devices/configurations/android/general_device_configuration.py +54 -31
  1262. office365/intune/devices/configurations/android/minimum_operating_system.py +0 -3
  1263. office365/intune/devices/configurations/android/mobile_app_identifier.py +0 -3
  1264. office365/intune/devices/configurations/android/work_profile_custom_configuration.py +3 -7
  1265. office365/intune/devices/configurations/android/work_profile_general_device_configuration.py +45 -28
  1266. office365/intune/devices/configurations/configuration.py +12 -0
  1267. office365/intune/devices/configurations/edge_search_engine.py +0 -3
  1268. office365/intune/devices/configurations/edge_search_engine_base.py +0 -3
  1269. office365/intune/devices/configurations/edge_search_engine_custom.py +0 -3
  1270. office365/intune/devices/configurations/ios/custom_configuration.py +4 -0
  1271. office365/intune/devices/configurations/ios/features_configuration.py +10 -24
  1272. office365/intune/devices/configurations/ios/general/device_configuration.py +148 -94
  1273. office365/intune/devices/configurations/ios/home_screen_app.py +0 -3
  1274. office365/intune/devices/configurations/ios/home_screen_folder.py +1 -2
  1275. office365/intune/devices/configurations/ios/home_screen_folder_page.py +1 -2
  1276. office365/intune/devices/configurations/ios/home_screen_item.py +0 -3
  1277. office365/intune/devices/configurations/ios/home_screen_page.py +1 -2
  1278. office365/intune/devices/configurations/ios/minimum_operating_system.py +0 -3
  1279. office365/intune/devices/configurations/ios/network_usage_rule.py +1 -2
  1280. office365/intune/devices/configurations/ios/notification_settings.py +0 -3
  1281. office365/intune/devices/configurations/ios/update_configuration.py +7 -6
  1282. office365/intune/devices/configurations/macos/mac_os_custom_configuration.py +4 -0
  1283. office365/intune/devices/configurations/macos/mac_os_general_device_configuration.py +17 -16
  1284. office365/intune/devices/configurations/macos/mac_os_minimum_operating_system.py +0 -3
  1285. office365/intune/devices/configurations/media_content_rating_australia.py +0 -3
  1286. office365/intune/devices/configurations/media_content_rating_canada.py +0 -3
  1287. office365/intune/devices/configurations/media_content_rating_france.py +0 -3
  1288. office365/intune/devices/configurations/media_content_rating_germany.py +0 -3
  1289. office365/intune/devices/configurations/media_content_rating_ireland.py +0 -3
  1290. office365/intune/devices/configurations/media_content_rating_japan.py +0 -3
  1291. office365/intune/devices/configurations/media_content_rating_new_zealand.py +0 -3
  1292. office365/intune/devices/configurations/media_content_rating_united_kingdom.py +0 -3
  1293. office365/intune/devices/configurations/media_content_rating_united_states.py +0 -3
  1294. office365/intune/devices/configurations/oma_setting.py +0 -3
  1295. office365/intune/devices/configurations/oma_setting_base64.py +0 -3
  1296. office365/intune/devices/configurations/oma_setting_boolean.py +0 -3
  1297. office365/intune/devices/configurations/oma_setting_date_time.py +0 -2
  1298. office365/intune/devices/configurations/oma_setting_floating_point.py +0 -3
  1299. office365/intune/devices/configurations/oma_setting_integer.py +0 -3
  1300. office365/intune/devices/configurations/oma_setting_string.py +0 -3
  1301. office365/intune/devices/configurations/oma_setting_string_xml.py +0 -3
  1302. office365/intune/devices/configurations/rgb_color.py +0 -3
  1303. office365/intune/devices/configurations/windows/bit_locker_removable_drive_policy.py +0 -3
  1304. office365/intune/devices/configurations/windows/defender_advanced_threat_protection_configuration.py +3 -0
  1305. office365/intune/devices/configurations/windows/firewall_network_profile.py +0 -3
  1306. office365/intune/devices/configurations/windows/minimum_operating_system.py +0 -3
  1307. office365/intune/devices/configurations/windows/out_of_box_experience_setting.py +0 -3
  1308. office365/intune/devices/configurations/windows/phone81_custom_configuration.py +3 -7
  1309. office365/intune/devices/configurations/windows/phone81_general_configuration.py +34 -16
  1310. office365/intune/devices/configurations/windows/shared_pc_account_manager_policy.py +0 -3
  1311. office365/intune/devices/configurations/windows/update_active_hours_install.py +0 -2
  1312. office365/intune/devices/configurations/windows/update_for_business_configuration.py +53 -60
  1313. office365/intune/devices/configurations/windows/update_install_schedule_type.py +0 -3
  1314. office365/intune/devices/configurations/windows/update_scheduled_install.py +0 -2
  1315. office365/intune/devices/configurations/windows/windows10_custom_configuration.py +3 -7
  1316. office365/intune/devices/configurations/windows/windows10_endpoint_protection_configuration.py +60 -55
  1317. office365/intune/devices/configurations/windows/windows10_enrollment_completion_page_configuration.py +2 -0
  1318. office365/intune/devices/configurations/windows/windows10_enterprise_modern_app_management_configuration.py +2 -0
  1319. office365/intune/devices/configurations/windows/windows10_general_configuration.py +232 -158
  1320. office365/intune/devices/configurations/windows/windows10_network_proxy_server.py +1 -2
  1321. office365/intune/devices/configurations/windows/windows10_secure_assessment_configuration.py +6 -0
  1322. office365/intune/devices/configurations/windows/windows10_team_general_configuration.py +26 -17
  1323. office365/intune/devices/configurations/windows/windows81_general_configuration.py +39 -35
  1324. office365/intune/devices/data.py +0 -3
  1325. office365/intune/devices/detail.py +0 -3
  1326. office365/intune/devices/device.py +32 -4
  1327. office365/intune/devices/device_metadata.py +1 -2
  1328. office365/intune/devices/enrollment/configuration.py +8 -0
  1329. office365/intune/devices/enrollment/configuration_assignment.py +5 -11
  1330. office365/intune/devices/enrollment/limit_configuration.py +2 -0
  1331. office365/intune/devices/enrollment_platform_restrictions_configuration.py +7 -27
  1332. office365/intune/devices/enrollment_windows_hello_for_business_configuration.py +16 -23
  1333. office365/intune/devices/enumerated_device_registration_membership.py +1 -2
  1334. office365/intune/devices/install_state.py +11 -10
  1335. office365/intune/devices/local_credential.py +0 -2
  1336. office365/intune/devices/log_collection_response.py +11 -8
  1337. office365/intune/devices/management/action_result.py +0 -2
  1338. office365/intune/devices/management/all_device_registration_membership.py +0 -3
  1339. office365/intune/devices/management/app_management.py +19 -1
  1340. office365/intune/devices/management/apple_push_notification_certificate.py +9 -0
  1341. office365/intune/devices/management/compliance_policy_setting_state.py +1 -2
  1342. office365/intune/devices/management/configuration_manager_client_enabled_features.py +0 -3
  1343. office365/intune/devices/management/configuration_manager_collection_assignment_target.py +0 -3
  1344. office365/intune/devices/management/configuration_setting_state.py +1 -2
  1345. office365/intune/devices/management/defender_detected_malware_actions.py +0 -3
  1346. office365/intune/devices/management/delete_user_from_shared_apple_device_action_result.py +0 -3
  1347. office365/intune/devices/management/detected_app.py +9 -7
  1348. office365/intune/devices/management/device_protection_overview.py +0 -3
  1349. office365/intune/devices/management/enrollment_platform_restriction.py +0 -3
  1350. office365/intune/devices/management/exchange_access_state_summary.py +0 -3
  1351. office365/intune/devices/management/geo_location.py +0 -2
  1352. office365/intune/devices/management/group_peer_outlier_recommendation_insight_settings.py +0 -3
  1353. office365/intune/devices/management/health_attestation_state.py +0 -2
  1354. office365/intune/devices/management/imported_windows_autopilot_device_identity.py +12 -10
  1355. office365/intune/devices/management/imported_windows_autopilot_device_identity_state.py +0 -3
  1356. office365/intune/devices/management/insight_value_double.py +0 -3
  1357. office365/intune/devices/management/insight_value_int.py +0 -3
  1358. office365/intune/devices/management/integer_range.py +0 -3
  1359. office365/intune/devices/management/ios_update_device_status.py +15 -13
  1360. office365/intune/devices/management/localized_notification_message.py +6 -0
  1361. office365/intune/devices/management/locate_device_action_result.py +1 -2
  1362. office365/intune/devices/management/m365_capability_base.py +7 -6
  1363. office365/intune/devices/management/m365_capability_inbound_access.py +1 -2
  1364. office365/intune/devices/management/m365_capability_resource_scope.py +0 -3
  1365. office365/intune/devices/management/m365_capability_resource_scopes.py +1 -2
  1366. office365/intune/devices/management/managed/app/app.py +3 -0
  1367. office365/intune/devices/management/managed/app/configuration.py +2 -0
  1368. office365/intune/devices/management/managed/app/diagnostic_status.py +0 -3
  1369. office365/intune/devices/management/managed/app/operation.py +5 -0
  1370. office365/intune/devices/management/managed/app/protections/android.py +11 -0
  1371. office365/intune/devices/management/managed/app/protections/default.py +13 -0
  1372. office365/intune/devices/management/managed/app/protections/ios.py +8 -0
  1373. office365/intune/devices/management/managed/app/protections/protection.py +28 -0
  1374. office365/intune/devices/management/managed/app/protections/targeted.py +3 -0
  1375. office365/intune/devices/management/managed/app/protections/targeted_managed_app_policy_assignment.py +5 -11
  1376. office365/intune/devices/management/managed/app/protections/windows.py +42 -66
  1377. office365/intune/devices/management/managed/app/registration.py +17 -3
  1378. office365/intune/devices/management/managed/app/status.py +3 -0
  1379. office365/intune/devices/management/managed/app_policy_deployment_summary.py +10 -10
  1380. office365/intune/devices/management/managed/device_mobile_app_configuration.py +12 -0
  1381. office365/intune/devices/management/managed/device_mobile_app_configuration_assignment.py +5 -11
  1382. office365/intune/devices/management/managed/device_mobile_app_configuration_device_status.py +10 -6
  1383. office365/intune/devices/management/managed/device_mobile_app_configuration_device_summary.py +8 -0
  1384. office365/intune/devices/management/managed/device_mobile_app_configuration_user_status.py +8 -6
  1385. office365/intune/devices/management/managed/device_mobile_app_configuration_user_summary.py +8 -0
  1386. office365/intune/devices/management/managed/device_overview.py +9 -17
  1387. office365/intune/devices/management/managed/ebook/e_book_assignment.py +7 -14
  1388. office365/intune/devices/management/managed/ebook/ebook.py +15 -3
  1389. office365/intune/devices/management/managed/ebook/install_summary.py +7 -0
  1390. office365/intune/devices/management/managed/ebook/user_install_state_summary.py +6 -0
  1391. office365/intune/devices/management/managed/managed.py +102 -25
  1392. office365/intune/devices/management/managed/mobile_app.py +5 -6
  1393. office365/intune/devices/management/management.py +73 -39
  1394. office365/intune/devices/management/mobile_threat_defense_connector.py +18 -10
  1395. office365/intune/devices/management/mobileapps/app_configuration_setting_item.py +0 -3
  1396. office365/intune/devices/management/mobileapps/app_list_item.py +0 -3
  1397. office365/intune/devices/management/mobileapps/app_log_collection_download_details.py +0 -3
  1398. office365/intune/devices/management/mobileapps/app_log_collection_request.py +7 -8
  1399. office365/intune/devices/management/mobileapps/apps_installation_options_for_mac.py +0 -3
  1400. office365/intune/devices/management/mobileapps/apps_installation_options_for_windows.py +0 -3
  1401. office365/intune/devices/management/mobileapps/assignment.py +8 -18
  1402. office365/intune/devices/management/mobileapps/category.py +3 -0
  1403. office365/intune/devices/management/mobileapps/content.py +3 -0
  1404. office365/intune/devices/management/mobileapps/content_file.py +11 -0
  1405. office365/intune/devices/management/mobileapps/file_encryption_info.py +0 -3
  1406. office365/intune/devices/management/mobileapps/ios/ios_device_type.py +0 -3
  1407. office365/intune/devices/management/mobileapps/ios/ios_mobile_app_configuration.py +5 -10
  1408. office365/intune/devices/management/mobileapps/ios/iosi_pad_os_web_clip.py +3 -0
  1409. office365/intune/devices/management/mobileapps/ios/lob_app.py +10 -17
  1410. office365/intune/devices/management/mobileapps/ios/lob_app_assignment_settings.py +0 -3
  1411. office365/intune/devices/management/mobileapps/ios/lob_app_provisioning_configuration_assignment.py +5 -11
  1412. office365/intune/devices/management/mobileapps/ios/mobile_app_identifier.py +0 -3
  1413. office365/intune/devices/management/mobileapps/ios/store_app.py +8 -17
  1414. office365/intune/devices/management/mobileapps/ios/store_app_assignment_settings.py +0 -3
  1415. office365/intune/devices/management/mobileapps/ios/vpp_app.py +15 -20
  1416. office365/intune/devices/management/mobileapps/ios/vpp_app_assignment_settings.py +0 -3
  1417. office365/intune/devices/management/mobileapps/ios/vpp_e_book.py +9 -0
  1418. office365/intune/devices/management/mobileapps/macos/mac_os_dmg_app.py +9 -13
  1419. office365/intune/devices/management/mobileapps/macos/mac_os_included_app.py +0 -3
  1420. office365/intune/devices/management/mobileapps/macos/mac_os_lob_app.py +13 -13
  1421. office365/intune/devices/management/mobileapps/macos/mac_os_lob_app_assignment_settings.py +0 -3
  1422. office365/intune/devices/management/mobileapps/macos/mac_os_lob_child_app.py +0 -3
  1423. office365/intune/devices/management/mobileapps/macos/mac_os_microsoft_edge_app.py +3 -11
  1424. office365/intune/devices/management/mobileapps/managed/app_policy_deployment_summary_per_app.py +1 -2
  1425. office365/intune/devices/management/mobileapps/microsoft_store_for_business_app_assignment_settings.py +0 -3
  1426. office365/intune/devices/management/mobileapps/mobile_app.py +17 -3
  1427. office365/intune/devices/management/mobileapps/mobile_app_assignment_settings.py +0 -3
  1428. office365/intune/devices/management/mobileapps/mobile_app_identifier.py +0 -3
  1429. office365/intune/devices/management/mobileapps/mobile_app_install_time_settings.py +0 -2
  1430. office365/intune/devices/management/mobileapps/mobile_app_troubleshooting_event.py +2 -0
  1431. office365/intune/devices/management/mobileapps/mobile_lob_app.py +5 -0
  1432. office365/intune/devices/management/mobileapps/relationship.py +9 -0
  1433. office365/intune/devices/management/mobileapps/vpp_licensing_type.py +0 -3
  1434. office365/intune/devices/management/mobileapps/win32/lob_app.py +21 -34
  1435. office365/intune/devices/management/mobileapps/win32/lob_app_assignment_settings.py +1 -2
  1436. office365/intune/devices/management/mobileapps/win32/lob_app_auto_update_settings.py +0 -3
  1437. office365/intune/devices/management/mobileapps/win32/lob_app_file_system_rule.py +0 -3
  1438. office365/intune/devices/management/mobileapps/win32/lob_app_install_experience.py +0 -3
  1439. office365/intune/devices/management/mobileapps/win32/lob_app_msi_information.py +0 -3
  1440. office365/intune/devices/management/mobileapps/win32/lob_app_power_shell_script_rule.py +0 -3
  1441. office365/intune/devices/management/mobileapps/win32/lob_app_product_code_rule.py +0 -3
  1442. office365/intune/devices/management/mobileapps/win32/lob_app_registry_rule.py +0 -3
  1443. office365/intune/devices/management/mobileapps/win32/lob_app_restart_settings.py +0 -3
  1444. office365/intune/devices/management/mobileapps/win32/lob_app_return_code.py +0 -3
  1445. office365/intune/devices/management/mobileapps/win32/lob_app_rule.py +0 -3
  1446. office365/intune/devices/management/mobileapps/windows/app_x.py +11 -17
  1447. office365/intune/devices/management/mobileapps/windows/app_x_app_assignment_settings.py +0 -3
  1448. office365/intune/devices/management/mobileapps/windows/microsoft_edge_app.py +5 -10
  1449. office365/intune/devices/management/mobileapps/windows/mobile_msi.py +5 -0
  1450. office365/intune/devices/management/mobileapps/windows/universal_app_x.py +13 -21
  1451. office365/intune/devices/management/mobileapps/windows/universal_app_x_app_assignment_settings.py +0 -3
  1452. office365/intune/devices/management/mobileapps/windows/universal_app_x_contained_app.py +2 -0
  1453. office365/intune/devices/management/mobileapps/windows/web_app.py +2 -0
  1454. office365/intune/devices/management/notification_message_template.py +8 -7
  1455. office365/intune/devices/management/on_premises_conditional_access_settings.py +5 -0
  1456. office365/intune/devices/management/operating_system_summary.py +0 -3
  1457. office365/intune/devices/management/partner_assignment.py +1 -2
  1458. office365/intune/devices/management/remote_lock_action_result.py +0 -3
  1459. office365/intune/devices/management/remoteassistance/partner.py +7 -10
  1460. office365/intune/devices/management/reports/reports.py +2 -0
  1461. office365/intune/devices/management/reset_passcode_action_result.py +0 -3
  1462. office365/intune/devices/management/resource_operation.py +4 -0
  1463. office365/intune/devices/management/rotate_bit_locker_keys_device_action_result.py +0 -3
  1464. office365/intune/devices/management/settings.py +0 -3
  1465. office365/intune/devices/management/software_update_status_summary.py +16 -0
  1466. office365/intune/devices/management/targeted_managed_app_configuration.py +6 -0
  1467. office365/intune/devices/management/terms_and_conditions.py +11 -0
  1468. office365/intune/devices/management/terms_and_conditions_acceptance_status.py +6 -0
  1469. office365/intune/devices/management/terms_and_conditions_assignment.py +5 -11
  1470. office365/intune/devices/management/update_windows_device_account_action_parameter.py +1 -2
  1471. office365/intune/devices/management/user_experience_analytics_settings.py +0 -3
  1472. office365/intune/devices/management/user_last_sign_in_recommendation_insight_setting.py +0 -2
  1473. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_details.py +9 -0
  1474. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_device_id.py +9 -0
  1475. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_os_version.py +10 -0
  1476. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_application_performance.py +10 -0
  1477. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_model_performance.py +9 -10
  1478. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance.py +14 -10
  1479. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance_details.py +8 -0
  1480. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_os_version_performance.py +6 -0
  1481. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_autopilot_devices_summary.py +0 -3
  1482. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_baseline.py +11 -0
  1483. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_category.py +6 -7
  1484. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_identity_devices_summary.py +0 -3
  1485. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_management_devices_summary.py +0 -3
  1486. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_performance.py +24 -17
  1487. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_scores.py +12 -10
  1488. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_history.py +21 -10
  1489. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process.py +6 -0
  1490. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process_performance.py +7 -0
  1491. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight.py +1 -2
  1492. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight_value.py +0 -3
  1493. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric.py +3 -0
  1494. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric_history.py +4 -0
  1495. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_model_scores.py +12 -10
  1496. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_overview.py +5 -11
  1497. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_score_history.py +2 -0
  1498. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_windows10_devices_summary.py +0 -3
  1499. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_device.py +40 -17
  1500. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_devices_summary.py +1 -2
  1501. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_hardware_readiness_metric.py +12 -0
  1502. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_metric.py +2 -0
  1503. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_model_performance.py +12 -10
  1504. office365/intune/devices/management/virtualendpoint/cloudpcs/auditactor.py +1 -2
  1505. office365/intune/devices/management/virtualendpoint/cloudpcs/auditproperty.py +0 -3
  1506. office365/intune/devices/management/virtualendpoint/cloudpcs/auditresource.py +1 -2
  1507. office365/intune/devices/management/virtualendpoint/cloudpcs/domainjoinconfiguration.py +0 -3
  1508. office365/intune/devices/management/virtualendpoint/cloudpcs/exclusion_group_assignment_target.py +0 -3
  1509. office365/intune/devices/management/virtualendpoint/cloudpcs/group_assignment_target.py +0 -3
  1510. office365/intune/devices/management/virtualendpoint/cloudpcs/managementgroupassignmenttarget.py +0 -3
  1511. office365/intune/devices/management/virtualendpoint/cloudpcs/onpremisesconnectionhealthcheck.py +0 -2
  1512. office365/intune/devices/management/virtualendpoint/cloudpcs/onpremisesconnectionstatusdetail.py +1 -2
  1513. office365/intune/devices/management/virtualendpoint/cloudpcs/provisioningpolicyautopatch.py +0 -3
  1514. office365/intune/devices/management/virtualendpoint/cloudpcs/restorepointsetting.py +0 -3
  1515. office365/intune/devices/management/virtualendpoint/cloudpcs/sourcedeviceimage.py +0 -3
  1516. office365/intune/devices/management/virtualendpoint/cloudpcs/userrolescopetaginfo.py +0 -3
  1517. office365/intune/devices/management/virtualendpoint/provisioningpolicies/microsoft_managed_desktop.py +0 -3
  1518. office365/intune/devices/management/virtualendpoint/virtual_endpoint.py +10 -0
  1519. office365/intune/devices/management/vpptokens/vpp_token.py +12 -0
  1520. office365/intune/devices/management/windows_autopilot_deployment_profile.py +16 -12
  1521. office365/intune/devices/management/windows_autopilot_device_identity.py +19 -6
  1522. office365/intune/devices/management/windows_defender_scan_action_result.py +0 -3
  1523. office365/intune/devices/management/windows_device_account.py +0 -3
  1524. office365/intune/devices/management/windows_device_ad_account.py +0 -3
  1525. office365/intune/devices/management/windows_device_azure_ad_account.py +0 -3
  1526. office365/intune/devices/management/windows_information_protection_app.py +0 -3
  1527. office365/intune/devices/management/windows_information_protection_app_learning_summary.py +6 -10
  1528. office365/intune/devices/management/windows_information_protection_app_locker_file.py +5 -0
  1529. office365/intune/devices/management/windows_information_protection_data_recovery_certificate.py +0 -2
  1530. office365/intune/devices/management/windows_information_protection_desktop_app.py +0 -3
  1531. office365/intune/devices/management/windows_information_protection_ip_range_collection.py +1 -2
  1532. office365/intune/devices/management/windows_information_protection_network_learning_summary.py +3 -0
  1533. office365/intune/devices/management/windows_information_protection_policy.py +17 -6
  1534. office365/intune/devices/management/windows_information_protection_proxied_domain_collection.py +1 -2
  1535. office365/intune/devices/management/windows_information_protection_resource_collection.py +1 -2
  1536. office365/intune/devices/management/windows_information_protection_store_app.py +0 -3
  1537. office365/intune/devices/management/windows_malware_overview.py +1 -2
  1538. office365/intune/devices/management/windows_protection_state.py +25 -14
  1539. office365/intune/devices/management/windowsmalware/malware_state_for_windows_device.py +10 -17
  1540. office365/intune/devices/management/windowsmalware/windows_device_malware_state.py +17 -38
  1541. office365/intune/devices/management/windowsmalware/windows_malware_category_count.py +0 -2
  1542. office365/intune/devices/management/windowsmalware/windows_malware_execution_state_count.py +0 -2
  1543. office365/intune/devices/management/windowsmalware/windows_malware_information.py +9 -14
  1544. office365/intune/devices/management/windowsmalware/windows_malware_name_count.py +0 -2
  1545. office365/intune/devices/management/windowsmalware/windows_malware_severity_count.py +0 -2
  1546. office365/intune/devices/management/windowsmalware/windows_malware_state_count.py +0 -2
  1547. office365/intune/devices/management_exchange_connector.py +13 -17
  1548. office365/intune/devices/management_export_job.py +14 -24
  1549. office365/intune/devices/management_partner.py +14 -24
  1550. office365/intune/devices/management_troubleshooting_event.py +3 -0
  1551. office365/intune/devices/no_device_registration_membership.py +0 -3
  1552. office365/intune/devices/operating_system_specifications.py +0 -3
  1553. office365/intune/devices/registration_membership.py +0 -3
  1554. office365/intune/organizations/branding.py +2 -0
  1555. office365/intune/organizations/branding_properties.py +36 -24
  1556. office365/intune/organizations/contact.py +24 -27
  1557. office365/intune/organizations/content_customization.py +1 -2
  1558. office365/intune/organizations/login_page_layout_configuration.py +0 -3
  1559. office365/intune/organizations/login_page_text_visibility_settings.py +0 -3
  1560. office365/intune/organizations/organization.py +27 -17
  1561. office365/intune/organizations/physical_office_address.py +0 -3
  1562. office365/intune/organizations/privacy_profile.py +0 -3
  1563. office365/intune/policies/azure_ad_join_policy.py +1 -2
  1564. office365/intune/policies/local_admin_password_settings.py +0 -3
  1565. office365/intune/policies/local_admin_settings.py +1 -2
  1566. office365/intune/policies/managed_app.py +6 -0
  1567. office365/intune/print/air_print_settings.py +0 -3
  1568. office365/intune/print/archived_print_job.py +1 -2
  1569. office365/intune/print/certificate_signing_request.py +0 -3
  1570. office365/intune/print/connectors/connector.py +9 -6
  1571. office365/intune/print/document.py +6 -0
  1572. office365/intune/print/document_upload_properties.py +0 -3
  1573. office365/intune/print/job.py +15 -9
  1574. office365/intune/print/job_configuration.py +1 -2
  1575. office365/intune/print/job_status.py +1 -2
  1576. office365/intune/print/margin.py +0 -3
  1577. office365/intune/print/operation.py +5 -6
  1578. office365/intune/print/operation_status.py +0 -3
  1579. office365/intune/print/print.py +9 -3
  1580. office365/intune/print/printers/base.py +15 -11
  1581. office365/intune/print/printers/capabilities.py +1 -2
  1582. office365/intune/print/printers/create_operation.py +3 -0
  1583. office365/intune/print/printers/defaults.py +1 -2
  1584. office365/intune/print/printers/discovery_settings.py +1 -2
  1585. office365/intune/print/printers/location.py +1 -2
  1586. office365/intune/print/printers/printer.py +8 -0
  1587. office365/intune/print/printers/share_viewpoint.py +0 -2
  1588. office365/intune/print/printers/status.py +1 -2
  1589. office365/intune/print/services/endpoint.py +3 -0
  1590. office365/intune/print/settings.py +1 -2
  1591. office365/intune/print/shares/share.py +8 -3
  1592. office365/intune/print/task.py +6 -3
  1593. office365/intune/print/task_definition.py +5 -3
  1594. office365/intune/print/task_status.py +0 -3
  1595. office365/intune/print/task_trigger.py +4 -3
  1596. office365/intune/print/user_print.py +0 -2
  1597. office365/intune/servicecommunications/announcement.py +3 -1
  1598. office365/intune/servicecommunications/announcement_base.py +8 -6
  1599. office365/intune/servicecommunications/health/health.py +5 -5
  1600. office365/intune/servicecommunications/issues/issue.py +19 -16
  1601. office365/intune/servicecommunications/messages/update.py +16 -24
  1602. office365/intune/servicecommunications/service_health_issue_post.py +1 -2
  1603. office365/intune/servicecommunications/service_update_message_viewpoint.py +0 -3
  1604. office365/limits.py +24 -4
  1605. office365/migration/__init__.py +35 -2
  1606. office365/migration/adapters/__init__.py +26 -0
  1607. office365/migration/adapters/bundle.py +308 -0
  1608. office365/migration/adapters/filesystem.py +5 -14
  1609. office365/migration/assessment/report.py +0 -1
  1610. office365/migration/base.py +34 -3
  1611. office365/migration/clients.py +87 -0
  1612. office365/migration/fidelity.py +63 -2
  1613. office365/migration/identity.py +320 -0
  1614. office365/migration/job.py +40 -6
  1615. office365/migration/offline.py +26 -0
  1616. office365/migration/outlook/__init__.py +74 -3
  1617. office365/migration/outlook/adapters.py +380 -0
  1618. office365/migration/outlook/assessor.py +22 -6
  1619. office365/migration/outlook/calendar_adapters.py +347 -0
  1620. office365/migration/outlook/calendar_codec.py +207 -0
  1621. office365/migration/outlook/calendar_models.py +241 -0
  1622. office365/migration/outlook/calendar_profile.py +109 -0
  1623. office365/migration/outlook/contacts_adapters.py +331 -0
  1624. office365/migration/outlook/contacts_models.py +277 -0
  1625. office365/migration/outlook/eml_import.py +219 -0
  1626. office365/migration/outlook/fidelity.py +175 -0
  1627. office365/migration/outlook/models.py +219 -0
  1628. office365/migration/outlook/records.py +298 -0
  1629. office365/migration/outlook/restore.py +29 -0
  1630. office365/migration/package/builder.py +23 -2
  1631. office365/migration/package/staging.py +49 -0
  1632. office365/migration/report.py +33 -5
  1633. office365/migration/runner.py +29 -1
  1634. office365/migration/server_job.py +191 -25
  1635. office365/migration/settings.py +13 -3
  1636. office365/migration/sharepoint/__init__.py +4 -6
  1637. office365/migration/sharepoint/adapters.py +598 -827
  1638. office365/migration/sharepoint/assessor.py +25 -15
  1639. office365/migration/sharepoint/branding.py +9 -8
  1640. office365/migration/sharepoint/handoff.py +5 -4
  1641. office365/migration/sharepoint/navigation.py +30 -62
  1642. office365/migration/sharepoint/package_target.py +191 -19
  1643. office365/migration/sharepoint/pages.py +130 -230
  1644. office365/migration/sharepoint/resolvers.py +97 -42
  1645. office365/migration/sharepoint/scanners/browser_file_handling.py +7 -5
  1646. office365/migration/sharepoint/scanners/checked_out_files.py +5 -3
  1647. office365/migration/sharepoint/scanners/fields.py +2 -2
  1648. office365/migration/sharepoint/scanners/file_versions.py +3 -3
  1649. office365/migration/sharepoint/scanners/files.py +4 -2
  1650. office365/migration/sharepoint/scanners/large_excel_files.py +4 -3
  1651. office365/migration/sharepoint/scanners/long_onedrive_urls.py +1 -1
  1652. office365/migration/sharepoint/scanners/lookup.py +2 -4
  1653. office365/migration/sharepoint/scanners/paths.py +2 -2
  1654. office365/migration/sharepoint/scanners/permissions.py +1 -1
  1655. office365/migration/sharepoint/scanners/smat.py +1 -1
  1656. office365/migration/sharepoint/scanners/thicket_folders.py +3 -3
  1657. office365/migration/sharepoint/security.py +14 -12
  1658. office365/migration/sharepoint/site_settings.py +9 -9
  1659. office365/migration/sharepoint/site_verify.py +1 -6
  1660. office365/migration/sharepoint/structure.py +148 -93
  1661. office365/migration/teams/__init__.py +1 -14
  1662. office365/migration/teams/adapters.py +70 -24
  1663. office365/onedrive/analytics/item_action_stat.py +0 -3
  1664. office365/onedrive/analytics/item_activity.py +4 -1
  1665. office365/onedrive/analytics/item_activity_stat.py +8 -0
  1666. office365/onedrive/analytics/item_analytics.py +3 -3
  1667. office365/onedrive/base_item.py +12 -1
  1668. office365/onedrive/columns/boolean.py +0 -3
  1669. office365/onedrive/columns/calculated.py +0 -3
  1670. office365/onedrive/columns/choice.py +1 -2
  1671. office365/onedrive/columns/column_link.py +2 -0
  1672. office365/onedrive/columns/content_approval_status.py +0 -3
  1673. office365/onedrive/columns/currency.py +0 -3
  1674. office365/onedrive/columns/datetime.py +0 -3
  1675. office365/onedrive/columns/default_value.py +0 -3
  1676. office365/onedrive/columns/definition.py +26 -2
  1677. office365/onedrive/columns/definition_collection.py +1 -1
  1678. office365/onedrive/columns/display_name_localization.py +0 -3
  1679. office365/onedrive/columns/geolocation.py +0 -3
  1680. office365/onedrive/columns/hyperlink_or_picture.py +0 -3
  1681. office365/onedrive/columns/lookup.py +0 -3
  1682. office365/onedrive/columns/number.py +0 -3
  1683. office365/onedrive/columns/person_or_group.py +0 -3
  1684. office365/onedrive/columns/term.py +0 -3
  1685. office365/onedrive/columns/text.py +0 -3
  1686. office365/onedrive/columns/thumbnail.py +0 -3
  1687. office365/onedrive/columns/validation.py +1 -2
  1688. office365/onedrive/contenttypes/collection.py +1 -1
  1689. office365/onedrive/contenttypes/content_type.py +16 -4
  1690. office365/onedrive/contenttypes/info.py +0 -3
  1691. office365/onedrive/contenttypes/order.py +0 -3
  1692. office365/onedrive/deleted.py +0 -3
  1693. office365/onedrive/documentsets/content.py +0 -3
  1694. office365/onedrive/documentsets/document_set.py +1 -2
  1695. office365/onedrive/documentsets/version.py +4 -0
  1696. office365/onedrive/documentsets/version_item.py +0 -3
  1697. office365/onedrive/driveitems/album.py +0 -3
  1698. office365/onedrive/driveitems/audio.py +0 -3
  1699. office365/onedrive/driveitems/bundle.py +0 -3
  1700. office365/onedrive/driveitems/copy_result.py +6 -0
  1701. office365/onedrive/driveitems/driveItem.py +118 -30
  1702. office365/onedrive/driveitems/geo_coordinates.py +0 -3
  1703. office365/onedrive/driveitems/image.py +0 -3
  1704. office365/onedrive/driveitems/item_preview_info.py +0 -3
  1705. office365/onedrive/driveitems/malware.py +0 -3
  1706. office365/onedrive/driveitems/package.py +0 -3
  1707. office365/onedrive/driveitems/photo.py +1 -2
  1708. office365/onedrive/driveitems/publication_facet.py +1 -2
  1709. office365/onedrive/driveitems/remote_item.py +1 -2
  1710. office365/onedrive/driveitems/retention_label.py +3 -0
  1711. office365/onedrive/driveitems/retention_label_settings.py +0 -3
  1712. office365/onedrive/driveitems/source.py +0 -3
  1713. office365/onedrive/driveitems/special_folder.py +0 -3
  1714. office365/onedrive/driveitems/system_facet.py +0 -3
  1715. office365/onedrive/driveitems/thumbnail.py +0 -3
  1716. office365/onedrive/driveitems/thumbnail_set.py +5 -0
  1717. office365/onedrive/driveitems/uploadable_properties.py +7 -12
  1718. office365/onedrive/driveitems/video.py +0 -3
  1719. office365/onedrive/drives/collection.py +1 -1
  1720. office365/onedrive/drives/drive.py +49 -1
  1721. office365/onedrive/drives/quota.py +1 -2
  1722. office365/onedrive/drives/recipient.py +0 -3
  1723. office365/onedrive/edit_action.py +0 -3
  1724. office365/onedrive/files/file.py +1 -2
  1725. office365/onedrive/files/hashes.py +0 -3
  1726. office365/onedrive/files/system_info.py +0 -3
  1727. office365/onedrive/filestorage/access_action.py +0 -3
  1728. office365/onedrive/filestorage/containers/collection.py +13 -4
  1729. office365/onedrive/filestorage/containers/container.py +29 -35
  1730. office365/onedrive/filestorage/containers/custom_property_dictionary.py +0 -3
  1731. office365/onedrive/filestorage/containers/custom_property_value.py +0 -3
  1732. office365/onedrive/filestorage/containers/settings.py +0 -3
  1733. office365/onedrive/filestorage/containers/viewpoint.py +0 -3
  1734. office365/onedrive/filestorage/containertypes/app_permission_grant.py +5 -0
  1735. office365/onedrive/filestorage/containertypes/collection.py +1 -1
  1736. office365/onedrive/filestorage/containertypes/registration.py +10 -0
  1737. office365/onedrive/filestorage/containertypes/registration_settings.py +0 -3
  1738. office365/onedrive/filestorage/containertypes/settings.py +0 -2
  1739. office365/onedrive/filestorage/containertypes/type.py +13 -4
  1740. office365/onedrive/filestorage/file_storage.py +5 -0
  1741. office365/onedrive/folders/folder.py +0 -3
  1742. office365/onedrive/folders/view.py +0 -3
  1743. office365/onedrive/incomplete_data.py +0 -2
  1744. office365/onedrive/listitems/collection.py +1 -1
  1745. office365/onedrive/listitems/item_reference.py +1 -2
  1746. office365/onedrive/listitems/list_item.py +7 -3
  1747. office365/onedrive/lists/collection.py +1 -1
  1748. office365/onedrive/lists/info.py +0 -3
  1749. office365/onedrive/lists/list.py +12 -4
  1750. office365/onedrive/media_source.py +0 -3
  1751. office365/onedrive/mention_action.py +1 -2
  1752. office365/onedrive/meta_data_key_string_pair.py +0 -3
  1753. office365/onedrive/meta_data_key_value_pair.py +0 -3
  1754. office365/onedrive/move_action.py +0 -3
  1755. office365/onedrive/operations/long_running.py +8 -10
  1756. office365/onedrive/operations/pending.py +1 -2
  1757. office365/onedrive/operations/pending_content_update.py +0 -3
  1758. office365/onedrive/operations/public_error_detail.py +0 -3
  1759. office365/onedrive/operations/rich_long_running.py +7 -6
  1760. office365/onedrive/permissions/collection.py +5 -0
  1761. office365/onedrive/permissions/permission.py +14 -0
  1762. office365/onedrive/permissions/sharepoint_identity.py +0 -2
  1763. office365/onedrive/permissions/sharepoint_identity_set.py +1 -2
  1764. office365/onedrive/permissions/sharing_invitation.py +1 -2
  1765. office365/onedrive/permissions/sharing_link.py +1 -2
  1766. office365/onedrive/quotas.py +116 -0
  1767. office365/onedrive/reactions_facet.py +0 -3
  1768. office365/onedrive/recyclebin/item.py +3 -0
  1769. office365/onedrive/recyclebin/recyclebin.py +3 -0
  1770. office365/onedrive/recyclebin/settings.py +0 -3
  1771. office365/onedrive/rename_action.py +0 -3
  1772. office365/onedrive/restore_action.py +0 -3
  1773. office365/onedrive/root.py +0 -3
  1774. office365/onedrive/sensitivitylabels/assignment.py +0 -3
  1775. office365/onedrive/sensitivitylabels/extract_result.py +1 -2
  1776. office365/onedrive/server_processed_content.py +1 -2
  1777. office365/onedrive/share_action.py +1 -2
  1778. office365/onedrive/sharepoint/group.py +5 -0
  1779. office365/onedrive/sharepoint/group_identity.py +0 -3
  1780. office365/onedrive/sharepoint/group_member.py +2 -0
  1781. office365/onedrive/sharepoint/ids.py +0 -3
  1782. office365/onedrive/sharepoint/migration/container_info.py +0 -3
  1783. office365/onedrive/sharepoint/migration/event.py +4 -0
  1784. office365/onedrive/sharepoint/migration/finish_manifest_file_upload_event.py +2 -0
  1785. office365/onedrive/sharepoint/migration/jobs/cancelled_event.py +3 -0
  1786. office365/onedrive/sharepoint/migration/jobs/error_event.py +11 -20
  1787. office365/onedrive/sharepoint/migration/jobs/postponed_event.py +5 -0
  1788. office365/onedrive/sharepoint/migration/jobs/progress_event.py +18 -0
  1789. office365/onedrive/sharepoint/migration/jobs/start_event.py +3 -0
  1790. office365/onedrive/sharepoint/migration/migration_job.py +3 -0
  1791. office365/onedrive/shares/drive_item.py +9 -2
  1792. office365/onedrive/shares/shared.py +1 -2
  1793. office365/onedrive/sitepages/base.py +2 -0
  1794. office365/onedrive/sitepages/canvas_layout.py +2 -2
  1795. office365/onedrive/sitepages/sections/horizontal.py +4 -0
  1796. office365/onedrive/sitepages/sections/horizontal_column.py +3 -1
  1797. office365/onedrive/sitepages/sections/vertical.py +3 -1
  1798. office365/onedrive/sitepages/site_page.py +16 -4
  1799. office365/onedrive/sitepages/title_area.py +1 -2
  1800. office365/onedrive/sitepages/webparts/data.py +1 -2
  1801. office365/onedrive/sitepages/webparts/position.py +0 -3
  1802. office365/onedrive/sitepages/webparts/standard.py +4 -0
  1803. office365/onedrive/sitepages/webparts/text.py +2 -0
  1804. office365/onedrive/sitepages/webparts/web_part.py +4 -0
  1805. office365/onedrive/sites/archival_details.py +0 -3
  1806. office365/onedrive/sites/collection.py +1 -2
  1807. office365/onedrive/sites/site.py +39 -7
  1808. office365/onedrive/sites/sites_with_root.py +13 -0
  1809. office365/onedrive/sites/website.py +0 -3
  1810. office365/onedrive/storage/settings.py +2 -0
  1811. office365/onedrive/storage/storage.py +3 -0
  1812. office365/onedrive/storage_plan_information.py +0 -3
  1813. office365/onedrive/termstore/groups/collection.py +1 -1
  1814. office365/onedrive/termstore/groups/group.py +9 -6
  1815. office365/onedrive/termstore/relation.py +6 -5
  1816. office365/onedrive/termstore/sets/collection.py +1 -1
  1817. office365/onedrive/termstore/sets/name.py +5 -6
  1818. office365/onedrive/termstore/sets/set.py +6 -1
  1819. office365/onedrive/termstore/store.py +3 -0
  1820. office365/onedrive/termstore/terms/collection.py +1 -1
  1821. office365/onedrive/termstore/terms/description.py +0 -3
  1822. office365/onedrive/termstore/terms/label.py +4 -7
  1823. office365/onedrive/termstore/terms/term.py +10 -2
  1824. office365/onedrive/version_action.py +0 -3
  1825. office365/onedrive/versions/base_item.py +1 -0
  1826. office365/onedrive/versions/drive_item.py +4 -1
  1827. office365/onedrive/versions/list_item.py +7 -0
  1828. office365/onedrive/workbooks/applications/application.py +4 -0
  1829. office365/onedrive/workbooks/charts/area_format.py +3 -0
  1830. office365/onedrive/workbooks/charts/axes.py +3 -3
  1831. office365/onedrive/workbooks/charts/axis.py +10 -9
  1832. office365/onedrive/workbooks/charts/axis_format.py +3 -0
  1833. office365/onedrive/workbooks/charts/axis_title.py +4 -0
  1834. office365/onedrive/workbooks/charts/axis_title_format.py +2 -0
  1835. office365/onedrive/workbooks/charts/chart.py +17 -2
  1836. office365/onedrive/workbooks/charts/data_label_format.py +3 -0
  1837. office365/onedrive/workbooks/charts/data_labels.py +10 -0
  1838. office365/onedrive/workbooks/charts/font.py +7 -0
  1839. office365/onedrive/workbooks/charts/gridlines.py +3 -0
  1840. office365/onedrive/workbooks/charts/gridlines_format.py +2 -0
  1841. office365/onedrive/workbooks/charts/legend/format.py +3 -0
  1842. office365/onedrive/workbooks/charts/legend/legend.py +5 -0
  1843. office365/onedrive/workbooks/charts/line_format.py +2 -0
  1844. office365/onedrive/workbooks/charts/point.py +4 -3
  1845. office365/onedrive/workbooks/charts/point_format.py +2 -0
  1846. office365/onedrive/workbooks/charts/series/format.py +3 -0
  1847. office365/onedrive/workbooks/charts/series/series.py +4 -0
  1848. office365/onedrive/workbooks/charts/title.py +5 -0
  1849. office365/onedrive/workbooks/charts/title_format.py +3 -0
  1850. office365/onedrive/workbooks/comments/comment.py +4 -0
  1851. office365/onedrive/workbooks/comments/reply.py +3 -0
  1852. office365/onedrive/workbooks/filter.py +5 -0
  1853. office365/onedrive/workbooks/filter_criteria.py +1 -2
  1854. office365/onedrive/workbooks/filter_datetime.py +0 -3
  1855. office365/onedrive/workbooks/functions/functions.py +6 -0
  1856. office365/onedrive/workbooks/functions/result.py +5 -1
  1857. office365/onedrive/workbooks/icon.py +0 -3
  1858. office365/onedrive/workbooks/names/collection.py +2 -0
  1859. office365/onedrive/workbooks/names/named_item.py +12 -6
  1860. office365/onedrive/workbooks/operations/error.py +0 -3
  1861. office365/onedrive/workbooks/operations/workbook.py +5 -1
  1862. office365/onedrive/workbooks/quotas.py +35 -0
  1863. office365/onedrive/workbooks/ranges/border.py +5 -0
  1864. office365/onedrive/workbooks/ranges/fill.py +2 -0
  1865. office365/onedrive/workbooks/ranges/font.py +7 -0
  1866. office365/onedrive/workbooks/ranges/format.py +10 -0
  1867. office365/onedrive/workbooks/ranges/format_protection.py +3 -0
  1868. office365/onedrive/workbooks/ranges/range.py +30 -14
  1869. office365/onedrive/workbooks/ranges/reference.py +0 -3
  1870. office365/onedrive/workbooks/ranges/view.py +15 -18
  1871. office365/onedrive/workbooks/session_info.py +0 -3
  1872. office365/onedrive/workbooks/sort_field.py +1 -2
  1873. office365/onedrive/workbooks/tables/collection.py +2 -0
  1874. office365/onedrive/workbooks/tables/columns/collection.py +2 -0
  1875. office365/onedrive/workbooks/tables/columns/column.py +10 -1
  1876. office365/onedrive/workbooks/tables/pivot_table.py +7 -1
  1877. office365/onedrive/workbooks/tables/pivot_table_collection.py +2 -0
  1878. office365/onedrive/workbooks/tables/rows/collection.py +3 -0
  1879. office365/onedrive/workbooks/tables/rows/row.py +3 -0
  1880. office365/onedrive/workbooks/tables/sort.py +6 -0
  1881. office365/onedrive/workbooks/tables/table.py +21 -0
  1882. office365/onedrive/workbooks/workbook.py +16 -12
  1883. office365/onedrive/workbooks/worksheets/collection.py +2 -2
  1884. office365/onedrive/workbooks/worksheets/protection.py +6 -0
  1885. office365/onedrive/workbooks/worksheets/protection_options.py +0 -3
  1886. office365/onedrive/workbooks/worksheets/worksheet.py +12 -5
  1887. office365/onenote/diagnostic.py +0 -3
  1888. office365/onenote/entity_base_model.py +5 -0
  1889. office365/onenote/entity_hierarchy_model.py +1 -0
  1890. office365/onenote/notebook_links.py +1 -2
  1891. office365/onenote/notebooks/collection.py +1 -1
  1892. office365/onenote/notebooks/notebook.py +11 -10
  1893. office365/onenote/notebooks/recent.py +1 -2
  1894. office365/onenote/notebooks/recent_links.py +1 -2
  1895. office365/onenote/onenote.py +6 -1
  1896. office365/onenote/onenote_page_preview.py +1 -2
  1897. office365/onenote/onenote_patch_content_command.py +0 -3
  1898. office365/onenote/operations/onenote.py +5 -0
  1899. office365/onenote/operations/onenote_operation_error.py +0 -3
  1900. office365/onenote/pages/collection.py +1 -1
  1901. office365/onenote/pages/external_link.py +0 -3
  1902. office365/onenote/pages/links.py +1 -2
  1903. office365/onenote/pages/page.py +11 -3
  1904. office365/onenote/pages/preview_links.py +1 -2
  1905. office365/onenote/quotas.py +71 -0
  1906. office365/onenote/resources/resource.py +4 -1
  1907. office365/onenote/sectiongroups/section_group.py +6 -2
  1908. office365/onenote/sections/links.py +1 -2
  1909. office365/onenote/sections/section.py +7 -3
  1910. office365/outlook/calendar/attendees/attendee.py +8 -4
  1911. office365/outlook/calendar/attendees/availability.py +1 -2
  1912. office365/outlook/calendar/attendees/base.py +4 -3
  1913. office365/outlook/calendar/calendar.py +42 -6
  1914. office365/outlook/calendar/check_in_claim.py +7 -6
  1915. office365/outlook/calendar/dateTimeTimeZone.py +69 -12
  1916. office365/outlook/calendar/email_address.py +6 -4
  1917. office365/outlook/calendar/events/collection.py +1 -1
  1918. office365/outlook/calendar/events/event.py +65 -19
  1919. office365/outlook/calendar/events/mention_event.py +1 -2
  1920. office365/outlook/calendar/events/reminder.py +1 -2
  1921. office365/outlook/calendar/group.py +5 -0
  1922. office365/outlook/calendar/location_constraint.py +1 -2
  1923. office365/outlook/calendar/meetingtimes/suggestion.py +1 -2
  1924. office365/outlook/calendar/meetingtimes/suggestions_result.py +1 -2
  1925. office365/outlook/calendar/meetingtimes/time_constraint.py +1 -2
  1926. office365/outlook/calendar/meetingtimes/time_slot.py +1 -2
  1927. office365/outlook/calendar/permissions/collection.py +1 -1
  1928. office365/outlook/calendar/permissions/permission.py +3 -0
  1929. office365/outlook/calendar/place.py +27 -4
  1930. office365/outlook/calendar/response_status.py +1 -2
  1931. office365/outlook/calendar/rooms/list.py +4 -0
  1932. office365/outlook/calendar/rooms/room.py +15 -9
  1933. office365/outlook/calendar/rooms/workspace.py +8 -6
  1934. office365/outlook/calendar/schedule/free_busy_error.py +0 -3
  1935. office365/outlook/calendar/schedule/information.py +1 -2
  1936. office365/outlook/calendar/schedule/item.py +1 -2
  1937. office365/outlook/calendar/schedule/open_shift_item.py +0 -3
  1938. office365/outlook/calendar/sharing/message_action.py +0 -3
  1939. office365/outlook/calendar/sharing_message.py +3 -0
  1940. office365/outlook/calendar/timezones/base.py +0 -3
  1941. office365/outlook/calendar/timezones/custom.py +1 -2
  1942. office365/outlook/calendar/timezones/daylight_time_zone_offset.py +0 -3
  1943. office365/outlook/calendar/working_hours.py +1 -2
  1944. office365/outlook/categories/category.py +3 -0
  1945. office365/outlook/contacts/collection.py +1 -1
  1946. office365/outlook/contacts/contact.py +40 -10
  1947. office365/outlook/contacts/folders/folder.py +11 -6
  1948. office365/outlook/convert_id_result.py +1 -2
  1949. office365/outlook/geo_coordinates.py +0 -3
  1950. office365/outlook/item.py +11 -4
  1951. office365/outlook/locale_info.py +0 -3
  1952. office365/outlook/mail/attachments/attachment.py +5 -1
  1953. office365/outlook/mail/attachments/attachment_item.py +0 -2
  1954. office365/outlook/mail/attachments/collection.py +14 -5
  1955. office365/outlook/mail/attachments/file.py +10 -5
  1956. office365/outlook/mail/attachments/item.py +2 -0
  1957. office365/outlook/mail/automaticreplies/mailtips.py +1 -2
  1958. office365/outlook/mail/automaticreplies/setting.py +1 -2
  1959. office365/outlook/mail/conversation.py +5 -0
  1960. office365/outlook/mail/conversation_thread.py +6 -1
  1961. office365/outlook/mail/email_details.py +0 -3
  1962. office365/outlook/mail/export_item_response.py +1 -2
  1963. office365/outlook/mail/folders/collection.py +1 -1
  1964. office365/outlook/mail/folders/folder.py +49 -5
  1965. office365/outlook/mail/folders/search.py +5 -0
  1966. office365/outlook/mail/item_body.py +5 -4
  1967. office365/outlook/mail/location.py +17 -9
  1968. office365/outlook/mail/mailbox_item_import_session.py +1 -2
  1969. office365/outlook/mail/mailbox_settings.py +1 -2
  1970. office365/outlook/mail/messages/collection.py +43 -2
  1971. office365/outlook/mail/messages/event_message.py +16 -17
  1972. office365/outlook/mail/messages/followup_flag.py +1 -2
  1973. office365/outlook/mail/messages/internet_header.py +0 -3
  1974. office365/outlook/mail/messages/message.py +77 -12
  1975. office365/outlook/mail/messages/pinned_event_message_detail.py +1 -2
  1976. office365/outlook/mail/messages/rules/actions.py +1 -2
  1977. office365/outlook/mail/messages/rules/collection.py +1 -1
  1978. office365/outlook/mail/messages/rules/predicates.py +1 -2
  1979. office365/outlook/mail/messages/rules/rule.py +1 -0
  1980. office365/outlook/mail/messages/rules/size_range.py +0 -3
  1981. office365/outlook/mail/messages/unpinned_event_message_detail.py +1 -2
  1982. office365/outlook/mail/patterned_recurrence.py +1 -2
  1983. office365/outlook/mail/physical_address.py +0 -3
  1984. office365/outlook/mail/post.py +16 -10
  1985. office365/outlook/mail/recipient.py +5 -3
  1986. office365/outlook/mail/recurrence_pattern.py +1 -2
  1987. office365/outlook/mail/recurrence_range.py +0 -2
  1988. office365/outlook/mail/tips/error.py +0 -3
  1989. office365/outlook/mail/tips/tips.py +1 -2
  1990. office365/outlook/people/person_type.py +0 -3
  1991. office365/outlook/people/profile_card_property.py +6 -6
  1992. office365/outlook/person.py +24 -12
  1993. office365/outlook/quotas.py +83 -0
  1994. office365/outlook/resource_link.py +0 -3
  1995. office365/outlook/scored_email_address.py +0 -3
  1996. office365/outlook/timezones/information.py +0 -3
  1997. office365/outlook/timezones/standard_time_zone_offset.py +0 -2
  1998. office365/outlook/user.py +7 -1
  1999. office365/partners/billing/azure_aggregated_usage.py +26 -0
  2000. office365/partners/billing/azure_usage.py +3 -0
  2001. office365/partners/billing/billed_aggregated_usage.py +9 -0
  2002. office365/partners/billing/billing.py +20 -0
  2003. office365/partners/billing/blob.py +0 -3
  2004. office365/partners/billing/export_success_operation.py +2 -0
  2005. office365/partners/billing/failed_operation.py +3 -7
  2006. office365/partners/billing/manifest.py +13 -6
  2007. office365/partners/billing/metrics.py +3 -0
  2008. office365/partners/billing/metrics_base.py +9 -0
  2009. office365/partners/billing/metrics_initial.py +2 -0
  2010. office365/partners/billing/metrics_recent.py +2 -0
  2011. office365/partners/billing/operation.py +6 -10
  2012. office365/partners/billing/reconciliation.py +3 -0
  2013. office365/partners/partners.py +2 -0
  2014. office365/permissions/__init__.py +63 -0
  2015. office365/permissions/catalog.py +96 -0
  2016. office365/permissions/declaration.py +286 -0
  2017. office365/permissions/index.py +209 -0
  2018. office365/permissions/requirement.py +205 -0
  2019. office365/permissions/resource.py +39 -0
  2020. office365/permissions/roles.py +45 -0
  2021. office365/permissions/snapshots/__init__.py +6 -0
  2022. office365/permissions/snapshots/graph.py +1824 -0
  2023. office365/permissions/snapshots/sharepoint.py +85 -0
  2024. office365/permissions/token.py +103 -0
  2025. office365/planner/applied_categories.py +0 -3
  2026. office365/planner/assigned_to_task_board_task_format.py +5 -10
  2027. office365/planner/assignment.py +7 -17
  2028. office365/planner/assignments.py +8 -8
  2029. office365/planner/bucket_task_board_task_format.py +2 -0
  2030. office365/planner/buckets/bucket.py +5 -0
  2031. office365/planner/buckets/collection.py +5 -0
  2032. office365/planner/category_descriptions.py +0 -3
  2033. office365/planner/external_reference.py +1 -2
  2034. office365/planner/group.py +2 -0
  2035. office365/planner/order_hints_by_assignee.py +0 -3
  2036. office365/planner/planner.py +4 -0
  2037. office365/planner/plans/collection.py +6 -0
  2038. office365/planner/plans/container.py +0 -3
  2039. office365/planner/plans/plan.py +8 -1
  2040. office365/planner/progress_task_board_task_format.py +2 -0
  2041. office365/planner/tasks/check_list_item.py +9 -17
  2042. office365/planner/tasks/check_list_items.py +8 -8
  2043. office365/planner/tasks/collection.py +5 -0
  2044. office365/planner/tasks/task.py +24 -8
  2045. office365/planner/tasks/task_details.py +3 -0
  2046. office365/planner/user.py +3 -0
  2047. office365/reports/internal/queries/create_report_query.py +5 -0
  2048. office365/reports/print_usage.py +12 -0
  2049. office365/reports/print_usage_by_printer.py +3 -0
  2050. office365/reports/print_usage_by_user.py +2 -0
  2051. office365/reports/quotas.py +58 -0
  2052. office365/reports/relying_party_detailed_summary.py +12 -0
  2053. office365/reports/report.py +0 -3
  2054. office365/reports/report_result.py +6 -0
  2055. office365/reports/root.py +19 -2
  2056. office365/reports/security/root.py +1 -1
  2057. office365/reports/userregistration/feature_count.py +0 -3
  2058. office365/reports/userregistration/feature_summary.py +1 -2
  2059. office365/reports/userregistration/method_count.py +0 -3
  2060. office365/reports/userregistration/method_summary.py +1 -2
  2061. office365/runtime/auth/authentication_context.py +17 -0
  2062. office365/runtime/auth/entra/authentication_context.py +18 -0
  2063. office365/runtime/client_object.py +153 -55
  2064. office365/runtime/client_object_collection.py +15 -11
  2065. office365/runtime/client_request.py +8 -8
  2066. office365/runtime/client_result.py +18 -3
  2067. office365/runtime/client_runtime_context.py +38 -33
  2068. office365/runtime/client_value.py +93 -30
  2069. office365/runtime/client_value_collection.py +50 -32
  2070. office365/runtime/compare_check.py +81 -0
  2071. office365/runtime/converters/coercion.py +131 -0
  2072. office365/runtime/converters/csv_reader.py +58 -4
  2073. office365/runtime/converters/csv_writer.py +5 -5
  2074. office365/runtime/converters/keyvalue.py +4 -0
  2075. office365/runtime/converters/records.py +34 -2
  2076. office365/runtime/converters/scalars.py +260 -33
  2077. office365/runtime/converters/value.py +147 -36
  2078. office365/runtime/csom/request.py +1 -1
  2079. office365/runtime/display.py +14 -8
  2080. office365/runtime/http/prefer.py +28 -0
  2081. office365/runtime/limits.py +166 -45
  2082. office365/runtime/lro.py +181 -446
  2083. office365/runtime/odata/batch_util.py +27 -10
  2084. office365/runtime/odata/comparable.py +149 -0
  2085. office365/runtime/odata/dialect.py +134 -0
  2086. office365/runtime/odata/edm.py +120 -0
  2087. office365/runtime/odata/json_format.py +259 -43
  2088. office365/runtime/odata/query_options.py +22 -8
  2089. office365/runtime/odata/request.py +32 -104
  2090. office365/runtime/odata/v3/batch_request.py +2 -2
  2091. office365/runtime/odata/v3/json_light_format.py +10 -51
  2092. office365/runtime/odata/v4/batch_request.py +3 -3
  2093. office365/runtime/odata/v4/json_format.py +9 -43
  2094. office365/runtime/odata/v4/upload_session.py +1 -2
  2095. office365/runtime/odata/v4/upload_session_request.py +1 -1
  2096. office365/runtime/operation.py +727 -0
  2097. office365/runtime/operations.py +3 -2
  2098. office365/runtime/paths/builder.py +7 -2
  2099. office365/runtime/paths/resource_path.py +5 -0
  2100. office365/runtime/pollable.py +225 -73
  2101. office365/runtime/queries/client_query.py +23 -5
  2102. office365/runtime/queries/create_entity.py +7 -2
  2103. office365/runtime/queries/read_entity.py +48 -4
  2104. office365/runtime/record_collection.py +55 -21
  2105. office365/runtime/respond_async.py +31 -25
  2106. office365/runtime/retry.py +49 -20
  2107. office365/runtime/schema.py +395 -0
  2108. office365/runtime/serialization.py +55 -0
  2109. office365/runtime/transfer.py +51 -0
  2110. office365/runtime/transport/base.py +18 -3
  2111. office365/runtime/transport/httpx_transport.py +15 -6
  2112. office365/runtime/transport/requests_transport.py +8 -5
  2113. office365/runtime/types/binary_content.py +0 -3
  2114. office365/runtime/types/collections.py +0 -3
  2115. office365/runtime/types/duration.py +21 -9
  2116. office365/runtime/types/error.py +12 -0
  2117. office365/runtime/types/ipv4_cidr_range.py +0 -3
  2118. office365/runtime/types/ipv6_cidr_range.py +0 -3
  2119. office365/runtime/types/json.py +0 -3
  2120. office365/runtime/types/key_value_pair.py +0 -3
  2121. office365/runtime/types/odata_property.py +307 -15
  2122. office365/runtime/types/public_error.py +1 -2
  2123. office365/runtime/types/public_inner_error.py +1 -2
  2124. office365/runtime/types/setting_value.py +0 -3
  2125. office365/search/acronyms/acronym.py +5 -6
  2126. office365/search/aggregation.py +1 -2
  2127. office365/search/aggregation_option.py +0 -2
  2128. office365/search/alteration_options.py +0 -3
  2129. office365/search/alteration_response.py +1 -2
  2130. office365/search/altered_query_token.py +0 -3
  2131. office365/search/answers/answer.py +15 -0
  2132. office365/search/answers/keyword.py +1 -2
  2133. office365/search/answers/variant.py +0 -3
  2134. office365/search/bookmarks/bookmark.py +15 -9
  2135. office365/search/bucket.py +0 -3
  2136. office365/search/bucket_aggregation_definition.py +1 -2
  2137. office365/search/bucket_aggregation_range.py +0 -3
  2138. office365/search/collapse_property.py +1 -2
  2139. office365/search/connection_item.py +0 -3
  2140. office365/search/entity.py +10 -6
  2141. office365/search/external/configuration.py +1 -2
  2142. office365/search/external/connection.py +18 -7
  2143. office365/search/external/external.py +2 -0
  2144. office365/search/external/item.py +11 -10
  2145. office365/search/external/item_configuration.py +1 -2
  2146. office365/search/external/search_settings.py +1 -2
  2147. office365/search/hits/container.py +1 -2
  2148. office365/search/hits/hit.py +0 -3
  2149. office365/search/identity.py +0 -3
  2150. office365/search/identity_set.py +1 -2
  2151. office365/search/qnas/qna.py +13 -9
  2152. office365/search/query.py +0 -3
  2153. office365/search/recommended_action.py +0 -3
  2154. office365/search/request.py +4 -5
  2155. office365/search/response.py +1 -2
  2156. office365/search/result_template.py +1 -2
  2157. office365/search/result_template_dictionary.py +0 -3
  2158. office365/search/result_template_option.py +0 -3
  2159. office365/search/retrieval_extract.py +0 -3
  2160. office365/search/retrieval_hit.py +1 -2
  2161. office365/search/retrieval_response.py +1 -2
  2162. office365/search/search_alteration.py +1 -2
  2163. office365/search/search_alteration_options.py +0 -3
  2164. office365/search/search_resource_metadata_dictionary.py +0 -3
  2165. office365/search/search_result.py +0 -3
  2166. office365/search/sharepoint_onedrive_options.py +0 -3
  2167. office365/search/sort_property.py +0 -3
  2168. office365/security/a365_ai_guardrail.py +7 -0
  2169. office365/security/a365_ai_inference_call.py +0 -3
  2170. office365/security/a365_ai_invoke_agent.py +0 -3
  2171. office365/security/a365_ai_run_summary.py +0 -3
  2172. office365/security/a365_span_outputs.py +0 -3
  2173. office365/security/account.py +1 -2
  2174. office365/security/account_entity_mapping.py +17 -0
  2175. office365/security/account_object_id_action.py +11 -0
  2176. office365/security/account_sid_action.py +11 -0
  2177. office365/security/account_target_content.py +0 -3
  2178. office365/security/activity_metadata.py +0 -3
  2179. office365/security/address_book_account_target_content.py +1 -2
  2180. office365/security/aed_audit_record.py +0 -3
  2181. office365/security/agent_admin_activity_record.py +0 -3
  2182. office365/security/agent_setting_admin_activity.py +0 -3
  2183. office365/security/ai_agent_evidence.py +0 -3
  2184. office365/security/ai_guardrail.py +7 -0
  2185. office365/security/aip_discover.py +0 -3
  2186. office365/security/aip_file_deleted.py +0 -3
  2187. office365/security/aip_heart_beat.py +0 -3
  2188. office365/security/aip_protection_action_log_request.py +0 -3
  2189. office365/security/aip_scanner_discover_event.py +0 -3
  2190. office365/security/aip_sensitivity_label_action_log_request.py +0 -3
  2191. office365/security/air_admin_action_investigation_data.py +0 -3
  2192. office365/security/air_investigation_data.py +0 -3
  2193. office365/security/alerts/active_directory_domain_evidence.py +1 -2
  2194. office365/security/alerts/alert.py +81 -89
  2195. office365/security/alerts/azure_resource_evidence.py +0 -3
  2196. office365/security/alerts/blob_container_evidence.py +1 -2
  2197. office365/security/alerts/blob_evidence.py +1 -2
  2198. office365/security/alerts/comment.py +1 -2
  2199. office365/security/alerts/custom_details.py +7 -0
  2200. office365/security/alerts/detection.py +0 -3
  2201. office365/security/alerts/evidence.py +1 -2
  2202. office365/security/alerts/file_security_state.py +1 -2
  2203. office365/security/alerts/history_state.py +0 -2
  2204. office365/security/alerts/sas_token_evidence.py +1 -2
  2205. office365/security/alerts/template.py +24 -0
  2206. office365/security/alerts/trigger.py +0 -3
  2207. office365/security/amazon_resource_entity_mapping.py +11 -0
  2208. office365/security/amazon_resource_evidence.py +0 -3
  2209. office365/security/analyzed_message_evidence.py +1 -2
  2210. office365/security/article.py +12 -8
  2211. office365/security/assigned_training_info.py +0 -3
  2212. office365/security/attacksimulations/automation.py +11 -10
  2213. office365/security/attacksimulations/automation_run.py +7 -10
  2214. office365/security/attacksimulations/event.py +1 -2
  2215. office365/security/attacksimulations/landing_page.py +15 -19
  2216. office365/security/attacksimulations/landing_page_detail.py +4 -0
  2217. office365/security/attacksimulations/login_page.py +15 -22
  2218. office365/security/attacksimulations/operations/operation.py +6 -10
  2219. office365/security/attacksimulations/payload.py +35 -70
  2220. office365/security/attacksimulations/repeat_offender.py +1 -2
  2221. office365/security/attacksimulations/reports/overview.py +1 -2
  2222. office365/security/attacksimulations/reports/report.py +1 -2
  2223. office365/security/attacksimulations/root.py +8 -2
  2224. office365/security/attacksimulations/simulation.py +35 -56
  2225. office365/security/attacksimulations/training_user_coverage.py +1 -2
  2226. office365/security/attacksimulations/user.py +0 -3
  2227. office365/security/attacksimulations/user_coverage.py +1 -2
  2228. office365/security/attacksimulations/users/details.py +1 -2
  2229. office365/security/attribute_definition.py +1 -2
  2230. office365/security/attribute_definition_metadata_entry.py +0 -3
  2231. office365/security/attribute_mapping_parameter_schema.py +0 -3
  2232. office365/security/attribute_mapping_source.py +0 -2
  2233. office365/security/audit/a365_ai_execute_tool.py +0 -3
  2234. office365/security/audit/aad_risk_detection_audit_record.py +0 -3
  2235. office365/security/audit/ai_app_interaction_audit_record.py +0 -3
  2236. office365/security/audit/ai_execute_tool_audit_record.py +0 -3
  2237. office365/security/audit/ai_interactions_change_notification_audit_record.py +0 -3
  2238. office365/security/audit/ai_interactions_export_audit_record.py +0 -3
  2239. office365/security/audit/ai_interactions_subscription_audit_record.py +0 -3
  2240. office365/security/audit/ai_invoke_agent_audit_record.py +0 -3
  2241. office365/security/audit/ai_span_outputs_audit_record.py +0 -3
  2242. office365/security/audit/air_manual_investigation_data.py +0 -3
  2243. office365/security/audit/alert_submission_audit_record.py +0 -3
  2244. office365/security/audit/alert_submission_result_detail_audit_record.py +0 -3
  2245. office365/security/audit/attack_sim_admin_audit_record.py +0 -3
  2246. office365/security/audit/attack_sim_audit_record.py +0 -3
  2247. office365/security/audit/audit_config_audit_record.py +0 -3
  2248. office365/security/audit/audit_data.py +1 -2
  2249. office365/security/audit/audit_record_type_dictionary.py +0 -3
  2250. office365/security/audit/audit_search_audit_record.py +0 -3
  2251. office365/security/audit/azfw_application_rule_aggregation_event_record.py +0 -3
  2252. office365/security/audit/azfw_dns_query_event_record.py +0 -3
  2253. office365/security/audit/azfw_network_rule_event_record.py +0 -3
  2254. office365/security/audit/azure_active_directory_account_logon_audit_record.py +0 -3
  2255. office365/security/audit/azure_active_directory_audit_record.py +0 -3
  2256. office365/security/audit/azure_active_directory_sts_logon_audit_record.py +0 -3
  2257. office365/security/audit/azure_ai_search_audit_record.py +0 -3
  2258. office365/security/audit/campaign_audit_record.py +0 -3
  2259. office365/security/audit/ccrai_policy_violation_record.py +0 -3
  2260. office365/security/audit/cdp_classifier_health_record.py +0 -3
  2261. office365/security/audit/cdp_cold_crawl_status_record.py +0 -3
  2262. office365/security/audit/cdp_consumption_resource_record.py +0 -3
  2263. office365/security/audit/cdp_content_explorer_aggregate_record.py +0 -3
  2264. office365/security/audit/cdp_dlp_sensitive_endpoint_audit_record.py +0 -3
  2265. office365/security/audit/cdp_log_record.py +0 -3
  2266. office365/security/audit/cdp_ocr_billing_record.py +0 -3
  2267. office365/security/audit/cdp_resource_scope_change_event_record.py +0 -3
  2268. office365/security/audit/cdpdlmai_interaction_insights_record.py +0 -3
  2269. office365/security/audit/cloud_update_device_config_audit_record.py +0 -3
  2270. office365/security/audit/cloud_update_profile_config_audit_record.py +0 -3
  2271. office365/security/audit/cloud_update_tenant_config_audit_record.py +0 -3
  2272. office365/security/audit/compliance_connector_audit_record.py +0 -3
  2273. office365/security/audit/compliance_dlm_exchange_audit_record.py +0 -3
  2274. office365/security/audit/compliance_dlm_share_point_audit_record.py +0 -3
  2275. office365/security/audit/compliance_dlp_applications_audit_record.py +0 -3
  2276. office365/security/audit/compliance_dlp_applications_classification_audit_record.py +0 -3
  2277. office365/security/audit/compliance_dlp_endpoint_audit_record.py +0 -3
  2278. office365/security/audit/compliance_dlp_endpoint_discovery_audit_record.py +0 -3
  2279. office365/security/audit/compliance_dlp_enforcement_audit_record.py +0 -3
  2280. office365/security/audit/compliance_dlp_exchange_audit_record.py +0 -3
  2281. office365/security/audit/compliance_dlp_exchange_classification_audit_record.py +0 -3
  2282. office365/security/audit/compliance_dlp_exchange_classification_cdp_record.py +0 -3
  2283. office365/security/audit/compliance_dlp_exchange_discovery_audit_record.py +0 -3
  2284. office365/security/audit/compliance_dlp_share_point_audit_record.py +0 -3
  2285. office365/security/audit/compliance_dlp_share_point_classification_audit_record.py +0 -3
  2286. office365/security/audit/compliance_dlp_share_point_classification_cdp_record.py +0 -3
  2287. office365/security/audit/compliance_dlp_share_point_classification_extended_audit_record.py +0 -3
  2288. office365/security/audit/compliance_exchange_ocr_audit_record.py +0 -3
  2289. office365/security/audit/compliance_manager_action_record.py +0 -3
  2290. office365/security/audit/compliance_policy_grading_share_point_audit_record.py +0 -3
  2291. office365/security/audit/compliance_settings_change_audit_record.py +0 -3
  2292. office365/security/audit/compliance_sit_grading_share_point_audit_record.py +0 -3
  2293. office365/security/audit/compliance_supervision_exchange_audit_record.py +0 -3
  2294. office365/security/audit/connected_ai_app_interaction_audit_record.py +0 -3
  2295. office365/security/audit/consumption_resource_audit_record.py +0 -3
  2296. office365/security/audit/content_store_metadata_record.py +0 -3
  2297. office365/security/audit/copilot_agent_management_audit_record.py +0 -3
  2298. office365/security/audit/copilot_for_security_logging_audit_record.py +0 -3
  2299. office365/security/audit/copilot_for_security_trigger_audit_record.py +0 -3
  2300. office365/security/audit/copilot_interaction_audit_record.py +0 -3
  2301. office365/security/audit/copilot_plugin_setting_audit_record.py +0 -3
  2302. office365/security/audit/copilot_prompt_book_setting_audit_record.py +0 -3
  2303. office365/security/audit/copilot_session_sharing_audit_record.py +0 -3
  2304. office365/security/audit/copilot_setting_audit_record.py +0 -3
  2305. office365/security/audit/copilot_workspace_setting_audit_record.py +0 -3
  2306. office365/security/audit/core_reporting_settings_audit_record.py +0 -3
  2307. office365/security/audit/core_root.py +5 -0
  2308. office365/security/audit/critical_asset_management_classification_record.py +0 -3
  2309. office365/security/audit/crm_entity_operation_audit_record.py +0 -3
  2310. office365/security/audit/cross_tenant_access_policy_audit_record.py +0 -3
  2311. office365/security/audit/device_discovery_settings_authenticated_scans_record.py +0 -3
  2312. office365/security/audit/device_discovery_settings_exclusion_record.py +0 -3
  2313. office365/security/audit/device_discovery_settings_record.py +0 -3
  2314. office365/security/audit/discovery_audit_record.py +0 -3
  2315. office365/security/audit/dlp_endpoint_audit_record.py +0 -3
  2316. office365/security/audit/dlp_import_result_audit_record.py +0 -3
  2317. office365/security/audit/dragon_copilot_access_record.py +0 -3
  2318. office365/security/audit/dragon_copilot_admin_record.py +0 -3
  2319. office365/security/audit/dragon_copilot_clinical_data_record.py +0 -3
  2320. office365/security/audit/dragon_copilot_session_record.py +0 -3
  2321. office365/security/audit/dynamics365_business_central_audit_record.py +0 -3
  2322. office365/security/audit/ehr_connector_audit_base_record.py +0 -3
  2323. office365/security/audit/eop_submission_feed_entity_audit_record.py +0 -3
  2324. office365/security/audit/exchange_admin_audit_record.py +0 -3
  2325. office365/security/audit/exchange_aggregated_mailbox_audit_record.py +0 -3
  2326. office365/security/audit/exchange_aggregated_operation_record.py +0 -3
  2327. office365/security/audit/exchange_mailbox_audit_group_record.py +0 -3
  2328. office365/security/audit/exchange_mailbox_audit_record.py +0 -3
  2329. office365/security/audit/hosted_rpa_audit_record.py +0 -3
  2330. office365/security/audit/hr_signal_audit_record.py +0 -3
  2331. office365/security/audit/hygiene_event_record.py +0 -3
  2332. office365/security/audit/information_barrier_policy_application_audit_record.py +0 -3
  2333. office365/security/audit/information_worker_protection_audit_record.py +0 -3
  2334. office365/security/audit/insider_risk_scoped_user_insights_record.py +0 -3
  2335. office365/security/audit/insider_risk_scoped_users_record.py +0 -3
  2336. office365/security/audit/log_query.py +22 -10
  2337. office365/security/audit/log_record.py +17 -12
  2338. office365/security/audit/microsoft_stream_audit_record.py +0 -3
  2339. office365/security/audit/microsoft_teams_admin_audit_record.py +0 -3
  2340. office365/security/audit/microsoft_teams_analytics_audit_record.py +0 -3
  2341. office365/security/audit/microsoft_teams_audit_record.py +0 -3
  2342. office365/security/audit/microsoft_teams_device_audit_record.py +0 -3
  2343. office365/security/audit/microsoft_teams_retention_label_action_audit_record.py +0 -3
  2344. office365/security/audit/microsoft_teams_sensitivity_label_action_audit_record.py +0 -3
  2345. office365/security/audit/microsoft_teams_shifts_audit_record.py +0 -3
  2346. office365/security/audit/microsoft_teams_user_concern_audit_record.py +0 -3
  2347. office365/security/audit/multi_tenant_organization_join_request_transition_details.py +0 -3
  2348. office365/security/audit/multi_tenant_organization_member_transition_details.py +0 -3
  2349. office365/security/audit/whois_record.py +2 -0
  2350. office365/security/auto_auditing_configuration.py +2 -0
  2351. office365/security/automated_action.py +7 -0
  2352. office365/security/automated_action_set.py +64 -0
  2353. office365/security/autonomous_system.py +0 -3
  2354. office365/security/average_comparative_score.py +0 -3
  2355. office365/security/azure_resource_entity_mapping.py +11 -0
  2356. office365/security/base_end_user_notification.py +0 -2
  2357. office365/security/cases/case.py +3 -0
  2358. office365/security/cases/ediscovery.py +11 -2
  2359. office365/security/cases/operation.py +13 -17
  2360. office365/security/cases/root.py +4 -1
  2361. office365/security/category_template.py +2 -0
  2362. office365/security/certification_control.py +0 -3
  2363. office365/security/citation_template.py +3 -0
  2364. office365/security/cloud_app_security_state.py +0 -3
  2365. office365/security/cloud_application_entity_mapping.py +12 -0
  2366. office365/security/cloud_application_evidence.py +1 -2
  2367. office365/security/cloud_clipboard_item.py +7 -10
  2368. office365/security/cloud_clipboard_item_payload.py +0 -3
  2369. office365/security/cloud_clipboard_root.py +2 -0
  2370. office365/security/cloud_flare_rule_model.py +0 -3
  2371. office365/security/cloud_flare_ruleset_model.py +0 -3
  2372. office365/security/cloud_flare_verified_details_model.py +1 -2
  2373. office365/security/cloud_flare_web_application_firewall_provider.py +3 -0
  2374. office365/security/cloud_logon_request_evidence.py +0 -3
  2375. office365/security/cloud_logon_session_evidence.py +1 -2
  2376. office365/security/cloud_pc_audit_event.py +20 -38
  2377. office365/security/cloud_pc_device_image.py +17 -24
  2378. office365/security/cloud_pc_gallery_image.py +13 -10
  2379. office365/security/cloud_pc_on_premises_connection.py +30 -24
  2380. office365/security/cloud_pc_provisioning_policy.py +32 -40
  2381. office365/security/cloud_pc_provisioning_policy_assignment.py +6 -7
  2382. office365/security/cloud_pc_service_plan.py +5 -0
  2383. office365/security/cloud_pc_user_setting.py +9 -7
  2384. office365/security/cloud_pc_user_setting_assignment.py +7 -10
  2385. office365/security/cloud_security_connector.py +7 -0
  2386. office365/security/cloud_security_enablement.py +7 -0
  2387. office365/security/cloud_security_management.py +7 -0
  2388. office365/security/cloud_video_interop_info.py +0 -3
  2389. office365/security/coachmark_location.py +0 -3
  2390. office365/security/collaboration/analyzed_email.py +53 -83
  2391. office365/security/collaboration/analyzed_email_attachment.py +1 -2
  2392. office365/security/collaboration/analyzed_email_authentication_detail.py +0 -3
  2393. office365/security/collaboration/analyzed_email_delivery_detail.py +0 -3
  2394. office365/security/collaboration/analyzed_email_dlp_rule_info.py +0 -3
  2395. office365/security/collaboration/analyzed_email_exchange_transport_rule_info.py +0 -3
  2396. office365/security/collaboration/analyzed_email_recipient_detail.py +1 -2
  2397. office365/security/collaboration/analyzed_email_sender_detail.py +1 -2
  2398. office365/security/collaboration/analyzed_email_url.py +1 -2
  2399. office365/security/collaboration/collaboration_root.py +2 -0
  2400. office365/security/compliance_endpoint_evaluation_incomplete.py +7 -0
  2401. office365/security/compliance_evaluation_incomplete.py +7 -0
  2402. office365/security/compromise_indicator.py +0 -3
  2403. office365/security/container_evidence.py +1 -2
  2404. office365/security/container_filter.py +1 -2
  2405. office365/security/container_image_evidence.py +1 -2
  2406. office365/security/container_registry_evidence.py +0 -3
  2407. office365/security/control_score.py +0 -3
  2408. office365/security/cortana_briefing_audit_record.py +0 -3
  2409. office365/security/csc_content_metadata.py +7 -0
  2410. office365/security/custom_training_setting.py +1 -2
  2411. office365/security/customer_key_service_encryption_audit_record.py +0 -3
  2412. office365/security/cvss_summary.py +0 -3
  2413. office365/security/data_center_security_cmdlet_audit_record.py +0 -3
  2414. office365/security/data_governance_audit_record.py +0 -3
  2415. office365/security/data_insights_rest_api_audit_record.py +0 -3
  2416. office365/security/data_lake_export_operation_audit_record.py +0 -3
  2417. office365/security/data_set.py +5 -0
  2418. office365/security/data_share_operation_audit_record.py +0 -3
  2419. office365/security/data_source_container.py +7 -0
  2420. office365/security/datasecurity/application_mode.py +14 -0
  2421. office365/security/datasecurity/classifcation_error_base.py +1 -2
  2422. office365/security/datasecurity/classification_error.py +1 -2
  2423. office365/security/datasecurity/classification_inner_error.py +1 -2
  2424. office365/security/datasecurity/compute_rights_and_inheritance_result.py +0 -2
  2425. office365/security/datasecurity/current_label.py +13 -0
  2426. office365/security/datasecurity/custom_metadata_dictionary.py +0 -3
  2427. office365/security/datasecurity/dlp_action_info.py +0 -3
  2428. office365/security/datasecurity/governance.py +2 -1
  2429. office365/security/datasecurity/integrated_application_metadata.py +0 -3
  2430. office365/security/datasecurity/investigation_audit_record.py +0 -3
  2431. office365/security/datasecurity/label_content_right.py +6 -3
  2432. office365/security/datasecurity/policy_binding.py +1 -2
  2433. office365/security/datasecurity/policy_location.py +0 -3
  2434. office365/security/datasecurity/policy_location_application.py +0 -3
  2435. office365/security/datasecurity/policy_location_domain.py +0 -3
  2436. office365/security/datasecurity/policy_location_url.py +0 -3
  2437. office365/security/datasecurity/policy_scope_base.py +1 -2
  2438. office365/security/datasecurity/policy_tenant_scope.py +1 -2
  2439. office365/security/datasecurity/policy_tip_action.py +0 -3
  2440. office365/security/datasecurity/policy_user_scope.py +0 -3
  2441. office365/security/datasecurity/process_content_batch_request.py +1 -2
  2442. office365/security/datasecurity/process_content_request.py +1 -2
  2443. office365/security/datasecurity/process_content_response.py +1 -2
  2444. office365/security/datasecurity/process_content_responses.py +1 -2
  2445. office365/security/datasecurity/process_conversation_metadata.py +1 -2
  2446. office365/security/datasecurity/process_file_metadata.py +1 -2
  2447. office365/security/datasecurity/protected_content.py +0 -3
  2448. office365/security/datasecurity/sensitivity_label.py +23 -5
  2449. office365/security/datasecurity/usage_rights_included.py +6 -6
  2450. office365/security/default_audit_data.py +0 -3
  2451. office365/security/defender_automation_rule.py +7 -0
  2452. office365/security/defender_case_management_audit_record.py +0 -3
  2453. office365/security/defender_generated_playbook.py +7 -0
  2454. office365/security/defender_integration.py +7 -0
  2455. office365/security/defender_preview_features_record.py +0 -3
  2456. office365/security/defender_security_for_ai_configuration_audit_record.py +0 -3
  2457. office365/security/deploy_feature_activity_record.py +0 -3
  2458. office365/security/deployment_access_key_type.py +0 -3
  2459. office365/security/detection_action.py +18 -0
  2460. office365/security/detection_rule.py +77 -0
  2461. office365/security/detection_rule_status.py +14 -0
  2462. office365/security/detonation_behaviour_details.py +1 -2
  2463. office365/security/detonation_chain.py +1 -2
  2464. office365/security/detonation_details.py +1 -2
  2465. office365/security/detonation_observables.py +1 -2
  2466. office365/security/device_action.py +11 -0
  2467. office365/security/device_evidence.py +1 -2
  2468. office365/security/dictionary.py +0 -3
  2469. office365/security/dlp_sensitive_information_type_rule_package_cmdlet_record.py +0 -3
  2470. office365/security/dns_entity_mapping.py +13 -0
  2471. office365/security/dns_evidence.py +1 -2
  2472. office365/security/dspm_admin_activity.py +7 -0
  2473. office365/security/dynamic_column_value.py +0 -3
  2474. office365/security/ecs_content_metadata.py +7 -0
  2475. office365/security/ediscovery/case_member.py +6 -6
  2476. office365/security/ediscovery/custodian.py +7 -0
  2477. office365/security/ediscovery/ediscovery_case_settings.py +9 -21
  2478. office365/security/ediscovery/ediscovery_estimate_operation.py +12 -6
  2479. office365/security/ediscovery/ediscovery_export_operation.py +10 -6
  2480. office365/security/ediscovery/ediscovery_review_tag.py +4 -0
  2481. office365/security/ediscovery/noncustodial_data_source.py +3 -0
  2482. office365/security/ediscovery/operations/add_to_review_set.py +9 -3
  2483. office365/security/ediscovery/operations/hold_policy_sync.py +3 -7
  2484. office365/security/ediscovery/operations/purge_data.py +3 -7
  2485. office365/security/ediscovery/operations/search_export.py +13 -3
  2486. office365/security/ediscovery/review_set.py +2 -0
  2487. office365/security/ediscovery/search.py +7 -0
  2488. office365/security/email_action.py +12 -0
  2489. office365/security/email_payload_detail.py +0 -3
  2490. office365/security/email_sender.py +0 -3
  2491. office365/security/end_user_notification.py +16 -26
  2492. office365/security/end_user_notification_detail.py +9 -6
  2493. office365/security/end_user_notification_setting.py +1 -2
  2494. office365/security/entity_mapping.py +7 -0
  2495. office365/security/entity_mapping_configuration.py +77 -0
  2496. office365/security/event_propagation_result.py +0 -3
  2497. office365/security/event_query.py +0 -3
  2498. office365/security/export_file_metadata.py +0 -3
  2499. office365/security/expression_input_object.py +1 -2
  2500. office365/security/fabric_audit_record.py +0 -3
  2501. office365/security/fabric_policy_record.py +0 -3
  2502. office365/security/file_action.py +16 -0
  2503. office365/security/file_details.py +0 -3
  2504. office365/security/file_entity_mapping.py +13 -0
  2505. office365/security/file_evidence.py +1 -2
  2506. office365/security/file_hash.py +0 -3
  2507. office365/security/file_hash_evidence.py +0 -3
  2508. office365/security/file_plan_applied_category.py +1 -2
  2509. office365/security/file_plan_authority.py +0 -3
  2510. office365/security/file_plan_citation.py +0 -3
  2511. office365/security/file_plan_department.py +0 -3
  2512. office365/security/file_plan_descriptor_base.py +0 -3
  2513. office365/security/file_plan_descriptor_template.py +4 -0
  2514. office365/security/file_plan_reference.py +0 -3
  2515. office365/security/file_plan_subcategory.py +0 -3
  2516. office365/security/filter.py +1 -2
  2517. office365/security/filter_clause.py +1 -2
  2518. office365/security/filter_group.py +1 -2
  2519. office365/security/filter_operand.py +1 -2
  2520. office365/security/filtering_teams_message_file_info.py +7 -0
  2521. office365/security/formatted_content.py +0 -3
  2522. office365/security/geo_location.py +0 -3
  2523. office365/security/git_hub_organization_evidence.py +0 -3
  2524. office365/security/git_hub_repo_evidence.py +0 -3
  2525. office365/security/git_hub_user_evidence.py +0 -3
  2526. office365/security/google_cloud_resource_entity_mapping.py +11 -0
  2527. office365/security/google_cloud_resource_evidence.py +0 -3
  2528. office365/security/group_entity_mapping.py +13 -0
  2529. office365/security/group_filter.py +1 -2
  2530. office365/security/health_issue.py +14 -0
  2531. office365/security/healthcare_signal_record.py +0 -3
  2532. office365/security/host_entity_mapping.py +15 -0
  2533. office365/security/host_security_state.py +0 -3
  2534. office365/security/host_ssl_certificate_port.py +0 -2
  2535. office365/security/hunting_query_results.py +1 -2
  2536. office365/security/hyperlink.py +0 -3
  2537. office365/security/identity_accounts.py +9 -6
  2538. office365/security/incidents/incident.py +24 -13
  2539. office365/security/include_all_account_target_content.py +0 -3
  2540. office365/security/indicator.py +4 -7
  2541. office365/security/integrated_apps_app_admin_activity_audit_record.py +0 -3
  2542. office365/security/integrated_apps_app_settings_admin_activity_audit_record.py +0 -3
  2543. office365/security/intelligence_profile_country_or_region_of_origin.py +0 -3
  2544. office365/security/intelligence_profile_indicator.py +3 -0
  2545. office365/security/investigation_security_state.py +0 -3
  2546. office365/security/invoke_action_result.py +0 -2
  2547. office365/security/io_t_device_evidence.py +1 -2
  2548. office365/security/ip_address.py +7 -6
  2549. office365/security/ip_entity_mapping.py +12 -0
  2550. office365/security/ip_evidence.py +1 -2
  2551. office365/security/irm_activity_audit_trail_record.py +0 -3
  2552. office365/security/irm_user_defined_detection_record.py +0 -3
  2553. office365/security/isolate_device_action.py +12 -0
  2554. office365/security/isolation_type.py +13 -0
  2555. office365/security/kaizala_audit_record.py +0 -3
  2556. office365/security/kubernetes_cluster_evidence.py +1 -2
  2557. office365/security/kubernetes_controller_evidence.py +1 -2
  2558. office365/security/kubernetes_namespace_evidence.py +1 -2
  2559. office365/security/kubernetes_pod_evidence.py +1 -2
  2560. office365/security/kubernetes_secret_evidence.py +1 -2
  2561. office365/security/kubernetes_service_account_evidence.py +1 -2
  2562. office365/security/kubernetes_service_evidence.py +1 -2
  2563. office365/security/kubernetes_service_port.py +0 -3
  2564. office365/security/labels/analytics_aggregate_audit_record.py +0 -3
  2565. office365/security/labels/content_explorer_audit_record.py +0 -3
  2566. office365/security/labels/retention/collection.py +13 -0
  2567. office365/security/labels/retention/disposition_review_stage.py +5 -0
  2568. office365/security/labels/retention/duration_in_days.py +0 -3
  2569. office365/security/labels/retention/fileplan_descriptor.py +16 -23
  2570. office365/security/labels/retention/label.py +7 -2
  2571. office365/security/labels/root.py +6 -2
  2572. office365/security/large_content_metadata_audit_record.py +0 -3
  2573. office365/security/logged_on_user.py +0 -3
  2574. office365/security/m365_compliance_connector_audit_record.py +0 -3
  2575. office365/security/m365_search_sections_record.py +0 -3
  2576. office365/security/m365daad_audit_record.py +0 -3
  2577. office365/security/m365odsp_asset_metadata_record.py +0 -3
  2578. office365/security/mail_cluster_entity_mapping.py +12 -0
  2579. office365/security/mail_cluster_evidence.py +1 -2
  2580. office365/security/mail_message_entity_mapping.py +14 -0
  2581. office365/security/mail_submission_data.py +0 -3
  2582. office365/security/mailbox_configuration_evidence.py +0 -2
  2583. office365/security/mailbox_entity_mapping.py +11 -0
  2584. office365/security/mailbox_evidence.py +1 -2
  2585. office365/security/malware_state.py +0 -3
  2586. office365/security/managed_services_audit_record.py +0 -3
  2587. office365/security/managed_tenants_audit_record.py +0 -3
  2588. office365/security/mapg_alerts_audit_record.py +0 -3
  2589. office365/security/mapg_onboard_audit_record.py +0 -3
  2590. office365/security/mapg_policy_audit_record.py +0 -3
  2591. office365/security/mapg_remediation_audit_record.py +0 -3
  2592. office365/security/mcas_alerts_audit_record.py +0 -3
  2593. office365/security/mcs_raw_email_content_metadata.py +7 -0
  2594. office365/security/mda_audit_record.py +0 -3
  2595. office365/security/mda_data_security_signal_record.py +0 -3
  2596. office365/security/mdash_audit_record.py +0 -3
  2597. office365/security/mdatp_audit_record.py +0 -3
  2598. office365/security/mdc_events_record.py +0 -3
  2599. office365/security/mdi_audit_record.py +0 -3
  2600. office365/security/merge_response.py +0 -3
  2601. office365/security/mes_raw_email_content_metadata.py +7 -0
  2602. office365/security/mesh_worlds_audit_record.py +0 -3
  2603. office365/security/message_security_state.py +0 -2
  2604. office365/security/microsoft365_backup_backup_item_audit_record.py +0 -3
  2605. office365/security/microsoft365_backup_backup_policy_audit_record.py +0 -3
  2606. office365/security/microsoft365_backup_granular_browse_task_audit_record.py +0 -3
  2607. office365/security/microsoft365_backup_restore_item_audit_record.py +0 -3
  2608. office365/security/microsoft365_backup_restore_task_audit_record.py +0 -3
  2609. office365/security/microsoft365_copilot_scheduled_prompt_audit_record.py +0 -3
  2610. office365/security/microsoft_custom_training_setting.py +1 -2
  2611. office365/security/microsoft_defender_experts_xdr_audit_record.py +0 -3
  2612. office365/security/microsoft_flow_audit_record.py +0 -3
  2613. office365/security/microsoft_forms_audit_record.py +0 -3
  2614. office365/security/microsoft_graph_data_connect_consent.py +0 -3
  2615. office365/security/microsoft_graph_data_connect_operation.py +0 -3
  2616. office365/security/microsoft_managed_training_setting.py +0 -2
  2617. office365/security/microsoft_purview_data_catalog_operation_record.py +0 -3
  2618. office365/security/microsoft_purview_data_map_operation_record.py +0 -3
  2619. office365/security/microsoft_purview_metadata_policy_operation_record.py +0 -3
  2620. office365/security/microsoft_purview_policy_operation_record.py +0 -3
  2621. office365/security/microsoft_purview_privacy_audit_event.py +0 -3
  2622. office365/security/microsoft_purview_unified_catalog_operation_record.py +0 -3
  2623. office365/security/microsoft_security_for_ai_configuration.py +7 -0
  2624. office365/security/microsoft_security_for_ai_real_time_protection.py +7 -0
  2625. office365/security/microsoft_teams_move_messages.py +7 -0
  2626. office365/security/microsoft_training_assignment_mapping.py +1 -2
  2627. office365/security/mip_auto_label_exchange_item_audit_record.py +0 -3
  2628. office365/security/mip_auto_label_progress_feedback_audit_record.py +0 -3
  2629. office365/security/mip_auto_label_share_point_item_audit_record.py +0 -3
  2630. office365/security/mip_auto_label_share_point_policy_location_audit_record.py +0 -3
  2631. office365/security/mip_auto_label_simulation_share_point_completion_record.py +0 -3
  2632. office365/security/mip_auto_label_simulation_share_point_progress_record.py +0 -3
  2633. office365/security/mip_auto_label_simulation_statistics_record.py +0 -3
  2634. office365/security/mip_exact_data_match_audit_record.py +0 -3
  2635. office365/security/mip_label_analytics_audit_record.py +0 -3
  2636. office365/security/mip_label_audit_record.py +0 -3
  2637. office365/security/mitre_tactic.py +18 -0
  2638. office365/security/mitre_technique.py +15 -0
  2639. office365/security/mos_agent_info_record.py +0 -3
  2640. office365/security/mos_agent_info_record_v2.py +0 -3
  2641. office365/security/ms365d_custom_detection_audit_record.py +0 -3
  2642. office365/security/ms365d_incident_audit_record.py +0 -3
  2643. office365/security/ms365d_suppression_rule_audit_record.py +0 -3
  2644. office365/security/msde_custom_collection_audit_record.py +0 -3
  2645. office365/security/msde_general_settings_audit_record.py +0 -3
  2646. office365/security/msde_indicators_settings_audit_record.py +0 -3
  2647. office365/security/msde_response_actions_audit_record.py +0 -3
  2648. office365/security/msde_roles_settings_audit_record.py +0 -3
  2649. office365/security/msp_vector_search_content_metadata_audit_record.py +0 -3
  2650. office365/security/mstic_nation_state_notification_record.py +0 -3
  2651. office365/security/mtp_content_metadata.py +7 -0
  2652. office365/security/multi_stage_disposition_audit_record.py +0 -3
  2653. office365/security/my_analytics_settings_audit_record.py +0 -3
  2654. office365/security/network_adapter.py +3 -0
  2655. office365/security/network_connection.py +0 -2
  2656. office365/security/network_connection_evidence.py +1 -2
  2657. office365/security/nic_evidence.py +1 -2
  2658. office365/security/no_training_notification_setting.py +1 -2
  2659. office365/security/no_training_setting.py +0 -3
  2660. office365/security/noisy_alert_policy_audit_record.py +0 -3
  2661. office365/security/o_auth_application_entity_mapping.py +11 -0
  2662. office365/security/oauth_application_evidence.py +0 -3
  2663. office365/security/object_definition.py +1 -2
  2664. office365/security/object_definition_metadata_entry.py +0 -3
  2665. office365/security/object_mapping.py +1 -2
  2666. office365/security/object_mapping_metadata_entry.py +0 -3
  2667. office365/security/ocr_settings.py +0 -2
  2668. office365/security/office_native_audit_record.py +0 -3
  2669. office365/security/ome_portal_audit_record.py +0 -3
  2670. office365/security/on_demand_exchange_classification.py +7 -0
  2671. office365/security/on_demand_share_point_classification_audit_record.py +0 -3
  2672. office365/security/on_premises_file_share_scanner_dlp_audit_record.py +0 -3
  2673. office365/security/on_premises_share_point_scanner_dlp_audit_record.py +0 -3
  2674. office365/security/one_drive_audit_record.py +0 -3
  2675. office365/security/organizational_data_in_m365_audit_record.py +0 -3
  2676. office365/security/organizational_scope.py +14 -0
  2677. office365/security/outlook_copilot_automation_audit_record.py +0 -3
  2678. office365/security/owa_get_access_token_for_resource_audit_record.py +0 -3
  2679. office365/security/p4_ai_risk_score_record.py +0 -3
  2680. office365/security/p4ai_assessment_category_record.py +0 -3
  2681. office365/security/p4ai_assessment_fabric_scanner_record.py +0 -3
  2682. office365/security/p4ai_assessment_location_result_record.py +0 -3
  2683. office365/security/p4ai_assessment_record.py +0 -3
  2684. office365/security/p4ai_dag_site_permissions_record.py +7 -0
  2685. office365/security/parse_expression_response.py +1 -2
  2686. office365/security/passive_dns_record.py +7 -0
  2687. office365/security/payload_coachmark.py +1 -2
  2688. office365/security/payload_detail.py +1 -2
  2689. office365/security/people_admin_settings_audit_record.py +0 -3
  2690. office365/security/people_skills_admin.py +7 -0
  2691. office365/security/people_skills_user.py +7 -0
  2692. office365/security/physical_badging_signal_audit_record.py +0 -3
  2693. office365/security/places_directory_audit_record.py +0 -3
  2694. office365/security/planner_chat_message_audit_record.py +0 -3
  2695. office365/security/planner_chat_message_list_audit_record.py +0 -3
  2696. office365/security/planner_copy_plan_audit_record.py +0 -3
  2697. office365/security/planner_custom_field_definition.py +7 -0
  2698. office365/security/planner_custom_field_definition_list.py +7 -0
  2699. office365/security/planner_dependency.py +7 -0
  2700. office365/security/planner_dependency_list.py +7 -0
  2701. office365/security/planner_goal_audit_record.py +0 -3
  2702. office365/security/planner_goal_list_audit_record.py +0 -3
  2703. office365/security/planner_plan_audit_record.py +0 -3
  2704. office365/security/planner_plan_list_audit_record.py +0 -3
  2705. office365/security/planner_plan_sensitivity_label_audit_record.py +0 -3
  2706. office365/security/planner_roster_audit_record.py +0 -3
  2707. office365/security/planner_roster_sensitivity_label_audit_record.py +0 -3
  2708. office365/security/planner_task_audit_record.py +0 -3
  2709. office365/security/planner_task_list_audit_record.py +0 -3
  2710. office365/security/planner_tenant_settings_audit_record.py +0 -3
  2711. office365/security/policy_config_change_audit_record.py +0 -3
  2712. office365/security/positive_reinforcement_notification.py +0 -3
  2713. office365/security/power_apps_audit_app_record.py +0 -3
  2714. office365/security/power_apps_audit_plan_record.py +0 -3
  2715. office365/security/power_apps_audit_resource_record.py +0 -3
  2716. office365/security/power_bi_audit_record.py +0 -3
  2717. office365/security/power_bi_dlp_audit_record.py +0 -3
  2718. office365/security/power_pages_site_audit_record.py +0 -3
  2719. office365/security/power_platform_admin_dlp_audit_record.py +0 -3
  2720. office365/security/power_platform_admin_environment_audit_record.py +0 -3
  2721. office365/security/power_platform_administrator_activity_record.py +0 -3
  2722. office365/security/power_platform_lockbox_resource_access_request_audit_record.py +0 -3
  2723. office365/security/power_platform_lockbox_resource_command_audit_record.py +0 -3
  2724. office365/security/power_platform_service_activity_audit_record.py +0 -3
  2725. office365/security/power_platform_tenant_isolation_record.py +0 -3
  2726. office365/security/priva_privacy_assessment_operation_record.py +0 -3
  2727. office365/security/priva_privacy_consent_operation_record.py +0 -3
  2728. office365/security/privacy_data_match_audit_record.py +0 -3
  2729. office365/security/privacy_data_minimization_record.py +0 -3
  2730. office365/security/privacy_digest_email_record.py +0 -3
  2731. office365/security/privacy_open_access_audit_record.py +0 -3
  2732. office365/security/privacy_portal_audit_record.py +0 -3
  2733. office365/security/privacy_remediation_action_record.py +0 -3
  2734. office365/security/privacy_remediation_record.py +0 -3
  2735. office365/security/process.py +1 -2
  2736. office365/security/process_entity_mapping.py +12 -0
  2737. office365/security/processing_error.py +0 -3
  2738. office365/security/project_audit_record.py +0 -3
  2739. office365/security/project_for_the_web_assigned_to_me_settings_audit_record.py +0 -3
  2740. office365/security/project_for_the_web_project_audit_record.py +0 -3
  2741. office365/security/project_for_the_web_project_settings_audit_record.py +0 -3
  2742. office365/security/project_for_the_web_roadmap_audit_record.py +0 -3
  2743. office365/security/project_for_the_web_roadmap_item_audit_record.py +0 -3
  2744. office365/security/project_for_the_web_roadmap_settings_audit_record.py +0 -3
  2745. office365/security/project_for_the_web_task_audit_record.py +0 -3
  2746. office365/security/public_error_response.py +1 -2
  2747. office365/security/public_folder_audit_record.py +0 -3
  2748. office365/security/purview_insider_risk_alerts_record.py +0 -3
  2749. office365/security/purview_insider_risk_cases_record.py +0 -3
  2750. office365/security/purview_mc_recommendation_record.py +0 -3
  2751. office365/security/purview_posture_agent_audit_record.py +0 -3
  2752. office365/security/quarantine_audit_record.py +0 -3
  2753. office365/security/query_condition.py +11 -0
  2754. office365/security/quotas.py +141 -0
  2755. office365/security/recipient_type.py +2 -0
  2756. office365/security/records_management_audit_record.py +0 -3
  2757. office365/security/redundancy_detection_settings.py +0 -3
  2758. office365/security/referenced_object.py +0 -3
  2759. office365/security/registry_key_evidence.py +0 -3
  2760. office365/security/registry_key_state.py +0 -3
  2761. office365/security/registry_value_entity_mapping.py +12 -0
  2762. office365/security/registry_value_evidence.py +0 -3
  2763. office365/security/report_file_metadata.py +0 -3
  2764. office365/security/report_submission.py +0 -3
  2765. office365/security/report_submission_result_detail.py +0 -3
  2766. office365/security/resource_access_event.py +1 -2
  2767. office365/security/restricted_mode_audit_record.py +0 -3
  2768. office365/security/retention_duration_forever.py +0 -3
  2769. office365/security/retention_event.py +17 -18
  2770. office365/security/retention_event_status.py +1 -2
  2771. office365/security/retention_policy_audit_record.py +0 -3
  2772. office365/security/rti_operations_agent_audit_record.py +0 -3
  2773. office365/security/rule_schedule.py +16 -0
  2774. office365/security/rules_root.py +30 -0
  2775. office365/security/sbp_configuration_event_record.py +0 -3
  2776. office365/security/sbp_usage_event_record.py +0 -3
  2777. office365/security/score_evidence.py +0 -3
  2778. office365/security/score_platform_generic_audit_record.py +0 -3
  2779. office365/security/scorecontrol/profile.py +24 -20
  2780. office365/security/script_run_audit_record.py +0 -3
  2781. office365/security/search/audit_record.py +0 -3
  2782. office365/security/search/data_source.py +5 -0
  2783. office365/security/search.py +8 -0
  2784. office365/security/securescores/control_state_update.py +0 -2
  2785. office365/security/securescores/secure_score.py +15 -20
  2786. office365/security/security.py +34 -8
  2787. office365/security/security_compliance_alert_record.py +0 -3
  2788. office365/security/security_compliance_center_eop_cmdlet_audit_record.py +0 -3
  2789. office365/security/security_compliance_insights_audit_record.py +0 -3
  2790. office365/security/security_compliance_rbac_audit_record.py +0 -3
  2791. office365/security/security_compliance_user_change_audit_record.py +0 -3
  2792. office365/security/security_copilot_identity_management_audit_record.py +0 -3
  2793. office365/security/security_development_lifecycle_ai_log_audit_record.py +0 -3
  2794. office365/security/security_group_evidence.py +0 -2
  2795. office365/security/security_resource.py +0 -3
  2796. office365/security/security_vendor_information.py +0 -3
  2797. office365/security/sensitive_info_remediation_agent_data_record.py +0 -3
  2798. office365/security/sensitivity_label_action_audit_record.py +0 -3
  2799. office365/security/sensitivity_label_info.py +0 -3
  2800. office365/security/sensitivity_label_policy_match_audit_record.py +0 -3
  2801. office365/security/sensitivity_labeled_file_action_audit_record.py +0 -3
  2802. office365/security/sensor.py +14 -6
  2803. office365/security/sensor_candidate.py +5 -0
  2804. office365/security/sensor_candidate_activation_configuration.py +3 -11
  2805. office365/security/sensor_deployment_package.py +0 -3
  2806. office365/security/sensor_settings.py +1 -2
  2807. office365/security/sentinel_ai_tool_audit_record.py +0 -3
  2808. office365/security/sentinel_graph_audit_record.py +0 -3
  2809. office365/security/sentinel_job_audit_record.py +0 -3
  2810. office365/security/sentinel_kql_on_lake_audit_record.py +0 -3
  2811. office365/security/sentinel_lake_data_onboarding_audit_record.py +0 -3
  2812. office365/security/sentinel_lake_encryption_audit_record.py +0 -3
  2813. office365/security/sentinel_lake_onboarding_audit_record.py +0 -3
  2814. office365/security/sentinel_notebook_on_lake_audit_record.py +0 -3
  2815. office365/security/sentinel_package_audit_record.py +0 -3
  2816. office365/security/service_principal_evidence.py +0 -3
  2817. office365/security/settings_container.py +2 -0
  2818. office365/security/share_point_app_permission_operation_audit_record.py +0 -3
  2819. office365/security/share_point_audit_record.py +0 -3
  2820. office365/security/share_point_comment_operation_audit_record.py +0 -3
  2821. office365/security/share_point_content_security_policy_audit_record.py +0 -3
  2822. office365/security/share_point_content_type_operation_audit_record.py +0 -3
  2823. office365/security/share_point_e_signature_audit_record.py +0 -3
  2824. office365/security/share_point_field_operation_audit_record.py +0 -3
  2825. office365/security/share_point_file_operation_audit_record.py +0 -3
  2826. office365/security/share_point_list_item_operation_audit_record.py +0 -3
  2827. office365/security/share_point_list_operation_audit_record.py +0 -3
  2828. office365/security/share_point_sharing_operation_audit_record.py +0 -3
  2829. office365/security/sharepoint_file_archive_policy.py +7 -0
  2830. office365/security/simulation_event.py +0 -3
  2831. office365/security/simulation_events_content.py +1 -2
  2832. office365/security/simulation_notification.py +0 -3
  2833. office365/security/single_property_schema.py +0 -3
  2834. office365/security/site_source.py +2 -0
  2835. office365/security/skype_for_business_cmdlets_audit_record.py +0 -3
  2836. office365/security/skype_for_business_pstn_usage_audit_record.py +0 -3
  2837. office365/security/skype_for_business_users_blocked_audit_record.py +0 -3
  2838. office365/security/sonar_detonation_content_metadata.py +0 -3
  2839. office365/security/sonar_detonation_entity_audit_record.py +0 -3
  2840. office365/security/sonar_file_detonation_entity_audit_record.py +0 -3
  2841. office365/security/sonar_submission_entity_audit_record.py +0 -3
  2842. office365/security/sonar_url_detonation_entity_audit_record.py +0 -3
  2843. office365/security/spark_core_custom_live_pool_record.py +0 -3
  2844. office365/security/ssl_certificate.py +12 -9
  2845. office365/security/ssl_certificate_entity.py +1 -2
  2846. office365/security/stop_and_quarantine_file_action.py +12 -0
  2847. office365/security/stream.py +0 -3
  2848. office365/security/string_key_attribute_mapping_source_value_pair.py +0 -2
  2849. office365/security/string_key_long_value_pair.py +0 -3
  2850. office365/security/string_key_object_value_pair.py +0 -3
  2851. office365/security/string_key_string_value_pair.py +0 -3
  2852. office365/security/string_value_dictionary.py +0 -3
  2853. office365/security/subdomain.py +3 -0
  2854. office365/security/subjectrightsrequests/all_mailbox_location.py +0 -3
  2855. office365/security/subjectrightsrequests/all_site_location.py +0 -3
  2856. office365/security/subjectrightsrequests/authored_note.py +7 -9
  2857. office365/security/subjectrightsrequests/data_subject.py +0 -3
  2858. office365/security/subjectrightsrequests/detail.py +1 -2
  2859. office365/security/subjectrightsrequests/enumerated_mailbox_location.py +1 -2
  2860. office365/security/subjectrightsrequests/enumerated_site_location.py +1 -2
  2861. office365/security/subjectrightsrequests/history.py +1 -2
  2862. office365/security/subjectrightsrequests/mailbox_location.py +0 -3
  2863. office365/security/subjectrightsrequests/request.py +40 -67
  2864. office365/security/subjectrightsrequests/site_location.py +0 -3
  2865. office365/security/subjectrightsrequests/stage_detail.py +1 -2
  2866. office365/security/submission_entity_audit_record.py +0 -3
  2867. office365/security/submission_mail_evidence.py +1 -2
  2868. office365/security/supervisory_review_day_x_insights_audit_record.py +0 -3
  2869. office365/security/synthetic_media_detection_event.py +7 -0
  2870. office365/security/synthetic_probe_audit_record.py +0 -3
  2871. office365/security/tag.py +5 -0
  2872. office365/security/team_copilot_interaction_audit_record.py +0 -3
  2873. office365/security/teams_easy_approvals_audit_record.py +0 -3
  2874. office365/security/teams_eval_data_hub_admin_operation_audit_record.py +0 -3
  2875. office365/security/teams_eval_data_hub_data_access_audit_record.py +0 -3
  2876. office365/security/teams_eval_data_hub_permission_change_audit_record.py +0 -3
  2877. office365/security/teams_healthcare_audit_record.py +0 -3
  2878. office365/security/teams_message_evidence.py +1 -2
  2879. office365/security/teams_updates_audit_record.py +0 -3
  2880. office365/security/tenant_allow_block_list_audit_record.py +0 -3
  2881. office365/security/threat_detection_detail.py +0 -3
  2882. office365/security/threat_finder_audit_record.py +0 -3
  2883. office365/security/threatintelligence/articles/__init__.py +0 -0
  2884. office365/security/threatintelligence/articles/collection.py +24 -0
  2885. office365/security/threatintelligence/atp_content_data.py +0 -3
  2886. office365/security/threatintelligence/export_audit_record.py +0 -3
  2887. office365/security/threatintelligence/host.py +16 -0
  2888. office365/security/threatintelligence/host_component.py +7 -0
  2889. office365/security/threatintelligence/host_cookie.py +6 -0
  2890. office365/security/threatintelligence/host_logon_session_evidence.py +1 -2
  2891. office365/security/threatintelligence/host_pair.py +6 -0
  2892. office365/security/threatintelligence/host_port.py +15 -29
  2893. office365/security/threatintelligence/host_port_banner.py +1 -2
  2894. office365/security/threatintelligence/host_port_component.py +1 -2
  2895. office365/security/threatintelligence/host_reputation.py +7 -17
  2896. office365/security/threatintelligence/host_reputation_rule.py +0 -3
  2897. office365/security/threatintelligence/host_ssl_certificate.py +4 -8
  2898. office365/security/threatintelligence/host_tracker.py +6 -0
  2899. office365/security/threatintelligence/hostname.py +3 -0
  2900. office365/security/threatintelligence/mail_data.py +0 -3
  2901. office365/security/threatintelligence/object_audit_record.py +0 -3
  2902. office365/security/threatintelligence/profile.py +17 -24
  2903. office365/security/threatintelligence/threat_intelligence.py +21 -3
  2904. office365/security/threatintelligence/url_click_data.py +0 -3
  2905. office365/security/timeline_event.py +1 -2
  2906. office365/security/todo_audit_record.py +0 -3
  2907. office365/security/topic_modeling_settings.py +0 -3
  2908. office365/security/trainable_classifier_audit_record.py +0 -3
  2909. office365/security/training.py +19 -24
  2910. office365/security/training_language_detail.py +12 -8
  2911. office365/security/training_notification_setting.py +1 -2
  2912. office365/security/training_reminder_notification.py +0 -3
  2913. office365/security/training_setting.py +0 -3
  2914. office365/security/triggers/root.py +2 -0
  2915. office365/security/triggertypes/collection.py +8 -0
  2916. office365/security/triggertypes/event_type.py +7 -0
  2917. office365/security/triggertypes/root.py +2 -0
  2918. office365/security/uam_operation_audit_record.py +0 -3
  2919. office365/security/unclassified_artifact.py +3 -0
  2920. office365/security/unified_group_audit_record.py +0 -3
  2921. office365/security/unified_group_source.py +3 -0
  2922. office365/security/unified_simulation_matched_item_audit_record.py +0 -3
  2923. office365/security/unified_simulation_summary_audit_record.py +0 -3
  2924. office365/security/universal_print_management_audit_record.py +0 -3
  2925. office365/security/universal_print_print_job_audit_record.py +0 -3
  2926. office365/security/universal_print_secure_scan.py +7 -0
  2927. office365/security/urbac_assignment_audit_record.py +0 -3
  2928. office365/security/urbac_enable_state_audit_record.py +0 -3
  2929. office365/security/urbac_role_audit_record.py +0 -3
  2930. office365/security/uri_click_security_state.py +0 -2
  2931. office365/security/url_entity_mapping.py +11 -0
  2932. office365/security/url_evidence.py +0 -3
  2933. office365/security/user.py +3 -0
  2934. office365/security/user_account.py +1 -2
  2935. office365/security/user_evidence.py +1 -2
  2936. office365/security/user_security_state.py +0 -2
  2937. office365/security/user_simulation_event_info.py +0 -2
  2938. office365/security/user_source.py +4 -0
  2939. office365/security/user_training_audit_record.py +0 -3
  2940. office365/security/user_training_content_event_info.py +0 -2
  2941. office365/security/user_training_event_info.py +1 -2
  2942. office365/security/user_training_status_info.py +0 -2
  2943. office365/security/usx_workspace_onboarding_audit_record.py +0 -3
  2944. office365/security/vfam_create_policy_audit_record.py +0 -3
  2945. office365/security/vfam_delete_policy_audit_record.py +0 -3
  2946. office365/security/vfam_update_policy_audit_record.py +0 -3
  2947. office365/security/viva_amplify_audit_record.py +0 -3
  2948. office365/security/viva_engage_events_audit_record.py +0 -3
  2949. office365/security/viva_engage_network_association_audit_record.py +0 -3
  2950. office365/security/viva_engage_segment_audit_record.py +0 -3
  2951. office365/security/viva_glint_advanced_configuration_audit_record.py +0 -3
  2952. office365/security/viva_glint_agentic_campaign_audit_record.py +0 -3
  2953. office365/security/viva_glint_client_configuration.py +7 -0
  2954. office365/security/viva_glint_data_retention.py +7 -0
  2955. office365/security/viva_glint_feedback_program_audit_record.py +0 -3
  2956. office365/security/viva_glint_organizational_data_audit_record.py +0 -3
  2957. office365/security/viva_glint_pulse_program_audit_record.py +0 -3
  2958. office365/security/viva_glint_pulse_program_respondent_rate_audit_record.py +0 -3
  2959. office365/security/viva_glint_question_audit_record.py +0 -3
  2960. office365/security/viva_glint_role_audit_record.py +0 -3
  2961. office365/security/viva_glint_rubicon_audit_record.py +0 -3
  2962. office365/security/viva_glint_support_access_audit_record.py +0 -3
  2963. office365/security/viva_glint_system_audit_record.py +0 -3
  2964. office365/security/viva_glint_user_audit_record.py +0 -3
  2965. office365/security/viva_glint_user_group_audit_record.py +0 -3
  2966. office365/security/viva_glint_viva_insights_integration.py +7 -0
  2967. office365/security/viva_goals_audit_record.py +0 -3
  2968. office365/security/viva_learning_admin_audit_record.py +0 -3
  2969. office365/security/viva_learning_audit_record.py +0 -3
  2970. office365/security/viva_pulse_admin_audit_record.py +0 -3
  2971. office365/security/viva_pulse_organizer_audit_record.py +0 -3
  2972. office365/security/viva_pulse_report_audit_record.py +0 -3
  2973. office365/security/viva_pulse_response_audit_record.py +0 -3
  2974. office365/security/vm_metadata.py +0 -3
  2975. office365/security/vulnerability.py +23 -25
  2976. office365/security/vulnerability_component.py +2 -0
  2977. office365/security/vulnerability_state.py +0 -3
  2978. office365/security/wdatp_alerts_audit_record.py +0 -3
  2979. office365/security/web_content_filtering_audit_record.py +0 -3
  2980. office365/security/whois_base_record.py +22 -23
  2981. office365/security/whois_contact.py +1 -2
  2982. office365/security/whois_nameserver.py +0 -2
  2983. office365/security/windows365_customer_lockbox_audit_record.py +0 -3
  2984. office365/security/work_iq_admin_activity.py +7 -0
  2985. office365/security/workplace_analytics_audit_record.py +0 -3
  2986. office365/security/yammer_audit_record.py +0 -3
  2987. office365/security/yammer_user_hiding_audit_record.py +0 -3
  2988. office365/sharepoint/activities/action_facet.py +1 -2
  2989. office365/sharepoint/activities/capabilities.py +0 -2
  2990. office365/sharepoint/activities/client_request.py +1 -2
  2991. office365/sharepoint/activities/client_response.py +0 -2
  2992. office365/sharepoint/activities/clientidentity.py +0 -2
  2993. office365/sharepoint/activities/entity.py +14 -6
  2994. office365/sharepoint/activities/facets/activity_time.py +0 -2
  2995. office365/sharepoint/activities/facets/add_to_onedrive.py +0 -3
  2996. office365/sharepoint/activities/facets/checkin.py +0 -3
  2997. office365/sharepoint/activities/facets/checkout.py +0 -3
  2998. office365/sharepoint/activities/facets/coalesced.py +0 -3
  2999. office365/sharepoint/activities/facets/comment.py +1 -2
  3000. office365/sharepoint/activities/facets/create.py +0 -3
  3001. office365/sharepoint/activities/facets/delete.py +0 -2
  3002. office365/sharepoint/activities/facets/discard_checkout.py +0 -3
  3003. office365/sharepoint/activities/facets/edit.py +0 -3
  3004. office365/sharepoint/activities/facets/get_comment.py +1 -2
  3005. office365/sharepoint/activities/facets/get_mention.py +1 -2
  3006. office365/sharepoint/activities/facets/in_doc.py +0 -3
  3007. office365/sharepoint/activities/facets/mention.py +1 -2
  3008. office365/sharepoint/activities/facets/move.py +1 -2
  3009. office365/sharepoint/activities/facets/point_in_time_restore.py +0 -2
  3010. office365/sharepoint/activities/facets/rename.py +0 -2
  3011. office365/sharepoint/activities/facets/resource.py +1 -2
  3012. office365/sharepoint/activities/facets/revision_set.py +1 -2
  3013. office365/sharepoint/activities/facets/sharing.py +1 -2
  3014. office365/sharepoint/activities/facets/task_completed.py +1 -2
  3015. office365/sharepoint/activities/facets/taskcreated.py +1 -2
  3016. office365/sharepoint/activities/facets/taskreopened.py +1 -2
  3017. office365/sharepoint/activities/facets/version.py +0 -2
  3018. office365/sharepoint/activities/identity.py +1 -2
  3019. office365/sharepoint/activities/identity_item.py +0 -3
  3020. office365/sharepoint/activities/logger.py +5 -0
  3021. office365/sharepoint/activities/officefileuservalueresponse.py +0 -2
  3022. office365/sharepoint/activities/revision_info.py +0 -2
  3023. office365/sharepoint/activities/taskreassignedfacet.py +1 -2
  3024. office365/sharepoint/activities/tracked_item_service.py +2 -0
  3025. office365/sharepoint/activities/tracked_item_updates_request.py +0 -2
  3026. office365/sharepoint/administration/analytics/usage_service.py +3 -0
  3027. office365/sharepoint/administration/archiving/file_size_metric.py +6 -0
  3028. office365/sharepoint/administration/custom_fonts_resource.py +0 -2
  3029. office365/sharepoint/administration/filerequestbrandingassetconfig.py +1 -2
  3030. office365/sharepoint/administration/filerequestbrandingcdninfo.py +0 -2
  3031. office365/sharepoint/administration/filerequestbrandingprofile.py +0 -2
  3032. office365/sharepoint/administration/orgassets/library.py +1 -2
  3033. office365/sharepoint/administration/orgassets/library_collection.py +1 -2
  3034. office365/sharepoint/administration/orgassets/org_assets.py +1 -2
  3035. office365/sharepoint/administration/sitemove/service.py +187 -0
  3036. office365/sharepoint/administration/sitemove/systemsitelockexpres.py +1 -2
  3037. office365/sharepoint/administration/unlicensedodblicenseenforcementwarningcontext.py +0 -2
  3038. office365/sharepoint/administration/unlicensedodbtenantmetrics.py +0 -2
  3039. office365/sharepoint/administration/usageentry.py +0 -2
  3040. office365/sharepoint/administration/web_application.py +3 -0
  3041. office365/sharepoint/administration/web_service.py +3 -0
  3042. office365/sharepoint/agreements/approveitemapprovalrequestpayload.py +0 -2
  3043. office365/sharepoint/agreements/attestationpolicyresourcestorage.py +0 -3
  3044. office365/sharepoint/agreements/attributedto.py +1 -2
  3045. office365/sharepoint/agreements/attributerequestdto.py +0 -2
  3046. office365/sharepoint/agreements/cancelitemapprovalrequestpayload.py +0 -2
  3047. office365/sharepoint/agreements/countryresponse.py +0 -3
  3048. office365/sharepoint/agreements/createitemapprovalrequestpayload.py +0 -2
  3049. office365/sharepoint/agreements/datapair.py +0 -3
  3050. office365/sharepoint/agreements/document.py +1 -2
  3051. office365/sharepoint/agreements/documentsinfo.py +1 -2
  3052. office365/sharepoint/agreements/esignstatusupdatedpayload.py +0 -2
  3053. office365/sharepoint/agreements/fieldcreationparameters.py +0 -2
  3054. office365/sharepoint/agreements/importdata.py +0 -3
  3055. office365/sharepoint/agreements/location.py +0 -2
  3056. office365/sharepoint/agreements/locationdata.py +0 -3
  3057. office365/sharepoint/agreements/metadata.py +1 -2
  3058. office365/sharepoint/agreements/permissionsdata.py +0 -3
  3059. office365/sharepoint/agreements/rejectitemapprovalrequestpayload.py +0 -2
  3060. office365/sharepoint/agreements/reportbasedata.py +1 -2
  3061. office365/sharepoint/agreements/reportfilter.py +0 -3
  3062. office365/sharepoint/agreements/searchparameters.py +0 -3
  3063. office365/sharepoint/agreements/site.py +1 -2
  3064. office365/sharepoint/agreements/ssolutionenabledsitesresponse.py +1 -2
  3065. office365/sharepoint/agreements/summarydata.py +1 -2
  3066. office365/sharepoint/agreements/templatecreationparameters.py +0 -2
  3067. office365/sharepoint/agreements/updateesignconfigpayload.py +1 -2
  3068. office365/sharepoint/agreements/updatemetadatapayload.py +0 -3
  3069. office365/sharepoint/agreements/updatestatepayload.py +0 -3
  3070. office365/sharepoint/alerts/alert.py +24 -0
  3071. office365/sharepoint/alerts/collection.py +4 -0
  3072. office365/sharepoint/alerts/creation_information.py +0 -2
  3073. office365/sharepoint/analytics/usage_entry.py +3 -0
  3074. office365/sharepoint/appprincipal/credential.py +3 -0
  3075. office365/sharepoint/appprincipal/identity_provider.py +2 -0
  3076. office365/sharepoint/approvals/accessrequestresponse.py +0 -2
  3077. office365/sharepoint/approvals/additionalaccessstatusresponse.py +0 -3
  3078. office365/sharepoint/approvals/agreementworkflowresponse.py +0 -3
  3079. office365/sharepoint/approvals/approvals.py +11 -0
  3080. office365/sharepoint/approvals/createrequestparameters.py +0 -2
  3081. office365/sharepoint/approvals/createtemplateresponse.py +0 -2
  3082. office365/sharepoint/approvals/mediaserviceupdateparameters.py +1 -2
  3083. office365/sharepoint/approvals/properties.py +0 -2
  3084. office365/sharepoint/approvals/reviewconfigurationpayload.py +1 -2
  3085. office365/sharepoint/approvals/reviewconfigurationresponse.py +1 -2
  3086. office365/sharepoint/approvals/reviewdeletionconfigurationresponse.py +0 -2
  3087. office365/sharepoint/approvals/reviewworkflowresponsedto.py +0 -2
  3088. office365/sharepoint/approvals/spagreementresults.py +1 -2
  3089. office365/sharepoint/approvals/updatereviewrequestdto.py +0 -2
  3090. office365/sharepoint/approvals/updateuploadedagreementmetadatapayload.py +0 -3
  3091. office365/sharepoint/approvals/user.py +0 -2
  3092. office365/sharepoint/apps/access_requests.py +3 -0
  3093. office365/sharepoint/apps/app.py +4 -0
  3094. office365/sharepoint/apps/app_collection.py +3 -0
  3095. office365/sharepoint/apps/appinstanceerrordetails.py +8 -0
  3096. office365/sharepoint/apps/appsitecontextutility.py +2 -0
  3097. office365/sharepoint/apps/apptileproperties.py +2 -0
  3098. office365/sharepoint/apps/catalog.py +3 -0
  3099. office365/sharepoint/apps/context_site.py +3 -0
  3100. office365/sharepoint/apps/instance.py +26 -0
  3101. office365/sharepoint/apps/launcher.py +2 -0
  3102. office365/sharepoint/apps/license.py +0 -2
  3103. office365/sharepoint/apps/license_collection.py +1 -2
  3104. office365/sharepoint/apps/license_manager.py +2 -0
  3105. office365/sharepoint/apps/properties.py +0 -2
  3106. office365/sharepoint/attachments/attachment.py +11 -1
  3107. office365/sharepoint/attachments/collection.py +3 -0
  3108. office365/sharepoint/attachments/creation_information.py +0 -2
  3109. office365/sharepoint/audit/audit.py +2 -0
  3110. office365/sharepoint/authentication/acs_service_principal_info.py +0 -2
  3111. office365/sharepoint/authentication/auth_file_detonation_request_response.py +12 -0
  3112. office365/sharepoint/authpolicy/events/collection.py +3 -0
  3113. office365/sharepoint/authpolicy/events/event.py +4 -0
  3114. office365/sharepoint/authpolicy/events/role_assignment_resource_payload.py +0 -2
  3115. office365/sharepoint/authpolicy/spjitdlppolicydata.py +0 -2
  3116. office365/sharepoint/authpolicy/tenant/compliancereport.py +10 -0
  3117. office365/sharepoint/authpolicy/tenant/compliancereportentitydata.py +4 -0
  3118. office365/sharepoint/automations/automations.py +25 -0
  3119. office365/sharepoint/brandcenter/brand_center.py +28 -0
  3120. office365/sharepoint/brandcenter/configuration.py +1 -2
  3121. office365/sharepoint/brandcenter/orgassetslibraryconfigparam.py +0 -2
  3122. office365/sharepoint/brandcenter/tenantthemes.py +1 -2
  3123. office365/sharepoint/brandcenter/theme_data.py +0 -2
  3124. office365/sharepoint/businessdata/app_bdc_catalog.py +8 -0
  3125. office365/sharepoint/businessdata/entityfield.py +5 -0
  3126. office365/sharepoint/businessdata/entityfieldvaluedictionary.py +6 -0
  3127. office365/sharepoint/businessdata/entityidentifier.py +7 -0
  3128. office365/sharepoint/businessdata/entityidentity.py +2 -0
  3129. office365/sharepoint/businessdata/entityinstance.py +5 -0
  3130. office365/sharepoint/businessdata/entityview.py +7 -0
  3131. office365/sharepoint/businessdata/externalsubscriptionstore.py +2 -0
  3132. office365/sharepoint/businessdata/filter.py +7 -0
  3133. office365/sharepoint/businessdata/lobsysteminstance.py +2 -0
  3134. office365/sharepoint/businessdata/methodexecutionresult.py +2 -0
  3135. office365/sharepoint/businessdata/notificationcallback.py +4 -0
  3136. office365/sharepoint/businessdata/runtime/subscription.py +2 -0
  3137. office365/sharepoint/businessdata/typedescriptor.py +12 -0
  3138. office365/sharepoint/campaigns/campaigns.py +2 -0
  3139. office365/sharepoint/campaigns/communicationentity.py +1 -2
  3140. office365/sharepoint/campaigns/entity.py +1 -2
  3141. office365/sharepoint/campaigns/summary.py +1 -2
  3142. office365/sharepoint/campaigns/userinfo.py +1 -2
  3143. office365/sharepoint/changes/alert.py +3 -0
  3144. office365/sharepoint/changes/app_consent_principal.py +2 -0
  3145. office365/sharepoint/changes/change.py +3 -0
  3146. office365/sharepoint/changes/collection.py +2 -2
  3147. office365/sharepoint/changes/content_type.py +3 -0
  3148. office365/sharepoint/changes/field.py +3 -0
  3149. office365/sharepoint/changes/file.py +3 -0
  3150. office365/sharepoint/changes/folder.py +4 -0
  3151. office365/sharepoint/changes/group.py +2 -0
  3152. office365/sharepoint/changes/item.py +26 -7
  3153. office365/sharepoint/changes/list.py +10 -0
  3154. office365/sharepoint/changes/log_item_query.py +0 -2
  3155. office365/sharepoint/changes/query.py +0 -2
  3156. office365/sharepoint/changes/token.py +0 -2
  3157. office365/sharepoint/changes/user.py +3 -0
  3158. office365/sharepoint/changes/view.py +4 -0
  3159. office365/sharepoint/changes/web.py +2 -0
  3160. office365/sharepoint/client_context.py +14 -8
  3161. office365/sharepoint/clientsidecomponent/actionshowcard.py +1 -2
  3162. office365/sharepoint/clientsidecomponent/actionsubmit.py +0 -3
  3163. office365/sharepoint/clientsidecomponent/adaptivecard.py +1 -2
  3164. office365/sharepoint/clientsidecomponent/adaptivecardcolumn.py +0 -3
  3165. office365/sharepoint/clientsidecomponent/agreementssolutionfilecontext.py +1 -2
  3166. office365/sharepoint/clientsidecomponent/card_element.py +0 -2
  3167. office365/sharepoint/clientsidecomponent/columnset.py +1 -2
  3168. office365/sharepoint/clientsidecomponent/component_context_info.py +2 -0
  3169. office365/sharepoint/clientsidecomponent/elementupdate.py +1 -2
  3170. office365/sharepoint/clientsidecomponent/hostedapps/add_response.py +4 -0
  3171. office365/sharepoint/clientsidecomponent/hostedapps/app.py +3 -0
  3172. office365/sharepoint/clientsidecomponent/hostedapps/manager.py +2 -0
  3173. office365/sharepoint/clientsidecomponent/identifier.py +0 -3
  3174. office365/sharepoint/clientsidecomponent/padding.py +0 -3
  3175. office365/sharepoint/clientsidecomponent/query_result.py +1 -2
  3176. office365/sharepoint/clientsidecomponent/spfx3rdpartycustomprincipalinfo.py +4 -0
  3177. office365/sharepoint/clientsidecomponent/spteamsappcomponent.py +0 -3
  3178. office365/sharepoint/clientsidecomponent/storage_entity.py +5 -1
  3179. office365/sharepoint/clientsidecomponent/updatecard.py +1 -2
  3180. office365/sharepoint/clientsidecomponent/updatecardelement.py +0 -3
  3181. office365/sharepoint/comments/client/identity.py +0 -2
  3182. office365/sharepoint/comments/collection.py +2 -0
  3183. office365/sharepoint/comments/comment.py +21 -1
  3184. office365/sharepoint/comments/contentanchor.py +0 -2
  3185. office365/sharepoint/comments/information.py +1 -2
  3186. office365/sharepoint/compliance/classification/publishconfig.py +1 -2
  3187. office365/sharepoint/compliance/classification/result.py +1 -2
  3188. office365/sharepoint/compliance/dlp_classification_result.py +0 -2
  3189. office365/sharepoint/compliance/pending_review_items_statistics.py +0 -2
  3190. office365/sharepoint/compliance/preservedcloudattachment.py +0 -2
  3191. office365/sharepoint/compliance/retentionlabelconfig.py +0 -2
  3192. office365/sharepoint/compliance/sensitivitylabels/collection.py +2 -0
  3193. office365/sharepoint/compliance/sensitivitylabels/config.py +0 -2
  3194. office365/sharepoint/compliance/sensitivitylabels/info.py +0 -3
  3195. office365/sharepoint/compliance/store_proxy.py +29 -0
  3196. office365/sharepoint/compliance/tags/info.py +0 -2
  3197. office365/sharepoint/compliance/tags/tag.py +0 -2
  3198. office365/sharepoint/containers/active/collection.py +1 -2
  3199. office365/sharepoint/containers/active/properties.py +2 -2
  3200. office365/sharepoint/content_solution.py +2 -0
  3201. office365/sharepoint/contentcenter/cdsmetadata.py +4 -0
  3202. office365/sharepoint/contentcenter/defaultcontentcentersiteinfo.py +5 -0
  3203. office365/sharepoint/contentcenter/machinelearning/dependentmodel.py +0 -2
  3204. office365/sharepoint/contentcenter/machinelearning/enabled.py +9 -0
  3205. office365/sharepoint/contentcenter/machinelearning/extractorpublishconfig.py +0 -2
  3206. office365/sharepoint/contentcenter/machinelearning/hub.py +27 -1
  3207. office365/sharepoint/contentcenter/machinelearning/modeldependencies.py +1 -2
  3208. office365/sharepoint/contentcenter/machinelearning/modelpublishconfig.py +1 -2
  3209. office365/sharepoint/contentcenter/machinelearning/models/columndef.py +0 -2
  3210. office365/sharepoint/contentcenter/machinelearning/models/entity_data.py +26 -14
  3211. office365/sharepoint/contentcenter/machinelearning/models/model.py +43 -0
  3212. office365/sharepoint/contentcenter/machinelearning/publicationentitydata.py +0 -2
  3213. office365/sharepoint/contentcenter/machinelearning/publicationresult.py +1 -2
  3214. office365/sharepoint/contentcenter/machinelearning/publications/publication.py +35 -0
  3215. office365/sharepoint/contentcenter/machinelearning/publicationsentitydata.py +8 -0
  3216. office365/sharepoint/contentcenter/machinelearning/samples/entity_data.py +3 -0
  3217. office365/sharepoint/contentcenter/machinelearning/samples/meta.py +0 -2
  3218. office365/sharepoint/contentcenter/machinelearning/samples/sample.py +25 -0
  3219. office365/sharepoint/contentcenter/machinelearning/workitementitydata.py +13 -0
  3220. office365/sharepoint/contentcenter/machinelearning/workitems/item.py +16 -0
  3221. office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_data.py +1 -2
  3222. office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_result.py +1 -2
  3223. office365/sharepoint/contentcenter/sp_machine_learning_list_autofill_single_data.py +14 -0
  3224. office365/sharepoint/contentcenter/sp_machine_learning_list_autofill_single_result.py +12 -0
  3225. office365/sharepoint/contentcenter/sp_machine_learning_publications_result.py +6 -10
  3226. office365/sharepoint/contentcenter/syntex_models_landing_info.py +5 -0
  3227. office365/sharepoint/contentcenter/template_api.py +10 -0
  3228. office365/sharepoint/contentsolution/create_template_using_stream_request.py +4 -0
  3229. office365/sharepoint/contentsolution/template_api.py +10 -0
  3230. office365/sharepoint/contenttypes/builtin_content_type_id.py +23 -0
  3231. office365/sharepoint/contenttypes/collection.py +4 -0
  3232. office365/sharepoint/contenttypes/content_type.py +44 -31
  3233. office365/sharepoint/contenttypes/content_type_id.py +0 -2
  3234. office365/sharepoint/contenttypes/creation_information.py +0 -2
  3235. office365/sharepoint/contenttypes/entity_data.py +0 -2
  3236. office365/sharepoint/contenttypes/fieldlinks/collection.py +3 -0
  3237. office365/sharepoint/contenttypes/fieldlinks/field_link.py +9 -0
  3238. office365/sharepoint/convergence/addnoliveblobsinodcservicestateapi.py +2 -0
  3239. office365/sharepoint/convergence/consumer_permissions.py +3 -0
  3240. office365/sharepoint/convergence/migration_complete_state_api.py +4 -0
  3241. office365/sharepoint/convergence/odcmetadatacleanedupapi.py +2 -0
  3242. office365/sharepoint/copilot/files/collection.py +2 -0
  3243. office365/sharepoint/copilot/files/collection_query_result.py +1 -2
  3244. office365/sharepoint/copilot/files/metadata.py +1 -2
  3245. office365/sharepoint/copilot/files/user_relationship.py +0 -2
  3246. office365/sharepoint/copilot/transitivesharing/statusinformation.py +1 -2
  3247. office365/sharepoint/copilot/transitivesharing/statusitem.py +0 -2
  3248. office365/sharepoint/copilot/useridentity.py +0 -2
  3249. office365/sharepoint/customactions/element.py +1 -2
  3250. office365/sharepoint/customactions/element_collection.py +1 -2
  3251. office365/sharepoint/deployment/shortcutinformation.py +0 -2
  3252. office365/sharepoint/directory/conditional_access_policy.py +9 -0
  3253. office365/sharepoint/directory/extendedattributedata.py +0 -3
  3254. office365/sharepoint/directory/group_and_user_status.py +3 -0
  3255. office365/sharepoint/directory/groups/group.py +24 -68
  3256. office365/sharepoint/directory/groups/namevalidationresult.py +1 -2
  3257. office365/sharepoint/directory/groups/namevalidationresulterrorparams.py +0 -2
  3258. office365/sharepoint/directory/helper.py +9 -0
  3259. office365/sharepoint/directory/link.py +4 -0
  3260. office365/sharepoint/directory/linktarget.py +0 -3
  3261. office365/sharepoint/directory/members_info.py +3 -0
  3262. office365/sharepoint/directory/membership_result.py +3 -1
  3263. office365/sharepoint/directory/multi_conditional_access_policy.py +7 -0
  3264. office365/sharepoint/directory/my_groups_result.py +3 -0
  3265. office365/sharepoint/directory/named_location_policy.py +14 -0
  3266. office365/sharepoint/directory/propertycollectiondata.py +0 -3
  3267. office365/sharepoint/directory/propertydata.py +0 -3
  3268. office365/sharepoint/directory/provider/alternate_id_data.py +0 -2
  3269. office365/sharepoint/directory/provider/link_change.py +1 -2
  3270. office365/sharepoint/directory/provider/notification.py +3 -0
  3271. office365/sharepoint/directory/provider/object_changes.py +1 -2
  3272. office365/sharepoint/directory/provider/object_data.py +1 -2
  3273. office365/sharepoint/directory/provider/property_change.py +1 -2
  3274. office365/sharepoint/directory/provider/provider.py +11 -0
  3275. office365/sharepoint/directory/provider/session_data.py +0 -2
  3276. office365/sharepoint/directory/relationdata.py +0 -3
  3277. office365/sharepoint/directory/relationsetdata.py +0 -3
  3278. office365/sharepoint/directory/resourcedata.py +0 -3
  3279. office365/sharepoint/directory/schemadata.py +0 -3
  3280. office365/sharepoint/directory/session.py +7 -0
  3281. office365/sharepoint/directory/statedata.py +0 -3
  3282. office365/sharepoint/directory/tenant.py +6 -10
  3283. office365/sharepoint/directory/users/creationinformation.py +0 -3
  3284. office365/sharepoint/directory/users/information.py +0 -2
  3285. office365/sharepoint/directory/users/user.py +66 -0
  3286. office365/sharepoint/document_location.py +0 -2
  3287. office365/sharepoint/documentmanagement/document_id.py +5 -0
  3288. office365/sharepoint/documentmanagement/document_set.py +2 -0
  3289. office365/sharepoint/documents/caaefieldelement.py +0 -3
  3290. office365/sharepoint/documents/caaesnippetelement.py +0 -3
  3291. office365/sharepoint/documents/cafieldvalue.py +0 -3
  3292. office365/sharepoint/documents/coauthconfiguration.py +1 -2
  3293. office365/sharepoint/documents/columntypeinfo.py +0 -3
  3294. office365/sharepoint/documents/contentassemblyfileinfo.py +0 -3
  3295. office365/sharepoint/documents/contentassemblyformanswer.py +0 -3
  3296. office365/sharepoint/documents/contentassemblymoderntemplatecolumnsmappinginfo.py +1 -2
  3297. office365/sharepoint/documents/contentcontrolinfo.py +1 -2
  3298. office365/sharepoint/documents/countbydate.py +0 -2
  3299. office365/sharepoint/documents/createagreementfolderinfo.py +0 -3
  3300. office365/sharepoint/documents/createhvcsitemapprovalrequestparameters.py +0 -3
  3301. office365/sharepoint/documents/createreviewrequestdto.py +0 -2
  3302. office365/sharepoint/documents/customizedformspage.py +0 -2
  3303. office365/sharepoint/documents/customizedformspagecollection.py +1 -2
  3304. office365/sharepoint/documents/destinationlibraryinfo.py +0 -2
  3305. office365/sharepoint/documents/documentgenerationinfo.py +1 -2
  3306. office365/sharepoint/documents/effectivebasepermissions.py +0 -2
  3307. office365/sharepoint/documents/encryptionoption.py +0 -3
  3308. office365/sharepoint/documents/fieldvalueswithurl.py +1 -2
  3309. office365/sharepoint/documents/fontoption.py +0 -3
  3310. office365/sharepoint/documents/getnextagreementworkflowrequest.py +0 -3
  3311. office365/sharepoint/documents/getreviewconfigrequestdto.py +0 -2
  3312. office365/sharepoint/documents/gridinitinfotype.py +0 -3
  3313. office365/sharepoint/documents/ingestiontaskkey.py +0 -3
  3314. office365/sharepoint/documents/itemorderupdatevalue.py +0 -3
  3315. office365/sharepoint/documents/librarydetails.py +0 -2
  3316. office365/sharepoint/documents/location.py +0 -2
  3317. office365/sharepoint/documents/lockfiledata.py +1 -2
  3318. office365/sharepoint/documents/placeholder.py +0 -3
  3319. office365/sharepoint/documents/placeholderv2.py +0 -2
  3320. office365/sharepoint/documents/publishmoderntemplatepayload.py +2 -2
  3321. office365/sharepoint/documents/publishsnippetpayload.py +1 -2
  3322. office365/sharepoint/documents/publishtemplatev2payload.py +1 -2
  3323. office365/sharepoint/documents/smarttemplatecontenttype.py +0 -3
  3324. office365/sharepoint/documents/snippet.py +1 -2
  3325. office365/sharepoint/documents/templatemetadata.py +1 -2
  3326. office365/sharepoint/documents/updatetemplateinfo.py +1 -2
  3327. office365/sharepoint/documents/updatetemplateinfov2.py +1 -2
  3328. office365/sharepoint/documents/uploaddocumentinfo.py +0 -3
  3329. office365/sharepoint/dynamiccontent/updateservice.py +12 -0
  3330. office365/sharepoint/engage_distribution_info.py +0 -2
  3331. office365/sharepoint/entity.py +13 -1
  3332. office365/sharepoint/esign/digitallegacy.py +17 -0
  3333. office365/sharepoint/esign/models/addaudittrailentry.py +0 -2
  3334. office365/sharepoint/esign/models/cancelagreement.py +0 -2
  3335. office365/sharepoint/esign/models/completeagreement.py +0 -2
  3336. office365/sharepoint/esign/models/completeagreementv4.py +0 -2
  3337. office365/sharepoint/esign/models/createagreement.py +0 -2
  3338. office365/sharepoint/esign/models/createagreementv2.py +0 -2
  3339. office365/sharepoint/esign/models/declineagreement.py +0 -2
  3340. office365/sharepoint/esign/models/initializeagreement.py +0 -2
  3341. office365/sharepoint/esign/models/initializewriteback.py +0 -2
  3342. office365/sharepoint/esign/models/signagreement.py +0 -2
  3343. office365/sharepoint/esign/models/updateaudittrailentry.py +0 -2
  3344. office365/sharepoint/esign/models/updatewritebackfile.py +0 -2
  3345. office365/sharepoint/esign/models/writebacklocation.py +0 -2
  3346. office365/sharepoint/eventreceivers/creation_information.py +0 -2
  3347. office365/sharepoint/eventreceivers/definition.py +9 -0
  3348. office365/sharepoint/eventreceivers/definition_collection.py +2 -0
  3349. office365/sharepoint/exceptions.py +10 -0
  3350. office365/sharepoint/features/collection.py +13 -6
  3351. office365/sharepoint/features/definitions/collection.py +2 -0
  3352. office365/sharepoint/features/feature.py +3 -0
  3353. office365/sharepoint/fields/calculated.py +7 -0
  3354. office365/sharepoint/fields/choice.py +2 -0
  3355. office365/sharepoint/fields/collection.py +5 -0
  3356. office365/sharepoint/fields/computed.py +2 -0
  3357. office365/sharepoint/fields/creation_information.py +0 -2
  3358. office365/sharepoint/fields/currency.py +2 -0
  3359. office365/sharepoint/fields/date_time.py +6 -0
  3360. office365/sharepoint/fields/field.py +249 -39
  3361. office365/sharepoint/fields/fieldcalculatederrorvalue.py +0 -3
  3362. office365/sharepoint/fields/fieldratingscalequestionanswer.py +0 -3
  3363. office365/sharepoint/fields/geolocation_value.py +0 -3
  3364. office365/sharepoint/fields/image_value.py +1 -2
  3365. office365/sharepoint/fields/lookup.py +11 -0
  3366. office365/sharepoint/fields/lookup_value.py +0 -2
  3367. office365/sharepoint/fields/multi_choice.py +5 -0
  3368. office365/sharepoint/fields/multi_choice_value.py +0 -3
  3369. office365/sharepoint/fields/multi_line_text.py +9 -0
  3370. office365/sharepoint/fields/multi_lookup_value.py +0 -3
  3371. office365/sharepoint/fields/multi_user_value.py +0 -3
  3372. office365/sharepoint/fields/number.py +9 -0
  3373. office365/sharepoint/fields/rating_scale.py +8 -0
  3374. office365/sharepoint/fields/related_field.py +5 -1
  3375. office365/sharepoint/fields/schema.py +141 -0
  3376. office365/sharepoint/fields/text.py +2 -0
  3377. office365/sharepoint/fields/type.py +14 -0
  3378. office365/sharepoint/fields/url.py +2 -0
  3379. office365/sharepoint/fields/url_value.py +0 -3
  3380. office365/sharepoint/fields/user.py +6 -0
  3381. office365/sharepoint/fields/user_value.py +0 -2
  3382. office365/sharepoint/fields/xmlSchemaFieldCreationInformation.py +0 -3
  3383. office365/sharepoint/files/checked_out_file.py +6 -1
  3384. office365/sharepoint/files/checked_out_file_collection.py +2 -0
  3385. office365/sharepoint/files/collection.py +6 -0
  3386. office365/sharepoint/files/collectionaddparameters.py +0 -3
  3387. office365/sharepoint/files/creation_information.py +1 -4
  3388. office365/sharepoint/files/deleteparameters.py +0 -3
  3389. office365/sharepoint/files/download_operation.py +9 -0
  3390. office365/sharepoint/files/file.py +124 -18
  3391. office365/sharepoint/files/file_url_virus_status_update.py +6 -0
  3392. office365/sharepoint/files/publish/status.py +8 -0
  3393. office365/sharepoint/files/recent_file_collection.py +4 -0
  3394. office365/sharepoint/files/systemitem.py +9 -0
  3395. office365/sharepoint/files/versionbatchdeleteparameters.py +1 -2
  3396. office365/sharepoint/files/versions/collection.py +7 -0
  3397. office365/sharepoint/files/versions/event.py +4 -0
  3398. office365/sharepoint/files/versions/policyselectionparameters.py +1 -2
  3399. office365/sharepoint/files/versions/version.py +40 -4
  3400. office365/sharepoint/flows/connector_result.py +3 -0
  3401. office365/sharepoint/flows/permissions.py +2 -0
  3402. office365/sharepoint/flows/synchronization_result.py +3 -0
  3403. office365/sharepoint/folders/collection.py +3 -0
  3404. office365/sharepoint/folders/coloring.py +4 -0
  3405. office365/sharepoint/folders/coloring_information.py +0 -3
  3406. office365/sharepoint/folders/delete_parameters.py +0 -3
  3407. office365/sharepoint/folders/folder.py +48 -10
  3408. office365/sharepoint/folders/foldercollectionaddparameters.py +0 -3
  3409. office365/sharepoint/folders/temporaryfolderfileinfo.py +0 -3
  3410. office365/sharepoint/fontpackages/creation_parameters.py +0 -2
  3411. office365/sharepoint/fontpackages/font_package.py +12 -0
  3412. office365/sharepoint/fontpackages/oob_settings.py +3 -0
  3413. office365/sharepoint/forms/apprenderinfo.py +0 -2
  3414. office365/sharepoint/forms/customization.py +2 -0
  3415. office365/sharepoint/forms/form.py +5 -0
  3416. office365/sharepoint/glutamate_controller.py +2 -0
  3417. office365/sharepoint/gtp/asyncexecuteresponse.py +1 -2
  3418. office365/sharepoint/gtp/asyncsubmitresponse.py +0 -2
  3419. office365/sharepoint/gtp/base_request_options.py +0 -2
  3420. office365/sharepoint/gtp/base_response.py +0 -2
  3421. office365/sharepoint/gtp/chat/response.py +1 -2
  3422. office365/sharepoint/gtp/chat/responsechoice.py +1 -2
  3423. office365/sharepoint/gtp/embeddings/requestoptions.py +0 -2
  3424. office365/sharepoint/gtp/embeddings/response.py +1 -2
  3425. office365/sharepoint/gtp/embeddings/responsedata.py +1 -2
  3426. office365/sharepoint/gtp/message_entry.py +1 -2
  3427. office365/sharepoint/gtp/requestoptions.py +0 -2
  3428. office365/sharepoint/gtp/response.py +1 -2
  3429. office365/sharepoint/gtp/responsechoice.py +0 -2
  3430. office365/sharepoint/gtp/responseusage.py +1 -2
  3431. office365/sharepoint/htmlpages/html_page.py +3 -0
  3432. office365/sharepoint/htmlpages/html_page_service.py +2 -0
  3433. office365/sharepoint/identity/defaultdocumentlibrary.py +0 -2
  3434. office365/sharepoint/identity/rubysite.py +1 -2
  3435. office365/sharepoint/ir/migration.py +2 -0
  3436. office365/sharepoint/item_reference.py +0 -2
  3437. office365/sharepoint/largeoperation/operation.py +5 -0
  3438. office365/sharepoint/likes/liked_by_information.py +2 -1
  3439. office365/sharepoint/likes/user_entity.py +7 -0
  3440. office365/sharepoint/list_creation_information.py +0 -2
  3441. office365/sharepoint/listhome/favorite_lists.py +6 -0
  3442. office365/sharepoint/listhome/favoritelistssubstrate.py +5 -0
  3443. office365/sharepoint/listhome/item.py +0 -2
  3444. office365/sharepoint/listhome/item2.py +22 -0
  3445. office365/sharepoint/listhome/itemcollection.py +6 -0
  3446. office365/sharepoint/listhome/nucleus.py +2 -0
  3447. office365/sharepoint/listhome/pinneditems.py +6 -0
  3448. office365/sharepoint/listitems/caml/query.py +2 -4
  3449. office365/sharepoint/listitems/collection.py +1 -11
  3450. office365/sharepoint/listitems/collection_position.py +0 -3
  3451. office365/sharepoint/listitems/compliance_info.py +0 -3
  3452. office365/sharepoint/listitems/creation_information.py +0 -3
  3453. office365/sharepoint/listitems/creation_information_using_path.py +0 -2
  3454. office365/sharepoint/listitems/delete_parameters.py +0 -3
  3455. office365/sharepoint/listitems/favoriteitemcollection.py +2 -0
  3456. office365/sharepoint/listitems/form_update_value.py +2 -4
  3457. office365/sharepoint/listitems/listdata_validation_exception_value.py +1 -2
  3458. office365/sharepoint/listitems/listitem.py +590 -63
  3459. office365/sharepoint/listitems/moderation_status.py +15 -0
  3460. office365/sharepoint/listitems/relateditem.py +0 -3
  3461. office365/sharepoint/listitems/relateditemmanager.py +7 -0
  3462. office365/sharepoint/listitems/update_parameters.py +0 -3
  3463. office365/sharepoint/listitems/updateresults.py +1 -2
  3464. office365/sharepoint/listitems/upsert.py +2 -0
  3465. office365/sharepoint/listitems/user_info_item.py +115 -4
  3466. office365/sharepoint/listitems/versions/change.py +0 -3
  3467. office365/sharepoint/listitems/versions/collection.py +2 -0
  3468. office365/sharepoint/listitems/versions/collection_position.py +0 -3
  3469. office365/sharepoint/listitems/versions/get_parameters.py +1 -2
  3470. office365/sharepoint/listitems/versions/version.py +10 -2
  3471. office365/sharepoint/lists/apihubconnector.py +2 -0
  3472. office365/sharepoint/lists/base_type.py +13 -0
  3473. office365/sharepoint/lists/batch_convert_asset_result.py +0 -3
  3474. office365/sharepoint/lists/batch_convert_classic_wiki_page_input.py +0 -3
  3475. office365/sharepoint/lists/batch_convert_item_result.py +1 -2
  3476. office365/sharepoint/lists/bloom_filter.py +10 -1
  3477. office365/sharepoint/lists/collection.py +6 -0
  3478. office365/sharepoint/lists/collection_position.py +0 -2
  3479. office365/sharepoint/lists/creatable_item_info.py +0 -2
  3480. office365/sharepoint/lists/creatable_item_info_col.py +1 -2
  3481. office365/sharepoint/lists/creatables_info.py +3 -0
  3482. office365/sharepoint/lists/creation_information.py +0 -2
  3483. office365/sharepoint/lists/currency.py +2 -0
  3484. office365/sharepoint/lists/currency_information.py +0 -2
  3485. office365/sharepoint/lists/currency_information_collection.py +1 -2
  3486. office365/sharepoint/lists/data_parameters.py +0 -2
  3487. office365/sharepoint/lists/data_source.py +0 -2
  3488. office365/sharepoint/lists/data_validation_failure.py +0 -2
  3489. office365/sharepoint/lists/document_library_information.py +0 -2
  3490. office365/sharepoint/lists/extended_share_point_permission_settings.py +3 -0
  3491. office365/sharepoint/lists/get_parameters.py +1 -2
  3492. office365/sharepoint/lists/list.py +249 -32
  3493. office365/sharepoint/lists/list_forms_api.py +5 -0
  3494. office365/sharepoint/lists/listform.py +0 -2
  3495. office365/sharepoint/lists/playlist.py +3 -0
  3496. office365/sharepoint/lists/recentlist.py +22 -0
  3497. office365/sharepoint/lists/recentlistcollection.py +4 -0
  3498. office365/sharepoint/lists/recentlistproxy.py +2 -0
  3499. office365/sharepoint/lists/recommendationcollection.py +4 -0
  3500. office365/sharepoint/lists/render_data_parameters.py +0 -2
  3501. office365/sharepoint/lists/render_override_parameters.py +0 -2
  3502. office365/sharepoint/lists/renderlistcontextmenudataparameters.py +0 -3
  3503. office365/sharepoint/lists/rules/action.py +1 -2
  3504. office365/sharepoint/lists/rules/definition.py +1 -2
  3505. office365/sharepoint/lists/rules/definitiongroup.py +1 -2
  3506. office365/sharepoint/lists/rules/properties.py +0 -2
  3507. office365/sharepoint/lists/rules/reviewinfo.py +0 -2
  3508. office365/sharepoint/lists/rules/rule.py +1 -2
  3509. office365/sharepoint/lists/rules/userinfo.py +0 -3
  3510. office365/sharepoint/lists/rules/validationentryresponse.py +1 -2
  3511. office365/sharepoint/lists/smart_wiki_library_utility.py +7 -0
  3512. office365/sharepoint/lists/smart_wiki_metadata_update_parameters.py +1 -2
  3513. office365/sharepoint/lists/templates/template.py +15 -0
  3514. office365/sharepoint/lists/templates/type.py +3 -0
  3515. office365/sharepoint/lists/templatization_metadata.py +1 -2
  3516. office365/sharepoint/lists/version_policy_manager.py +3 -0
  3517. office365/sharepoint/logger/activityextraproperties.py +0 -2
  3518. office365/sharepoint/logger/activityrequest.py +0 -2
  3519. office365/sharepoint/logger/alternateurl.py +3 -0
  3520. office365/sharepoint/logger/export.py +5 -0
  3521. office365/sharepoint/logger/fileinfo.py +7 -0
  3522. office365/sharepoint/marketplace/app_metadata.py +32 -0
  3523. office365/sharepoint/marketplace/appstatequeryjobdefinition.py +3 -0
  3524. office365/sharepoint/marketplace/corporatecuratedgallery/addins/instance_info.py +0 -2
  3525. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_failed_info.py +0 -2
  3526. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_info.py +1 -2
  3527. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_request.py +1 -2
  3528. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +1 -2
  3529. office365/sharepoint/marketplace/corporatecuratedgallery/addins/principals_response.py +1 -2
  3530. office365/sharepoint/marketplace/corporatecuratedgallery/app_request_information.py +0 -2
  3531. office365/sharepoint/marketplace/corporatecuratedgallery/app_response_information.py +0 -2
  3532. office365/sharepoint/marketplace/corporatecuratedgallery/app_upgrade_availability.py +0 -2
  3533. office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +1 -2
  3534. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/card_design.py +0 -2
  3535. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/card_designs.py +3 -0
  3536. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/features.py +0 -2
  3537. office365/sharepoint/marketplace/corporatecuratedgallery/spaddinprincipalinfo.py +0 -2
  3538. office365/sharepoint/marketplace/corporatecuratedgallery/spappaddanddeployresponseinfomation.py +0 -2
  3539. office365/sharepoint/marketplace/corporatecuratedgallery/sperrorwithserverrelativeurl.py +0 -2
  3540. office365/sharepoint/marketplace/corporatecuratedgallery/spfailtotriggeruninstalladdinjobresponse.py +0 -2
  3541. office365/sharepoint/marketplace/corporatecuratedgallery/spsitecollectionscopedpermissioninfo.py +0 -2
  3542. office365/sharepoint/marketplace/corporatecuratedgallery/spstoreappcreatebyidinformation.py +0 -2
  3543. office365/sharepoint/marketplace/corporatecuratedgallery/sptriggereduninstalladdinjobresponse.py +0 -2
  3544. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinerrordetail.py +0 -2
  3545. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinjobdetail.py +1 -2
  3546. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinrequest.py +1 -2
  3547. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinresponse.py +1 -2
  3548. office365/sharepoint/marketplace/corporatecuratedgallery/storeappcreationinformation.py +0 -2
  3549. office365/sharepoint/marketplace/corporatecuratedgallery/teams_package_download.py +3 -0
  3550. office365/sharepoint/marketplace/corporatecuratedgallery/tenantscopedpermissioninfo.py +0 -2
  3551. office365/sharepoint/marketplace/sitecollection/appcatalog/accessor.py +1 -1
  3552. office365/sharepoint/marketplace/sitecollection/appcatalog/allowed_item.py +4 -0
  3553. office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +17 -3
  3554. office365/sharepoint/microfeed/attachment_store.py +6 -0
  3555. office365/sharepoint/microfeed/data.py +11 -0
  3556. office365/sharepoint/microfeed/datalink.py +0 -2
  3557. office365/sharepoint/microfeed/datalinkcollection.py +1 -2
  3558. office365/sharepoint/microfeed/dataquery.py +1 -2
  3559. office365/sharepoint/microfeed/entity.py +0 -2
  3560. office365/sharepoint/microfeed/link.py +1 -2
  3561. office365/sharepoint/microfeed/linkaction.py +0 -2
  3562. office365/sharepoint/microfeed/manager.py +23 -0
  3563. office365/sharepoint/microfeed/microblogentitycollection.py +1 -2
  3564. office365/sharepoint/microfeed/microfeedstore.py +7 -0
  3565. office365/sharepoint/microfeed/posts/collection.py +1 -2
  3566. office365/sharepoint/microfeed/posts/definition.py +0 -2
  3567. office365/sharepoint/microfeed/posts/definitionnamecollection.py +1 -2
  3568. office365/sharepoint/microfeed/posts/definitionnames.py +0 -3
  3569. office365/sharepoint/microfeed/posts/options.py +1 -2
  3570. office365/sharepoint/microfeed/posts/post.py +1 -2
  3571. office365/sharepoint/microfeed/retrievaloptions.py +1 -2
  3572. office365/sharepoint/microfeed/userpostcollection.py +1 -2
  3573. office365/sharepoint/microservice/manager.py +6 -0
  3574. office365/sharepoint/microservice/pacinfo.py +0 -2
  3575. office365/sharepoint/microservice/workitemproperties.py +0 -2
  3576. office365/sharepoint/migrationcenter/agentgroup.py +6 -0
  3577. office365/sharepoint/migrationcenter/agentgroupentity.py +4 -0
  3578. office365/sharepoint/migrationcenter/batchdeletionresult.py +1 -2
  3579. office365/sharepoint/migrationcenter/batchupdatepayload.py +1 -2
  3580. office365/sharepoint/migrationcenter/batchupdateresult.py +1 -2
  3581. office365/sharepoint/migrationcenter/common/results/batch_creation.py +0 -3
  3582. office365/sharepoint/migrationcenter/common/task.py +39 -0
  3583. office365/sharepoint/migrationcenter/common/task_definition.py +0 -2
  3584. office365/sharepoint/migrationcenter/common/task_entity_data.py +46 -0
  3585. office365/sharepoint/migrationcenter/common/teams/channel_resource.py +8 -0
  3586. office365/sharepoint/migrationcenter/common/teams/team_resource.py +6 -0
  3587. office365/sharepoint/migrationcenter/common/url_parser.py +8 -0
  3588. office365/sharepoint/migrationcenter/credentialentitydata.py +6 -0
  3589. office365/sharepoint/migrationcenter/deploy_status.py +3 -0
  3590. office365/sharepoint/migrationcenter/device.py +21 -0
  3591. office365/sharepoint/migrationcenter/deviceentitydata.py +15 -0
  3592. office365/sharepoint/migrationcenter/folderinformation.py +0 -2
  3593. office365/sharepoint/migrationcenter/listinformation.py +1 -2
  3594. office365/sharepoint/migrationcenter/mmtasksettings.py +0 -2
  3595. office365/sharepoint/migrationcenter/perfrecommendation.py +3 -0
  3596. office365/sharepoint/migrationcenter/service/credential.py +4 -0
  3597. office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +1 -2
  3598. office365/sharepoint/migrationcenter/service/performance/data.py +4 -0
  3599. office365/sharepoint/migrationcenter/service/performance/entity_data.py +15 -0
  3600. office365/sharepoint/migrationcenter/service/performance/throughput_data.py +0 -2
  3601. office365/sharepoint/migrationcenter/service/properties.py +5 -0
  3602. office365/sharepoint/migrationcenter/service/property.py +0 -2
  3603. office365/sharepoint/migrationcenter/service/services.py +9 -0
  3604. office365/sharepoint/migrationcenter/service/storage.py +17 -0
  3605. office365/sharepoint/migrationcenter/spflight.py +3 -0
  3606. office365/sharepoint/migrationcenter/storagesettings.py +0 -2
  3607. office365/sharepoint/migrationcenter/taskschedulerinformation.py +0 -2
  3608. office365/sharepoint/migrationcenter/tasksettings.py +0 -2
  3609. office365/sharepoint/migrationcenter/taskupdateresult.py +0 -2
  3610. office365/sharepoint/migrationcenter/urlparseresult.py +26 -0
  3611. office365/sharepoint/mount/appviewcreationinfo.py +0 -2
  3612. office365/sharepoint/mount/folder_info.py +7 -0
  3613. office365/sharepoint/mount/getsourceitemmetadataforodcmountpointrequest.py +1 -2
  3614. office365/sharepoint/mount/mountpointinfo.py +3 -0
  3615. office365/sharepoint/mount/notifychangetomountpointsrequest.py +1 -2
  3616. office365/sharepoint/mount/onedriveitemcollection.py +2 -0
  3617. office365/sharepoint/mount/placesentity.py +3 -0
  3618. office365/sharepoint/mount/placesinformation.py +9 -0
  3619. office365/sharepoint/mount/placesuserentity.py +0 -2
  3620. office365/sharepoint/mount/point.py +2 -0
  3621. office365/sharepoint/mount/requests/get_remote_item_Info.py +1 -2
  3622. office365/sharepoint/mount/service.py +2 -0
  3623. office365/sharepoint/multigeo/service/administratorentitydata.py +0 -2
  3624. office365/sharepoint/multigeo/service/alloweddatalocationentitydata.py +5 -0
  3625. office365/sharepoint/multigeo/service/compatibledb.py +4 -0
  3626. office365/sharepoint/multigeo/service/contentdbschemaversion.py +2 -0
  3627. office365/sharepoint/multigeo/service/copyparameters.py +0 -2
  3628. office365/sharepoint/multigeo/service/crossfarmgroupmovejob.py +5 -0
  3629. office365/sharepoint/multigeo/service/crossfarmsitemovejob.py +5 -0
  3630. office365/sharepoint/multigeo/service/crossfarmsitemovejobentitydata.py +3 -0
  3631. office365/sharepoint/multigeo/service/crossfarmusermovejob.py +5 -0
  3632. office365/sharepoint/multigeo/service/crossfarmusermovejobentitydata.py +3 -0
  3633. office365/sharepoint/multigeo/service/crossgeosyncuserproperty.py +0 -2
  3634. office365/sharepoint/multigeo/service/crossgeotenantbyok.py +2 -0
  3635. office365/sharepoint/multigeo/service/crossgeotenantcompatibility.py +7 -0
  3636. office365/sharepoint/multigeo/service/crossgeotenantproperty.py +2 -0
  3637. office365/sharepoint/multigeo/service/crossgeotenantpropertyentitydata.py +5 -0
  3638. office365/sharepoint/multigeo/service/crossgeouserplacementjobentitydata.py +5 -0
  3639. office365/sharepoint/multigeo/service/dblevelworkitem.py +2 -0
  3640. office365/sharepoint/multigeo/service/dblevelworkitementitydata.py +8 -0
  3641. office365/sharepoint/multigeo/service/dbschemacompatibilitycheck.py +2 -0
  3642. office365/sharepoint/multigeo/service/df_deprecation_job.py +3 -0
  3643. office365/sharepoint/multigeo/service/dfdeprecationjob.py +3 -0
  3644. office365/sharepoint/multigeo/service/dfdeprecationsiteentitydata.py +4 -0
  3645. office365/sharepoint/multigeo/service/geoadministrator.py +6 -0
  3646. office365/sharepoint/multigeo/service/geoexperience.py +7 -0
  3647. office365/sharepoint/multigeo/service/geolocationdata.py +5 -0
  3648. office365/sharepoint/multigeo/service/geomovetenantcompatibilitycheck.py +5 -0
  3649. office365/sharepoint/multigeo/service/geomovetenantpropertycompatibilitycheck.py +0 -2
  3650. office365/sharepoint/multigeo/service/geotenantinstanceinformationentitydata.py +12 -0
  3651. office365/sharepoint/multigeo/service/globaladmincheck.py +2 -0
  3652. office365/sharepoint/multigeo/service/groupmovejob.py +8 -0
  3653. office365/sharepoint/multigeo/service/groupmovejobentitydata.py +2 -0
  3654. office365/sharepoint/multigeo/service/hasmnalicense.py +2 -0
  3655. office365/sharepoint/multigeo/service/job_entity_data.py +3 -0
  3656. office365/sharepoint/multigeo/service/microfeedpostdefinitionmanager.py +6 -0
  3657. office365/sharepoint/multigeo/service/microfeedpostoptioncollection.py +2 -0
  3658. office365/sharepoint/multigeo/service/mnagroupmovevalidationresult.py +2 -0
  3659. office365/sharepoint/multigeo/service/move_job_entity_data.py +22 -0
  3660. office365/sharepoint/multigeo/service/move_job_report.py +3 -0
  3661. office365/sharepoint/multigeo/service/move_site_ro_state.py +3 -0
  3662. office365/sharepoint/multigeo/service/movejob.py +5 -0
  3663. office365/sharepoint/multigeo/service/movesiterostate.py +3 -0
  3664. office365/sharepoint/multigeo/service/movesiterostateentity.py +3 -0
  3665. office365/sharepoint/multigeo/service/multigeoservicesbeta.py +29 -0
  3666. office365/sharepoint/multigeo/service/orgrelationgroupmanagedpath.py +2 -0
  3667. office365/sharepoint/multigeo/service/orgrelationnotification.py +2 -0
  3668. office365/sharepoint/multigeo/service/orgrelationverification.py +3 -0
  3669. office365/sharepoint/multigeo/service/partner_company_id_lookup.py +3 -0
  3670. office365/sharepoint/multigeo/service/resolveuserupnbyuserobjectid.py +2 -0
  3671. office365/sharepoint/multigeo/service/restoreworkflowcount.py +2 -0
  3672. office365/sharepoint/multigeo/service/sbsitemovejob.py +14 -0
  3673. office365/sharepoint/multigeo/service/services.py +5 -2
  3674. office365/sharepoint/multigeo/service/site_move_job_entity_data.py +15 -0
  3675. office365/sharepoint/multigeo/service/siteattargetentitydata.py +4 -0
  3676. office365/sharepoint/multigeo/service/sitemovejob.py +8 -0
  3677. office365/sharepoint/multigeo/service/spmultigeoproxy.py +3 -0
  3678. office365/sharepoint/multigeo/service/storage_quota.py +10 -0
  3679. office365/sharepoint/multigeo/service/storagequotaentitydata.py +7 -0
  3680. office365/sharepoint/multigeo/service/supportedgeolocationsfortenant.py +2 -0
  3681. office365/sharepoint/multigeo/service/taxonomyreplicationparameters.py +5 -0
  3682. office365/sharepoint/multigeo/service/tenant_information.py +8 -0
  3683. office365/sharepoint/multigeo/service/unified_group.py +7 -0
  3684. office365/sharepoint/multigeo/service/user_personal_site_location.py +6 -0
  3685. office365/sharepoint/multigeo/service/usermnaodmovevalidationresult.py +2 -0
  3686. office365/sharepoint/multigeo/service/usermovejob.py +8 -0
  3687. office365/sharepoint/multigeo/service/usermovejobentitydata.py +4 -0
  3688. office365/sharepoint/multigeo/service/userpersonalsiteid.py +4 -0
  3689. office365/sharepoint/multigeo/service/xtenantmovecompatibilitycheck.py +4 -0
  3690. office365/sharepoint/navigation/configured_metadata_item.py +0 -3
  3691. office365/sharepoint/navigation/configured_metadata_item_col.py +1 -2
  3692. office365/sharepoint/navigation/home_site_navigation_settings.py +4 -0
  3693. office365/sharepoint/navigation/menu/node.py +1 -2
  3694. office365/sharepoint/navigation/menu/state.py +1 -2
  3695. office365/sharepoint/navigation/metadata_settings.py +2 -0
  3696. office365/sharepoint/navigation/navigation.py +41 -2
  3697. office365/sharepoint/navigation/nodes/collection.py +19 -4
  3698. office365/sharepoint/navigation/nodes/creationinformation.py +0 -3
  3699. office365/sharepoint/navigation/nodes/node.py +15 -4
  3700. office365/sharepoint/navigation/quickaccessitemcollection.py +3 -0
  3701. office365/sharepoint/navigation/service.py +9 -1
  3702. office365/sharepoint/navigation/servicerest.py +13 -0
  3703. office365/sharepoint/news/itemreference.py +0 -2
  3704. office365/sharepoint/news/ngspdatacollection.py +2 -0
  3705. office365/sharepoint/news/serializabletype.py +0 -2
  3706. office365/sharepoint/ngsp_ai_settings.py +3 -0
  3707. office365/sharepoint/oauth/accesstokenoptionalclaim.py +2 -0
  3708. office365/sharepoint/oauth/authentication.py +2 -0
  3709. office365/sharepoint/oauth/native_client.py +2 -0
  3710. office365/sharepoint/oauth/token.py +2 -0
  3711. office365/sharepoint/oauth/token_response.py +8 -0
  3712. office365/sharepoint/onboarding/customerkeyinfo.py +1 -2
  3713. office365/sharepoint/onboarding/customerkeystatusinfo.py +0 -3
  3714. office365/sharepoint/onboarding/customerkeyvaultinfo.py +0 -2
  3715. office365/sharepoint/onboarding/job_entity_data.py +3 -0
  3716. office365/sharepoint/onboarding/onboardingservicesbeta.py +4 -0
  3717. office365/sharepoint/onboarding/prioritysiterename/job.py +4 -0
  3718. office365/sharepoint/onboarding/prioritysiterename/jobentitydata.py +2 -0
  3719. office365/sharepoint/onboarding/siterename/job.py +8 -0
  3720. office365/sharepoint/onboarding/siterename/jobentitydata.py +6 -0
  3721. office365/sharepoint/onboarding/siterename/jobsfortenantrename.py +3 -0
  3722. office365/sharepoint/onboarding/tenantrename/job.py +16 -0
  3723. office365/sharepoint/onboarding/tenantrename/jobentitydata.py +16 -0
  3724. office365/sharepoint/orgnewssite/api.py +2 -0
  3725. office365/sharepoint/orgnewssite/info.py +0 -2
  3726. office365/sharepoint/packaging/app_details.py +6 -0
  3727. office365/sharepoint/packaging/appiconinfo.py +3 -0
  3728. office365/sharepoint/pageinstrumentation/pageimpressionclient.py +0 -2
  3729. office365/sharepoint/pages/textblock.py +0 -2
  3730. office365/sharepoint/pages/wiki_page_creation_information.py +0 -2
  3731. office365/sharepoint/permissions/__init__.py +91 -0
  3732. office365/sharepoint/permissions/base_permissions.py +22 -6
  3733. office365/sharepoint/permissions/irm/effective_settings.py +18 -0
  3734. office365/sharepoint/permissions/irm/file_settings.py +18 -0
  3735. office365/sharepoint/permissions/irm/settings.py +18 -0
  3736. office365/sharepoint/permissions/roles/assignments/assignment.py +3 -1
  3737. office365/sharepoint/permissions/roles/assignments/collection.py +3 -0
  3738. office365/sharepoint/permissions/roles/definitions/collection.py +4 -0
  3739. office365/sharepoint/permissions/roles/definitions/creation_information.py +1 -2
  3740. office365/sharepoint/permissions/roles/definitions/definition.py +12 -0
  3741. office365/sharepoint/permissions/securable_object.py +29 -6
  3742. office365/sharepoint/photos/migration.py +2 -0
  3743. office365/sharepoint/policy/dlp_policy_tip.py +8 -0
  3744. office365/sharepoint/policy/evaluation_info.py +5 -0
  3745. office365/sharepoint/policy/license_utilities.py +3 -0
  3746. office365/sharepoint/portal/channels/info.py +0 -2
  3747. office365/sharepoint/portal/channels/info_collection.py +1 -2
  3748. office365/sharepoint/portal/collaborationmailboxresponse.py +0 -2
  3749. office365/sharepoint/portal/ensureteamforgroupexresponse.py +0 -2
  3750. office365/sharepoint/portal/groups/creation_context.py +1 -2
  3751. office365/sharepoint/portal/groups/creation_information.py +1 -2
  3752. office365/sharepoint/portal/groups/creation_params.py +1 -2
  3753. office365/sharepoint/portal/groups/moveoperation.py +0 -2
  3754. office365/sharepoint/portal/groups/service.py +4 -0
  3755. office365/sharepoint/portal/groups/site_info.py +0 -2
  3756. office365/sharepoint/portal/groups/site_manager.py +82 -0
  3757. office365/sharepoint/portal/groups/siteconversioninfo.py +1 -2
  3758. office365/sharepoint/portal/home/datacache.py +1 -2
  3759. office365/sharepoint/portal/home/datacachecollection.py +1 -2
  3760. office365/sharepoint/portal/home/datacachecontext.py +0 -2
  3761. office365/sharepoint/portal/home/datacacheentry.py +1 -2
  3762. office365/sharepoint/portal/home/page_context.py +1 -2
  3763. office365/sharepoint/portal/home/service_context.py +9 -12
  3764. office365/sharepoint/portal/home/service_context_builder.py +2 -0
  3765. office365/sharepoint/portal/hub_sites_utility.py +2 -0
  3766. office365/sharepoint/portal/linkedsites/contract.py +0 -2
  3767. office365/sharepoint/portal/linkedsites/list_contract.py +1 -2
  3768. office365/sharepoint/portal/linkedsites/manager.py +4 -0
  3769. office365/sharepoint/portal/m365tabitem.py +0 -2
  3770. office365/sharepoint/portal/mysite_recommendations.py +3 -0
  3771. office365/sharepoint/portal/organization_news.py +3 -2
  3772. office365/sharepoint/portal/orglabels/context.py +0 -2
  3773. office365/sharepoint/portal/orglabels/context_list.py +1 -2
  3774. office365/sharepoint/portal/orgnews/sitereference.py +0 -2
  3775. office365/sharepoint/portal/parentgroup.py +0 -2
  3776. office365/sharepoint/portal/pintoteamparams.py +1 -2
  3777. office365/sharepoint/portal/pintoteamresponse.py +1 -2
  3778. office365/sharepoint/portal/project/myrecscacheblob.py +1 -2
  3779. office365/sharepoint/portal/project/myrecsqueryinfo.py +1 -2
  3780. office365/sharepoint/portal/rating_settings.py +2 -0
  3781. office365/sharepoint/portal/sites/creation_request.py +1 -2
  3782. office365/sharepoint/portal/sites/creation_response.py +0 -2
  3783. office365/sharepoint/portal/sites/icon_manager.py +3 -0
  3784. office365/sharepoint/portal/sites/manager.py +21 -0
  3785. office365/sharepoint/portal/teams/recent_and_joined_response.py +1 -2
  3786. office365/sharepoint/portal/theme_manager.py +15 -0
  3787. office365/sharepoint/portal/userprofiles/documentsshared/with_group.py +2 -0
  3788. office365/sharepoint/portal/userprofiles/documentsshared/with_me.py +2 -0
  3789. office365/sharepoint/portal/userprofiles/sharedwithme/document.py +61 -2
  3790. office365/sharepoint/portal/userprofiles/sharedwithme/document_user.py +0 -2
  3791. office365/sharepoint/portal/userprofiles/sharedwithme/item_collection.py +8 -0
  3792. office365/sharepoint/portal/userprofiles/sharedwithme/items.py +2 -0
  3793. office365/sharepoint/portal/userprofiles/sharedwithme/view_item_removal_result.py +0 -2
  3794. office365/sharepoint/portal/webcontrols/recentdocument.py +8 -0
  3795. office365/sharepoint/portal/webcontrols/resourcemanifestinformation.py +3 -0
  3796. office365/sharepoint/principal/groups/collection.py +4 -0
  3797. office365/sharepoint/principal/groups/creation_information.py +0 -2
  3798. office365/sharepoint/principal/groups/group.py +21 -1
  3799. office365/sharepoint/principal/principal.py +12 -5
  3800. office365/sharepoint/principal/users/collection.py +4 -0
  3801. office365/sharepoint/principal/users/id_info.py +4 -4
  3802. office365/sharepoint/principal/users/user.py +24 -314
  3803. office365/sharepoint/publishing/acronyminformation.py +0 -2
  3804. office365/sharepoint/publishing/allowancecheckresult.py +4 -0
  3805. office365/sharepoint/publishing/amplify/amplifiedchannels.py +0 -2
  3806. office365/sharepoint/publishing/amplify/clientamplifyanywhereresults.py +1 -2
  3807. office365/sharepoint/publishing/amplify/clientamplifyendpointinfo.py +1 -2
  3808. office365/sharepoint/publishing/amplify/clientamplifyextraproperty.py +0 -2
  3809. office365/sharepoint/publishing/amplify/clientamplifyresults.py +1 -2
  3810. office365/sharepoint/publishing/amplify/history.py +1 -2
  3811. office365/sharepoint/publishing/amplify/historyresult.py +1 -2
  3812. office365/sharepoint/publishing/amplify/requestendpoint.py +0 -2
  3813. office365/sharepoint/publishing/amplify/requestparams.py +1 -2
  3814. office365/sharepoint/publishing/amplify/result.py +1 -2
  3815. office365/sharepoint/publishing/announcements/author.py +0 -2
  3816. office365/sharepoint/publishing/announcements/controller.py +3 -0
  3817. office365/sharepoint/publishing/announcements/data.py +1 -2
  3818. office365/sharepoint/publishing/approval/request.py +16 -0
  3819. office365/sharepoint/publishing/approval/requestcreationinfo.py +1 -2
  3820. office365/sharepoint/publishing/approval/requestresponse.py +0 -2
  3821. office365/sharepoint/publishing/approval/requestsyncresponse.py +3 -0
  3822. office365/sharepoint/publishing/authoringschemafeatureversion.py +0 -2
  3823. office365/sharepoint/publishing/booleancustomproperty.py +2 -0
  3824. office365/sharepoint/publishing/boostfieldsdata.py +0 -2
  3825. office365/sharepoint/publishing/calltoaction.py +0 -2
  3826. office365/sharepoint/publishing/campaign/association.py +0 -2
  3827. office365/sharepoint/publishing/campaign/campaign.py +14 -0
  3828. office365/sharepoint/publishing/campaign/loadmaildraftparam.py +0 -2
  3829. office365/sharepoint/publishing/campaign/metadata.py +0 -2
  3830. office365/sharepoint/publishing/campaign/resetendpointparam.py +1 -2
  3831. office365/sharepoint/publishing/campaign/savemaildraftparam.py +0 -2
  3832. office365/sharepoint/publishing/cancreatepageresponse.py +5 -0
  3833. office365/sharepoint/publishing/channelannouncement.py +1 -2
  3834. office365/sharepoint/publishing/content_distribution_controller.py +3 -0
  3835. office365/sharepoint/publishing/copytoparams.py +1 -2
  3836. office365/sharepoint/publishing/customproperties/base.py +4 -0
  3837. office365/sharepoint/publishing/customproperties/bigint.py +2 -0
  3838. office365/sharepoint/publishing/datetimecustomproperty.py +0 -2
  3839. office365/sharepoint/publishing/datetimetypecustomproperty.py +2 -0
  3840. office365/sharepoint/publishing/diagnostics/controller.py +3 -0
  3841. office365/sharepoint/publishing/diagnostics/page_details.py +0 -2
  3842. office365/sharepoint/publishing/diagnostics/page_diagnostics.py +0 -2
  3843. office365/sharepoint/publishing/diagnostics/page_result.py +1 -2
  3844. office365/sharepoint/publishing/dynamiccontentsignalspayload.py +1 -2
  3845. office365/sharepoint/publishing/dynamicfaqsingalsdata.py +0 -2
  3846. office365/sharepoint/publishing/emailpublishingstatus.py +1 -2
  3847. office365/sharepoint/publishing/embed_data_v1.py +19 -0
  3848. office365/sharepoint/publishing/embed_service.py +2 -0
  3849. office365/sharepoint/publishing/error.py +1 -2
  3850. office365/sharepoint/publishing/faqsignalactionpayload.py +0 -2
  3851. office365/sharepoint/publishing/faqsignaldata.py +1 -2
  3852. office365/sharepoint/publishing/feedvideopage.py +31 -0
  3853. office365/sharepoint/publishing/file_picker_options.py +1 -2
  3854. office365/sharepoint/publishing/gettyimage.py +0 -2
  3855. office365/sharepoint/publishing/highlights_info.py +3 -0
  3856. office365/sharepoint/publishing/icon.py +0 -2
  3857. office365/sharepoint/publishing/itemviewsanalyticsdata.py +1 -2
  3858. office365/sharepoint/publishing/missingsharepointdestinationwebidrepairitem.py +0 -2
  3859. office365/sharepoint/publishing/multivaluestringcustomproperty.py +2 -0
  3860. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +5 -0
  3861. office365/sharepoint/publishing/numbercustomproperty.py +2 -0
  3862. office365/sharepoint/publishing/pagecopywithassets/response.py +16 -8
  3863. office365/sharepoint/publishing/pagedeepcopywarning.py +0 -2
  3864. office365/sharepoint/publishing/pagemoveparams.py +0 -2
  3865. office365/sharepoint/publishing/pages/_3d/page.py +28 -1
  3866. office365/sharepoint/publishing/pages/boostproperties.py +0 -2
  3867. office365/sharepoint/publishing/pages/campaign/maildraftdata.py +0 -2
  3868. office365/sharepoint/publishing/pages/campaign/publication.py +55 -0
  3869. office365/sharepoint/publishing/pages/canvas.py +1 -1
  3870. office365/sharepoint/publishing/pages/coauth_state.py +1 -2
  3871. office365/sharepoint/publishing/pages/collaborator.py +0 -2
  3872. office365/sharepoint/publishing/pages/collection.py +7 -0
  3873. office365/sharepoint/publishing/pages/dependency_metadata.py +1 -2
  3874. office365/sharepoint/publishing/pages/fields.py +39 -0
  3875. office365/sharepoint/publishing/pages/fields_data.py +2 -3
  3876. office365/sharepoint/publishing/pages/metadata.py +37 -5
  3877. office365/sharepoint/publishing/pages/move_response.py +13 -8
  3878. office365/sharepoint/publishing/pages/page.py +137 -12
  3879. office365/sharepoint/publishing/pages/reposts/collection.py +2 -0
  3880. office365/sharepoint/publishing/pages/reposts/metadata.py +6 -0
  3881. office365/sharepoint/publishing/pages/reposts/repost.py +32 -0
  3882. office365/sharepoint/publishing/pages/schedulepublicationresponse.py +0 -2
  3883. office365/sharepoint/publishing/pages/sendtestemailresponse.py +0 -2
  3884. office365/sharepoint/publishing/pages/sendtestteamsmessageresponse.py +0 -2
  3885. office365/sharepoint/publishing/pages/service.py +23 -2
  3886. office365/sharepoint/publishing/pages/sharepagebyemaildata.py +1 -2
  3887. office365/sharepoint/publishing/pages/sharepagepreviewbyemailfieldsdata.py +0 -2
  3888. office365/sharepoint/publishing/pages/topics/topic.py +31 -2
  3889. office365/sharepoint/publishing/pages/version_info.py +0 -2
  3890. office365/sharepoint/publishing/pages/versioninfocollection.py +0 -2
  3891. office365/sharepoint/publishing/person/core.py +0 -2
  3892. office365/sharepoint/publishing/person/customproperty.py +0 -2
  3893. office365/sharepoint/publishing/person/identity.py +0 -2
  3894. office365/sharepoint/publishing/person/magazinedata.py +0 -2
  3895. office365/sharepoint/publishing/person/magazineuserprofile.py +1 -2
  3896. office365/sharepoint/publishing/person/magazineuserprofiledirectsdata.py +1 -2
  3897. office365/sharepoint/publishing/personmagazine/taxonomicproperties.py +1 -2
  3898. office365/sharepoint/publishing/personmagazine/userprofiledata.py +1 -2
  3899. office365/sharepoint/publishing/persontypecustomproperty.py +2 -0
  3900. office365/sharepoint/publishing/point/docprops.py +14 -0
  3901. office365/sharepoint/publishing/point/magazineprops.py +10 -0
  3902. office365/sharepoint/publishing/point/post.py +14 -0
  3903. office365/sharepoint/publishing/point/postservicemanager.py +10 -0
  3904. office365/sharepoint/publishing/point/site_status.py +5 -0
  3905. office365/sharepoint/publishing/point/tenantmanager.py +2 -0
  3906. office365/sharepoint/publishing/point/user.py +15 -0
  3907. office365/sharepoint/publishing/portalhealth/details.py +0 -3
  3908. office365/sharepoint/publishing/portalhealth/status.py +0 -2
  3909. office365/sharepoint/publishing/portalhealth/statusdetails.py +0 -2
  3910. office365/sharepoint/publishing/portallaunch/wave.py +1 -2
  3911. office365/sharepoint/publishing/portallaunch/wavegroup.py +0 -2
  3912. office365/sharepoint/publishing/portallaunchwavesetup.py +1 -2
  3913. office365/sharepoint/publishing/portallaunchwavesmanager.py +4 -0
  3914. office365/sharepoint/publishing/portalnavigationcachewrapper.py +4 -0
  3915. office365/sharepoint/publishing/primary_city_time.py +4 -0
  3916. office365/sharepoint/publishing/profilecoreproperties.py +0 -2
  3917. office365/sharepoint/publishing/profiledata.py +1 -2
  3918. office365/sharepoint/publishing/profiledatetime.py +0 -2
  3919. office365/sharepoint/publishing/profiledirectsdata.py +1 -2
  3920. office365/sharepoint/publishing/profilefullproperties.py +1 -2
  3921. office365/sharepoint/publishing/profilepropertyvieweditpolicy.py +0 -2
  3922. office365/sharepoint/publishing/profilevieweditpolicies.py +1 -2
  3923. office365/sharepoint/publishing/propertyvalue.py +1 -2
  3924. office365/sharepoint/publishing/publicationmetadata.py +1 -2
  3925. office365/sharepoint/publishing/publishpublicationresponse.py +0 -2
  3926. office365/sharepoint/publishing/publishsiteinformation.py +0 -2
  3927. office365/sharepoint/publishing/removedstatus.py +4 -0
  3928. office365/sharepoint/publishing/rich_sharing.py +4 -0
  3929. office365/sharepoint/publishing/ruleerrordetails.py +1 -2
  3930. office365/sharepoint/publishing/ruleresult.py +1 -2
  3931. office365/sharepoint/publishing/search.py +2 -0
  3932. office365/sharepoint/publishing/sharepointids.py +0 -2
  3933. office365/sharepoint/publishing/sharepointpublishingstatus.py +1 -2
  3934. office365/sharepoint/publishing/sitepageauthoringmetadata.py +0 -2
  3935. office365/sharepoint/publishing/sitepagstreamdata.py +1 -2
  3936. office365/sharepoint/publishing/sites/communication/creation_request.py +0 -3
  3937. office365/sharepoint/publishing/sites/communication/creation_response.py +0 -2
  3938. office365/sharepoint/publishing/sites/communication/site.py +6 -0
  3939. office365/sharepoint/publishing/sitesharingemailcontext.py +0 -2
  3940. office365/sharepoint/publishing/spotlightchannel.py +7 -0
  3941. office365/sharepoint/publishing/spotlightvideo.py +5 -0
  3942. office365/sharepoint/publishing/spstatusresponse.py +1 -2
  3943. office365/sharepoint/publishing/startcoauthmetadata.py +1 -2
  3944. office365/sharepoint/publishing/statusresponse.py +1 -2
  3945. office365/sharepoint/publishing/stringcustomproperty.py +2 -0
  3946. office365/sharepoint/publishing/structuralnavigationcachestate.py +0 -2
  3947. office365/sharepoint/publishing/submitinfo.py +0 -2
  3948. office365/sharepoint/publishing/subtitlefile.py +4 -0
  3949. office365/sharepoint/publishing/textvaluewithlanguage.py +0 -2
  3950. office365/sharepoint/publishing/timeframestatistics.py +0 -2
  3951. office365/sharepoint/publishing/tooldetails.py +0 -2
  3952. office365/sharepoint/publishing/topicpagemetadata.py +3 -0
  3953. office365/sharepoint/publishing/user_info.py +0 -2
  3954. office365/sharepoint/publishing/validations/errorcodesforemail.py +1 -2
  3955. office365/sharepoint/publishing/validations/errorcodesforsharepointsite.py +1 -2
  3956. office365/sharepoint/publishing/validations/errorcodesforteams.py +1 -2
  3957. office365/sharepoint/publishing/validations/prepublishvalidationserrorcodesforvivaengage.py +1 -2
  3958. office365/sharepoint/publishing/validations/response.py +1 -2
  3959. office365/sharepoint/publishing/video/channel.py +22 -0
  3960. office365/sharepoint/publishing/video/item.py +37 -0
  3961. office365/sharepoint/publishing/video/service_discoverer.py +11 -0
  3962. office365/sharepoint/publishing/video/service_manager.py +14 -0
  3963. office365/sharepoint/publishing/video/view_data.py +0 -2
  3964. office365/sharepoint/publishing/videopermissiongroup.py +5 -0
  3965. office365/sharepoint/publishing/videoplaybackmetadata.py +5 -0
  3966. office365/sharepoint/publishing/videothumbnail.py +4 -0
  3967. office365/sharepoint/publishing/viewprogressanalyticsdata.py +0 -2
  3968. office365/sharepoint/publishing/webpartdetailswrapper.py +0 -2
  3969. office365/sharepoint/pushnotifications/subscriber.py +8 -0
  3970. office365/sharepoint/quotamanagement/consumer/consumer_quota_info_api.py +3 -0
  3971. office365/sharepoint/quotamanagement/consumer/non_quota_backfill_api.py +3 -0
  3972. office365/sharepoint/quotamanagement/consumer/nonquotamigrationapi.py +3 -0
  3973. office365/sharepoint/quotamanagement/consumer/quotamigrationapi.py +3 -0
  3974. office365/sharepoint/recyclebin/item.py +22 -3
  3975. office365/sharepoint/recyclebin/item_collection.py +7 -0
  3976. office365/sharepoint/recyclebin/query_information.py +0 -2
  3977. office365/sharepoint/reputationmodel/reputation.py +3 -0
  3978. office365/sharepoint/request.py +6 -8
  3979. office365/sharepoint/request_context.py +7 -0
  3980. office365/sharepoint/request_user_context.py +3 -0
  3981. office365/sharepoint/role_definition_creation_information.py +1 -2
  3982. office365/sharepoint/search/administration/document_crawl_log.py +6 -0
  3983. office365/sharepoint/search/administration/providers/crawl_versions_info.py +10 -0
  3984. office365/sharepoint/search/administration/providers/recycle_bin_info.py +5 -0
  3985. office365/sharepoint/search/administration/providers/site_content_processing_info.py +5 -0
  3986. office365/sharepoint/search/administration/providers/site_me_ta_info.py +3 -0
  3987. office365/sharepoint/search/analytics/action.py +1 -2
  3988. office365/sharepoint/search/analytics/actor.py +1 -2
  3989. office365/sharepoint/search/analytics/analyticsitem.py +1 -2
  3990. office365/sharepoint/search/analytics/signal.py +1 -2
  3991. office365/sharepoint/search/analytics/signal_store.py +3 -0
  3992. office365/sharepoint/search/context_condition.py +0 -3
  3993. office365/sharepoint/search/custom_result.py +1 -2
  3994. office365/sharepoint/search/endpoints.py +1 -2
  3995. office365/sharepoint/search/object_owner_result.py +0 -3
  3996. office365/sharepoint/search/promoted_result_query_rule.py +1 -2
  3997. office365/sharepoint/search/promoted_results_operations_result.py +1 -2
  3998. office365/sharepoint/search/promotedresults.py +0 -2
  3999. office365/sharepoint/search/query/auto_completion.py +1 -2
  4000. office365/sharepoint/search/query/auto_completion_match.py +0 -3
  4001. office365/sharepoint/search/query/auto_completion_results.py +1 -2
  4002. office365/sharepoint/search/query/condition.py +1 -2
  4003. office365/sharepoint/search/query/configuration.py +1 -2
  4004. office365/sharepoint/search/query/context.py +1 -2
  4005. office365/sharepoint/search/query/customsuggestions.py +1 -2
  4006. office365/sharepoint/search/query/expanded_parameters.py +1 -2
  4007. office365/sharepoint/search/query/personal_result_suggestion.py +0 -3
  4008. office365/sharepoint/search/query/popular_tenant_query.py +0 -3
  4009. office365/sharepoint/search/query/property.py +1 -2
  4010. office365/sharepoint/search/query/property_value.py +0 -3
  4011. office365/sharepoint/search/query/reordering_rule.py +0 -3
  4012. office365/sharepoint/search/query/routing_info.py +1 -2
  4013. office365/sharepoint/search/query/sort/collection.py +5 -0
  4014. office365/sharepoint/search/query/sort/sort.py +0 -3
  4015. office365/sharepoint/search/query/suggestion_results.py +1 -2
  4016. office365/sharepoint/search/query/suggestionquery.py +0 -3
  4017. office365/sharepoint/search/query/suggestionrange.py +0 -3
  4018. office365/sharepoint/search/query/tenant_custom_query_suggestions.py +1 -2
  4019. office365/sharepoint/search/query_result.py +1 -2
  4020. office365/sharepoint/search/ranking_labeling.py +5 -0
  4021. office365/sharepoint/search/refinement_results.py +1 -2
  4022. office365/sharepoint/search/refiner/entry.py +0 -3
  4023. office365/sharepoint/search/refiner/refiner.py +1 -2
  4024. office365/sharepoint/search/relevant_results.py +5 -6
  4025. office365/sharepoint/search/reordering_rule_collection.py +5 -0
  4026. office365/sharepoint/search/reports/abandoned_queries.py +1 -2
  4027. office365/sharepoint/search/reports/abandonedqueries/item.py +1 -2
  4028. office365/sharepoint/search/reports/abandonedqueriesdata.py +0 -3
  4029. office365/sharepoint/search/reports/base.py +0 -3
  4030. office365/sharepoint/search/reports/noresultdata.py +0 -3
  4031. office365/sharepoint/search/reports/noresultitem.py +1 -2
  4032. office365/sharepoint/search/reports/noresultqueries.py +1 -2
  4033. office365/sharepoint/search/reports/numberofqueries.py +1 -2
  4034. office365/sharepoint/search/reports/numberofqueriesdata.py +0 -3
  4035. office365/sharepoint/search/reports/numberofqueriesitem.py +1 -2
  4036. office365/sharepoint/search/reports/queryrules.py +1 -2
  4037. office365/sharepoint/search/reports/queryrulesdata.py +0 -3
  4038. office365/sharepoint/search/reports/queryrulesitem.py +1 -2
  4039. office365/sharepoint/search/reports/top_queries.py +1 -2
  4040. office365/sharepoint/search/reports/topqueries/data.py +0 -3
  4041. office365/sharepoint/search/reports/topqueries/item.py +1 -2
  4042. office365/sharepoint/search/request.py +1 -2
  4043. office365/sharepoint/search/result.py +5 -6
  4044. office365/sharepoint/search/scs_endpoint.py +0 -3
  4045. office365/sharepoint/search/searchresultitemcollection.py +4 -0
  4046. office365/sharepoint/search/semantic/crawlerenqueueitem.py +0 -2
  4047. office365/sharepoint/search/semantic/enqueueproxy.py +5 -0
  4048. office365/sharepoint/search/semantic/itemcollection.py +3 -0
  4049. office365/sharepoint/search/service.py +17 -0
  4050. office365/sharepoint/search/setting.py +12 -0
  4051. office365/sharepoint/search/simple_data_row.py +3 -4
  4052. office365/sharepoint/search/simple_data_table.py +1 -2
  4053. office365/sharepoint/search/special_term_result.py +0 -3
  4054. office365/sharepoint/search/special_term_results.py +1 -2
  4055. office365/sharepoint/search/xssearchpolicy.py +0 -3
  4056. office365/sharepoint/securestore/target_application.py +2 -0
  4057. office365/sharepoint/securestore/target_application_field.py +2 -0
  4058. office365/sharepoint/server_settings.py +4 -0
  4059. office365/sharepoint/sharing/abilities.py +1 -2
  4060. office365/sharepoint/sharing/ability_status.py +0 -3
  4061. office365/sharepoint/sharing/access_request_settings.py +0 -3
  4062. office365/sharepoint/sharing/address_bar_link_settings.py +0 -3
  4063. office365/sharepoint/sharing/audience.py +0 -2
  4064. office365/sharepoint/sharing/cexternalsharingthrottling.py +0 -2
  4065. office365/sharepoint/sharing/direct_abilities.py +1 -2
  4066. office365/sharepoint/sharing/document_manager.py +4 -0
  4067. office365/sharepoint/sharing/domain_restriction_settings.py +0 -3
  4068. office365/sharepoint/sharing/emaildata.py +0 -3
  4069. office365/sharepoint/sharing/entitypermission.py +0 -3
  4070. office365/sharepoint/sharing/entityresult.py +1 -2
  4071. office365/sharepoint/sharing/entityresultdescription.py +0 -3
  4072. office365/sharepoint/sharing/entityresultsettingpolicyreason.py +0 -3
  4073. office365/sharepoint/sharing/ephemerallinkrequest.py +1 -2
  4074. office365/sharepoint/sharing/information.py +73 -36
  4075. office365/sharepoint/sharing/information_request.py +0 -3
  4076. office365/sharepoint/sharing/inherited_from.py +1 -2
  4077. office365/sharepoint/sharing/internal/canonymouslinkuselimit.py +0 -2
  4078. office365/sharepoint/sharing/internal/cexternalsharingenforcement.py +0 -2
  4079. office365/sharepoint/sharing/internal/sharing_restrictions.py +7 -19
  4080. office365/sharepoint/sharing/invitation/creation_result.py +0 -3
  4081. office365/sharepoint/sharing/invitation/link.py +1 -2
  4082. office365/sharepoint/sharing/itemsharingsettings.py +0 -3
  4083. office365/sharepoint/sharing/link_abilities.py +1 -2
  4084. office365/sharepoint/sharing/link_info.py +1 -2
  4085. office365/sharepoint/sharing/linkexpirationabilitystatus.py +0 -3
  4086. office365/sharepoint/sharing/linkparameters.py +0 -3
  4087. office365/sharepoint/sharing/linkpasswordabilitystatus.py +0 -3
  4088. office365/sharepoint/sharing/links/access_request.py +0 -3
  4089. office365/sharepoint/sharing/links/data.py +0 -3
  4090. office365/sharepoint/sharing/links/default_template.py +1 -2
  4091. office365/sharepoint/sharing/links/default_templates_collection.py +1 -2
  4092. office365/sharepoint/sharing/links/info.py +1 -2
  4093. office365/sharepoint/sharing/links/partial_success_response.py +1 -2
  4094. office365/sharepoint/sharing/links/share_request.py +1 -2
  4095. office365/sharepoint/sharing/links/share_response.py +1 -2
  4096. office365/sharepoint/sharing/links/share_settings.py +1 -2
  4097. office365/sharepoint/sharing/linktemplate.py +0 -3
  4098. office365/sharepoint/sharing/mainaccessinformation.py +1 -2
  4099. office365/sharepoint/sharing/mainlinkabilities.py +1 -2
  4100. office365/sharepoint/sharing/mainlinkaudienceabilities.py +1 -2
  4101. office365/sharepoint/sharing/mainlinkinfo.py +1 -2
  4102. office365/sharepoint/sharing/mainlinkroleabilities.py +1 -2
  4103. office365/sharepoint/sharing/object_sharing_information.py +23 -0
  4104. office365/sharepoint/sharing/object_sharing_information_user.py +17 -0
  4105. office365/sharepoint/sharing/object_sharing_settings.py +43 -4
  4106. office365/sharepoint/sharing/oversharedwebinfo.py +1 -2
  4107. office365/sharepoint/sharing/permission_collection.py +1 -2
  4108. office365/sharepoint/sharing/permission_information.py +7 -0
  4109. office365/sharepoint/sharing/personal_web.py +2 -0
  4110. office365/sharepoint/sharing/picker_settings.py +11 -3
  4111. office365/sharepoint/sharing/principal.py +1 -2
  4112. office365/sharepoint/sharing/principal_info.py +1 -2
  4113. office365/sharepoint/sharing/recipient.py +0 -3
  4114. office365/sharepoint/sharing/recipient_limits.py +1 -2
  4115. office365/sharepoint/sharing/recipientlimitsinfo.py +0 -3
  4116. office365/sharepoint/sharing/reports/site_capabilities.py +1 -2
  4117. office365/sharepoint/sharing/restorefacet.py +0 -3
  4118. office365/sharepoint/sharing/restoreversionfacet.py +0 -3
  4119. office365/sharepoint/sharing/result.py +13 -0
  4120. office365/sharepoint/sharing/sensitivitylabelinformation.py +0 -3
  4121. office365/sharepoint/sharing/settingsabilities.py +1 -2
  4122. office365/sharepoint/sharing/shared_document_info.py +39 -1
  4123. office365/sharepoint/sharing/shared_with_user.py +0 -3
  4124. office365/sharepoint/sharing/sharedwithusercollection.py +1 -2
  4125. office365/sharepoint/sharing/sharepoint_sharing_settings.py +17 -1
  4126. office365/sharepoint/sharing/site_sharing_report_helper.py +4 -0
  4127. office365/sharepoint/sharing/site_sharing_report_status.py +1 -2
  4128. office365/sharepoint/sharing/sitesharingreportjobdata.py +0 -3
  4129. office365/sharepoint/sharing/uniqueaccessgroupinfo.py +0 -2
  4130. office365/sharepoint/sharing/uniqueaccessgroupswrapper.py +1 -2
  4131. office365/sharepoint/sharing/user_directory_info.py +0 -3
  4132. office365/sharepoint/sharing/user_role_assignment.py +0 -3
  4133. office365/sharepoint/sharing/user_sharing_result.py +1 -2
  4134. office365/sharepoint/sharing/utility.py +3 -0
  4135. office365/sharepoint/sharing/workitemauthcryptoprovider.py +0 -3
  4136. office365/sharepoint/sitedesigns/actionopenurl.py +0 -2
  4137. office365/sharepoint/sitedesigns/actionset.py +1 -2
  4138. office365/sharepoint/sitedesigns/adaptivecardaction.py +0 -2
  4139. office365/sharepoint/sitedesigns/autoinvokeaction.py +1 -2
  4140. office365/sharepoint/sitedesigns/autoinvokeoptions.py +0 -2
  4141. office365/sharepoint/sitedesigns/choice.py +0 -2
  4142. office365/sharepoint/sitedesigns/creation_info.py +1 -2
  4143. office365/sharepoint/sitedesigns/design_package_menu_contents.py +5 -6
  4144. office365/sharepoint/sitedesigns/header.py +0 -2
  4145. office365/sharepoint/sitedesigns/heroimage.py +0 -2
  4146. office365/sharepoint/sitedesigns/image.py +0 -2
  4147. office365/sharepoint/sitedesigns/messagecard.py +1 -2
  4148. office365/sharepoint/sitedesigns/messagecardactionbutton.py +1 -2
  4149. office365/sharepoint/sitedesigns/messagecardinput.py +1 -2
  4150. office365/sharepoint/sitedesigns/potentialaction.py +1 -2
  4151. office365/sharepoint/sitedesigns/principal.py +4 -0
  4152. office365/sharepoint/sitedesigns/run.py +10 -0
  4153. office365/sharepoint/sitedesigns/section.py +1 -2
  4154. office365/sharepoint/sitedesigns/sectiondesignideasapi.py +3 -0
  4155. office365/sharepoint/sitedesigns/sectionmodel.py +1 -2
  4156. office365/sharepoint/sitedesigns/spsitescriptstatusandschema.py +1 -2
  4157. office365/sharepoint/sitedesigns/task.py +0 -2
  4158. office365/sharepoint/sitedesigns/userfirstrun.py +5 -0
  4159. office365/sharepoint/sitedesigns/webpartmodel.py +0 -2
  4160. office365/sharepoint/sitedesigns/zonemodel.py +1 -2
  4161. office365/sharepoint/sites/asyncreadjobinfo.py +0 -2
  4162. office365/sharepoint/sites/asyncreadoptions.py +0 -2
  4163. office365/sharepoint/sites/autolabellingworkinformation.py +0 -2
  4164. office365/sharepoint/sites/azure_container_Info.py +0 -3
  4165. office365/sharepoint/sites/copy_job_progress.py +2 -3
  4166. office365/sharepoint/sites/copy_migration_iInfo.py +11 -3
  4167. office365/sharepoint/sites/enqueuejobinformation.py +0 -3
  4168. office365/sharepoint/sites/followedsitesparams.py +0 -2
  4169. office365/sharepoint/sites/health/result.py +0 -2
  4170. office365/sharepoint/sites/health/summary.py +6 -1
  4171. office365/sharepoint/sites/home/details.py +1 -2
  4172. office365/sharepoint/sites/home/navconfiguration.py +0 -3
  4173. office365/sharepoint/sites/home/reference.py +1 -2
  4174. office365/sharepoint/sites/home/sharepointhomeservicemanager.py +2 -0
  4175. office365/sharepoint/sites/home/site.py +20 -0
  4176. office365/sharepoint/sites/home/siteconfigurationparam.py +1 -2
  4177. office365/sharepoint/sites/home/spreference.py +0 -3
  4178. office365/sharepoint/sites/html_field_security_setting.py +1 -2
  4179. office365/sharepoint/sites/language.py +0 -2
  4180. office365/sharepoint/sites/language_collection.py +4 -0
  4181. office365/sharepoint/sites/manager/missinglink.py +1 -2
  4182. office365/sharepoint/sites/manager/missinglinkreferrer.py +0 -2
  4183. office365/sharepoint/sites/manager/missinglinksresult.py +1 -2
  4184. office365/sharepoint/sites/manager/retirablepagemetadata.py +0 -2
  4185. office365/sharepoint/sites/manager/retirablepagesqueryresult.py +1 -2
  4186. office365/sharepoint/sites/manager/service.py +19 -0
  4187. office365/sharepoint/sites/manager/sitemanagersignals.py +1 -2
  4188. office365/sharepoint/sites/manager/smaretirepageminimumagefeedbacksignal.py +0 -2
  4189. office365/sharepoint/sites/manager/smaretirepagesignal.py +1 -2
  4190. office365/sharepoint/sites/manager/suggestionitem.py +0 -2
  4191. office365/sharepoint/sites/manager/topsitefile.py +0 -2
  4192. office365/sharepoint/sites/manager/topsitefilesresult.py +1 -2
  4193. office365/sharepoint/sites/migration/copyoptions.py +1 -2
  4194. office365/sharepoint/sites/migration/job_status.py +3 -0
  4195. office365/sharepoint/sites/migration/jobprogress.py +1 -2
  4196. office365/sharepoint/sites/migration/moveandsharefileinfo.py +1 -2
  4197. office365/sharepoint/sites/ngsprequestparams.py +1 -2
  4198. office365/sharepoint/sites/ownedbymeparams.py +0 -2
  4199. office365/sharepoint/sites/provisionedmigrationcontainersinfo.py +0 -3
  4200. office365/sharepoint/sites/provisionedmigrationqueueinfo.py +0 -3
  4201. office365/sharepoint/sites/recentfilesparams.py +0 -2
  4202. office365/sharepoint/sites/restrictaccesscontrolupdate.py +1 -2
  4203. office365/sharepoint/sites/restrictcontentorgwidepolicyupdate.py +0 -3
  4204. office365/sharepoint/sites/site.py +210 -9
  4205. office365/sharepoint/sites/siteprovisioninginfoprovider.py +3 -0
  4206. office365/sharepoint/sites/team_site_data.py +9 -0
  4207. office365/sharepoint/sites/template.py +0 -2
  4208. office365/sharepoint/sites/themes.py +1 -2
  4209. office365/sharepoint/sites/upgrade_info.py +0 -2
  4210. office365/sharepoint/sites/usage_info.py +0 -2
  4211. office365/sharepoint/sites/version_policy_manager.py +7 -1
  4212. office365/sharepoint/sitescripts/action_result.py +0 -2
  4213. office365/sharepoint/sitescripts/action_status.py +0 -2
  4214. office365/sharepoint/sitescripts/creation_info.py +0 -2
  4215. office365/sharepoint/sitescripts/metadata.py +0 -2
  4216. office365/sharepoint/sitescripts/scriptsafedomainentitydata.py +0 -2
  4217. office365/sharepoint/sitescripts/serialization_info.py +0 -2
  4218. office365/sharepoint/sitescripts/serialization_result.py +0 -3
  4219. office365/sharepoint/sitescripts/utility.py +19 -0
  4220. office365/sharepoint/smartcache/item.py +21 -0
  4221. office365/sharepoint/social/actor.py +0 -2
  4222. office365/sharepoint/social/actor_info.py +0 -2
  4223. office365/sharepoint/social/announcement_manager.py +2 -0
  4224. office365/sharepoint/social/attachment.py +1 -2
  4225. office365/sharepoint/social/attachment_action.py +0 -2
  4226. office365/sharepoint/social/data_overlay.py +1 -2
  4227. office365/sharepoint/social/dataitem.py +0 -2
  4228. office365/sharepoint/social/exceptiondetails.py +0 -2
  4229. office365/sharepoint/social/feed/feed.py +1 -2
  4230. office365/sharepoint/social/feed/manager.py +21 -0
  4231. office365/sharepoint/social/feed/rest.py +3 -1
  4232. office365/sharepoint/social/feedoptions.py +0 -2
  4233. office365/sharepoint/social/following/manager.py +12 -0
  4234. office365/sharepoint/social/following/rest_manager.py +15 -0
  4235. office365/sharepoint/social/link.py +0 -2
  4236. office365/sharepoint/social/microfeed/thread.py +1 -2
  4237. office365/sharepoint/social/microfeed/thread_collection.py +1 -2
  4238. office365/sharepoint/social/microfeed/user_posts.py +0 -2
  4239. office365/sharepoint/social/posts/actor_info.py +1 -2
  4240. office365/sharepoint/social/posts/creation_data.py +1 -2
  4241. office365/sharepoint/social/posts/definition_data.py +1 -2
  4242. office365/sharepoint/social/posts/definition_data_item.py +0 -2
  4243. office365/sharepoint/social/posts/post.py +1 -2
  4244. office365/sharepoint/social/posts/reference.py +1 -2
  4245. office365/sharepoint/social/rest_actor.py +6 -0
  4246. office365/sharepoint/social/rest_thread.py +7 -0
  4247. office365/sharepoint/social/restpostcreationdata.py +1 -2
  4248. office365/sharepoint/social/switch.py +2 -0
  4249. office365/sharepoint/social/thread.py +1 -2
  4250. office365/sharepoint/sp_playlist_subscriber.py +2 -0
  4251. office365/sharepoint/storagemetrics/storage_metrics.py +8 -0
  4252. office365/sharepoint/taxonomy/contenttypeinfo.py +0 -3
  4253. office365/sharepoint/taxonomy/contenttypesyndicationresult.py +1 -2
  4254. office365/sharepoint/taxonomy/create_xml_parameters.py +0 -3
  4255. office365/sharepoint/taxonomy/field.py +46 -0
  4256. office365/sharepoint/taxonomy/field_value.py +3 -4
  4257. office365/sharepoint/taxonomy/field_value_col.py +0 -2
  4258. office365/sharepoint/taxonomy/groups/group.py +1 -1
  4259. office365/sharepoint/taxonomy/metadata.py +0 -3
  4260. office365/sharepoint/taxonomy/service.py +3 -3
  4261. office365/sharepoint/taxonomy/sets/info.py +0 -3
  4262. office365/sharepoint/taxonomy/sets/name.py +0 -3
  4263. office365/sharepoint/taxonomy/stores/store.py +13 -1
  4264. office365/sharepoint/taxonomy/terms/label.py +0 -3
  4265. office365/sharepoint/teams/channel.py +3 -0
  4266. office365/sharepoint/teams/channel_manager.py +18 -0
  4267. office365/sharepoint/teams/publishingstatus.py +1 -2
  4268. office365/sharepoint/teams/site_owner_response.py +0 -2
  4269. office365/sharepoint/teams/statusresponse.py +1 -2
  4270. office365/sharepoint/tenant/administration/app_service_principal_public.py +5 -0
  4271. office365/sharepoint/tenant/administration/audit/data.py +1 -2
  4272. office365/sharepoint/tenant/administration/audit/datacollectionresponse.py +0 -2
  4273. office365/sharepoint/tenant/administration/audit/search_request_status.py +0 -2
  4274. office365/sharepoint/tenant/administration/audit/unified_record.py +1 -2
  4275. office365/sharepoint/tenant/administration/collaboration/collaborativeonedriveuser.py +0 -3
  4276. office365/sharepoint/tenant/administration/collaboration/collaborativeuser.py +0 -3
  4277. office365/sharepoint/tenant/administration/collaboration/insights_data.py +1 -2
  4278. office365/sharepoint/tenant/administration/collaboration/insights_overview.py +0 -2
  4279. office365/sharepoint/tenant/administration/columnsinfo.py +0 -3
  4280. office365/sharepoint/tenant/administration/commentsonsitepagesdisabled.py +0 -3
  4281. office365/sharepoint/tenant/administration/container/applicationproperties.py +0 -2
  4282. office365/sharepoint/tenant/administration/container/collection.py +1 -2
  4283. office365/sharepoint/tenant/administration/container/filterorder.py +1 -2
  4284. office365/sharepoint/tenant/administration/container/properties.py +1 -2
  4285. office365/sharepoint/tenant/administration/container/searchparameters.py +0 -3
  4286. office365/sharepoint/tenant/administration/container/sortorder.py +0 -3
  4287. office365/sharepoint/tenant/administration/container/type/billingproperties.py +0 -2
  4288. office365/sharepoint/tenant/administration/container/type/configurationproperties.py +1 -2
  4289. office365/sharepoint/tenant/administration/container/type/properties.py +1 -2
  4290. office365/sharepoint/tenant/administration/container/type/status.py +0 -2
  4291. office365/sharepoint/tenant/administration/contentmanagementassessmentoperationresult.py +0 -3
  4292. office365/sharepoint/tenant/administration/contentmanagementassessmentpolicyreportdetails.py +0 -3
  4293. office365/sharepoint/tenant/administration/contentmanagementassessmentresults.py +1 -2
  4294. office365/sharepoint/tenant/administration/copilot/adaptive_card_config.py +1 -2
  4295. office365/sharepoint/tenant/administration/copilot/agentinsights/client.py +3 -0
  4296. office365/sharepoint/tenant/administration/copilot/agentinsights/report_metadata.py +0 -2
  4297. office365/sharepoint/tenant/administration/copilot/agentinsightscopilotagentsonsitesdetails.py +0 -3
  4298. office365/sharepoint/tenant/administration/copilot/agentinsightssitedistribution.py +0 -3
  4299. office365/sharepoint/tenant/administration/copilot/agentinsightstopsitesdetails.py +0 -3
  4300. office365/sharepoint/tenant/administration/copilot/base_raw_data_sources.py +1 -2
  4301. office365/sharepoint/tenant/administration/copilot/promousage.py +1 -2
  4302. office365/sharepoint/tenant/administration/copilot/reportmetadata.py +1 -2
  4303. office365/sharepoint/tenant/administration/copilot/reportrow.py +1 -2
  4304. office365/sharepoint/tenant/administration/copilot/transpilerpayload.py +1 -2
  4305. office365/sharepoint/tenant/administration/copilot/transpilerresponse.py +1 -2
  4306. office365/sharepoint/tenant/administration/copilot/transpilerstatement.py +1 -2
  4307. office365/sharepoint/tenant/administration/customformurl.py +0 -3
  4308. office365/sharepoint/tenant/administration/datagovernance/insight_client.py +18 -0
  4309. office365/sharepoint/tenant/administration/datagovernance/insight_metadata.py +0 -2
  4310. office365/sharepoint/tenant/administration/dataset_metadata_info.py +1 -0
  4311. office365/sharepoint/tenant/administration/dataset_metadata_request_info.py +1 -2
  4312. office365/sharepoint/tenant/administration/dataset_metadata_response.py +4 -2
  4313. office365/sharepoint/tenant/administration/ddiadapter.py +8 -0
  4314. office365/sharepoint/tenant/administration/deletedsiteproperties.py +9 -0
  4315. office365/sharepoint/tenant/administration/endpoints.py +7 -0
  4316. office365/sharepoint/tenant/administration/errorfacet.py +0 -3
  4317. office365/sharepoint/tenant/administration/esignaturethirdpartyprovidersinfo.py +0 -3
  4318. office365/sharepoint/tenant/administration/eventdata.py +0 -3
  4319. office365/sharepoint/tenant/administration/filesensitivitylabelinfo.py +5 -0
  4320. office365/sharepoint/tenant/administration/groups/group.py +11 -0
  4321. office365/sharepoint/tenant/administration/groups/info.py +0 -3
  4322. office365/sharepoint/tenant/administration/groupsitesactivitydetail.py +0 -2
  4323. office365/sharepoint/tenant/administration/hubsites/collection.py +4 -0
  4324. office365/sharepoint/tenant/administration/hubsites/creation_information.py +0 -3
  4325. office365/sharepoint/tenant/administration/hubsites/hub_site.py +20 -0
  4326. office365/sharepoint/tenant/administration/hubsites/permission.py +0 -3
  4327. office365/sharepoint/tenant/administration/hubsites/properties.py +14 -1
  4328. office365/sharepoint/tenant/administration/ibsegmentinfo.py +0 -3
  4329. office365/sharepoint/tenant/administration/inactivesitepolicyresourcestorage.py +1 -2
  4330. office365/sharepoint/tenant/administration/includeataglanceinshareemails.py +0 -3
  4331. office365/sharepoint/tenant/administration/insights/queueitem.py +0 -2
  4332. office365/sharepoint/tenant/administration/insights/reportmetadata.py +0 -2
  4333. office365/sharepoint/tenant/administration/insights/summary_response.py +0 -3
  4334. office365/sharepoint/tenant/administration/internal/aad/collection.py +3 -0
  4335. office365/sharepoint/tenant/administration/internal/aad/permission_grant.py +8 -0
  4336. office365/sharepoint/tenant/administration/internal/appservice/permission_grant.py +9 -0
  4337. office365/sharepoint/tenant/administration/internal/appservice/permission_request.py +19 -0
  4338. office365/sharepoint/tenant/administration/internal/appservice/principal.py +17 -0
  4339. office365/sharepoint/tenant/administration/jobs/spo_operation.py +6 -1
  4340. office365/sharepoint/tenant/administration/licensed_onedrives_summary_metrics.py +0 -3
  4341. office365/sharepoint/tenant/administration/listitemcolumnvalue.py +0 -3
  4342. office365/sharepoint/tenant/administration/mailfromaddress.py +0 -3
  4343. office365/sharepoint/tenant/administration/malware/file.py +9 -0
  4344. office365/sharepoint/tenant/administration/mobilenotificationisenabledforsharepoint.py +0 -3
  4345. office365/sharepoint/tenant/administration/modified_property.py +0 -3
  4346. office365/sharepoint/tenant/administration/monthlyusage.py +0 -3
  4347. office365/sharepoint/tenant/administration/newsitemanagedpath.py +0 -3
  4348. office365/sharepoint/tenant/administration/newsubsiteinmodernoffforall.py +0 -3
  4349. office365/sharepoint/tenant/administration/newsubsiteinmodernoffformoderntemplates.py +0 -3
  4350. office365/sharepoint/tenant/administration/newteamsitemanagedpath.py +0 -3
  4351. office365/sharepoint/tenant/administration/odb_license_enforcement_service.py +3 -0
  4352. office365/sharepoint/tenant/administration/onedrives_count_and_size.py +0 -3
  4353. office365/sharepoint/tenant/administration/onedrives_summary_metrics.py +1 -2
  4354. office365/sharepoint/tenant/administration/onedrives_summary_metrics_by_unlicensed_reason.py +1 -2
  4355. office365/sharepoint/tenant/administration/owner_not_in_entra_onedrives_summary_metrics.py +1 -2
  4356. office365/sharepoint/tenant/administration/ownershippolicyresourcestorage.py +1 -2
  4357. office365/sharepoint/tenant/administration/pageresponse.py +1 -2
  4358. office365/sharepoint/tenant/administration/parentsiteurl.py +0 -3
  4359. office365/sharepoint/tenant/administration/policies/app_billing_properties.py +0 -2
  4360. office365/sharepoint/tenant/administration/policies/cdnpolicy.py +3 -0
  4361. office365/sharepoint/tenant/administration/policies/content_security_configuration.py +8 -11
  4362. office365/sharepoint/tenant/administration/policies/create_request.py +0 -2
  4363. office365/sharepoint/tenant/administration/policies/definition.py +0 -2
  4364. office365/sharepoint/tenant/administration/policies/file_version_types.py +0 -2
  4365. office365/sharepoint/tenant/administration/policies/fileversionsettings.py +1 -2
  4366. office365/sharepoint/tenant/administration/policies/list_parameters.py +0 -2
  4367. office365/sharepoint/tenant/administration/policies/report.py +0 -2
  4368. office365/sharepoint/tenant/administration/policies/resource_storage.py +1 -2
  4369. office365/sharepoint/tenant/administration/policyoption.py +0 -3
  4370. office365/sharepoint/tenant/administration/powerapps/environment.py +0 -3
  4371. office365/sharepoint/tenant/administration/powerapps/environment_context.py +1 -2
  4372. office365/sharepoint/tenant/administration/ransomware/activitiesoverview.py +0 -2
  4373. office365/sharepoint/tenant/administration/ransomware/activity.py +0 -2
  4374. office365/sharepoint/tenant/administration/ransomware/event.py +0 -2
  4375. office365/sharepoint/tenant/administration/ransomware/eventsoverview.py +0 -3
  4376. office365/sharepoint/tenant/administration/ransomware/properties.py +0 -2
  4377. office365/sharepoint/tenant/administration/recent_action.py +0 -2
  4378. office365/sharepoint/tenant/administration/recentactionpayload.py +0 -2
  4379. office365/sharepoint/tenant/administration/reports/recent_admin_action.py +0 -2
  4380. office365/sharepoint/tenant/administration/reports/recent_admin_action_payload.py +0 -2
  4381. office365/sharepoint/tenant/administration/reports/sitepermissionsdetails.py +0 -3
  4382. office365/sharepoint/tenant/administration/requiresecondarycontact.py +0 -3
  4383. office365/sharepoint/tenant/administration/secondary_administrators_fields_data.py +0 -3
  4384. office365/sharepoint/tenant/administration/secondary_administrators_info.py +0 -3
  4385. office365/sharepoint/tenant/administration/serviceprioritizationappregistration.py +0 -3
  4386. office365/sharepoint/tenant/administration/settings/dataproperty.py +0 -3
  4387. office365/sharepoint/tenant/administration/settings/default_time_zone_id.py +0 -3
  4388. office365/sharepoint/tenant/administration/settings/service.py +71 -126
  4389. office365/sharepoint/tenant/administration/sharepointembeddedclientlogproperties.py +0 -3
  4390. office365/sharepoint/tenant/administration/shownextgenerationsyncclientonteamsite.py +0 -3
  4391. office365/sharepoint/tenant/administration/showselfservicesitecreation.py +0 -3
  4392. office365/sharepoint/tenant/administration/site_user_group_info.py +1 -2
  4393. office365/sharepoint/tenant/administration/siteadministratorsfieldsdata.py +1 -2
  4394. office365/sharepoint/tenant/administration/sitecohortssummary.py +0 -3
  4395. office365/sharepoint/tenant/administration/sitecreationnewux.py +0 -3
  4396. office365/sharepoint/tenant/administration/siteinfo_for_site_picker.py +0 -3
  4397. office365/sharepoint/tenant/administration/siteownerdata.py +0 -3
  4398. office365/sharepoint/tenant/administration/sitepage.py +0 -2
  4399. office365/sharepoint/tenant/administration/sitepagesenabled.py +0 -3
  4400. office365/sharepoint/tenant/administration/sites/administrators_info.py +0 -3
  4401. office365/sharepoint/tenant/administration/sites/collection_management_service.py +4 -0
  4402. office365/sharepoint/tenant/administration/sites/creation_data.py +0 -3
  4403. office365/sharepoint/tenant/administration/sites/creation_default_storage_quota.py +0 -3
  4404. office365/sharepoint/tenant/administration/sites/creation_properties.py +0 -3
  4405. office365/sharepoint/tenant/administration/sites/creation_source.py +1 -2
  4406. office365/sharepoint/tenant/administration/sites/properties.py +149 -5
  4407. office365/sharepoint/tenant/administration/sites/properties_collection.py +7 -0
  4408. office365/sharepoint/tenant/administration/sites/properties_enumerable_filter.py +0 -3
  4409. office365/sharepoint/tenant/administration/sites/state_properties.py +0 -3
  4410. office365/sharepoint/tenant/administration/siteusergroupsdata.py +1 -2
  4411. office365/sharepoint/tenant/administration/smtp_server.py +0 -3
  4412. office365/sharepoint/tenant/administration/spcontenteventscustomemailproperty.py +1 -2
  4413. office365/sharepoint/tenant/administration/spdatagovernanceinsightexportedreport.py +0 -3
  4414. office365/sharepoint/tenant/administration/spdatagovernanceinsightresponse.py +4 -2
  4415. office365/sharepoint/tenant/administration/spdatagovernancesarrestapiclient.py +4 -0
  4416. office365/sharepoint/tenant/administration/spdatagovernancesarstartsitereviewresponse.py +1 -2
  4417. office365/sharepoint/tenant/administration/spdatagovernancesitereviewsresponse.py +0 -2
  4418. office365/sharepoint/tenant/administration/spdeletedcontainerproperties.py +0 -2
  4419. office365/sharepoint/tenant/administration/spdeletedcontainertypeproperties.py +0 -2
  4420. office365/sharepoint/tenant/administration/splistmodernuxoff.py +0 -3
  4421. office365/sharepoint/tenant/administration/spocontainerqueryparams.py +1 -2
  4422. office365/sharepoint/tenant/administration/spocontentsecuritypolicyentry.py +0 -2
  4423. office365/sharepoint/tenant/administration/spofileversionexpirationreportjobprogress.py +0 -3
  4424. office365/sharepoint/tenant/administration/spofileversionfiletypepolicysettings.py +1 -2
  4425. office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +0 -3
  4426. office365/sharepoint/tenant/administration/spom365agentinsightsreportmetadata.py +0 -2
  4427. office365/sharepoint/tenant/administration/spom365agentinsightssitedistributiondetails.py +0 -3
  4428. office365/sharepoint/tenant/administration/sporestrictedcontentdiscoverabilitysitedetails.py +0 -2
  4429. office365/sharepoint/tenant/administration/sposerviceprioritizationappregistrations.py +1 -2
  4430. office365/sharepoint/tenant/administration/sposerviceprioritizationbillingpayload.py +0 -3
  4431. office365/sharepoint/tenant/administration/sposerviceprioritizationpolicyfromtenantstore.py +0 -2
  4432. office365/sharepoint/tenant/administration/spositecreationsource.py +0 -3
  4433. office365/sharepoint/tenant/administration/spositepropertiesenumerablefilter.py +0 -2
  4434. office365/sharepoint/tenant/administration/spsitepagecopyjobprogress.py +0 -2
  4435. office365/sharepoint/tenant/administration/storage_usage_metrics_snapshot.py +3 -2
  4436. office365/sharepoint/tenant/administration/syntex/applicationproperties.py +1 -2
  4437. office365/sharepoint/tenant/administration/syntex/billing_context.py +0 -2
  4438. office365/sharepoint/tenant/administration/syntex/checkmanagementallowedresponse.py +0 -3
  4439. office365/sharepoint/tenant/administration/syntex/featurescopesettingsvalues.py +0 -3
  4440. office365/sharepoint/tenant/administration/syntex/getmodifiedlistresponse.py +1 -2
  4441. office365/sharepoint/tenant/administration/syntex/power_apps.py +1 -2
  4442. office365/sharepoint/tenant/administration/syntex/premiumfeaturesettings.py +1 -2
  4443. office365/sharepoint/tenant/administration/teamssitesactivitydetail.py +0 -2
  4444. office365/sharepoint/tenant/administration/tenant.py +869 -49
  4445. office365/sharepoint/tenant/administration/tenant_data_loss_prevention_quarantine_settings.py +3 -0
  4446. office365/sharepoint/tenant/administration/theme_properties.py +5 -0
  4447. office365/sharepoint/tenant/administration/transpilerresponse.py +1 -2
  4448. office365/sharepoint/tenant/administration/types.py +0 -6
  4449. office365/sharepoint/tenant/administration/unlicensed_onedrives_summary_metrics.py +1 -2
  4450. office365/sharepoint/tenant/administration/updategroupsitepropertiesparameters.py +0 -3
  4451. office365/sharepoint/tenant/administration/webs/templates/collection.py +3 -1
  4452. office365/sharepoint/tenant/administration/webs/templates/template.py +0 -3
  4453. office365/sharepoint/tenant/apps/information.py +1 -2
  4454. office365/sharepoint/tenant/apps/instance.py +4 -0
  4455. office365/sharepoint/tenant/apps/user_experience_state.py +5 -0
  4456. office365/sharepoint/tenant/cdn_api.py +4 -0
  4457. office365/sharepoint/tenant/cdn_url.py +0 -2
  4458. office365/sharepoint/tenant/insights/reports/manager.py +4 -0
  4459. office365/sharepoint/tenant/insights/reports/metadata.py +6 -0
  4460. office365/sharepoint/tenant/insights/reports/onedrive.py +2 -0
  4461. office365/sharepoint/tenant/insights/reports/report.py +5 -0
  4462. office365/sharepoint/tenant/insights/reports/sharepoint.py +2 -0
  4463. office365/sharepoint/tenant/management/externalusers/external_user.py +10 -0
  4464. office365/sharepoint/tenant/management/externalusers/results/get.py +4 -0
  4465. office365/sharepoint/tenant/management/externalusers/results/remove.py +3 -0
  4466. office365/sharepoint/tenant/management/externalusers/results/session_revocation.py +2 -0
  4467. office365/sharepoint/tenant/management/importprofilepropertiesjobinfo.py +7 -0
  4468. office365/sharepoint/tenant/management/office365_tenant.py +255 -0
  4469. office365/sharepoint/tenant/settings.py +7 -0
  4470. office365/sharepoint/tenantadministration/catalog_management_collection.py +9 -0
  4471. office365/sharepoint/tenantadministration/catalog_management_custom_properties_collection.py +18 -0
  4472. office365/sharepoint/tenantadministration/catalog_management_restricted_content_discovery_collection.py +6 -0
  4473. office365/sharepoint/tenantadministration/container_auto_quota_enabled.py +12 -0
  4474. office365/sharepoint/tenantadministration/sp_data_governance_insight_rest_api_client.py +18 -0
  4475. office365/sharepoint/tenantadministration/sp_data_governance_sar_rest_api_client.py +4 -0
  4476. office365/sharepoint/tenantadministration/spo_copilot_agent_insights_rest_api_client.py +8 -0
  4477. office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +1 -2
  4478. office365/sharepoint/tenantadministration/spo_file_archive_policy_report_info.py +1 -0
  4479. office365/sharepoint/tenantadministration/spo_restricted_app_access_control_site_policy.py +19 -0
  4480. office365/sharepoint/tenantadministration/spo_restricted_app_access_control_tenant_policy.py +16 -0
  4481. office365/sharepoint/tenantadministration/spo_restricted_content_discoverability_client.py +6 -0
  4482. office365/sharepoint/tenantadministration/spom365_agent_insights_rest_api_client.py +8 -0
  4483. office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +0 -3
  4484. office365/sharepoint/tenantmanagement/group_creation_params.py +5 -0
  4485. office365/sharepoint/thresholds.py +8 -4
  4486. office365/sharepoint/translation/item_info.py +0 -3
  4487. office365/sharepoint/translation/jobs/info.py +0 -2
  4488. office365/sharepoint/translation/jobs/job.py +9 -0
  4489. office365/sharepoint/translation/jobs/status.py +11 -0
  4490. office365/sharepoint/translation/notifications/recipient.py +0 -2
  4491. office365/sharepoint/translation/notifications/recipient_col.py +1 -2
  4492. office365/sharepoint/translation/notifications/recipient_set_request.py +1 -2
  4493. office365/sharepoint/translation/notifications/recipient_users.py +8 -1
  4494. office365/sharepoint/translation/requested_translation.py +1 -2
  4495. office365/sharepoint/translation/resource_entry.py +0 -3
  4496. office365/sharepoint/translation/status.py +1 -2
  4497. office365/sharepoint/translation/status_collection.py +8 -2
  4498. office365/sharepoint/translation/status_creation_request.py +1 -2
  4499. office365/sharepoint/translation/status_set_request.py +1 -2
  4500. office365/sharepoint/translation/sync_translator.py +5 -0
  4501. office365/sharepoint/translation/user_resource.py +4 -0
  4502. office365/sharepoint/translation/variations_timer_job.py +2 -0
  4503. office365/sharepoint/types/resource_path.py +0 -2
  4504. office365/sharepoint/ui/applicationpages/peoplepicker/entity_information.py +3 -0
  4505. office365/sharepoint/ui/applicationpages/peoplepicker/entity_information_request.py +0 -2
  4506. office365/sharepoint/ui/applicationpages/peoplepicker/query_parameters.py +1 -2
  4507. office365/sharepoint/ui/applicationpages/peoplepicker/query_settings.py +0 -2
  4508. office365/sharepoint/ui/applicationpages/peoplepicker/web_service_interface.py +6 -0
  4509. office365/sharepoint/user_ai_tokens.py +3 -0
  4510. office365/sharepoint/user_photos.py +4 -0
  4511. office365/sharepoint/usercustomactions/action.py +24 -3
  4512. office365/sharepoint/usercustomactions/collection.py +3 -0
  4513. office365/sharepoint/userprofiles/cross_geo_sync.py +3 -0
  4514. office365/sharepoint/userprofiles/cross_geo_sync_user_data_batch.py +1 -2
  4515. office365/sharepoint/userprofiles/follow_result.py +1 -2
  4516. office365/sharepoint/userprofiles/followed_content.py +17 -0
  4517. office365/sharepoint/userprofiles/followed_item.py +0 -2
  4518. office365/sharepoint/userprofiles/followeditemdata.py +2 -0
  4519. office365/sharepoint/userprofiles/hash_tag.py +0 -2
  4520. office365/sharepoint/userprofiles/hash_tag_col.py +3 -1
  4521. office365/sharepoint/userprofiles/hashtag.py +1 -2
  4522. office365/sharepoint/userprofiles/my_site_links.py +9 -0
  4523. office365/sharepoint/userprofiles/mysite/dismiss_status_text.py +2 -0
  4524. office365/sharepoint/userprofiles/people_manager.py +42 -0
  4525. office365/sharepoint/userprofiles/peoplecollection.py +3 -0
  4526. office365/sharepoint/userprofiles/person_properties.py +17 -4
  4527. office365/sharepoint/userprofiles/personal_cache.py +16 -0
  4528. office365/sharepoint/userprofiles/personal_cache_item.py +0 -2
  4529. office365/sharepoint/userprofiles/personallistsproxy.py +2 -0
  4530. office365/sharepoint/userprofiles/profile_image_store.py +2 -0
  4531. office365/sharepoint/userprofiles/profile_loader.py +6 -0
  4532. office365/sharepoint/userprofiles/promoted_sites.py +4 -0
  4533. office365/sharepoint/userprofiles/properties_for_user.py +13 -1
  4534. office365/sharepoint/userprofiles/user_profile.py +32 -0
  4535. office365/sharepoint/utilities/autofillcolumninfo.py +0 -2
  4536. office365/sharepoint/utilities/email_properties.py +0 -2
  4537. office365/sharepoint/utilities/file_handler_wopi_properties.py +5 -0
  4538. office365/sharepoint/utilities/jsontheme.py +0 -2
  4539. office365/sharepoint/utilities/llmcolumninfo.py +0 -2
  4540. office365/sharepoint/utilities/move_copy_options.py +0 -3
  4541. office365/sharepoint/utilities/move_copy_util.py +13 -1
  4542. office365/sharepoint/utilities/newsitem.py +0 -2
  4543. office365/sharepoint/utilities/newsitemmetadata.py +0 -2
  4544. office365/sharepoint/utilities/principal_info.py +1 -2
  4545. office365/sharepoint/utilities/shortcuttargetinfo.py +5 -0
  4546. office365/sharepoint/utilities/spotlightresult.py +3 -0
  4547. office365/sharepoint/utilities/themingoptions.py +1 -2
  4548. office365/sharepoint/utilities/upload_status.py +5 -0
  4549. office365/sharepoint/utilities/utility.py +25 -7
  4550. office365/sharepoint/utilities/webappexturlpair.py +0 -2
  4551. office365/sharepoint/utilities/webappurlsbyaction.py +1 -2
  4552. office365/sharepoint/utilities/wopi_host.py +3 -0
  4553. office365/sharepoint/utilities/wopi_properties.py +7 -0
  4554. office365/sharepoint/utilities/wopi_web_app_properties.py +1 -2
  4555. office365/sharepoint/views/collection.py +2 -0
  4556. office365/sharepoint/views/create_information.py +0 -2
  4557. office365/sharepoint/views/field_collection.py +8 -0
  4558. office365/sharepoint/views/view.py +43 -6
  4559. office365/sharepoint/views/visualization/field.py +0 -2
  4560. office365/sharepoint/views/visualization/style_set.py +1 -2
  4561. office365/sharepoint/views/visualization/visualization.py +1 -2
  4562. office365/sharepoint/viva/announcementaction.py +0 -2
  4563. office365/sharepoint/viva/announcementstate.py +1 -2
  4564. office365/sharepoint/viva/app_configuration.py +7 -17
  4565. office365/sharepoint/viva/appsitecontext.py +0 -3
  4566. office365/sharepoint/viva/configurationdata.py +1 -2
  4567. office365/sharepoint/viva/connections/configurationanddata.py +1 -2
  4568. office365/sharepoint/viva/connections/license.py +0 -3
  4569. office365/sharepoint/viva/connections/page.py +3 -0
  4570. office365/sharepoint/viva/connections/url_configuration.py +0 -2
  4571. office365/sharepoint/viva/dashboard/carddetails.py +0 -2
  4572. office365/sharepoint/viva/dashboard/configuration.py +1 -2
  4573. office365/sharepoint/viva/dashboard/content.py +1 -2
  4574. office365/sharepoint/viva/dashboard/item.py +1 -2
  4575. office365/sharepoint/viva/dashboard/iteminfo.py +0 -2
  4576. office365/sharepoint/viva/dashboard/personalizationdata.py +1 -2
  4577. office365/sharepoint/viva/destinationv2.py +0 -2
  4578. office365/sharepoint/viva/employee_engagement.py +18 -2
  4579. office365/sharepoint/viva/employee_experience_controller.py +5 -0
  4580. office365/sharepoint/viva/engagepublishingstatus.py +1 -2
  4581. office365/sharepoint/viva/home.py +3 -0
  4582. office365/sharepoint/viva/home_title_region.py +0 -2
  4583. office365/sharepoint/viva/knowledgehub.py +3 -0
  4584. office365/sharepoint/viva/knowledgehubsitereference.py +0 -2
  4585. office365/sharepoint/viva/learningmanager.py +2 -0
  4586. office365/sharepoint/viva/newssite.py +1 -2
  4587. office365/sharepoint/viva/pivotitem.py +1 -2
  4588. office365/sharepoint/viva/resource_get_endpoint.py +3 -7
  4589. office365/sharepoint/viva/resource_link.py +1 -2
  4590. office365/sharepoint/viva/resourcevisualization.py +0 -3
  4591. office365/sharepoint/viva/site_manager.py +3 -0
  4592. office365/sharepoint/viva/site_request_info.py +0 -2
  4593. office365/sharepoint/viva/spotlightconfiguration.py +1 -2
  4594. office365/sharepoint/viva/spotlightnews.py +0 -2
  4595. office365/sharepoint/viva/syntexcontext.py +4 -0
  4596. office365/sharepoint/viva/syntexcustommodeldeploymentmodelinfo.py +0 -3
  4597. office365/sharepoint/viva/syntexcustommodeldeploymentproperties.py +1 -2
  4598. office365/sharepoint/viva/syntexcustommodelsetting.py +1 -2
  4599. office365/sharepoint/viva/targetedsitedetails.py +1 -2
  4600. office365/sharepoint/viva/vcconfiguration.py +1 -2
  4601. office365/sharepoint/viva/visualizationappinfo.py +0 -2
  4602. office365/sharepoint/viva/visualizationappsynchronizationresult.py +4 -0
  4603. office365/sharepoint/viva/vivaresources.py +6 -0
  4604. office365/sharepoint/webhooks/subscription.py +10 -0
  4605. office365/sharepoint/webhooks/subscription_collection.py +3 -0
  4606. office365/sharepoint/webhooks/subscription_information.py +3 -4
  4607. office365/sharepoint/webparts/client/webpart.py +5 -0
  4608. office365/sharepoint/webparts/definitions/definition.py +9 -1
  4609. office365/sharepoint/webparts/limited_manager.py +8 -1
  4610. office365/sharepoint/webparts/tile_data.py +0 -2
  4611. office365/sharepoint/webparts/webpart.py +8 -0
  4612. office365/sharepoint/webs/apptile.py +22 -0
  4613. office365/sharepoint/webs/collection.py +3 -2
  4614. office365/sharepoint/webs/context_web_information.py +1 -2
  4615. office365/sharepoint/webs/creation_information.py +0 -2
  4616. office365/sharepoint/webs/dataleakage_prevention_status_info.py +5 -0
  4617. office365/sharepoint/webs/info_creation_information.py +0 -2
  4618. office365/sharepoint/webs/information.py +12 -0
  4619. office365/sharepoint/webs/modernize_homepage_result.py +3 -0
  4620. office365/sharepoint/webs/multilingual_settings.py +6 -0
  4621. office365/sharepoint/webs/outofboxsitetemplatesettings.py +0 -2
  4622. office365/sharepoint/webs/regional_settings.py +31 -3
  4623. office365/sharepoint/webs/remote_web.py +8 -0
  4624. office365/sharepoint/webs/spimageitem.py +0 -2
  4625. office365/sharepoint/webs/subweb_query.py +0 -3
  4626. office365/sharepoint/webs/teamappinfo.py +1 -2
  4627. office365/sharepoint/webs/templates/template.py +11 -0
  4628. office365/sharepoint/webs/theme_info.py +6 -0
  4629. office365/sharepoint/webs/time_zone.py +8 -0
  4630. office365/sharepoint/webs/time_zone_information.py +0 -2
  4631. office365/sharepoint/webs/web.py +311 -64
  4632. office365/sharepoint/workflow/associations/association.py +20 -0
  4633. office365/sharepoint/workflow/associations/creationinformation.py +0 -2
  4634. office365/sharepoint/workflow/configurationresponse.py +1 -2
  4635. office365/sharepoint/workflow/configureduserinfo.py +0 -3
  4636. office365/sharepoint/workflow/definition.py +14 -0
  4637. office365/sharepoint/workflow/deployment_service.py +13 -0
  4638. office365/sharepoint/workflow/deviationanalysisrule.py +1 -2
  4639. office365/sharepoint/workflow/exceptiondetails.py +0 -3
  4640. office365/sharepoint/workflow/instances/instance.py +8 -0
  4641. office365/sharepoint/workflow/instances/service.py +5 -0
  4642. office365/sharepoint/workflow/interopservice.py +7 -0
  4643. office365/sharepoint/workflow/labelaccesscontroldata.py +1 -2
  4644. office365/sharepoint/workflow/messagingservice.py +2 -0
  4645. office365/sharepoint/workflow/servicesmanager.py +10 -0
  4646. office365/sharepoint/workflow/sp_workflow_task.py +32 -0
  4647. office365/sharepoint/workflow/subscriptions/service.py +8 -0
  4648. office365/sharepoint/workflow/subscriptions/subscription.py +14 -0
  4649. office365/sharepoint/workflow/template.py +10 -0
  4650. office365/sharepoint/yammer/wactoken.py +0 -2
  4651. office365/subscriptions/change_notification.py +1 -2
  4652. office365/subscriptions/change_notification_collection.py +1 -2
  4653. office365/subscriptions/change_notification_encrypted_content.py +0 -3
  4654. office365/subscriptions/collection.py +8 -0
  4655. office365/subscriptions/encrypted_content.py +0 -3
  4656. office365/subscriptions/quotas.py +129 -0
  4657. office365/subscriptions/subscription.py +28 -4
  4658. office365/teams/admin_root.py +4 -0
  4659. office365/teams/administration/assigned_telephone_number.py +2 -3
  4660. office365/teams/administration/effective_policy_assignment.py +2 -3
  4661. office365/teams/administration/number_assignment.py +27 -31
  4662. office365/teams/administration/policy_user_assignment.py +4 -0
  4663. office365/teams/administration/telephone_number_long_running_operation.py +6 -10
  4664. office365/teams/administration/telephone_number_management_root.py +3 -0
  4665. office365/teams/administration/user_configuration.py +13 -6
  4666. office365/teams/app_settings.py +3 -0
  4667. office365/teams/apps/app.py +4 -1
  4668. office365/teams/apps/authorization.py +1 -2
  4669. office365/teams/apps/catalog.py +1 -1
  4670. office365/teams/apps/definition.py +11 -9
  4671. office365/teams/apps/installation.py +4 -9
  4672. office365/teams/apps/installed_event_message_detail.py +1 -2
  4673. office365/teams/apps/permission_set.py +1 -2
  4674. office365/teams/apps/removed_event_message_detail.py +1 -2
  4675. office365/teams/apps/upgraded_event_message_detail.py +1 -2
  4676. office365/teams/apps/user_scope_installation.py +2 -0
  4677. office365/teams/archived_event_message_detail.py +1 -2
  4678. office365/teams/channels/added_event_message_detail.py +1 -2
  4679. office365/teams/channels/channel.py +44 -12
  4680. office365/teams/channels/collection.py +12 -2
  4681. office365/teams/channels/deleted_event_message_detail.py +1 -2
  4682. office365/teams/channels/description_updated_event_message_detail.py +1 -2
  4683. office365/teams/channels/iIdentity.py +0 -3
  4684. office365/teams/channels/members_notification_recipient.py +0 -3
  4685. office365/teams/channels/provision_email_result.py +0 -3
  4686. office365/teams/channels/renamed_event_message_detail.py +1 -2
  4687. office365/teams/channels/set_as_favorite_by_default_event_message_detail.py +1 -2
  4688. office365/teams/channels/shared_team_info.py +3 -0
  4689. office365/teams/channels/summary.py +0 -3
  4690. office365/teams/channels/unset_as_favorite_by_default_event_message_detail.py +1 -2
  4691. office365/teams/chats/chat.py +22 -6
  4692. office365/teams/chats/collection.py +9 -0
  4693. office365/teams/chats/messages/attachment.py +0 -3
  4694. office365/teams/chats/messages/body.py +2 -4
  4695. office365/teams/chats/messages/collection.py +6 -0
  4696. office365/teams/chats/messages/from_identity_set.py +0 -3
  4697. office365/teams/chats/messages/history_item.py +1 -2
  4698. office365/teams/chats/messages/hosted_content.py +8 -0
  4699. office365/teams/chats/messages/info.py +11 -16
  4700. office365/teams/chats/messages/mention.py +1 -2
  4701. office365/teams/chats/messages/mentioned_identity_set.py +1 -2
  4702. office365/teams/chats/messages/message.py +24 -13
  4703. office365/teams/chats/messages/policy_violation.py +1 -2
  4704. office365/teams/chats/messages/policy_violation_policy_tip.py +1 -2
  4705. office365/teams/chats/messages/reaction.py +1 -2
  4706. office365/teams/chats/messages/reaction_identity_set.py +0 -3
  4707. office365/teams/chats/pinned_chat_message_info.py +2 -0
  4708. office365/teams/chats/targeted_chat_message.py +3 -7
  4709. office365/teams/class_settings.py +0 -3
  4710. office365/teams/collection.py +24 -8
  4711. office365/teams/created_event_message_detail.py +1 -2
  4712. office365/teams/deleted.py +2 -0
  4713. office365/teams/description_updated_event_message_detail.py +1 -2
  4714. office365/teams/fun_settings.py +0 -3
  4715. office365/teams/guest_settings.py +0 -3
  4716. office365/teams/info.py +4 -0
  4717. office365/teams/joining_disabled_event_message_detail.py +1 -2
  4718. office365/teams/joining_enabled_event_message_detail.py +1 -2
  4719. office365/teams/licensing_details.py +0 -3
  4720. office365/teams/members/aad_user_conversation.py +7 -2
  4721. office365/teams/members/conversation.py +4 -0
  4722. office365/teams/members/conversation_collection.py +6 -0
  4723. office365/teams/members/members_added_event_message_detail.py +1 -2
  4724. office365/teams/members/members_deleted_event_message_detail.py +1 -2
  4725. office365/teams/members/members_joined_event_message_detail.py +1 -2
  4726. office365/teams/members/members_left_event_message_detail.py +1 -2
  4727. office365/teams/members/open_complex_dictionary_type.py +0 -3
  4728. office365/teams/members/settings.py +0 -3
  4729. office365/teams/members_notification_recipient.py +0 -3
  4730. office365/teams/messaging_settings.py +0 -3
  4731. office365/teams/operations/async_operation.py +60 -91
  4732. office365/teams/policy_assignment.py +2 -0
  4733. office365/teams/policy_identifier_detail.py +3 -0
  4734. office365/teams/quotas.py +110 -0
  4735. office365/teams/renamed_event_message_detail.py +1 -2
  4736. office365/teams/schedule/change_request.py +23 -11
  4737. office365/teams/schedule/change_tracked_entity.py +7 -0
  4738. office365/teams/schedule/day_note.py +6 -8
  4739. office365/teams/schedule/entity.py +1 -2
  4740. office365/teams/schedule/groups/group.py +5 -0
  4741. office365/teams/schedule/open_shift.py +7 -8
  4742. office365/teams/schedule/schedule.py +27 -14
  4743. office365/teams/schedule/shifts/availability.py +1 -2
  4744. office365/teams/schedule/shifts/item.py +1 -2
  4745. office365/teams/schedule/shifts/offer/request.py +5 -2
  4746. office365/teams/schedule/shifts/open/change_request.py +2 -0
  4747. office365/teams/schedule/shifts/preferences.py +2 -0
  4748. office365/teams/schedule/shifts/shift.py +3 -0
  4749. office365/teams/schedule/swap_shifts_change_request.py +2 -0
  4750. office365/teams/schedule/time_card.py +16 -23
  4751. office365/teams/schedule/time_card_break.py +1 -2
  4752. office365/teams/schedule/time_card_entry.py +1 -2
  4753. office365/teams/schedule/time_card_event.py +1 -2
  4754. office365/teams/schedule/time_clock_settings.py +1 -2
  4755. office365/teams/schedule/time_off.py +7 -8
  4756. office365/teams/schedule/time_off_details.py +0 -3
  4757. office365/teams/schedule/time_off_item.py +0 -3
  4758. office365/teams/schedule/time_off_reason.py +7 -8
  4759. office365/teams/schedule/time_off_request.py +4 -0
  4760. office365/teams/summary.py +0 -3
  4761. office365/teams/tabs/configuration.py +0 -3
  4762. office365/teams/tabs/tab.py +4 -1
  4763. office365/teams/tabs/updated_event_message_detail.py +1 -2
  4764. office365/teams/team.py +66 -15
  4765. office365/teams/teamwork/activity_topic.py +0 -3
  4766. office365/teams/teamwork/application_identity.py +0 -3
  4767. office365/teams/teamwork/conversation_identity.py +0 -3
  4768. office365/teams/teamwork/meeting_note.py +1 -2
  4769. office365/teams/teamwork/meeting_note_subpoint.py +0 -3
  4770. office365/teams/teamwork/meeting_policy_updated_event_message_detail.py +1 -2
  4771. office365/teams/teamwork/online_meeting_info.py +1 -2
  4772. office365/teams/teamwork/shiftmanagement/user_solution_root.py +2 -0
  4773. office365/teams/teamwork/tags/member.py +4 -0
  4774. office365/teams/teamwork/tags/tag.py +2 -0
  4775. office365/teams/teamwork/user.py +10 -2
  4776. office365/teams/telephone_number_long_running_operation_details.py +0 -3
  4777. office365/teams/unarchived_event_message_detail.py +1 -2
  4778. office365/teams/viva/community.py +8 -3
  4779. office365/teams/viva/employee_experience.py +5 -2
  4780. office365/teams/viva/employee_experience_user.py +3 -0
  4781. office365/teams/viva/engagement/conversation.py +5 -0
  4782. office365/teams/viva/engagement/conversation_message.py +14 -11
  4783. office365/teams/viva/engagement/conversation_message_reaction.py +7 -15
  4784. office365/teams/viva/learning/content.py +23 -7
  4785. office365/teams/viva/learning/courses/activity.py +10 -6
  4786. office365/teams/viva/learning/courses/self_initiated.py +2 -0
  4787. office365/teams/viva/learning/provider.py +9 -1
  4788. office365/teams/work.py +7 -0
  4789. office365/teams/workforce_integration.py +12 -24
  4790. office365/teams/workforce_integration_encryption.py +0 -3
  4791. office365/todo/attachments/base.py +5 -0
  4792. office365/todo/attachments/collection.py +1 -1
  4793. office365/todo/attachments/info.py +0 -2
  4794. office365/todo/attachments/session.py +15 -5
  4795. office365/todo/checklist_item.py +1 -0
  4796. office365/todo/linked_resource.py +5 -0
  4797. office365/todo/tasks/collection.py +9 -0
  4798. office365/todo/tasks/lists/collection.py +5 -0
  4799. office365/todo/tasks/lists/list.py +27 -2
  4800. office365/todo/tasks/task.py +31 -9
  4801. office365/todo/todo.py +2 -0
  4802. {office365_rest_python_client-3.3.0.dist-info → office365_rest_python_client-3.3.1.dist-info}/METADATA +3 -3
  4803. {office365_rest_python_client-3.3.0.dist-info → office365_rest_python_client-3.3.1.dist-info}/RECORD +4804 -4634
  4804. office365/directory/permissions/require_permission.py +0 -144
  4805. office365/directory/permissions/resource_name.py +0 -33
  4806. office365/migration/teams/_extract.py +0 -109
  4807. office365/migration/teams/models.py +0 -74
  4808. office365/runtime/odata/type.py +0 -117
  4809. office365/sharepoint/internal/paths/web.py +0 -24
  4810. office365/sharepoint/workflow/task.py +0 -430
  4811. {office365_rest_python_client-3.3.0.dist-info → office365_rest_python_client-3.3.1.dist-info}/WHEEL +0 -0
@@ -10,16 +10,14 @@ Lazy imports keep the migration core client-agnostic.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- import hashlib
14
13
  import io
15
- import json
16
- from collections.abc import Callable
17
- from datetime import datetime, timezone
14
+ from collections.abc import Callable, Iterable
15
+ from enum import Enum
18
16
  from typing import TYPE_CHECKING, Any, cast
19
17
 
20
18
  from typing_extensions import TypeAlias
21
19
 
22
- from office365.migration.adapters import MigrationProgress
20
+ from office365.migration.adapters import MigrationProgress, checksum
23
21
  from office365.migration.base import (
24
22
  MigrationItem,
25
23
  PermissionEntry,
@@ -27,24 +25,47 @@ from office365.migration.base import (
27
25
  conflict_to_on_conflict,
28
26
  normalize_puid,
29
27
  )
30
- from office365.migration.sharepoint.structure import normalize_guid
28
+ from office365.migration.sharepoint.structure import ListStructure, provision_list_structure
31
29
  from office365.migration.sharepoint.transfer import Failure
32
30
  from office365.runtime.converters.records import records_from_items
33
- from office365.runtime.converters.scalars import iso_or_none, parse_datetime, parse_int
31
+ from office365.runtime.converters.scalars import (
32
+ iso_or_none,
33
+ iso_z,
34
+ normalize_guid,
35
+ parse_datetime,
36
+ parse_int,
37
+ wall_clock_text,
38
+ )
39
+ from office365.runtime.converters.value import values_of
34
40
  from office365.runtime.limits import DEFAULT_BATCH_SIZE
41
+ from office365.runtime.odata.comparable import digest
35
42
  from office365.runtime.operations import emit_progress
43
+ from office365.runtime.schema import TypeSchema
44
+ from office365.runtime.types.odata_property import AUTHORSHIP, MODERATION, PERMISSIONS
45
+ from office365.sharepoint.exceptions import SPFieldValidationException
36
46
  from office365.sharepoint.fields.builtin_field_name import SYSTEM_FIELD_NAMES
37
- from office365.sharepoint.fields.user_value import FieldUserValue
47
+ from office365.sharepoint.fields.lookup import FieldLookup
48
+ from office365.sharepoint.listitems.listitem import ListItem
49
+ from office365.sharepoint.listitems.moderation_status import SPModerationStatusType
50
+ from office365.sharepoint.permissions import SiteLevel, site_access
51
+ from office365.sharepoint.permissions.securable_object import SecurableObject
38
52
  from office365.sharepoint.principal.type import PrincipalType
53
+ from office365.sharepoint.taxonomy.field import TaxonomyField
54
+ from office365.sharepoint.taxonomy.field_value import TaxonomyFieldValue
55
+ from office365.sharepoint.taxonomy.field_value_col import TaxonomyFieldValueCollection
39
56
 
40
57
  if TYPE_CHECKING:
41
58
  from office365.migration.map import ContentTypeMap
59
+ from office365.sharepoint.fields.field import Field
42
60
  from office365.sharepoint.files.file import File
43
61
  from office365.sharepoint.folders.folder import Folder
44
62
  from office365.sharepoint.lists.list import List as SPList
45
63
  from office365.sharepoint.permissions.roles.definitions.definition import RoleDefinition
64
+ from office365.sharepoint.principal.users.user import User
65
+ from office365.sharepoint.webs.web import Web
46
66
 
47
- _TAXONOMY_FIELD_TYPES = {"TaxonomyFieldType", "TaxonomyFieldTypeMulti"}
67
+ _LIST_ITEM = TypeSchema.of(ListItem)
68
+ _SECURABLE = TypeSchema.of(SecurableObject)
48
69
 
49
70
 
50
71
  def _cloned_context(obj):
@@ -78,127 +99,33 @@ _TypedColumns: TypeAlias = (
78
99
  "tuple[dict[str, str], set[str], dict[str, str], set[str], dict[str, tuple[bool, str | None]], set[str]]"
79
100
  )
80
101
 
81
- # Always-projected system metadata (reliable author/editor identity).
82
- _METADATA_SELECT = ["AuthorId", "EditorId", "HasUniqueRoleAssignments"]
83
- #: Projected system metadata that is read-only and must not be written back.
84
- _NON_WRITABLE_SELECT = frozenset({"HasUniqueRoleAssignments"})
85
-
86
- #: Navigation properties a ``*`` read returns that carry no scalar content and can
87
- #: never be written back; they are dropped silently. A genuine typed value we
88
- #: cannot remap (a lookup/person column) is still surfaced as a warning.
89
- _NAVIGATION_SELECT = frozenset(
90
- {
91
- "ParentList",
92
- "ContentType",
93
- "Folder",
94
- "File",
95
- "FieldValuesAsHtml",
96
- "FieldValuesAsText",
97
- "FieldValuesForEdit",
98
- }
99
- )
102
+ #: Always-projected system metadata: the author/editor ids an item is restored from and
103
+ #: the unique-ACL flag. ``*`` omits them, so they are asked for by the role they play.
104
+ _METADATA_SELECT = [*_LIST_ITEM.columns_of_facet(AUTHORSHIP), *_LIST_ITEM.columns_of_facet(PERMISSIONS)]
100
105
 
101
106
  #: Marker column added to a migrated list recording each item's source id. It makes
102
107
  #: a re-run idempotent and lets post-run verification pair source and target items.
103
108
  DEFAULT_LIST_IDENTITY_FIELD = "MigrationSourceId"
104
- # Authorship has its own fidelity path (``apply_authorship``); the built-in Author/
105
- # Editor companion columns are neither content nor Person values to remap.
106
- _PERSON_EXCLUDED = frozenset({"Author", "Editor"})
107
-
108
- #: Content-approval state: record key (OData escaped form) -> ``ValidateUpdateListItem``
109
- #: field name. It is ordinary record content, but a *system update* re-approves the
110
- #: item, so every metadata write that restores timestamps/authorship would silently
111
- #: discard it; the captured state is therefore folded into that same write
112
- #: (live-probed: both fields are accepted, and no version is created).
113
- _APPROVAL_FIELDS = {
114
- "OData__ModerationStatus": "_ModerationStatus",
115
- "OData__ModerationComments": "_ModerationComments",
116
- }
117
-
118
- #: Approval status of an approved item (0 = draft/pending, 1 = rejected, 2 = approved).
119
- #: A freshly uploaded document is approved, so only the other states are worth writing.
120
- _APPROVED_STATUS = "2"
109
+ # Authorship has its own fidelity path (``apply_authorship``); the ``Author``/``Editor``
110
+ # columns are the payload companions of the authorship ids, so they are neither content
111
+ # nor Person values to remap.
112
+ _PERSON_EXCLUDED = frozenset(
113
+ name[: -len("Id")] for name in _LIST_ITEM.columns_of_facet(AUTHORSHIP) if name.endswith("Id")
114
+ )
121
115
 
122
116
  #: Moderation columns of a list item. They only exist on a list whose
123
117
  #: ``EnableModeration`` is on, so selecting them unconditionally fails outright.
124
- _MODERATION_FIELDS = ("OData__ModerationStatus", "OData__ModerationComments")
118
+ #: They are ordinary record content: a list item takes a moderation change in the same
119
+ #: system update as its timestamps (a document refuses it — see ``apply_item_state``),
120
+ #: so captured state rides in that one write and no version is created.
121
+ _MODERATION_FIELDS = _LIST_ITEM.columns_of_facet(MODERATION)
122
+
123
+ #: The moderation column carrying the approval status; its sibling carries the comment.
124
+ _MODERATION_STATUS = _LIST_ITEM.name_of("moderation_status")
125
125
 
126
126
  #: How many paths a per-run warning names before it summarizes the rest.
127
127
  _WARNING_SAMPLE = 5
128
128
 
129
- #: Multi-value typed columns. Their ``<name>Id`` companion is a collection of ids
130
- #: that a ``*`` projection omits (LookupMulti entirely; UserMulti unreliably), so the
131
- #: source selects them explicitly and the target writes ``{"results": [...]}``.
132
- _MULTI_VALUE_TYPES = frozenset({"LookupMulti", "UserMulti"})
133
-
134
- #: Typed columns whose values are remapped (lookup item ids, person logins).
135
- _TYPED_VALUE_TYPES = frozenset({"Lookup", "LookupMulti", "User", "UserMulti"})
136
-
137
- #: Properties the source column scans need. Selecting them explicitly keeps the read
138
- #: independent of whatever ``$select`` a previous caller left on the shared
139
- #: ``fields`` collection — ``List.fields`` survives a ``capture_list_structure``
140
- #: read (which selects a different, narrower set), and a field payload that omits
141
- #: ``AllowMultipleValues`` makes a multi-value column look single-value.
142
- _SOURCE_FIELD_SELECT = [
143
- "Id",
144
- "InternalName",
145
- "TypeAsString",
146
- "SchemaXml",
147
- "Hidden",
148
- "ReadOnlyField",
149
- "TextField",
150
- "AllowMultipleValues",
151
- ]
152
-
153
-
154
- #: Choice column types; a multi-choice column stores a collection of strings.
155
- _CHOICE_TYPES = frozenset({"Choice", "MultiChoice"})
156
-
157
- #: Column types whose value is a small REST object instead of a scalar.
158
- _VALUE_OBJECT_TYPES = frozenset({"URL"})
159
-
160
-
161
- def _allows_multiple_values(field: Any) -> bool:
162
- """Whether a Lookup/Person column holds many values.
163
-
164
- ``TypeAsString`` is not authoritative here. A column created from a
165
- ``Type="Lookup" Mult="TRUE"`` (or ``Type="User" Mult="TRUE"``) schema keeps that
166
- spelling, so SharePoint reports the *single-value* type and only
167
- ``AllowMultipleValues`` tells the truth (live-verified). Classifying such a
168
- column as single-value left its collection of ids unremapped: a multi-lookup
169
- kept source item ids and a multi-person kept source site-user ids on the target,
170
- and verification could not see the difference.
171
- """
172
- if getattr(field, "type_as_string", None) in _MULTI_VALUE_TYPES:
173
- return True
174
- return field.properties.get("AllowMultipleValues") is True
175
-
176
-
177
- def _is_multi_choice_column(field: Any) -> bool:
178
- """Whether a Choice column stores a collection of values.
179
-
180
- ``TypeAsString == "MultiChoice"`` is the only reliable signal. Live-probed: a
181
- column created from a ``Type="Choice" Mult="TRUE"`` schema reads back as
182
- ``"Choice"``, stores one value in a single ``nvarchar`` slot (a scalar write
183
- round-trips, an array is rejected) and does not project ``AllowMultipleValues``
184
- at all — its schema ``Mult`` flag is misleading, so it is deliberately not used.
185
- """
186
- field_type = getattr(field, "type_as_string", None)
187
- if field_type == "MultiChoice":
188
- return True
189
- return field_type in _CHOICE_TYPES and _allows_multiple_values(field)
190
-
191
-
192
- def _is_value_object_column(field: Any) -> bool:
193
- """Whether a column holds a REST value object rather than a scalar.
194
-
195
- A Hyperlink column is the common case: a read returns
196
- ``{"Url": ..., "Description": ...}``, which a scalar-only record projection
197
- dropped (a plain string is accepted on write but then makes every subsequent
198
- *read* of the column fail, live-probed).
199
- """
200
- return getattr(field, "type_as_string", None) in _VALUE_OBJECT_TYPES
201
-
202
129
 
203
130
  def _scalar_mapping(value: Any) -> dict | None:
204
131
  """A value object as a plain mapping with scalar members, or ``None``.
@@ -214,35 +141,14 @@ def _scalar_mapping(value: Any) -> dict | None:
214
141
  return dict(value)
215
142
 
216
143
 
217
- #: Record columns excluded from the content checksum: server-assigned identity
218
- #: (``Id``/``GUID``), facets verified separately (timestamps, authorship,
219
- #: permissions), values the target remaps (``ContentTypeId``), and bookkeeping
220
- #: (version label, server-derived embed URLs, the navigation ``ParentList``). What
221
- #: remains is the item's *content* columns, which a faithful copy preserves.
222
- _CONTENT_EXCLUDED = frozenset(
223
- {
224
- "Id",
225
- "ID",
226
- "GUID",
227
- "FileSystemObjectType",
228
- "Created",
229
- "Modified",
230
- "AuthorId",
231
- "EditorId",
232
- "HasUniqueRoleAssignments",
233
- "ContentTypeId",
234
- "OData__UIVersionString",
235
- "_UIVersionString",
236
- "ServerRedirectedEmbedUri",
237
- "ServerRedirectedEmbedUrl",
238
- "ParentList",
239
- "AttachmentFiles",
240
- }
241
- )
242
-
243
- #: Field types whose value is server-derived: a computed column (a link filename, a
244
- #: doc icon) is a view of the item's identity, not metadata a folder carries.
245
- _FOLDER_COMPUTED_TYPES = frozenset({"Attachments", "Computed", "File", "WorkflowStatus"})
144
+ #: Record columns a faithful copy does not compare: what ``ListItem`` declares
145
+ #: server-assigned or reachable by ``$expand``. What remains is the item's *content*,
146
+ #: which a faithful copy preserves.
147
+ #:
148
+ #: A deny-list, not ``ListItem._schema.content_columns``: a record carries the site columns
149
+ #: the tenant defines, which the CSDL does not declare, and a set built from declared names
150
+ #: would drop exactly the columns a faithful copy exists to carry.
151
+ _CONTENT_EXCLUDED = frozenset(ListItem._schema.readonly) | frozenset(ListItem._schema.navigations)
246
152
 
247
153
 
248
154
  def _folder_value_columns(fields: list[Any]) -> set[str]:
@@ -261,26 +167,18 @@ def _folder_value_columns(fields: list[Any]) -> set[str]:
261
167
  and not field.internal_name.startswith("_")
262
168
  and not field.hidden
263
169
  and not field.read_only_field
264
- and field.type_as_string not in _FOLDER_COMPUTED_TYPES
170
+ and not field.field_type_kind.is_server_assigned
265
171
  and field.internal_name not in _FOLDER_RECORD_EXCLUDED
266
172
  }
267
173
 
268
174
 
269
- #: Folder (document library) record columns that never travel to the target: the
270
- #: server-assigned identity and path columns, system metadata (restored by the
271
- #: fidelity steps), and the folder-specific bookkeeping a read projects. A
272
- #: ``ContentTypeId`` is kept — a document set's content type is part of what makes
273
- #: the folder what it is.
274
- _FOLDER_RECORD_EXCLUDED = (_CONTENT_EXCLUDED - {"ContentTypeId"}) | {
275
- "FileRef",
276
- "FileDirRef",
277
- "FileLeafRef",
278
- "FSObjType",
279
- "UniqueId",
280
- "SortBehavior",
281
- "SMTotalFileStreamSize",
282
- "SMTotalFileCount",
283
- }
175
+ #: What a folder record never travels to the target with, or never compares by: the
176
+ #: columns the model declares server-assigned or as navigations -- minus the content
177
+ #: type, because a document set's content type is part of what makes the folder what it
178
+ #: is. A library's sort/stream bookkeeping columns are hidden read-only ones the field
179
+ #: scan already skips, and ``FileLeafRef`` is a ``FieldType.File`` column the type
180
+ #: declares server-assigned, so neither needs naming here.
181
+ _FOLDER_RECORD_EXCLUDED = _CONTENT_EXCLUDED - {"ContentTypeId"}
284
182
 
285
183
 
286
184
  def _content_checksum(record: dict, extra_excluded: "frozenset[str]" = frozenset()) -> str:
@@ -303,8 +201,7 @@ def _content_checksum(record: dict, extra_excluded: "frozenset[str]" = frozenset
303
201
  mapping = _scalar_mapping(value)
304
202
  if mapping is not None:
305
203
  content[key] = mapping
306
- payload = json.dumps(content, sort_keys=True, default=str)
307
- return hashlib.md5(payload.encode("utf-8")).hexdigest()
204
+ return digest(content)
308
205
 
309
206
 
310
207
  def _folder_record_values(record: dict) -> dict:
@@ -320,81 +217,29 @@ def _folder_record_values(record: dict) -> dict:
320
217
  }
321
218
 
322
219
 
323
- def _id_list(value: Any) -> list[Any] | None:
324
- """Normalize a multi-value ``...Id`` collection into a plain list of ids.
325
-
326
- A live read returns the collection as a positional mapping (``{0: 1, 1: 2}``);
327
- a payload this client built may hold ``{"results": [...]}``. Both reduce to the
328
- same list, which is the form the checksum and the remap work with.
329
- """
330
- if isinstance(value, dict):
331
- if "results" in value:
332
- value = value["results"]
333
- else:
334
- try:
335
- return [value[i] for i in range(len(value))]
336
- except (KeyError, TypeError):
337
- return list(value.values())
338
- if isinstance(value, (list, tuple)):
339
- return list(value)
340
- return None
341
-
342
-
343
- def _multi_values(value: Any) -> list[Any] | None:
344
- """A multi-value cell as a plain list of its values, or ``None`` when empty.
345
-
346
- Accepts every shape a live read or a built payload produces: a positional
347
- mapping (``{0: "red", 1: "green"}``), a ``{"results": [...]}`` wrapper, a bare
348
- list, and — because a collection cell may hold exactly one selection — a bare
349
- scalar.
350
- """
351
- if value is None:
352
- return None
353
- if isinstance(value, (str, int, float, bool)):
354
- return [value]
355
- return _id_list(value)
220
+ def _typed_keys(names: Iterable[str]) -> set[str]:
221
+ """The companions a Lookup/Person column's value is carried in, for each column."""
222
+ return {key for name in names for key in (ListItem.value_column(name), ListItem.string_value_column(name))}
356
223
 
357
224
 
358
225
  def _taxonomy_terms(value: Any) -> list[dict[str, str]]:
359
- """Normalize a taxonomy value to portable ``{"TermGuid": ...}`` terms.
226
+ """A taxonomy cell as portable ``{"TermGuid": ...}`` terms.
360
227
 
361
- A live read shapes a single value as a dict (``{"Label", "TermGuid", "WssId"}``)
362
- and a multi-value one as a positional mapping (``{0: {...}, 1: {...}}``); a
363
- payload this client built holds a bare list. All reduce to a list of terms.
364
228
  Only ``TermGuid`` is carried: a per-site ``WssId`` is meaningless elsewhere and
365
229
  ``Label`` is not authoritative (a read may return the WssId string, and the
366
230
  server resolves a write by term id regardless of the label).
367
231
  """
368
- if value is None:
369
- return []
370
- if isinstance(value, dict):
371
- if "TermGuid" in value:
372
- items: list[Any] = [value]
373
- elif "results" in value and isinstance(value["results"], (list, tuple)):
374
- items = list(value["results"])
375
- else:
376
- try:
377
- items = [value[i] for i in range(len(value))]
378
- except (KeyError, TypeError):
379
- items = list(value.values())
380
- elif isinstance(value, (list, tuple)):
381
- items = list(value)
382
- else:
383
- return []
384
232
  terms: list[dict[str, str]] = []
385
- for item in items:
386
- if isinstance(item, dict):
387
- guid = item.get("TermGuid")
388
- else:
389
- guid = getattr(item, "TermGuid", None)
233
+ for item in values_of(value) or []:
234
+ guid = item.get("TermGuid") if isinstance(item, dict) else getattr(item, "TermGuid", None)
390
235
  if guid:
391
236
  terms.append({"TermGuid": str(guid)})
392
237
  return terms
393
238
 
394
239
 
395
240
  def _is_taxonomy_value(value: Any) -> bool:
396
- """Whether a projected value is a taxonomy term (single dict or multi mapping/list)."""
397
- return isinstance(value, (dict, list, tuple)) and bool(_taxonomy_terms(value))
241
+ """Whether a projected value is a taxonomy term (single value or a collection)."""
242
+ return bool(_taxonomy_terms(value))
398
243
 
399
244
 
400
245
  def _taxonomy_guids(value: Any) -> list[str]:
@@ -417,50 +262,15 @@ def _canonicalize_taxonomy_record(record: dict) -> dict:
417
262
  return canonical
418
263
 
419
264
 
420
- def _collection_payload(ids: list) -> dict:
421
- """The JSON shape SharePoint accepts when *creating* a multi-value column.
265
+ def _collection_payload(values: list) -> dict:
266
+ """The JSON shape SharePoint accepts for a multi-value column.
422
267
 
423
- Live-probed: a bare array is rejected on create
424
- (``InvalidClientQueryException``: "a 'PrimitiveValue' or 'StartObject' node was
425
- expected") while ``{"results": [...]}`` is accepted. A MERGE *update* is the
426
- opposite — it accepts the bare array and rejects ``{"results": [...]}`` — so
427
- only the create path goes through this helper.
268
+ Live-probed on both writes and every multi-value kind (Choice, Lookup, User,
269
+ LookupMulti, UserMulti): a bare array is refused on create *and* on MERGE
270
+ (``InvalidClientQueryException``: a ``StartArray`` where a property value was
271
+ read) while ``{"results": [...]}`` is accepted by both.
428
272
  """
429
- return {"results": ids}
430
-
431
-
432
- def _sp_utc_timestamp(value: str | None) -> str | None:
433
- """Normalize a timestamp to the UTC form a *list item* honors.
434
-
435
- Live-probed: ``ValidateUpdateListItem`` on a plain list item parses an
436
- ISO-8601 value with a trailing ``Z`` as UTC (and ``datesInUTC=True`` keeps it
437
- that way), so this form round-trips the exact instant.
438
- """
439
- if not value:
440
- return None
441
- parsed = parse_datetime(value)
442
- if parsed is None:
443
- return value
444
- if parsed.tzinfo is None:
445
- parsed = parsed.replace(tzinfo=timezone.utc)
446
- return parsed.astimezone(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
447
-
448
-
449
- def _sp_local_timestamp(value: datetime | str | None) -> str | None:
450
- """Format a *web-local* value as the date form a document item accepts.
451
-
452
- Live-probed: document-library items ignore ``datesInUTC`` and parse every date
453
- string in the web's locale, rejecting a trailing ``Z`` (``...must specify a
454
- valid date within the range of 1/1/1900 and 12/31/8900.``). The space-separated
455
- ``YYYY-MM-DD HH:MM:SS`` form is accepted and interpreted as local wall-clock,
456
- so callers must pass the instant already converted to web-local time (see
457
- ``SharePointLibraryTarget._local_timestamp``).
458
- """
459
- if value is None:
460
- return None
461
- if isinstance(value, datetime):
462
- return value.strftime("%Y-%m-%d %H:%M:%S")
463
- return str(value)
273
+ return {"results": values}
464
274
 
465
275
 
466
276
  def _report_rejected_fields(result, warnings: list[str], label: str) -> None:
@@ -477,34 +287,40 @@ def _report_rejected_fields(result, warnings: list[str], label: str) -> None:
477
287
  warnings.append(f"{label}: {value.FieldName} rejected ({value.ErrorMessage})")
478
288
 
479
289
 
480
- def _moderation_state(properties: dict) -> dict:
481
- """The approval fields of a list item, in ``ValidateUpdateListItem`` form.
290
+ def _wire_value(value: Any) -> Any:
291
+ """A value as the wire spells it: a declared enum is the number it carries."""
292
+ return value.value if isinstance(value, Enum) else value
293
+
294
+
295
+ def _web_local_texts(web: "Web", *values: Any) -> list[str | None]:
296
+ """The wall-clock texts a document's item form parses, one per instant given.
482
297
 
483
- Only present ones are returned: an empty ``_ModerationComments`` normalizes to
484
- ``None`` server-side, so a blank comment is not carried.
298
+ A document's ``ValidateUpdateListItem`` ignores ``datesInUTC``, parses the web's
299
+ locale and refuses a trailing ``Z`` (live-verified on a file and on a folder), so an
300
+ instant has to reach it as the web's own wall clock. That conversion runs server-side
301
+ (``TimeZone.UTCToLocalTime``) so DST is right, and one request converts every value.
302
+ A value that is not an instant is passed on as given, so the service rejection names
303
+ what the caller held instead of this layer having dropped it.
485
304
  """
486
- status = properties.get("OData__ModerationStatus")
487
- state: dict = {}
488
- if status is not None:
489
- state["_ModerationStatus"] = str(status)
490
- comments = properties.get("OData__ModerationComments")
491
- if comments:
492
- state["_ModerationComments"] = str(comments)
493
- return state
494
-
495
-
496
- def _version_sort_key(label: str) -> tuple[int, ...]:
497
- """Sort key for a version label like ``"2.0"`` (numeric parts, non-numeric last)."""
498
- try:
499
- return tuple(int(part) for part in str(label).split("."))
500
- except ValueError:
501
- return (0,)
305
+ zone = web.regional_settings.time_zone
306
+ instants = {index: parse_datetime(iso_z(value)) for index, value in enumerate(values) if value}
307
+ converted = {index: zone.utc_to_local_time(instant) for index, instant in instants.items() if instant is not None}
308
+ if converted:
309
+ web.context.execute_query()
310
+ return [
311
+ wall_clock_text(converted[index].value) if index in converted else (str(value) if value else None)
312
+ for index, value in enumerate(values)
313
+ ]
314
+
502
315
 
316
+ def _moderation_state(properties: dict) -> dict:
317
+ """The approval fields a list item carries; a blank comment is not one of them.
318
+
319
+ A hydrated model hands out enum members (``SPModerationStatusType``); the state is a
320
+ payload to write back, so it carries the numbers the column stores.
321
+ """
322
+ return {name: _wire_value(properties[name]) for name in _MODERATION_FIELDS if properties.get(name) not in (None, "")}
503
323
 
504
- #: Library-relative paths SharePoint owns and recreates on the target (its forms
505
- #: folder and the folder rendering file). Migrating them collides server-side and
506
- #: clobbers system pages client-side, so the source adapter skips them.
507
- _LIBRARY_SYSTEM_PATHS = ("Forms", "desktop.ini")
508
324
 
509
325
  #: SiteAssets is the one library that also holds per-site infrastructure — the
510
326
  #: site icon and the auto-provisioned OneNote folder.
@@ -514,10 +330,8 @@ _SITE_ASSETS_URL_SUFFIX = "/SiteAssets"
514
330
  def _site_assets_scaffolding(folder) -> tuple[str, ...]:
515
331
  """SiteAssets-only SharePoint-owned entries for this web (empty otherwise).
516
332
 
517
- Every modern site provisions ``SiteAssets/<web title> Notebook``; migrating
518
- it (or reporting it) yields a phantom missing/extra pair because the target's
519
- folder carries the *target* web's name. The site icon is site branding whose
520
- bytes are meaningless on another site. Both are skipped on each side.
333
+ The notebook carries the *web's* title and the site icon is site branding, so both
334
+ differ on the target; each side skips its own.
521
335
  """
522
336
  url = (folder.server_relative_url or "").rstrip("/")
523
337
  if not url.endswith(_SITE_ASSETS_URL_SUFFIX):
@@ -532,103 +346,65 @@ def _site_assets_scaffolding(folder) -> tuple[str, ...]:
532
346
  return tuple(names)
533
347
 
534
348
 
535
- def _is_system_path(rel: str, extra: tuple[str, ...] = ()) -> bool:
536
- """Whether a library-relative path is SharePoint-owned scaffolding, not user content."""
537
- entries = (*_LIBRARY_SYSTEM_PATHS, *extra)
538
- return any(rel == entry or rel.startswith(entry + "/") for entry in entries)
539
-
540
-
541
- def is_taxonomy_validation(exc: Exception) -> bool:
542
- """True when a request failed because a Managed Metadata (taxonomy) column
543
- references a term set / term that no longer exists.
544
-
545
- SharePoint raises ``SPFieldValidationException`` ("the given guid does not
546
- exist in the term store") while composing the item payload — the exact case
547
- that makes a plain list-items read fail.
548
- """
549
- text = f"{getattr(exc, 'code', '') or ''} {getattr(exc, 'message', '') or ''} {exc}".lower()
550
- return "spfieldvalidationexception" in text and "term store" in text
551
-
552
-
553
- def taxonomy_internal_names(fields) -> list[str]:
554
- """Internal names of Managed Metadata columns in a loaded field set."""
555
- names: list[str] = []
556
- for field in fields:
557
- type_name = getattr(field, "type_as_string", None) or ""
558
- schema = getattr(field, "schema_xml", None) or ""
559
- if type_name in _TAXONOMY_FIELD_TYPES or "TermSetId=" in schema:
560
- internal_name = getattr(field, "internal_name", None)
561
- if internal_name:
562
- names.append(internal_name)
563
- return list(dict.fromkeys(names))
564
-
565
-
566
- def _perm_mask(role_definition: Any) -> str | None:
567
- """The decimal ``PermMask`` of a role definition (``BasePermissions`` High/Low)."""
568
- base = getattr(role_definition, "base_permissions", None)
569
- if base is None:
570
- return None
571
- try:
572
- return str((int(base.High) << 32) | int(base.Low))
573
- except (TypeError, ValueError):
574
- return None
349
+ # How far a group's owner chain is followed (a group owned by a group owned by a
350
+ # user is the normal depth for the default site groups).
351
+ _MAX_GROUP_OWNER_DEPTH = 4
575
352
 
576
353
 
577
- def _is_user_principal(member: Any) -> bool:
578
- """Whether a role-assignment member is a user (not a group)."""
354
+ def _principal_kind(member: Any) -> str | None:
355
+ """What ``UserGroup.xml`` can express for this role-assignment member: a user by PUID
356
+ (``"user"``) or a site group by title (``"group"``); a distribution or security group
357
+ and an unprojected ``PrincipalType`` are ``None``."""
579
358
  ptype = getattr(member, "principal_type", None)
580
- if ptype is None:
581
- return False
582
359
  if ptype == PrincipalType.User:
583
- return True
584
- # ``PrincipalType`` is a plain ``Enum`` (not ``IntEnum``); accept a raw int too.
585
- return getattr(ptype, "value", ptype) == PrincipalType.User.value
360
+ return "user"
361
+ if ptype == PrincipalType.SharePointGroup:
362
+ return "group"
363
+ return None
364
+
586
365
 
366
+ #: The flag that says whether a securable object owns its ACL, spelled by its declaration.
367
+ _UNIQUE_PERMISSIONS = _SECURABLE.name_of("has_unique_role_assignments")
587
368
 
588
- def _is_system_principal(user: Any) -> bool:
589
- """Whether a resolved user is a tenant system/app account.
590
369
 
591
- The Migration API cannot set ``Author``/``Editor`` to a system account, and a
592
- ``ValidateUpdateListItem`` batch containing one is rejected wholesale — which
593
- would silently discard the ``Created``/``Modified`` restoration we send in the
594
- same call. Items created by the migration app itself are authored by such an
595
- account, so setting it is a no-op anyway; skipping it keeps the timestamp write
596
- intact.
370
+ def _principal_of(user: "User", key: int) -> Principal:
371
+ """A site user as the plan spells a principal, read from the model's own fields.
372
+
373
+ The PUID is ``UserInfo.UserId.NameId`` — one member of one nested value — so the
374
+ model answers it (`UserIdInfo.name_id`), not a wire name spelled here.
597
375
  """
598
- login = (getattr(user, "login_name", None) or "").lower()
599
- return "app@sharepoint" in login or "sharepoint\\system" in login
376
+ return Principal(
377
+ login_name=user.login_name or "",
378
+ system_id=normalize_puid(user.user_id.name_id),
379
+ display_name=user.title,
380
+ email=user.email,
381
+ user_id=key,
382
+ )
600
383
 
601
384
 
602
385
  def _has_unique_role_assignments(securable, *, refresh: bool = False) -> bool:
603
386
  """Whether a securable has unique (broken-inheritance) role assignments.
604
387
 
605
- SharePoint REST returns *inherited* role assignments too, so reading them
606
- verbatim would break inheritance on every item and replicate the parent ACL.
607
- Only items with unique assignments are read/applied (and compared by the
608
- verifier); inherited items stay inherited on the target.
609
-
610
- A plain entity read does not return the flag, so an object loaded *before* its
611
- ACL changed keeps a stale value. The target side passes ``refresh=True``: this
612
- value decides whether an ACL is applied or compared at all, so a stale
613
- ``False`` would break inheritance on an item that is already unique (wiping the
614
- assignments it was supposed to keep) and a stale ``False`` read back after a
615
- write would report a permission mismatch for an ACL that did land.
388
+ SharePoint REST returns *inherited* role assignments too, so reading them verbatim
389
+ would break inheritance on every item and replicate the parent ACL. Only items with
390
+ unique assignments are read/applied (and compared by the verifier); inherited items
391
+ stay inherited on the target.
392
+
393
+ A plain entity read does not return the flag, so an object loaded *before* its ACL
394
+ changed keeps a stale value. The target side passes ``refresh=True``: this value
395
+ decides whether an ACL is applied or compared at all, so a stale ``False`` would
396
+ break inheritance on an item that is already unique (wiping the assignments it was
397
+ supposed to keep) and a stale ``False`` read back after a write would report a
398
+ permission mismatch for an ACL that did land.
616
399
  """
617
400
  unique = getattr(securable, "has_unique_role_assignments", None)
618
401
  if unique is not None and not refresh:
619
402
  return bool(unique)
620
- options = getattr(securable, "query_options", None)
621
- previous = list(getattr(options, "select", None) or [])
622
403
  try:
623
- securable.select(["HasUniqueRoleAssignments"]).get().execute_query()
624
- except Exception: # noqa: BLE001 — an unreadable flag is treated as "not unique"
404
+ securable.ensure_properties([_UNIQUE_PERMISSIONS], refresh=refresh).execute_query()
405
+ except Exception: # an unreadable flag is treated as "not unique"
625
406
  return False
626
- finally:
627
- if options is not None:
628
- # The projection lives on the object's query options: leaving it on
629
- # would narrow every later read of the same item.
630
- options.select = previous
631
- return bool(securable.properties.get("HasUniqueRoleAssignments"))
407
+ return bool(securable.properties.get(_UNIQUE_PERMISSIONS))
632
408
 
633
409
 
634
410
  def _replay_role_assignments(
@@ -691,35 +467,6 @@ def _user_login(web, user_id: Any, cache: dict[int, str | None]) -> str | None:
691
467
  return login
692
468
 
693
469
 
694
- class _MultiValueCreateTarget:
695
- """An upsert target that reshapes multi-value columns only when creating.
696
-
697
- A multi-value Lookup/Person column is created with the ``{"results": [...]}``
698
- wire shape but updated with a bare array (live-probed), so ``keyed_queue`` needs
699
- to reshape the creates and leave the updates alone. Everything else delegates.
700
- """
701
-
702
- def __init__(self, target: Any, reshape: Callable[[dict], dict]) -> None:
703
- self._target = target
704
- self._reshape = reshape
705
-
706
- @property
707
- def key_field(self) -> str:
708
- return self._target.key_field
709
-
710
- def ensure_key_field(self) -> None:
711
- self._target.ensure_key_field()
712
-
713
- def load_keys(self) -> Any:
714
- return self._target.load_keys()
715
-
716
- def create_records(self, records: list[dict]) -> None:
717
- self._target.create_records([self._reshape(record) for record in records])
718
-
719
- def update_record(self, item_id: Any, record: dict) -> None:
720
- self._target.update_record(item_id, record)
721
-
722
-
723
470
  class _DefaultGroups:
724
471
  """Maps a web's associated default groups (Owners/Members/Visitors).
725
472
 
@@ -794,6 +541,7 @@ class _TargetPrincipals:
794
541
  """Canonical principal name (default groups collapse to ``default:<Kind>``)."""
795
542
  return self._defaults.normalize(name)
796
543
 
544
+ @site_access(SiteLevel.MANAGE)
797
545
  def user(self, login: str | None):
798
546
  """Ensure a user login on the target site and return its ``User`` object."""
799
547
  if not login:
@@ -809,6 +557,7 @@ class _TargetPrincipals:
809
557
  self._users[login] = obj
810
558
  return obj
811
559
 
560
+ @site_access(SiteLevel.MANAGE)
812
561
  def principal(self, name: str):
813
562
  """Resolve a source principal (user or group) to a target principal object."""
814
563
  if not name:
@@ -832,6 +581,7 @@ class _TargetPrincipals:
832
581
  self._warnings.append(f"could not resolve principal {name!r} on the target")
833
582
  return None
834
583
 
584
+ @site_access(SiteLevel.MANAGE)
835
585
  def role(self, name: str) -> "RoleDefinition | None":
836
586
  """Resolve (and cache) a target role definition by name."""
837
587
  if self._roles is None:
@@ -840,6 +590,61 @@ class _TargetPrincipals:
840
590
  return self._roles.get(name)
841
591
 
842
592
 
593
+ def _resolve_group_ownership(
594
+ web: Any,
595
+ title: str,
596
+ resolve: Callable[[Any], "Principal | None"] | None,
597
+ ) -> tuple["Principal | None", list[str]]:
598
+ """A site group's owner chain: a user with a PUID, plus the groups on the way up.
599
+
600
+ ``UserGroup.xml`` requires an ``Owner`` on every ``<Group>`` — live-verified: a
601
+ group emitted without one fails the whole ingestion job with ``The required
602
+ attribute 'Owner' is missing`` — and an owner may itself be a group (a team
603
+ site's ``Visitors`` group is owned by its ``Owners`` group, which owns itself;
604
+ both live-verified). The returned titles are **nearest first**; the last one is
605
+ owned by the returned user, or owns itself when the chain closes on itself or
606
+ leaves the tenant (a group created by the migration app is owned by the app,
607
+ which has no PUID).
608
+ """
609
+ groups: list[str] = []
610
+ seen: set[str] = {title.casefold()}
611
+ current = title
612
+ for _ in range(_MAX_GROUP_OWNER_DEPTH):
613
+ try:
614
+ group = web.site_groups.get_by_name(current).get().execute_query()
615
+ owner = group.owner.get().execute_query()
616
+ except Exception: # noqa: BLE001 - best-effort: a title the site does not have ends the chain
617
+ break
618
+ if _principal_kind(owner) == "user":
619
+ principal = resolve(getattr(owner, "id", None)) if resolve is not None else None
620
+ return principal, groups
621
+ owner_title = getattr(owner, "title", None)
622
+ if not owner_title:
623
+ break
624
+ groups.append(owner_title)
625
+ if owner_title.casefold() in seen:
626
+ break
627
+ seen.add(owner_title.casefold())
628
+ current = owner_title
629
+ return None, groups
630
+
631
+
632
+ def _attach_group_owners(
633
+ entries: list[PermissionEntry],
634
+ web: Any,
635
+ resolve: Callable[[Any], "Principal | None"] | None,
636
+ cache: dict[str, tuple["Principal | None", list[str]]],
637
+ ) -> None:
638
+ """Fill ``PermissionEntry.owner``/``owner_groups`` for group entries (per title)."""
639
+ for entry in entries:
640
+ if entry.principal_type != "group":
641
+ continue
642
+ title = entry.display_name or entry.principal_name
643
+ if title not in cache:
644
+ cache[title] = _resolve_group_ownership(web, title, resolve)
645
+ entry.owner, entry.owner_groups = cache[title]
646
+
647
+
843
648
  def _read_role_assignments(
844
649
  securable,
845
650
  resolve: Callable[[Any], "Principal | None"] | None = None,
@@ -851,11 +656,14 @@ def _read_role_assignments(
851
656
  the same shape so the permission diff compares like with like. ``normalize``
852
657
  (when supplied) canonicalizes a principal name — default groups collapse to
853
658
  ``default:<Kind>`` so a renamed site still compares as preserved. Role names are
854
- paired with their decimal ``PermMask`` (``role_masks``), and — when ``resolve``
855
- is supplied — a user principal is enriched with its PUID/display name/email so
856
- the server-side package target can emit a faithful ``UserGroup.xml`` entry.
659
+ paired with their decimal ``PermMask`` (``role_masks``), the principal kind is
660
+ recorded in ``principal_type``, and — when ``resolve`` is supplied — a user
661
+ principal is enriched with its PUID/display name/email so the server-side
662
+ package target can emit a faithful ``UserGroup.xml`` entry. A SharePoint group
663
+ keeps its **title** in ``display_name`` (the normalized name would not match on
664
+ the target).
857
665
  """
858
- assignments = securable.role_assignments.expand(["Member", "RoleDefinitionBindings"]).get().execute_query()
666
+ assignments = securable.get_role_assignments().execute_query()
859
667
  result: list[PermissionEntry] = []
860
668
  for assignment in assignments:
861
669
  member = assignment.member
@@ -868,15 +676,18 @@ def _read_role_assignments(
868
676
  if not role.name:
869
677
  continue
870
678
  roles.append(role.name)
871
- mask = _perm_mask(role)
679
+ mask = role.perm_mask
872
680
  if mask is not None:
873
681
  role_masks[role.name] = mask
874
682
  entry = PermissionEntry(
875
683
  principal_name=normalize(name) if normalize is not None else name,
876
684
  roles=roles,
877
685
  role_masks=role_masks,
686
+ principal_type=_principal_kind(member),
878
687
  )
879
- if resolve is not None and _is_user_principal(member):
688
+ if entry.principal_type == "group":
689
+ entry.display_name = member.title or name
690
+ if resolve is not None and entry.principal_type == "user":
880
691
  principal = resolve(getattr(member, "id", None))
881
692
  if principal is not None:
882
693
  entry.system_id = principal.system_id
@@ -914,15 +725,10 @@ class SharePointListSource:
914
725
  self._items: dict[str, Any] = {}
915
726
  self._attachments: dict[str, Any] = {}
916
727
  self._users: dict[int, Principal | None] = {}
728
+ # Group title -> (owner user, owner group chain); a ``<Group>`` needs both.
729
+ self._group_owners: dict[str, tuple[Principal | None, list[str]]] = {}
917
730
  self._default_groups: _DefaultGroups | None = None
918
- self._source_fields_cache: list[Any] | None = None
919
- self._user_columns_cache: set[str] | None = None
920
- self._multi_columns_cache: dict[str, str] | None = None
921
- self._skipped_columns_cache: set[str] | None = None
922
- self._taxonomy_columns_cache: dict[str, bool] | None = None
923
- self._taxonomy_note_columns_cache: set[str] | None = None
924
- self._multi_choice_columns_cache: set[str] | None = None
925
- self._value_object_columns_cache: set[str] | None = None
731
+ self._source_fields_cache: list[Field] | None = None
926
732
  self._folder_records_cache: dict[str, dict] | None = None
927
733
  self.warnings: list[str] = []
928
734
 
@@ -932,11 +738,11 @@ class SharePointListSource:
932
738
  def list_items(self, progress: MigrationProgress = None) -> list[MigrationItem]:
933
739
  try:
934
740
  loaded = self._load_items(self._select)
935
- except Exception as e: # noqa: BLE001 — see the taxonomy fallback below
936
- # A full read of a list with an orphaned Managed Metadata column
937
- # fails server-side; re-enumerate excluding those columns instead
938
- # of aborting the export. An explicit --select is honored as-is.
939
- if not is_taxonomy_validation(e) or self._select:
741
+ except SPFieldValidationException as e:
742
+ # A full read of a list with an orphaned Managed Metadata column fails
743
+ # server-side; re-enumerate without those columns. An explicit --select
744
+ # is honored as-is.
745
+ if not e.is_missing_term or self._select:
940
746
  raise
941
747
  self.warnings.append(
942
748
  "Full item read failed — a Managed Metadata column references a missing term set; "
@@ -962,7 +768,7 @@ class SharePointListSource:
962
768
  # multi-person ids only inconsistently); select each ``<name>Id``
963
769
  # explicitly so the values are not silently lost.
964
770
  for name in self._multi_columns():
965
- key = f"{name}Id"
771
+ key = ListItem.value_column(name)
966
772
  if key not in columns:
967
773
  columns.append(key)
968
774
  # Expand attachments so they can be migrated alongside their item.
@@ -983,7 +789,7 @@ class SharePointListSource:
983
789
  stays on the list's user columns only.
984
790
  """
985
791
  fields = self._list.fields.get().execute_query()
986
- taxonomy = taxonomy_internal_names(fields)
792
+ taxonomy = list(dict.fromkeys(f.internal_name for f in fields if f.internal_name and f.is_taxonomy))
987
793
  self.warnings.append(f"excluded Managed Metadata column(s): {', '.join(sorted(taxonomy)) or 'none'}")
988
794
  columns = ["Id"]
989
795
  for field in fields:
@@ -1013,15 +819,11 @@ class SharePointListSource:
1013
819
  item_type="record",
1014
820
  modified=iso_or_none(record.get("Modified")),
1015
821
  created=iso_or_none(record.get("Created")),
1016
- author_id=author_id,
1017
- editor_id=editor_id,
1018
822
  )
1019
823
  # Resolve the source author/editor once so an authorship-preserving
1020
824
  # target can restore them by login name (ids are tenant-local).
1021
- if author_id is not None:
1022
- planned.author = self._principal_for(author_id)
1023
- if editor_id is not None:
1024
- planned.editor = self._principal_for(editor_id)
825
+ planned.author = self._principal_for(author_id)
826
+ planned.editor = self._principal_for(editor_id)
1025
827
  result.append(planned)
1026
828
  for attachment in item.properties.get("AttachmentFiles") or []:
1027
829
  pending_attachments.append((item_id, attachment))
@@ -1052,7 +854,7 @@ class SharePointListSource:
1052
854
  # navigation property (objects, not a scalar column) and is excluded; the
1053
855
  # target writes attachments separately.
1054
856
  select = sorted(
1055
- {key for item in loaded for key in item.properties if key != "AttachmentFiles"} - _NON_WRITABLE_SELECT
857
+ {key for item in loaded for key in item.properties if key != "AttachmentFiles"} - ListItem._schema.readonly
1056
858
  )
1057
859
  records = records_from_items(list(loaded), select, set(), raw=True)
1058
860
  # A REST item create accepts scalar column values only. A full read also
@@ -1060,10 +862,13 @@ class SharePointListSource:
1060
862
  # (lookups/persons, e.g. ``PredecessorsId`` / ``AssignedTo``) whose JSON
1061
863
  # objects carry no ``__metadata.type`` here, so the create batch is
1062
864
  # rejected with ``InvalidClientQueryException``. Typed-value remapping is
1063
- # not supported yet, so drop them and say so rather than fail the run.
865
+ # not supported yet, so drop them and say so rather than fail the run. The
866
+ # item's own links (``ParentList``, ``FieldValuesAsHtml``) carry no scalar content
867
+ # either, and are dropped silently: they are the navigations the model declares.
1064
868
  dropped: set[str] = set()
869
+ navigations: set[str] = {name for item in loaded for name in type(item)._schema.navigations}
1065
870
  multi = self._multi_columns()
1066
- multi_keys = {f"{name}Id" for name in multi} | {f"{name}StringId" for name in multi}
871
+ multi_keys = _typed_keys(multi)
1067
872
  choices = self._multi_choice_columns()
1068
873
  taxonomy = self._taxonomy_columns()
1069
874
  value_objects = self._value_object_columns()
@@ -1080,7 +885,7 @@ class SharePointListSource:
1080
885
  continue # a value object (``{"Url", "Description"}``) is writable as-is
1081
886
  if value is not None and not isinstance(value, (str, int, float, bool)):
1082
887
  record.pop(key)
1083
- if key not in _NAVIGATION_SELECT:
888
+ if key not in navigations:
1084
889
  dropped.add(key)
1085
890
  if dropped:
1086
891
  self.warnings.append(
@@ -1091,7 +896,7 @@ class SharePointListSource:
1091
896
  # than fail the create on an unknown column.
1092
897
  skipped = self._skipped_columns()
1093
898
  if skipped:
1094
- skipped_keys = {f"{name}Id" for name in skipped} | {f"{name}StringId" for name in skipped}
899
+ skipped_keys = _typed_keys(skipped)
1095
900
  for record in records:
1096
901
  for key in skipped_keys:
1097
902
  record.pop(key, None)
@@ -1154,10 +959,10 @@ class SharePointListSource:
1154
959
  single_lookups = {
1155
960
  field.internal_name
1156
961
  for field in self._source_fields()
1157
- if field.internal_name and field.type_as_string == "Lookup" and not _allows_multiple_values(field)
962
+ if field.internal_name and field.is_lookup and not field.is_multi_valued
1158
963
  }
1159
964
  for name in sorted((single_lookups | self._user_columns() | set(self._multi_columns())) & writable):
1160
- key = f"{name}Id"
965
+ key = ListItem.value_column(name)
1161
966
  if key not in columns:
1162
967
  columns.append(key)
1163
968
  for note in self._taxonomy_note_columns():
@@ -1165,44 +970,44 @@ class SharePointListSource:
1165
970
  columns.append(note)
1166
971
  return columns
1167
972
 
1168
- def _source_fields(self) -> list[Any]:
1169
- """The source list's field definitions, read once and shared by every scan."""
973
+ def _source_fields(self) -> list[Field]:
974
+ """The source list's field definitions, read once and shared by every scan.
975
+
976
+ The projection is the columns of every typed column class, so the read does not
977
+ depend on whatever ``$select`` a previous caller left on the shared ``fields``
978
+ collection -- ``List.fields`` survives a ``capture_list_structure`` read, which
979
+ selects a narrower set.
980
+ """
1170
981
  if self._source_fields_cache is None:
1171
- self._source_fields_cache = list(self._list.fields.select(list(_SOURCE_FIELD_SELECT)).get().execute_query())
982
+ try:
983
+ self._source_fields_cache = list(self._list.fields.select(Field.scan_columns()).get().execute_query())
984
+ except Exception as e: # noqa: BLE001 — values stay un-remapped, never fatal
985
+ self.warnings.append(f"could not read the list's columns for typed-value remapping: {e}")
986
+ self._source_fields_cache = []
1172
987
  return self._source_fields_cache
1173
988
 
1174
989
  def _taxonomy_columns(self) -> dict[str, bool]:
1175
- """The source's Managed Metadata columns (internal name -> allows many)."""
1176
- if self._taxonomy_columns_cache is None:
1177
- columns: dict[str, bool] = {}
1178
- notes: set[str] = set()
1179
- try:
1180
- fields = self._source_fields()
1181
- by_id = {
1182
- normalize_guid(getattr(field, "id", None)): getattr(field, "internal_name", None) for field in fields
1183
- }
1184
- for field in fields:
1185
- internal_name = getattr(field, "internal_name", None)
1186
- if not internal_name:
1187
- continue
1188
- field_type = getattr(field, "type_as_string", None)
1189
- schema = getattr(field, "schema_xml", None) or ""
1190
- if field_type not in _TAXONOMY_FIELD_TYPES and "TermSetId" not in schema:
1191
- continue
1192
- columns[internal_name] = field_type == "TaxonomyFieldTypeMulti" or 'Mult="TRUE"' in schema
1193
- note = by_id.get(normalize_guid(field.properties.get("TextField")))
1194
- if note:
1195
- notes.add(note)
1196
- except Exception as e: # noqa: BLE001 — values stay un-remapped, never fatal
1197
- self.warnings.append(f"could not read source columns for taxonomy remapping: {e}")
1198
- self._taxonomy_columns_cache = columns
1199
- self._taxonomy_note_columns_cache = notes
1200
- return self._taxonomy_columns_cache
990
+ """The source's Managed Metadata columns (internal name -> holds many values)."""
991
+ return {
992
+ field.internal_name: field.is_multi_valued
993
+ for field in self._source_fields()
994
+ if field.internal_name and field.is_taxonomy
995
+ }
1201
996
 
1202
997
  def _taxonomy_note_columns(self) -> set[str]:
1203
- """The hidden note companions of the source's taxonomy columns."""
1204
- self._taxonomy_columns()
1205
- return self._taxonomy_note_columns_cache or set()
998
+ """The hidden note companions of the source's taxonomy columns.
999
+
1000
+ The note column is what the target's write payload becomes for a multi-value
1001
+ column, and its name is chosen by the service; each taxonomy column names its own
1002
+ note, so it is answered from the column set (no request per value).
1003
+ """
1004
+ notes: set[str] = set()
1005
+ for field in self._source_fields():
1006
+ if field.is_taxonomy:
1007
+ note_name = cast(TaxonomyField, field).text_field_name
1008
+ if note_name:
1009
+ notes.add(note_name)
1010
+ return notes
1206
1011
 
1207
1012
  def _project_taxonomy_values(self, records: list[dict]) -> None:
1208
1013
  """Project taxonomy columns as bare ``[{"TermGuid": ...}]`` term lists.
@@ -1226,42 +1031,34 @@ class SharePointListSource:
1226
1031
  record.pop(name, None)
1227
1032
 
1228
1033
  def _typed_columns(self) -> tuple[set[str], dict[str, str], set[str]]:
1229
- """The source's Person and multi-value columns, read once.
1034
+ """The source's Person and multi-value columns.
1230
1035
 
1231
1036
  Returns ``(single-value User columns, {multi-value column: field type},
1232
1037
  hidden typed columns)``. The field type tells a multi-lookup (remapped by
1233
1038
  item id) from a multi-person (remapped by login). Hidden typed columns are
1234
1039
  reported separately because structure provisioning does not replicate them.
1235
1040
  """
1236
- if self._user_columns_cache is None or self._multi_columns_cache is None or self._skipped_columns_cache is None:
1237
- users: set[str] = set()
1238
- multi: dict[str, str] = {}
1239
- skipped: set[str] = set()
1240
- try:
1241
- for field in self._source_fields():
1242
- internal_name = getattr(field, "internal_name", None)
1243
- if not internal_name or internal_name in _PERSON_EXCLUDED:
1244
- continue
1245
- field_type = getattr(field, "type_as_string", None)
1246
- if field_type not in _TYPED_VALUE_TYPES:
1247
- continue
1248
- # Structure replay skips hidden columns, so the target never
1249
- # gets them; projecting their values would fail the write.
1250
- if getattr(field, "hidden", None) is True:
1251
- skipped.add(internal_name)
1252
- elif field_type.startswith("User"):
1253
- if _allows_multiple_values(field):
1254
- multi[internal_name] = "UserMulti"
1255
- else:
1256
- users.add(internal_name)
1257
- elif _allows_multiple_values(field):
1258
- multi[internal_name] = "LookupMulti"
1259
- except Exception as e: # noqa: BLE001 — without field types ids stay raw
1260
- self.warnings.append(f"could not read source columns for typed-value remapping: {e}")
1261
- self._user_columns_cache = users
1262
- self._multi_columns_cache = multi
1263
- self._skipped_columns_cache = skipped
1264
- return self._user_columns_cache, self._multi_columns_cache, self._skipped_columns_cache
1041
+ users: set[str] = set()
1042
+ multi: dict[str, str] = {}
1043
+ skipped: set[str] = set()
1044
+ for field in self._source_fields():
1045
+ internal_name = field.internal_name
1046
+ if not internal_name or internal_name in _PERSON_EXCLUDED:
1047
+ continue
1048
+ if not (field.is_person or field.is_lookup):
1049
+ continue
1050
+ if field.hidden is True:
1051
+ # Structure replay skips hidden columns, so the target never gets
1052
+ # them; projecting their values would fail the write.
1053
+ skipped.add(internal_name)
1054
+ elif field.is_person:
1055
+ if field.is_multi_valued:
1056
+ multi[internal_name] = "UserMulti"
1057
+ else:
1058
+ users.add(internal_name)
1059
+ elif field.is_multi_valued:
1060
+ multi[internal_name] = "LookupMulti"
1061
+ return users, multi, skipped
1265
1062
 
1266
1063
  def _user_columns(self) -> set[str]:
1267
1064
  """The source's single-value Person columns (internal names)."""
@@ -1277,33 +1074,11 @@ class SharePointListSource:
1277
1074
 
1278
1075
  def _multi_choice_columns(self) -> set[str]:
1279
1076
  """The source's multi-choice columns (internal names)."""
1280
- if self._multi_choice_columns_cache is None:
1281
- names: set[str] = set()
1282
- try:
1283
- names = {
1284
- field.internal_name
1285
- for field in self._source_fields()
1286
- if getattr(field, "internal_name", None) and _is_multi_choice_column(field)
1287
- }
1288
- except Exception as e: # noqa: BLE001 — values stay un-normalized, never fatal
1289
- self.warnings.append(f"could not read source columns for multi-choice values: {e}")
1290
- self._multi_choice_columns_cache = names
1291
- return self._multi_choice_columns_cache
1077
+ return {field.internal_name for field in self._source_fields() if field.internal_name and field.is_multi_choice}
1292
1078
 
1293
1079
  def _value_object_columns(self) -> set[str]:
1294
1080
  """The source's columns that hold a REST value object (e.g. a hyperlink)."""
1295
- if self._value_object_columns_cache is None:
1296
- names: set[str] = set()
1297
- try:
1298
- names = {
1299
- field.internal_name
1300
- for field in self._source_fields()
1301
- if getattr(field, "internal_name", None) and _is_value_object_column(field)
1302
- }
1303
- except Exception as e: # noqa: BLE001 — values are dropped, never fatal
1304
- self.warnings.append(f"could not read source columns for value-object values: {e}")
1305
- self._value_object_columns_cache = names
1306
- return self._value_object_columns_cache
1081
+ return {field.internal_name for field in self._source_fields() if field.internal_name and field.is_value_object}
1307
1082
 
1308
1083
  def _annotate_person_logins(self, records: list[dict]) -> None:
1309
1084
  """Replace each Person column's site-user id with the user's login name.
@@ -1322,8 +1097,8 @@ class SharePointListSource:
1322
1097
  # ``<name>StringId`` is a read-only text companion holding the user
1323
1098
  # id; leaving it in the payload makes REST ignore the remapped
1324
1099
  # ``<name>Id`` and keep the source id.
1325
- record.pop(f"{name}StringId", None)
1326
- key = f"{name}Id"
1100
+ record.pop(ListItem.string_value_column(name), None)
1101
+ key = ListItem.value_column(name)
1327
1102
  user_id = parse_int(record.get(key))
1328
1103
  if user_id is None:
1329
1104
  continue
@@ -1348,9 +1123,9 @@ class SharePointListSource:
1348
1123
  return
1349
1124
  for record in records:
1350
1125
  for name, field_type in multi.items():
1351
- record.pop(f"{name}StringId", None)
1352
- key = f"{name}Id"
1353
- ids = _id_list(record.get(key))
1126
+ record.pop(ListItem.string_value_column(name), None)
1127
+ key = ListItem.value_column(name)
1128
+ ids = values_of(record.get(key))
1354
1129
  parsed: list[int] = []
1355
1130
  for value in ids or []:
1356
1131
  user_id = parse_int(value)
@@ -1396,7 +1171,7 @@ class SharePointListSource:
1396
1171
  for name in names:
1397
1172
  if name not in record:
1398
1173
  continue
1399
- values = _multi_values(record.get(name))
1174
+ values = values_of(record.get(name))
1400
1175
  if values:
1401
1176
  record[name] = values
1402
1177
  else:
@@ -1415,7 +1190,7 @@ class SharePointListSource:
1415
1190
 
1416
1191
  def checksum(self, item: MigrationItem) -> str:
1417
1192
  if item.item_type == "attachment":
1418
- return hashlib.md5(self._attachment_content(item)).hexdigest()
1193
+ return checksum(self._attachment_content(item))
1419
1194
  return _content_checksum(_canonicalize_taxonomy_record(self._records.get(item.dest_path, {})))
1420
1195
 
1421
1196
  def read_metadata(self, item: MigrationItem) -> dict | None:
@@ -1423,10 +1198,9 @@ class SharePointListSource:
1423
1198
  source_item = self._items.get(item.dest_path)
1424
1199
  if source_item is None:
1425
1200
  return None
1426
- properties = source_item.properties
1427
1201
  return {
1428
- "created": iso_or_none(properties.get("Created")),
1429
- "modified": iso_or_none(properties.get("Modified")),
1202
+ "created": iso_or_none(source_item.created),
1203
+ "modified": iso_or_none(source_item.modified),
1430
1204
  }
1431
1205
 
1432
1206
  def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
@@ -1455,7 +1229,9 @@ class SharePointListSource:
1455
1229
  source_item = self._items.get(item.dest_path)
1456
1230
  if source_item is None or not _has_unique_role_assignments(source_item):
1457
1231
  return []
1458
- return _read_role_assignments(source_item, resolve=self._principal_for, normalize=self._normalize_name)
1232
+ entries = _read_role_assignments(source_item, resolve=self._principal_for, normalize=self._normalize_name)
1233
+ _attach_group_owners(entries, self._list.context.web, self._principal_for, self._group_owners)
1234
+ return entries
1459
1235
 
1460
1236
  def _principal_for(self, user_id: Any) -> "Principal | None":
1461
1237
  """Resolve a site-user id to a :class:`Principal` (login + PUID), cached."""
@@ -1467,14 +1243,7 @@ class SharePointListSource:
1467
1243
  principal: "Principal | None" = None
1468
1244
  try:
1469
1245
  user = self._list.context.web.site_users.get_by_id(cast("str", key)).get().execute_query()
1470
- user_id_info = user.properties.get("UserId")
1471
- system_id = normalize_puid(getattr(user_id_info, "NameId", None))
1472
- principal = Principal(
1473
- login_name=user.login_name or "",
1474
- system_id=system_id,
1475
- display_name=user.title,
1476
- email=user.properties.get("Email"),
1477
- )
1246
+ principal = _principal_of(user, key)
1478
1247
  except Exception as e: # noqa: BLE001 — a missing user degrades to no authorship
1479
1248
  self.warnings.append(f"user {key} could not be resolved: {e}")
1480
1249
  self._users[key] = principal
@@ -1506,6 +1275,12 @@ class SharePointListTarget:
1506
1275
  when the target list's content types were recreated with fresh identifiers:
1507
1276
  every record's ``ContentTypeId`` is rewritten to the target id so items land
1508
1277
  under the recreated content type instead of the wrong (or a missing) one.
1278
+
1279
+ Pass ``structure`` (a :class:`~office365.migration.sharepoint.structure.ListStructure`
1280
+ from :func:`~office365.migration.sharepoint.structure.load_list_structure`) to
1281
+ replay a captured list shape onto this target before the first record is written —
1282
+ what importing an export bundle needs, since the bundle's payload is records and
1283
+ its columns/content types/views travel in the sidecar, not in each item.
1509
1284
  """
1510
1285
 
1511
1286
  # Marks this target as accepting list-item attachments as extra items (see DataTarget).
@@ -1515,9 +1290,9 @@ class SharePointListTarget:
1515
1290
  # values by login (see ``_remap_typed_values``).
1516
1291
  supports_typed_values = True
1517
1292
 
1518
- # Marks this target as replaying a list item's approval state (``_ModerationStatus``
1519
- # and its comments) in the metadata write, which a system update would otherwise
1520
- # reset. Check-out and draft-version state are still not carried.
1293
+ # Marks this target as replaying a list item's approval state (its moderation status
1294
+ # and comment) in the metadata write, which is the only write a list item takes it in.
1295
+ # Check-out and draft-version state are still not carried.
1521
1296
  supports_item_state = True
1522
1297
 
1523
1298
  #: The single-item :meth:`write` only queues a create; a chunk must be flushed
@@ -1535,6 +1310,7 @@ class SharePointListTarget:
1535
1310
  on_conflict=self._on_conflict_override,
1536
1311
  identity_field=self._identity_field,
1537
1312
  content_type_map=self._content_type_map,
1313
+ structure=self._structure,
1538
1314
  )
1539
1315
 
1540
1316
  def __init__(
@@ -1545,8 +1321,11 @@ class SharePointListTarget:
1545
1321
  on_conflict: str | None = None,
1546
1322
  identity_field: str | None = DEFAULT_LIST_IDENTITY_FIELD,
1547
1323
  content_type_map: "ContentTypeMap | None" = None,
1324
+ structure: "ListStructure | None" = None,
1548
1325
  ) -> None:
1549
1326
  self._list = target_list
1327
+ self._structure = structure
1328
+ self._structure_applied = False
1550
1329
  self._key_columns = [key] if isinstance(key, str) else (list(key) if key else [])
1551
1330
  self._key_field = key_field
1552
1331
  self._on_conflict_override = on_conflict
@@ -1578,6 +1357,10 @@ class SharePointListTarget:
1578
1357
  self._unresolved_lookups: set[tuple[str, int]] = set()
1579
1358
  self._unresolved_users: set[tuple[str, str]] = set()
1580
1359
  self._user_logins: dict[int, str] | None = None
1360
+ # Verification reads the same written item through four hooks (checksum,
1361
+ # metadata, authorship, permissions). Memoizing the fresh read keeps that
1362
+ # to one request per item; anything that writes to the target clears it.
1363
+ self._fresh_reads: dict[str, "ListItem | None"] = {}
1581
1364
 
1582
1365
  @property
1583
1366
  def on_conflict(self) -> str:
@@ -1593,6 +1376,31 @@ class SharePointListTarget:
1593
1376
  """
1594
1377
  if self._on_conflict_override is None:
1595
1378
  self._on_conflict = conflict_to_on_conflict(options.conflict_resolution)
1379
+ # A run boundary: verification reads memoized by the previous run are stale.
1380
+ self._fresh_reads.clear()
1381
+ self.apply_structure()
1382
+
1383
+ def apply_structure(self) -> list[str]:
1384
+ """Replay the captured list structure onto the target list (once, idempotent).
1385
+
1386
+ A bundle carries its list shape in a sidecar, not in each record, so the
1387
+ columns (and views) must exist before the first record lands — otherwise a
1388
+ value whose column is missing is dropped by the server. Idempotent
1389
+ (``on_conflict="skip"``), and a no-op when no snapshot was passed.
1390
+
1391
+ Returns:
1392
+ The warnings from this call (empty when there is no snapshot, or when it
1393
+ has already been applied).
1394
+ """
1395
+ if self._structure is None or self._structure_applied:
1396
+ return []
1397
+ self._structure_applied = True
1398
+ # Filling the caller's map in place is what lets a bundle's records land
1399
+ # under the recreated content type instead of being coerced to the default.
1400
+ entries = self._content_type_map.entries if self._content_type_map is not None else None
1401
+ warnings = provision_list_structure(self._list, self._structure, content_type_map=entries)
1402
+ self.warnings.extend(warnings)
1403
+ return warnings
1596
1404
 
1597
1405
  def label(self) -> str:
1598
1406
  return f"list:{self._list.title}"
@@ -1648,17 +1456,20 @@ class SharePointListTarget:
1648
1456
 
1649
1457
  def _record_for(self, item: MigrationItem, payload: object) -> dict:
1650
1458
  """The payload with the target content-type id and source-id marker applied."""
1459
+ if not isinstance(payload, dict):
1460
+ # Without this the cast fails as ``TypeError: object is not iterable``, which
1461
+ # names neither the item nor the reason: a file's bytes have no record shape.
1462
+ raise ValueError(
1463
+ f"{item.dest_path!r} is a {item.item_type!r} with a {type(payload).__name__} payload: this target "
1464
+ "writes list records, and a file has no record shape — migrate files into a document library"
1465
+ )
1651
1466
  record = dict(cast(dict, payload))
1652
1467
  if self._content_type_map:
1653
1468
  content_type_id = record.get("ContentTypeId")
1654
1469
  record["ContentTypeId"] = self._content_type_map.resolve(content_type_id)
1655
1470
  if self._identity_field:
1656
1471
  record[self._identity_field] = item.dest_path
1657
- approval = {
1658
- field_name: str(record[record_key])
1659
- for record_key, field_name in _APPROVAL_FIELDS.items()
1660
- if record.get(record_key) is not None
1661
- }
1472
+ approval = {name: record[name] for name in _MODERATION_FIELDS if record.get(name) is not None}
1662
1473
  if approval:
1663
1474
  self._pending_approval[item.dest_path] = approval
1664
1475
  return record
@@ -1679,14 +1490,15 @@ class SharePointListTarget:
1679
1490
  else:
1680
1491
  mapped.pop("ContentTypeId", None)
1681
1492
  self._remap_typed_values([mapped])
1682
- return mapped
1493
+ return self._multi_value_payload(mapped)
1683
1494
 
1684
1495
  def _queue(self, records: list[dict]) -> None:
1685
1496
  self._ensure_identity()
1686
1497
  self._remap_typed_values(records)
1498
+ records = [self._multi_value_payload(record) for record in records]
1687
1499
  if not self._key_columns:
1688
1500
  for record in records:
1689
- self._list.items.queue_records([self._multi_value_create(record)])
1501
+ self._list.items.queue_records([record])
1690
1502
  return
1691
1503
  from office365.runtime.converters.upsert import keyed_queue
1692
1504
  from office365.sharepoint.fields.name import internal_field_name
@@ -1700,7 +1512,7 @@ class SharePointListTarget:
1700
1512
  self._target = target
1701
1513
  key_columns = [internal_field_name(c) for c in self._key_columns]
1702
1514
  keyed_queue(
1703
- _MultiValueCreateTarget(target, self._multi_value_create),
1515
+ target,
1704
1516
  records,
1705
1517
  key_columns=key_columns,
1706
1518
  existing=self._existing,
@@ -1710,22 +1522,22 @@ class SharePointListTarget:
1710
1522
  def _multi_id_keys(self) -> set[str]:
1711
1523
  """The ``...Id`` record keys of the multi-value Lookup/Person columns."""
1712
1524
  names = (*self._multi_lookup_columns(), *self._multi_user_columns())
1713
- return {f"{name}Id" for name in names}
1525
+ return {ListItem.value_column(name) for name in names}
1714
1526
 
1715
- def _multi_value_create(self, record: dict) -> dict:
1716
- """Reshape multi-value columns for a *create* (``{"results": [...]}``).
1527
+ def _multi_value_payload(self, record: dict) -> dict:
1528
+ """Reshape multi-value columns for the wire (``{"results": [...]}``).
1717
1529
 
1718
1530
  A bare list is the semantic value the source records and the checksum work
1719
- with, and it is also what a MERGE update wants; only a create needs the
1720
- ``{"results": [...]}`` wrapper (live-probed). Lists without multi-value
1721
- columns are passed through untouched.
1531
+ with; the wire wants every multi-value cell wrapped, on create and on MERGE
1532
+ alike (see :func:`_collection_payload`). A record without multi-value
1533
+ columns is passed through untouched.
1722
1534
  """
1723
1535
  keys = self._multi_id_keys() | self._multi_choice_columns()
1724
1536
  if not keys:
1725
1537
  return record
1726
1538
  wrapped = dict(record)
1727
1539
  for key in keys:
1728
- values = _multi_values(wrapped.get(key))
1540
+ values = values_of(wrapped.get(key))
1729
1541
  if values is not None:
1730
1542
  wrapped[key] = _collection_payload(values)
1731
1543
  return wrapped
@@ -1782,44 +1594,34 @@ class SharePointListTarget:
1782
1594
  taxonomy: dict[str, tuple[bool, str | None]] = {}
1783
1595
  multi_choices: set[str] = set()
1784
1596
  try:
1785
- fields = (
1786
- self._list.fields.select(
1787
- ["InternalName", "TypeAsString", "LookupList", "Id", "TextField", "AllowMultipleValues"]
1788
- )
1789
- .get()
1790
- .execute_query()
1791
- )
1597
+ fields = self._list.fields.select(Field.scan_columns()).get().execute_query()
1792
1598
  except Exception as e: # noqa: BLE001 — without columns we cannot remap; content still migrates
1793
1599
  self.warnings.append(f"could not read target columns for typed-value remapping: {e}")
1794
1600
  return lookups, users, multi_lookups, multi_users, taxonomy, multi_choices
1795
- by_id = {normalize_guid(getattr(field, "id", None)): getattr(field, "internal_name", None) for field in fields}
1796
1601
  for field in fields:
1797
- internal_name = getattr(field, "internal_name", None)
1602
+ internal_name = field.internal_name
1798
1603
  if not internal_name or internal_name in _PERSON_EXCLUDED:
1799
1604
  continue
1800
- field_type = getattr(field, "type_as_string", None)
1801
- if field_type in _TAXONOMY_FIELD_TYPES:
1802
- # The companion note column that actually carries the write payload
1803
- # has an unpredictable name; resolve it through the column's
1804
- # ``TextField`` id.
1805
- note_name = by_id.get(normalize_guid(field.properties.get("TextField")))
1806
- taxonomy[internal_name] = (field_type == "TaxonomyFieldTypeMulti", note_name)
1807
- elif field_type in _TYPED_VALUE_TYPES:
1808
- multiple = _allows_multiple_values(field)
1809
- if field_type.startswith("User"):
1605
+ if field.is_taxonomy:
1606
+ # The companion note column that carries the write payload has a name
1607
+ # the service chooses; the column itself resolves it from ``TextField``.
1608
+ taxonomy[internal_name] = (field.is_multi_valued, cast(TaxonomyField, field).text_field_name)
1609
+ elif field.is_person or field.is_lookup:
1610
+ multiple = field.is_multi_valued
1611
+ if field.is_person:
1810
1612
  if multiple:
1811
1613
  multi_users.add(internal_name)
1812
1614
  else:
1813
1615
  users.add(internal_name)
1814
1616
  else:
1815
- list_id = normalize_guid(field.properties.get("LookupList"))
1617
+ list_id = normalize_guid(cast(FieldLookup, field).lookup_list)
1816
1618
  if not list_id:
1817
1619
  continue
1818
1620
  if multiple:
1819
1621
  multi_lookups[internal_name] = list_id
1820
1622
  else:
1821
1623
  lookups[internal_name] = list_id
1822
- elif _is_multi_choice_column(field):
1624
+ elif field.is_multi_choice:
1823
1625
  multi_choices.add(internal_name)
1824
1626
  return lookups, users, multi_lookups, multi_users, taxonomy, multi_choices
1825
1627
 
@@ -1867,7 +1669,7 @@ class SharePointListTarget:
1867
1669
  return
1868
1670
  for record in records:
1869
1671
  for internal_name, target_list_id in columns.items():
1870
- key = f"{internal_name}Id"
1672
+ key = ListItem.value_column(internal_name)
1871
1673
  source_id = parse_int(record.get(key))
1872
1674
  if source_id is None:
1873
1675
  continue
@@ -1885,7 +1687,7 @@ class SharePointListTarget:
1885
1687
  return
1886
1688
  for record in records:
1887
1689
  for internal_name in columns:
1888
- key = f"{internal_name}Id"
1690
+ key = ListItem.value_column(internal_name)
1889
1691
  login = record.get(key)
1890
1692
  if not isinstance(login, str) or not login:
1891
1693
  continue
@@ -1902,8 +1704,8 @@ class SharePointListTarget:
1902
1704
  return
1903
1705
  for record in records:
1904
1706
  for internal_name, target_list_id in columns.items():
1905
- key = f"{internal_name}Id"
1906
- source_ids = _id_list(record.get(key))
1707
+ key = ListItem.value_column(internal_name)
1708
+ source_ids = values_of(record.get(key))
1907
1709
  if not source_ids:
1908
1710
  continue
1909
1711
  forward, _ = self._lookup_index(target_list_id)
@@ -1927,7 +1729,7 @@ class SharePointListTarget:
1927
1729
  return
1928
1730
  for record in records:
1929
1731
  for internal_name in columns:
1930
- key = f"{internal_name}Id"
1732
+ key = ListItem.value_column(internal_name)
1931
1733
  logins = record.get(key)
1932
1734
  if not isinstance(logins, (list, tuple)) or not logins:
1933
1735
  continue
@@ -1947,12 +1749,13 @@ class SharePointListTarget:
1947
1749
  def _remap_taxonomies(self, records: list[dict]) -> None:
1948
1750
  """Write taxonomy terms in the form SharePoint accepts on the target.
1949
1751
 
1950
- A single-value column takes a typed ``SP.Taxonomy.TaxonomyFieldValue``
1951
- object; a multi-value column only accepts the hidden note companion's text
1952
- form ``-1;#Label|guid;#...`` (typed-collection JSON is rejected server-side).
1953
- The term id is authoritative — the label can be left blank. A column with no
1954
- target counterpart is dropped and reported rather than sent as an unknown
1955
- property.
1752
+ A single-value column takes :class:`TaxonomyFieldValue` itself — the library
1753
+ type, not a dictionary spelled like one — so its declared type name and
1754
+ ``WssId = -1`` default are answered by the value. A multi-value column only
1755
+ accepts the hidden note companion's text form ``-1;#Label|guid;#...``
1756
+ (typed-collection JSON is rejected server-side). The term id is authoritative,
1757
+ so the label is left unset. A column with no target counterpart is dropped and
1758
+ reported rather than sent as an unknown property.
1956
1759
  """
1957
1760
  columns = self._taxonomy_columns()
1958
1761
  unresolved: set[str] = set()
@@ -1972,17 +1775,13 @@ class SharePointListTarget:
1972
1775
  continue
1973
1776
  if allow_many and note_name:
1974
1777
  record.pop(internal_name, None)
1975
- record[note_name] = ";#".join(f"-1;#|{guid}" for guid in guids)
1778
+ values = [TaxonomyFieldValue(TermGuid=g) for g in guids]
1779
+ record[note_name] = str(TaxonomyFieldValueCollection(values))
1976
1780
  elif allow_many:
1977
1781
  record.pop(internal_name, None)
1978
1782
  unresolved.add(internal_name)
1979
1783
  else:
1980
- record[internal_name] = {
1981
- "__metadata": {"type": "SP.Taxonomy.TaxonomyFieldValue"},
1982
- "Label": "",
1983
- "TermGuid": guids[0],
1984
- "WssId": -1,
1985
- }
1784
+ record[internal_name] = TaxonomyFieldValue(TermGuid=guids[0])
1986
1785
  if unresolved:
1987
1786
  self.warnings.append(
1988
1787
  f"taxonomy column(s) not available on the target, values left empty: {', '.join(sorted(unresolved))}"
@@ -2030,7 +1829,7 @@ class SharePointListTarget:
2030
1829
  the two like for like instead of reporting a false mismatch.
2031
1830
  """
2032
1831
  for internal_name, target_list_id in self._lookup_columns().items():
2033
- key = f"{internal_name}Id"
1832
+ key = ListItem.value_column(internal_name)
2034
1833
  target_id = parse_int(properties.get(key))
2035
1834
  if target_id is None:
2036
1835
  continue
@@ -2039,8 +1838,8 @@ class SharePointListTarget:
2039
1838
  if source_id is not None:
2040
1839
  properties[key] = source_id
2041
1840
  for internal_name, target_list_id in self._multi_lookup_columns().items():
2042
- key = f"{internal_name}Id"
2043
- target_ids = _id_list(properties.get(key))
1841
+ key = ListItem.value_column(internal_name)
1842
+ target_ids = values_of(properties.get(key))
2044
1843
  if not target_ids:
2045
1844
  continue
2046
1845
  _, backward = self._lookup_index(target_list_id)
@@ -2055,7 +1854,7 @@ class SharePointListTarget:
2055
1854
  columns = self._user_columns()
2056
1855
  logins = self._target_user_logins() if columns or self._multi_user_columns() else {}
2057
1856
  for internal_name in columns:
2058
- key = f"{internal_name}Id"
1857
+ key = ListItem.value_column(internal_name)
2059
1858
  user_id = parse_int(properties.get(key))
2060
1859
  if user_id is None:
2061
1860
  continue
@@ -2063,8 +1862,8 @@ class SharePointListTarget:
2063
1862
  if login is not None:
2064
1863
  properties[key] = login
2065
1864
  for internal_name in self._multi_user_columns():
2066
- key = f"{internal_name}Id"
2067
- user_ids = _id_list(properties.get(key))
1865
+ key = ListItem.value_column(internal_name)
1866
+ user_ids = values_of(properties.get(key))
2068
1867
  if not user_ids:
2069
1868
  continue
2070
1869
  mapped_logins: list[Any] = []
@@ -2083,7 +1882,7 @@ class SharePointListTarget:
2083
1882
  for internal_name in self._multi_choice_columns():
2084
1883
  if internal_name not in properties:
2085
1884
  continue
2086
- values = _multi_values(properties.get(internal_name))
1885
+ values = values_of(properties.get(internal_name))
2087
1886
  if values:
2088
1887
  properties[internal_name] = values
2089
1888
  else:
@@ -2134,7 +1933,7 @@ class SharePointListTarget:
2134
1933
  # A read query would implicitly flush any queued writes on this context;
2135
1934
  # flush them explicitly first so the cached index stays consistent.
2136
1935
  self._flush_pending()
2137
- columns = ["Id", self._identity_field, "Created", "Modified", "AuthorId", "EditorId"]
1936
+ columns = ["Id", self._identity_field, "Created", "Modified", *_LIST_ITEM.columns_of_facet(AUTHORSHIP)]
2138
1937
  query = self._list.items.select(columns)
2139
1938
  if filter_expr:
2140
1939
  query = query.filter(filter_expr)
@@ -2178,6 +1977,7 @@ class SharePointListTarget:
2178
1977
  paths.append(f"{value}/{name}")
2179
1978
  return paths
2180
1979
 
1980
+ @site_access(SiteLevel.READ)
2181
1981
  def list_paths(self) -> list[str]:
2182
1982
  if not self._identity_field:
2183
1983
  return [str(i.id) for i in self._list.items.get().execute_query()]
@@ -2215,8 +2015,8 @@ class SharePointListTarget:
2215
2015
  extra.update(note for _, note in self._taxonomy_columns().values() if note)
2216
2016
  # The target derives its own ``<name>StringId`` companion; it is not part of
2217
2017
  # the source's canonical content.
2218
- extra.update(f"{name}StringId" for name in self._user_columns())
2219
- extra.update(f"{name}StringId" for name in self._multi_user_columns())
2018
+ extra.update(ListItem.string_value_column(name) for name in self._user_columns())
2019
+ extra.update(ListItem.string_value_column(name) for name in self._multi_user_columns())
2220
2020
  return _content_checksum(properties, frozenset(extra))
2221
2021
 
2222
2022
  def _attachment_checksum(self, item: MigrationItem) -> str:
@@ -2228,7 +2028,7 @@ class SharePointListTarget:
2228
2028
  data = parent.attachment_files.get_by_filename(filename).get_content().execute_query().value
2229
2029
  except Exception: # noqa: BLE001 — a missing/unreadable attachment is unverifiable
2230
2030
  return ""
2231
- return hashlib.md5(data).hexdigest() if data else ""
2031
+ return checksum(data) if data else ""
2232
2032
 
2233
2033
  def commit(self, options=None) -> None:
2234
2034
  """Flush any remaining queued record writes through an OData batch."""
@@ -2242,6 +2042,7 @@ class SharePointListTarget:
2242
2042
  if not self._list.context.has_pending_request:
2243
2043
  return
2244
2044
  self._list.context.execute_batch(items_per_batch=batch_size, concurrency=concurrency)
2045
+ self._fresh_reads.clear()
2245
2046
  self._list.items.clear()
2246
2047
  # Records were just created/updated, so the cached source-id index needs an
2247
2048
  # incremental refresh (new items only) before the next lookup.
@@ -2260,34 +2061,41 @@ class SharePointListTarget:
2260
2061
  return None
2261
2062
  return self._find_by_identity(item.dest_path)
2262
2063
 
2064
+ @site_access(SiteLevel.WRITE)
2263
2065
  def apply_timestamps(self, item: MigrationItem) -> None:
2264
2066
  """Best-effort: restore ``Created``/``Modified`` on the written item.
2265
2067
 
2266
- Uses ``ValidateUpdateListItem`` with ``bNewDocumentUpdate=True`` -- a
2267
- system update (the CSOM ``UpdateOverwriteVersion`` path), so the metadata
2268
- lands **without** creating a new version and a migrated record keeps its
2269
- original version instead of accumulating one version per fidelity write.
2270
- ``datesInUTC=True`` requires the ``...Z`` UTC form. Authorship values
2271
- resolved for the same item are folded into this final write so both land
2272
- atomically, in one system update.
2068
+ Authorship and approval state resolved for the same item are folded in, so all of
2069
+ them land atomically in one system update.
2070
+ """
2071
+ self._restore_fidelity(item, timestamps=True)
2072
+
2073
+ def _restore_fidelity(self, item: MigrationItem, timestamps: bool) -> None:
2074
+ """One system update carrying every fidelity value this item has.
2075
+
2076
+ ``timestamps=False`` is the write :meth:`finalize_fidelity` makes when the item's
2077
+ dates are not preserved: the values are already absent, so what is left is the
2078
+ authorship and approval state, and they still cost one request rather than two.
2273
2079
  """
2274
2080
  target_item = self._target_item(item)
2275
2081
  if target_item is None:
2276
2082
  return
2277
- form_values: dict = {}
2278
- created = _sp_utc_timestamp(item.created)
2279
- modified = _sp_utc_timestamp(item.modified)
2280
- if created:
2281
- form_values["Created"] = created
2282
- if modified:
2283
- form_values["Modified"] = modified
2284
- form_values.update(self._pending_authorship.pop(item.dest_path, {}))
2285
- form_values.update(self._pending_approval.pop(item.dest_path, {}))
2286
- if form_values:
2287
- result = target_item.validate_update_list_item(
2288
- form_values, dates_in_utc=True, new_document_update=True
2289
- ).execute_query()
2290
- _report_rejected_fields(result, self.warnings, f"timestamps {item.dest_path}")
2083
+ authorship = self._pending_authorship.pop(item.dest_path, {})
2084
+ approval = self._pending_approval.pop(item.dest_path, {})
2085
+ created = iso_z(item.created) if timestamps else None
2086
+ modified = iso_z(item.modified) if timestamps else None
2087
+ if not (created or modified or authorship or approval):
2088
+ return
2089
+ self._fresh_reads.pop(str(item.dest_path), None)
2090
+ result = target_item.restore_fidelity(
2091
+ created=created,
2092
+ modified=modified,
2093
+ author=authorship.get("Author"),
2094
+ editor=authorship.get("Editor"),
2095
+ approval=approval,
2096
+ new_document_update=True,
2097
+ ).execute_query()
2098
+ _report_rejected_fields(result, self.warnings, f"timestamps {item.dest_path}")
2291
2099
 
2292
2100
  def apply_authorship(self, item: MigrationItem) -> None:
2293
2101
  """Best-effort: resolve ``Author``/``Editor`` and cache them for one write.
@@ -2295,53 +2103,39 @@ class SharePointListTarget:
2295
2103
  A principal is applied only when its login name resolves to a target user
2296
2104
  (``EnsureUser``); unresolved principals are skipped (same-tenant only).
2297
2105
 
2298
- Nothing is sent here. ``ValidateUpdateListItem`` is one request per call, so
2299
- writing the resolved principals immediately and then again with the
2300
- timestamps cost every preserved item two system updates. The values are
2301
- cached and folded into the timestamps write, or written by
2302
- :meth:`finalize_fidelity` when timestamps are not preserved.
2106
+ Nothing is sent here. ``ValidateUpdateListItem`` is one request per call, so a
2107
+ separate authorship write followed by the timestamps write would cost every
2108
+ preserved item two system updates. The resolved principals are cached and
2109
+ written by :meth:`apply_timestamps`, or by :meth:`finalize_fidelity` when
2110
+ timestamps are not preserved.
2303
2111
  """
2304
2112
  target_item = self._target_item(item)
2305
2113
  if target_item is None:
2306
2114
  return
2307
2115
  author = self._principals().user(item.author.login_name if item.author else None)
2308
2116
  editor = self._principals().user(item.editor.login_name if item.editor else None)
2309
- if author is not None and _is_system_principal(author):
2117
+ if author is not None and author.is_service_account:
2310
2118
  author = None
2311
- if editor is not None and _is_system_principal(editor):
2119
+ if editor is not None and editor.is_service_account:
2312
2120
  editor = None
2313
- if author is None and editor is None and not self._pending_approval.get(item.dest_path):
2121
+ if author is None and editor is None:
2314
2122
  return
2315
- form_values: dict = {}
2316
- if author is not None:
2317
- form_values["Author"] = FieldUserValue(author.id, author.login_name)
2318
- if editor is not None:
2319
- form_values["Editor"] = FieldUserValue(editor.id, editor.login_name)
2320
- # Replay the approval state here too: this write is itself a system update, so
2321
- # on a run that restores authorship without timestamps it is the last one.
2322
- form_values.update(self._pending_approval.get(item.dest_path, {}))
2323
- self._pending_authorship[item.dest_path] = dict(form_values)
2123
+ self._pending_authorship[item.dest_path] = {
2124
+ "Author": author,
2125
+ "Editor": editor,
2126
+ }
2324
2127
 
2128
+ @site_access(SiteLevel.WRITE)
2325
2129
  def finalize_fidelity(self, item: MigrationItem) -> None:
2326
2130
  """Write the fidelity values that were only cached for this item.
2327
2131
 
2328
2132
  The last hook wins the write: with timestamps preserved that is
2329
2133
  :meth:`apply_timestamps`; without them it is this method, so the item still
2330
- gets one system update instead of one per property group. It runs before
2331
- the approval write, which has to stay last (a system update re-approves).
2134
+ gets one system update instead of one per property group.
2332
2135
  """
2333
- form_values = self._pending_authorship.pop(item.dest_path, {})
2334
- form_values.update(self._pending_approval.pop(item.dest_path, {}))
2335
- if not form_values:
2336
- return
2337
- target_item = self._target_item(item)
2338
- if target_item is None:
2339
- return
2340
- result = target_item.validate_update_list_item(
2341
- form_values, dates_in_utc=True, new_document_update=True
2342
- ).execute_query()
2343
- _report_rejected_fields(result, self.warnings, f"authorship {item.dest_path}")
2136
+ self._restore_fidelity(item, timestamps=False)
2344
2137
 
2138
+ @site_access(SiteLevel.MANAGE)
2345
2139
  def apply_permissions(self, item: MigrationItem, permissions: list[PermissionEntry]) -> None:
2346
2140
  """Best-effort: replay the source item's unique ACLs onto the target item.
2347
2141
 
@@ -2352,6 +2146,7 @@ class SharePointListTarget:
2352
2146
  target_item = self._target_item(item)
2353
2147
  if target_item is None:
2354
2148
  return
2149
+ self._fresh_reads.pop(str(item.dest_path), None)
2355
2150
  _replay_role_assignments(target_item, self._principals(), permissions, self.warnings, item.dest_path)
2356
2151
  self._list.context.execute_query()
2357
2152
 
@@ -2360,10 +2155,18 @@ class SharePointListTarget:
2360
2155
 
2361
2156
  The cached identity-index object predates the fidelity writes
2362
2157
  (``apply_timestamps``/``apply_authorship``), so re-read it before diffing.
2158
+ The read is memoized per destination path: verification asks for the same
2159
+ item through :meth:`checksum`, :meth:`read_metadata`,
2160
+ :meth:`read_authorship` and :meth:`read_permissions`, and four reads of an
2161
+ unchanged item are three requests too many. Every write clears the memo.
2363
2162
  """
2163
+ key = str(item.dest_path)
2164
+ if key in self._fresh_reads:
2165
+ return self._fresh_reads[key]
2364
2166
  target_item = self._target_item(item)
2365
2167
  if target_item is not None:
2366
2168
  target_item.get().execute_query()
2169
+ self._fresh_reads[key] = target_item
2367
2170
  return target_item
2368
2171
 
2369
2172
  def read_metadata(self, item: MigrationItem) -> dict | None:
@@ -2371,10 +2174,9 @@ class SharePointListTarget:
2371
2174
  target_item = self._fresh_target_item(item)
2372
2175
  if target_item is None:
2373
2176
  return None
2374
- properties = target_item.properties
2375
2177
  return {
2376
- "created": iso_or_none(properties.get("Created")),
2377
- "modified": iso_or_none(properties.get("Modified")),
2178
+ "created": iso_or_none(target_item.created),
2179
+ "modified": iso_or_none(target_item.modified),
2378
2180
  }
2379
2181
 
2380
2182
  def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
@@ -2382,10 +2184,9 @@ class SharePointListTarget:
2382
2184
  target_item = self._fresh_target_item(item)
2383
2185
  if target_item is None:
2384
2186
  return (None, None)
2385
- properties = target_item.properties
2386
2187
  return (
2387
- _user_login(self._list.context.web, properties.get("AuthorId"), self._login_cache),
2388
- _user_login(self._list.context.web, properties.get("EditorId"), self._login_cache),
2188
+ _user_login(self._list.context.web, target_item.author_id, self._login_cache),
2189
+ _user_login(self._list.context.web, target_item.editor_id, self._login_cache),
2389
2190
  )
2390
2191
 
2391
2192
  def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
@@ -2433,6 +2234,8 @@ class SharePointLibrarySource:
2433
2234
  # (``TimeCreated``/``TimeLastModified``) can be diffed after the run.
2434
2235
  self._folders: dict[str, "Folder"] = {}
2435
2236
  self._users: dict[int, "Principal | None"] = {}
2237
+ # Group title -> (owner user, owner group chain); a ``<Group>`` needs both.
2238
+ self._group_owners: dict[str, tuple["Principal | None", list[str]]] = {}
2436
2239
  self._default_groups: _DefaultGroups | None = None
2437
2240
  self._item_authors: dict[str, tuple[int | None, int | None]] | None = None
2438
2241
  self._item_unique: dict[str, bool] | None = None
@@ -2449,6 +2252,7 @@ class SharePointLibrarySource:
2449
2252
  def label(self) -> str:
2450
2253
  return f"library:{self._folder.server_relative_url}"
2451
2254
 
2255
+ @site_access(SiteLevel.READ)
2452
2256
  def list_items(self, progress: MigrationProgress = None) -> list[MigrationItem]:
2453
2257
  # The root folder's URL may not be loaded yet (e.g. via
2454
2258
  # ``list.root_folder``); fetch it so destinations stay library-relative
@@ -2471,7 +2275,7 @@ class SharePointLibrarySource:
2471
2275
  for folder in loaded_folders:
2472
2276
  url = folder.server_relative_url or ""
2473
2277
  rel = _rel(url)
2474
- if not rel or rel in seen or _is_system_path(rel, extra):
2278
+ if not rel or rel in seen or self._folder.is_system_path(rel, extra):
2475
2279
  continue
2476
2280
  seen.add(rel)
2477
2281
  self._folders[rel] = folder
@@ -2482,19 +2286,15 @@ class SharePointLibrarySource:
2482
2286
  item_type="folder",
2483
2287
  modified=iso_or_none(folder.time_last_modified),
2484
2288
  created=iso_or_none(folder.time_created),
2485
- author_id=author_id,
2486
- editor_id=editor_id,
2487
2289
  )
2488
- if author_id is not None:
2489
- folder_item.author = self._principal_for(author_id)
2490
- if editor_id is not None:
2491
- folder_item.editor = self._principal_for(editor_id)
2290
+ folder_item.author = self._principal_for(author_id)
2291
+ folder_item.editor = self._principal_for(editor_id)
2492
2292
  result.append(folder_item)
2493
2293
  emit_progress(progress, done=len(result), stage="planning", items=[folder])
2494
2294
  for file in loaded:
2495
2295
  url = file.server_relative_url or ""
2496
2296
  rel = _rel(url)
2497
- if _is_system_path(rel, extra):
2297
+ if self._folder.is_system_path(rel, extra):
2498
2298
  continue
2499
2299
  self._files[rel] = file
2500
2300
  author_id = parse_int(file.author.id)
@@ -2508,15 +2308,11 @@ class SharePointLibrarySource:
2508
2308
  item_type="file",
2509
2309
  modified=iso_or_none(file.time_last_modified),
2510
2310
  created=iso_or_none(file.time_created),
2511
- author_id=author_id,
2512
- editor_id=editor_id,
2513
2311
  source_id=str(file.unique_id) if file.unique_id else None,
2514
2312
  version_label=file.ui_version_label,
2515
2313
  )
2516
- if author_id is not None:
2517
- item.author = self._principal_for(author_id)
2518
- if editor_id is not None:
2519
- item.editor = self._principal_for(editor_id)
2314
+ item.author = self._principal_for(author_id)
2315
+ item.editor = self._principal_for(editor_id)
2520
2316
  result.append(item)
2521
2317
  emit_progress(progress, done=len(result), stage="planning", items=[file])
2522
2318
  self._report_checkouts(result)
@@ -2575,6 +2371,7 @@ class SharePointLibrarySource:
2575
2371
  f"preserved): {shown}"
2576
2372
  )
2577
2373
 
2374
+ @site_access(SiteLevel.READ)
2578
2375
  def read(self, item: MigrationItem) -> object:
2579
2376
  if item.item_type == "folder":
2580
2377
  # A folder's payload is its column values (empty when it carries none).
@@ -2592,6 +2389,7 @@ class SharePointLibrarySource:
2592
2389
  file.download_session(buffer, chunk_downloaded=_chunk_downloaded).execute_query()
2593
2390
  return buffer.getvalue()
2594
2391
 
2392
+ @site_access(SiteLevel.READ)
2595
2393
  def read_version_history(self, item: MigrationItem) -> tuple[str | None, list[tuple[str, bytes]]]:
2596
2394
  """Read the file's current version label and its older versions.
2597
2395
 
@@ -2608,13 +2406,10 @@ class SharePointLibrarySource:
2608
2406
  if file.ui_version_label is None:
2609
2407
  file.ensure_property("UIVersionLabel").execute_query()
2610
2408
  older: list[tuple[str, bytes]] = []
2611
- for version in file.versions.get().execute_query():
2409
+ for version in sorted(file.versions.get().execute_query(), key=lambda v: v.sort_key):
2612
2410
  label = version.version_label
2613
- if not label:
2614
- continue
2615
- data = version.open_binary_stream().execute_query().value
2616
- older.append((label, data or b""))
2617
- older.sort(key=lambda row: _version_sort_key(row[0]))
2411
+ if label and not version.is_current_version:
2412
+ older.append((label, version.open_binary_stream().execute_query().value or b""))
2618
2413
  return file.ui_version_label, older
2619
2414
 
2620
2415
  @property
@@ -2625,7 +2420,7 @@ class SharePointLibrarySource:
2625
2420
  def checksum(self, item: MigrationItem) -> str:
2626
2421
  if item.item_type == "folder":
2627
2422
  return _content_checksum(_canonicalize_taxonomy_record(self._folder_values(item)))
2628
- return hashlib.md5(cast(bytes, self.read(item))).hexdigest()
2423
+ return checksum(cast(bytes, self.read(item)))
2629
2424
 
2630
2425
  def _folder_values(self, item: MigrationItem) -> dict:
2631
2426
  """The source folder's column values (empty when it carries none)."""
@@ -2659,7 +2454,9 @@ class SharePointLibrarySource:
2659
2454
  securable.properties["HasUniqueRoleAssignments"] = unique
2660
2455
  if not _has_unique_role_assignments(securable):
2661
2456
  return []
2662
- return _read_role_assignments(securable, resolve=self._principal_for, normalize=self._normalize_name)
2457
+ entries = _read_role_assignments(securable, resolve=self._principal_for, normalize=self._normalize_name)
2458
+ _attach_group_owners(entries, self._folder.context.web, self._principal_for, self._group_owners)
2459
+ return entries
2663
2460
 
2664
2461
  def _normalize_name(self, name: str) -> str:
2665
2462
  """Canonicalize a principal name (default groups -> ``default:<Kind>``)."""
@@ -2692,7 +2489,8 @@ class SharePointLibrarySource:
2692
2489
  self._file_authors()
2693
2490
  state = (self._item_moderation or {}).get(item.source_path)
2694
2491
  if state:
2695
- metadata["moderation_status"] = state.get("_ModerationStatus")
2492
+ status = state.get(_MODERATION_STATUS)
2493
+ metadata["moderation_status"] = None if status is None else str(status)
2696
2494
  return metadata
2697
2495
 
2698
2496
  def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
@@ -2718,22 +2516,14 @@ class SharePointLibrarySource:
2718
2516
  principal: "Principal | None" = None
2719
2517
  try:
2720
2518
  user = self._folder.context.web.site_users.get_by_id(cast("str", key)).get().execute_query()
2721
- user_id_info = user.properties.get("UserId")
2722
- raw_id = getattr(user_id_info, "NameId", None)
2723
- system_id = normalize_puid(raw_id)
2724
- if raw_id and system_id is None:
2519
+ principal = _principal_of(user, key)
2520
+ if user.user_id.name_id and principal.system_id is None:
2725
2521
  # e.g. the app principal, whose ``UserId.NameId`` is not a PUID.
2726
2522
  # Emitting it would fail the whole ingestion job, so drop it.
2727
2523
  self.warnings.append(
2728
- f"user {key} ({user.login_name!r}) has no usable PUID ({raw_id!r}); "
2524
+ f"user {key} ({user.login_name!r}) has no usable PUID ({user.user_id.name_id!r}); "
2729
2525
  "it is omitted from the server-side user map"
2730
2526
  )
2731
- principal = Principal(
2732
- login_name=user.login_name or "",
2733
- system_id=system_id,
2734
- display_name=user.title,
2735
- email=user.properties.get("Email"),
2736
- )
2737
2527
  except Exception as e: # noqa: BLE001 — a missing user degrades to no authorship
2738
2528
  self.warnings.append(f"user {key} could not be resolved: {e}")
2739
2529
  self._users[key] = principal
@@ -2757,25 +2547,15 @@ class SharePointLibrarySource:
2757
2547
  # ``CheckoutUser`` is a user field: it only projects when its
2758
2548
  # sub-properties are selected *and* the field is expanded — a bare
2759
2549
  # ``$select=CheckoutUser`` is rejected by the server.
2760
- select = [
2761
- "FileRef",
2762
- "AuthorId",
2763
- "EditorId",
2764
- "HasUniqueRoleAssignments",
2765
- "CheckoutUser/Id",
2766
- "CheckoutUser/Title",
2767
- ]
2550
+ select = ["FileRef", *_METADATA_SELECT, "CheckoutUser/Id", "CheckoutUser/Title"]
2768
2551
  if moderates:
2769
2552
  select.extend(_MODERATION_FIELDS)
2770
2553
  items = self._sp_list.items.select(select).expand(["CheckoutUser"]).get_all().execute_query()
2771
2554
  for item in items:
2772
- ref = item.properties.get("FileRef")
2555
+ ref = item.file_ref
2773
2556
  if ref:
2774
- authors[ref] = (
2775
- parse_int(item.properties.get("AuthorId")),
2776
- parse_int(item.properties.get("EditorId")),
2777
- )
2778
- unique[ref] = bool(item.properties.get("HasUniqueRoleAssignments"))
2557
+ authors[ref] = (item.author_id, item.editor_id)
2558
+ unique[ref] = bool(item.has_unique_role_assignments)
2779
2559
  if item.properties.get("CheckoutUser"):
2780
2560
  checkout.add(ref)
2781
2561
  if moderates:
@@ -2810,8 +2590,9 @@ class SharePointLibrarySource:
2810
2590
  def read_item_state(self, item: MigrationItem) -> dict | None:
2811
2591
  """Approval state that a fresh upload would not reproduce.
2812
2592
 
2813
- An uploaded document starts out *approved*, so only a draft/pending or
2814
- rejected source file carries state, together with its approval comments.
2593
+ A copy arrives approved on a list without moderation and pending on one with it,
2594
+ so a pending source says nothing the copy does not already say; a draft, rejected
2595
+ or scheduled one does, together with its approval comments.
2815
2596
  """
2816
2597
  if item.item_type == "folder" or self._list_source is None:
2817
2598
  return None
@@ -2819,8 +2600,8 @@ class SharePointLibrarySource:
2819
2600
  state = (self._item_moderation or {}).get(item.source_path)
2820
2601
  if not state:
2821
2602
  return None
2822
- status = state.get("_ModerationStatus")
2823
- if status is None or status == _APPROVED_STATUS:
2603
+ status = state.get(_MODERATION_STATUS)
2604
+ if status is None or status == SPModerationStatusType.Pending.value:
2824
2605
  return None
2825
2606
  return state
2826
2607
 
@@ -2839,6 +2620,12 @@ class SharePointLibraryTarget:
2839
2620
  department is written onto the created folder's item. ``content_type_map``
2840
2621
  rewrites the folder's content type id to its target counterpart, exactly as it
2841
2622
  does for an item record.
2623
+
2624
+ Pass ``structure`` (a :class:`~office365.migration.sharepoint.structure.ListStructure`
2625
+ from :func:`~office365.migration.sharepoint.structure.load_list_structure`) to
2626
+ replay a captured shape onto the library before the first file is uploaded — the
2627
+ columns, content types, views and container settings of a bundle travel in its
2628
+ sidecar, not in each file.
2842
2629
  """
2843
2630
 
2844
2631
  #: Files carry content-approval state (``apply_item_state``). Documents refuse a
@@ -2855,6 +2642,7 @@ class SharePointLibraryTarget:
2855
2642
  concurrency=self._concurrency,
2856
2643
  sp_list=sp_list,
2857
2644
  content_type_map=self._content_type_map,
2645
+ structure=self._structure,
2858
2646
  )
2859
2647
 
2860
2648
  def __init__(
@@ -2863,7 +2651,12 @@ class SharePointLibraryTarget:
2863
2651
  concurrency: int = 1,
2864
2652
  sp_list: "SPList | None" = None,
2865
2653
  content_type_map: "ContentTypeMap | None" = None,
2654
+ structure: "ListStructure | None" = None,
2866
2655
  ) -> None:
2656
+ if structure is not None and sp_list is None:
2657
+ raise ValueError("a structure snapshot needs the target list (sp_list) to be applied to")
2658
+ self._structure = structure
2659
+ self._structure_applied = False
2867
2660
  self._folder = library_folder
2868
2661
  self._concurrency = concurrency
2869
2662
  # The folder-record mapping is the record mapping: reuse the list target so a
@@ -2876,71 +2669,44 @@ class SharePointLibraryTarget:
2876
2669
  self.warnings: list[str] = []
2877
2670
  self._login_cache: dict[int, str | None] = {}
2878
2671
  self._principals_cache: _TargetPrincipals | None = None
2879
- # Author/Editor values written by ``apply_authorship`` and folded into the
2672
+ # Author/Editor values resolved by ``apply_authorship`` and folded into the
2880
2673
  # final timestamp write so ``Editor`` isn't reset by the latter.
2881
2674
  self._pending_authorship: dict[str, dict] = {}
2882
- # Target web time zone (lazily loaded) and a UTC->local conversion cache.
2883
- self._time_zone = None
2884
- self._local_cache: dict[str, str] = {}
2885
2675
  self._field_scan: SharePointListSource | None = None
2886
2676
 
2887
- def _utc_to_local(self, *values: str | None) -> list[str | None]:
2888
- """Convert UTC timestamp strings to web-local wall-clock (one round trip).
2889
-
2890
- Document items parse form dates in the web's locale, so the desired UTC
2891
- instant must be converted to local wall-clock first. The conversion runs
2892
- server-side (``TimeZone.UTCToLocalTime``) so DST is handled correctly.
2893
- Results are cached by the exact UTC value.
2894
- """
2895
- if self._time_zone is None:
2896
- self._time_zone = self._folder.context.web.regional_settings.time_zone
2897
- outputs: list[str | None] = [None] * len(values)
2898
- pending: dict[str, object] = {}
2899
- assignments: list[tuple[int, str]] = []
2900
- for index, value in enumerate(values):
2901
- if not value:
2902
- continue
2903
- utc = _sp_utc_timestamp(value)
2904
- if utc is None:
2905
- continue
2906
- if not utc.endswith("Z"):
2907
- # Unparseable value: pass it through unchanged so a rejection is
2908
- # surfaced by ``_report_rejected_fields`` rather than silently lost.
2909
- outputs[index] = str(value)
2910
- continue
2911
- cached = self._local_cache.get(utc)
2912
- if cached is not None:
2913
- outputs[index] = cached
2914
- continue
2915
- instant = parse_datetime(utc)
2916
- if instant is None:
2917
- outputs[index] = str(value)
2918
- continue
2919
- if utc not in pending:
2920
- pending[utc] = self._time_zone.utc_to_local_time(instant)
2921
- assignments.append((index, utc))
2922
- if pending:
2923
- self._folder.context.execute_query()
2924
- for utc, result in pending.items():
2925
- local = _sp_local_timestamp(getattr(result, "value", None))
2926
- if local is not None:
2927
- self._local_cache[utc] = local
2928
- for index, utc in assignments:
2929
- outputs[index] = self._local_cache.get(utc)
2930
- return outputs
2931
-
2932
2677
  def _principals(self) -> _TargetPrincipals:
2933
2678
  """The (lazily built) target principal/role resolver."""
2934
2679
  if self._principals_cache is None:
2935
2680
  self._principals_cache = _TargetPrincipals(self._folder.context.web, self.warnings)
2936
2681
  return self._principals_cache
2937
2682
 
2683
+ def configure(self, options) -> None:
2684
+ """Replay the captured structure onto the library before the first upload.
2685
+
2686
+ Called by :class:`MigrationRunner` before the run. A bundle carries the
2687
+ library's columns, content types, views and container settings in a sidecar,
2688
+ not in each file, so they have to exist before the files land — a file
2689
+ uploaded into a bare library stores no column values of its own.
2690
+ """
2691
+ self.apply_structure()
2692
+
2693
+ def apply_structure(self) -> list[str]:
2694
+ """Provision the snapshot passed as ``structure`` (once, idempotent)."""
2695
+ if self._structure is None or self._structure_applied or self._sp_list is None:
2696
+ return []
2697
+ self._structure_applied = True
2698
+ entries = self._content_type_map.entries if self._content_type_map is not None else None
2699
+ warnings = provision_list_structure(self._sp_list, self._structure, content_type_map=entries)
2700
+ self.warnings.extend(warnings)
2701
+ return warnings
2702
+
2938
2703
  def label(self) -> str:
2939
2704
  return f"library:{self._folder.server_relative_url}"
2940
2705
 
2941
2706
  def _url(self, item: MigrationItem) -> str:
2942
2707
  return f"{(self._folder.server_relative_url or '').rstrip('/')}/{str(item.dest_path).strip('/')}"
2943
2708
 
2709
+ @site_access(SiteLevel.READ)
2944
2710
  def exists(self, item: MigrationItem) -> bool:
2945
2711
  url = self._url(item)
2946
2712
  try:
@@ -2961,12 +2727,20 @@ class SharePointLibraryTarget:
2961
2727
  self._folder.ensure_folders(paths)
2962
2728
  self._folder.context.execute_query()
2963
2729
 
2730
+ @site_access(SiteLevel.WRITE)
2964
2731
  def write(self, item: MigrationItem, payload: object) -> None:
2965
2732
  if item.item_type == "folder":
2966
2733
  self._ensure_folders([item])
2967
2734
  if isinstance(payload, dict):
2968
2735
  self._apply_folder_values(item, payload)
2969
2736
  return
2737
+ if isinstance(payload, dict):
2738
+ # ``str(payload).encode()`` below would write the record's ``repr`` into a file
2739
+ # nobody asked for, and report it as a success: refuse instead.
2740
+ raise ValueError(
2741
+ f"{item.dest_path!r} is a {item.item_type!r} with a dict payload: this target writes files, and a "
2742
+ "list record is not a file body — migrate records into a list"
2743
+ )
2970
2744
  content = payload if isinstance(payload, bytes) else str(payload).encode("utf-8")
2971
2745
  self._folder.upload_file(item.dest_path, content).execute_query()
2972
2746
 
@@ -3048,6 +2822,7 @@ class SharePointLibraryTarget:
3048
2822
  )
3049
2823
  return failures
3050
2824
 
2825
+ @site_access(SiteLevel.READ)
3051
2826
  def list_paths(self) -> list[str]:
3052
2827
  root = (self._folder.server_relative_url or "").rstrip("/")
3053
2828
  extra = _site_assets_scaffolding(self._folder)
@@ -3060,8 +2835,9 @@ class SharePointLibraryTarget:
3060
2835
  # notebook) is recreated server-side, never migrated, so it must not be
3061
2836
  # reported as target-only content during verification. Source folder paths
3062
2837
  # carry a trailing slash; target folder paths mirror that.
3063
- return [p for p in paths if p != "/" and not _is_system_path(p, extra)]
2838
+ return [p for p in paths if p != "/" and not self._folder.is_system_path(p, extra)]
3064
2839
 
2840
+ @site_access(SiteLevel.READ)
3065
2841
  def read(self, item: MigrationItem) -> bytes:
3066
2842
  """Download the written item's bytes (used by verification for Office files)."""
3067
2843
  if item.item_type == "folder":
@@ -3077,7 +2853,7 @@ class SharePointLibraryTarget:
3077
2853
  if values is None or self._list_target is None:
3078
2854
  return ""
3079
2855
  return self._list_target.content_checksum(values)
3080
- return hashlib.md5(self.read(item)).hexdigest()
2856
+ return checksum(self.read(item))
3081
2857
 
3082
2858
  def _target_folder_values(self, item: MigrationItem) -> dict | None:
3083
2859
  """The target folder's column values as they read back (``None`` if unknown)."""
@@ -3087,6 +2863,7 @@ class SharePointLibraryTarget:
3087
2863
  list_item = self._securable(item).select(columns).get().execute_query()
3088
2864
  return _folder_record_values(dict(list_item.properties))
3089
2865
 
2866
+ @site_access(SiteLevel.READ)
3090
2867
  def modified(self, item: MigrationItem) -> str:
3091
2868
  """Last-modified of the target file (for incremental migration)."""
3092
2869
  if item.item_type == "folder":
@@ -3094,32 +2871,43 @@ class SharePointLibraryTarget:
3094
2871
  file = self._folder.context.web.get_file_by_server_relative_url(self._url(item)).get().execute_query()
3095
2872
  return iso_or_none(file.time_last_modified) or ""
3096
2873
 
2874
+ @site_access(SiteLevel.WRITE)
3097
2875
  def apply_timestamps(self, item: MigrationItem) -> None:
3098
2876
  """Best-effort: restore ``Created``/``Modified`` on the written item.
3099
2877
 
3100
- Uses ``ValidateUpdateListItem``, the only REST path that can set these
3101
- system fields. For files it runs as a system update
3102
- (``bNewDocumentUpdate=True``, the CSOM ``UpdateOverwriteVersion`` path) so
3103
- the metadata lands without creating a new version; folders have no version
3104
- history. ``preserve_versions`` still needs the server-side API. Authorship
3105
- values resolved for the same item ride along in this write.
2878
+ ``ValidateUpdateListItem`` is the only REST path that can set these system
2879
+ fields. For files it runs as a system update (``bNewDocumentUpdate=True``, the
2880
+ CSOM ``UpdateOverwriteVersion`` path) so the metadata lands without creating a
2881
+ new version; folders have no version history. ``preserve_versions`` still needs
2882
+ the server-side API. Authorship values resolved for the same item ride along in
2883
+ this write.
2884
+ """
2885
+ self._restore_fidelity(item, timestamps=True)
2886
+
2887
+ def _restore_fidelity(self, item: MigrationItem, timestamps: bool) -> None:
2888
+ """One system update carrying every fidelity value this item has.
2889
+
2890
+ A document's item form reads its dates in the web's locale rather than the UTC
2891
+ a caller holds, so the timestamps are converted first (see
2892
+ :func:`_web_local_texts`); the approval state is a write of its own and stays
2893
+ last — see :meth:`apply_item_state`.
3106
2894
  """
3107
- form_values: dict = {}
3108
- created, modified = self._utc_to_local(item.created, item.modified)
3109
- if created:
3110
- form_values["Created"] = created
3111
- if modified:
3112
- form_values["Modified"] = modified
3113
- form_values.update(self._pending_authorship.pop(item.dest_path, {}))
3114
- if not form_values:
3115
- return
3116
2895
  securable = self._securable(item)
3117
2896
  if securable is None:
3118
2897
  return
3119
- result = securable.validate_update_list_item(
3120
- form_values,
3121
- dates_in_utc=True,
2898
+ created = modified = None
2899
+ if timestamps:
2900
+ created, modified = _web_local_texts(self._folder.context.web, item.created, item.modified)
2901
+ authorship = self._pending_authorship.pop(item.dest_path, {})
2902
+ if not (created or modified or authorship):
2903
+ return
2904
+ result = securable.restore_fidelity(
2905
+ created=created,
2906
+ modified=modified,
2907
+ author=authorship.get("Author"),
2908
+ editor=authorship.get("Editor"),
3122
2909
  new_document_update=item.item_type != "folder",
2910
+ web_local_dates=True,
3123
2911
  ).execute_query()
3124
2912
  _report_rejected_fields(result, self.warnings, f"timestamps {item.dest_path}")
3125
2913
 
@@ -3139,19 +2927,15 @@ class SharePointLibraryTarget:
3139
2927
  return
3140
2928
  author = self._principals().user(item.author.login_name if item.author else None)
3141
2929
  editor = self._principals().user(item.editor.login_name if item.editor else None)
3142
- if author is not None and _is_system_principal(author):
2930
+ if author is not None and author.is_service_account:
3143
2931
  author = None
3144
- if editor is not None and _is_system_principal(editor):
2932
+ if editor is not None and editor.is_service_account:
3145
2933
  editor = None
3146
2934
  if author is None and editor is None:
3147
2935
  return
3148
- form_values: dict[str, FieldUserValue] = {}
3149
- if author is not None:
3150
- form_values["Author"] = FieldUserValue(author.id, author.login_name)
3151
- if editor is not None:
3152
- form_values["Editor"] = FieldUserValue(editor.id, editor.login_name)
3153
- self._pending_authorship[item.dest_path] = dict(form_values)
2936
+ self._pending_authorship[item.dest_path] = {"Author": author, "Editor": editor}
3154
2937
 
2938
+ @site_access(SiteLevel.WRITE)
3155
2939
  def finalize_fidelity(self, item: MigrationItem) -> None:
3156
2940
  """Write the fidelity values that were only cached for this item.
3157
2941
 
@@ -3160,19 +2944,9 @@ class SharePointLibraryTarget:
3160
2944
  one system update instead of one per property group. Runs before the
3161
2945
  approval write, which must stay last.
3162
2946
  """
3163
- form_values = self._pending_authorship.pop(item.dest_path, {})
3164
- if not form_values:
3165
- return
3166
- securable = self._securable(item)
3167
- if securable is None:
3168
- return
3169
- result = securable.validate_update_list_item(
3170
- form_values,
3171
- dates_in_utc=True,
3172
- new_document_update=item.item_type != "folder",
3173
- ).execute_query()
3174
- _report_rejected_fields(result, self.warnings, f"authorship {item.dest_path}")
2947
+ self._restore_fidelity(item, timestamps=False)
3175
2948
 
2949
+ @site_access(SiteLevel.MANAGE)
3176
2950
  def apply_permissions(self, item: MigrationItem, permissions: list[PermissionEntry]) -> None:
3177
2951
  """Best-effort: replay a file's or folder's unique ACLs onto the target item.
3178
2952
 
@@ -3186,16 +2960,18 @@ class SharePointLibraryTarget:
3186
2960
  _replay_role_assignments(securable, self._principals(), permissions, self.warnings, item.dest_path)
3187
2961
  securable.context.execute_query()
3188
2962
 
2963
+ @site_access(SiteLevel.WRITE)
3189
2964
  def apply_item_state(self, item: MigrationItem, state: dict) -> None:
3190
2965
  """Best-effort: restore a migrated file's content-approval state.
3191
2966
 
3192
- An uploaded file starts out approved, and the timestamp/authorship system
3193
- updates approve it again, so a source draft or rejected file would
3194
- otherwise silently become visible. Documents reject a moderation change
3195
- combined with other properties (``You cannot change moderation status and
3196
- set other item properties at that same time.``), hence a separate write,
3197
- applied last. A library without moderation enabled has no such fields: the
3198
- write fails and is reported, never fatal.
2967
+ A fresh document is pending on a moderated library and approved on one without
2968
+ it, so a draft or rejected source file would otherwise silently become visible.
2969
+ Documents reject a moderation change combined with other properties (``You
2970
+ cannot change moderation status and set other item properties at that same
2971
+ time.``), which is why a list item carries its state in its other system update
2972
+ and a file needs this write of its own, applied last. A library without
2973
+ moderation enabled has no such fields: the write fails and is reported, never
2974
+ fatal.
3199
2975
  """
3200
2976
  if item.item_type == "folder" or not state:
3201
2977
  return
@@ -3203,16 +2979,13 @@ class SharePointLibraryTarget:
3203
2979
  if securable is None:
3204
2980
  return
3205
2981
  try:
3206
- result = securable.validate_update_list_item(
3207
- dict(state),
3208
- dates_in_utc=True,
3209
- new_document_update=True,
3210
- ).execute_query()
2982
+ result = securable.restore_fidelity(approval=dict(state), new_document_update=True).execute_query()
3211
2983
  except Exception as e: # noqa: BLE001 — approval state is best-effort
3212
2984
  self.warnings.append(f"approval state for {item.dest_path!r} could not be restored: {e}")
3213
2985
  return
3214
2986
  _report_rejected_fields(result, self.warnings, f"approval state {item.dest_path}")
3215
2987
 
2988
+ @site_access(SiteLevel.READ)
3216
2989
  def read_metadata(self, item: MigrationItem) -> dict | None:
3217
2990
  """Comparable attributes of the written item (for the metadata diff)."""
3218
2991
  if item.item_type == "folder":
@@ -3244,11 +3017,11 @@ class SharePointLibraryTarget:
3244
3017
  if securable is None:
3245
3018
  return None
3246
3019
  try:
3247
- securable.select(["OData__ModerationStatus"]).get().execute_query()
3020
+ securable.select([_MODERATION_STATUS]).get().execute_query()
3248
3021
  except Exception: # noqa: BLE001 — a library without moderation has no such column
3249
3022
  return None
3250
- status = securable.properties.get("OData__ModerationStatus")
3251
- return None if status is None else str(status)
3023
+ status = securable.moderation_status
3024
+ return None if status is None else str(status.value)
3252
3025
 
3253
3026
  def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
3254
3027
  """Read the written item's *unique* role assignments (for the permission diff)."""
@@ -3269,10 +3042,9 @@ class SharePointLibraryTarget:
3269
3042
  securable = self._fresh_securable(item)
3270
3043
  if securable is None:
3271
3044
  return (None, None)
3272
- properties = securable.properties
3273
3045
  return (
3274
- _user_login(self._folder.context.web, properties.get("AuthorId"), self._login_cache),
3275
- _user_login(self._folder.context.web, properties.get("EditorId"), self._login_cache),
3046
+ _user_login(self._folder.context.web, securable.author_id, self._login_cache),
3047
+ _user_login(self._folder.context.web, securable.editor_id, self._login_cache),
3276
3048
  )
3277
3049
 
3278
3050
  def _securable(self, item: MigrationItem):
@@ -3283,7 +3055,6 @@ class SharePointLibraryTarget:
3283
3055
 
3284
3056
  def commit(self, options=None) -> None:
3285
3057
  self._pending_authorship.clear()
3286
- self._local_cache.clear()
3287
3058
 
3288
3059
  def close(self) -> None:
3289
3060
  pass