Office365-REST-Python-Client 3.2.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 (5879) hide show
  1. office365/admin/admin.py +54 -3
  2. office365/admin/baseline_parameter.py +3 -3
  3. office365/admin/baseline_parameter_type.py +14 -0
  4. office365/admin/baseline_resource.py +1 -2
  5. office365/admin/browser_shared_cookie.py +92 -0
  6. office365/admin/browser_site.py +92 -0
  7. office365/admin/browser_site_list.py +92 -0
  8. office365/admin/configuration_management.py +92 -0
  9. office365/admin/edge/edge.py +27 -0
  10. office365/admin/exchange/admin.py +38 -0
  11. office365/admin/exchange/exchange_message_trace.py +16 -0
  12. office365/admin/exchange/exchange_message_trace_detail.py +7 -0
  13. office365/admin/exchange/exchange_message_trace_status.py +2 -0
  14. office365/admin/internet_explorer_mode.py +30 -0
  15. office365/admin/message_tracing_root.py +30 -0
  16. office365/admin/microsoft365/apps.py +28 -0
  17. office365/admin/microsoft365/m365_apps_installation_options.py +35 -0
  18. office365/admin/people/insights_settings.py +24 -0
  19. office365/admin/people/profile_property_setting.py +31 -0
  20. office365/admin/people/profile_source.py +46 -0
  21. office365/admin/people/pronouns_settings.py +18 -0
  22. office365/admin/people/settings.py +63 -1
  23. office365/admin/report_settings.py +15 -0
  24. office365/admin/sharepoint/idle_session_signout.py +0 -3
  25. office365/admin/sharepoint/settings.py +106 -0
  26. office365/admin/sharepoint/sharepoint.py +2 -0
  27. office365/backuprestore/artifact_query.py +0 -3
  28. office365/backuprestore/backup_count_statistics.py +22 -0
  29. office365/backuprestore/backup_policy_report.py +16 -0
  30. office365/backuprestore/backup_report.py +9 -0
  31. office365/backuprestore/browse_session_base.py +106 -0
  32. office365/backuprestore/email_notifications_setting.py +32 -0
  33. office365/backuprestore/onedrive_for_business_browse_session.py +18 -0
  34. office365/backuprestore/onedrive_for_business_restore_session.py +72 -0
  35. office365/backuprestore/protection_unit_base.py +99 -0
  36. office365/backuprestore/restorepoints/collection.py +66 -0
  37. office365/backuprestore/restorepoints/search_response.py +1 -2
  38. office365/backuprestore/restorepoints/search_result.py +6 -2
  39. office365/backuprestore/restoresessions/artifact_count.py +0 -3
  40. office365/backuprestore/restoresessions/browse_query_response_item.py +0 -3
  41. office365/backuprestore/restoresessions/browser_shared_cookie_history.py +1 -2
  42. office365/backuprestore/root.py +388 -2
  43. office365/backuprestore/serviceapps/service_app.py +82 -0
  44. office365/backuprestore/sharepoint_browse_session.py +18 -0
  45. office365/backuprestore/sharepoint_protection_policy.py +64 -0
  46. office365/backuprestore/sharepoint_restore_session.py +70 -0
  47. office365/backuprestore/time_period.py +1 -2
  48. office365/booking/appointment.py +212 -0
  49. office365/booking/assigned_place_mode.py +0 -3
  50. office365/booking/availability.py +1 -2
  51. office365/booking/availabilityitem.py +1 -2
  52. office365/booking/availabilitywindow.py +0 -2
  53. office365/booking/building.py +39 -0
  54. office365/booking/building_map.py +45 -0
  55. office365/booking/business/business.py +97 -3
  56. office365/booking/business/collection.py +22 -0
  57. office365/booking/business/import_building_map_setting.py +0 -3
  58. office365/booking/chedulingpolicy.py +1 -2
  59. office365/booking/currency.py +15 -0
  60. office365/booking/custom_question.py +42 -0
  61. office365/booking/customer.py +52 -0
  62. office365/booking/customers/information.py +1 -2
  63. office365/booking/customers/informationbase.py +0 -3
  64. office365/booking/drop_in_place_mode.py +0 -3
  65. office365/booking/mailbox_details.py +0 -3
  66. office365/booking/pagesettings.py +0 -3
  67. office365/booking/phone.py +0 -3
  68. office365/booking/place_mode.py +0 -3
  69. office365/booking/place_service_plan_info.py +0 -3
  70. office365/booking/questionanswer.py +0 -3
  71. office365/booking/questionassignment.py +0 -3
  72. office365/booking/reminder.py +0 -2
  73. office365/booking/reservable_place_mode.py +0 -3
  74. office365/booking/service.py +157 -0
  75. office365/booking/solutions/root.py +25 -4
  76. office365/booking/staff/availability_item.py +1 -2
  77. office365/booking/staff/member.py +80 -0
  78. office365/booking/unavailable_place_mode.py +0 -3
  79. office365/booking/work_hours.py +1 -2
  80. office365/booking/work_time_slot.py +0 -3
  81. office365/capabilities.py +144 -0
  82. office365/common/add_large_gallery_view_operation.py +8 -0
  83. office365/common/agent_identity.py +50 -0
  84. office365/common/agent_identity_blueprint.py +44 -0
  85. office365/common/agent_identity_blueprint_principal.py +37 -0
  86. office365/common/agent_user.py +7 -0
  87. office365/common/akamai_web_application_firewall_provider.py +36 -0
  88. office365/common/anonymous_calendar_sharing_free_busy_detail.py +7 -0
  89. office365/common/anonymous_calendar_sharing_free_busy_reviewer.py +7 -0
  90. office365/common/anonymous_calendar_sharing_free_busy_simple.py +7 -0
  91. office365/common/anonymous_guest_conversation_member.py +18 -0
  92. office365/common/apple_device_features_configuration_base.py +7 -0
  93. office365/common/apple_managed_identity_provider.py +36 -0
  94. office365/common/arkose_fraud_protection_provider.py +36 -0
  95. office365/common/attribute_set.py +24 -0
  96. office365/common/azure_communication_services_user_conversation_member.py +18 -0
  97. office365/common/b2b_registration_metrics_base.py +31 -0
  98. office365/common/b2b_sign_in_activity_metrics_base.py +43 -0
  99. office365/common/base_map_feature.py +7 -0
  100. office365/common/complex_extension_value.py +7 -0
  101. office365/common/configuration_baseline.py +39 -0
  102. office365/common/configuration_drift.py +65 -0
  103. office365/common/configuration_monitor.py +103 -0
  104. office365/common/configuration_monitoring_result.py +58 -0
  105. office365/common/configuration_snapshot_job.py +76 -0
  106. office365/common/contract.py +37 -0
  107. office365/common/cross_tenant_access_policy_configuration_default.py +125 -0
  108. office365/common/cross_tenant_access_policy_configuration_partner.py +158 -0
  109. office365/common/cross_tenant_calendar_availability_basic.py +7 -0
  110. office365/common/cross_tenant_calendar_availability_limited_details.py +7 -0
  111. office365/common/cross_tenant_calendar_sharing_free_busy_detail.py +7 -0
  112. office365/common/cross_tenant_calendar_sharing_free_busy_reviewer.py +7 -0
  113. office365/common/cross_tenant_calendar_sharing_free_busy_simple.py +7 -0
  114. office365/common/cross_tenant_identity_sync_policy_partner.py +32 -0
  115. office365/common/cross_tenant_mail_tips_all.py +7 -0
  116. office365/common/cross_tenant_mail_tips_limited.py +7 -0
  117. office365/common/cross_tenant_migration.py +7 -0
  118. office365/common/cross_tenant_open_profile_card.py +7 -0
  119. office365/common/cross_tenant_places_desk_booking.py +7 -0
  120. office365/common/cross_tenant_places_room_booking.py +7 -0
  121. office365/common/custom_authentication_extension.py +19 -0
  122. office365/common/custom_data_provided_resource.py +19 -0
  123. office365/common/custom_data_provided_resource_access_review_upload_session.py +7 -0
  124. office365/common/data_source_configuration.py +18 -0
  125. office365/common/delta_participants.py +34 -0
  126. office365/common/desk.py +47 -0
  127. office365/common/dictionaries.py +7 -0
  128. office365/common/directory_object_partner_reference.py +37 -0
  129. office365/common/distribution_list.py +64 -0
  130. office365/common/distribution_list_member.py +43 -0
  131. office365/common/domain_dns_mx_record.py +24 -0
  132. office365/common/domain_dns_srv_record.py +48 -0
  133. office365/common/domain_dns_txt_record.py +18 -0
  134. office365/common/domain_dns_unavailable_record.py +18 -0
  135. office365/common/drive_protection_unit.py +30 -0
  136. office365/common/drive_protection_units_bulk_addition_job.py +23 -0
  137. office365/common/drive_restore_artifact.py +30 -0
  138. office365/common/drive_restore_artifacts_bulk_addition_request.py +23 -0
  139. office365/common/edition_upgrade_configuration.py +38 -0
  140. office365/common/email_authentication_method_configuration.py +41 -0
  141. office365/common/emergency_call_event.py +31 -0
  142. office365/common/end_user_settings.py +29 -0
  143. office365/common/endpoint.py +42 -0
  144. office365/common/engagement_async_operation.py +26 -0
  145. office365/common/engagement_conversation_discussion_message.py +7 -0
  146. office365/common/engagement_conversation_question_message.py +18 -0
  147. office365/common/engagement_conversation_system_message.py +7 -0
  148. office365/common/engagement_role.py +36 -0
  149. office365/common/engagement_role_member.py +37 -0
  150. office365/common/enrollment_troubleshooting_event.py +62 -0
  151. office365/common/enterprise_code_signing_certificate.py +62 -0
  152. office365/common/error_detail.py +13 -0
  153. office365/common/event_message_request.py +51 -0
  154. office365/common/event_message_response.py +24 -0
  155. office365/common/exchange_protection_policy.py +64 -0
  156. office365/common/exchange_restore_session.py +72 -0
  157. office365/common/exchange_settings.py +18 -0
  158. office365/common/external_authentication_method.py +24 -0
  159. office365/common/external_authentication_method_configuration.py +53 -0
  160. office365/common/external_domain_name.py +7 -0
  161. office365/common/external_users_self_service_sign_up_events_flow.py +54 -0
  162. office365/common/fido2_authentication_method_configuration.py +73 -0
  163. office365/common/fido2_combination_configuration.py +17 -0
  164. office365/common/fixture_map.py +18 -0
  165. office365/common/floor.py +18 -0
  166. office365/common/footprint_map.py +7 -0
  167. office365/common/granular_drive_restore_artifact.py +18 -0
  168. office365/common/granular_mailbox_restore_artifact.py +24 -0
  169. office365/common/granular_restore_artifact_base.py +68 -0
  170. office365/common/granular_site_restore_artifact.py +18 -0
  171. office365/common/human_security_fraud_protection_provider.py +24 -0
  172. office365/common/identity_built_in_user_flow_attribute.py +7 -0
  173. office365/common/identity_custom_user_flow_attribute.py +7 -0
  174. office365/common/image_info.py +14 -0
  175. office365/common/imported_windows_autopilot_device_identity_upload.py +52 -0
  176. office365/common/intune_brand.py +28 -0
  177. office365/common/ip_named_location.py +26 -0
  178. office365/common/ipv4_range.py +12 -0
  179. office365/common/ipv6_range.py +12 -0
  180. office365/common/key_value.py +12 -0
  181. office365/common/learning_assignment.py +46 -0
  182. office365/common/level_map.py +57 -0
  183. office365/common/mail_folder_operation.py +27 -0
  184. office365/common/mail_folder_operation_status.py +15 -0
  185. office365/common/mailbox.py +28 -0
  186. office365/common/mailbox_folder.py +115 -0
  187. office365/common/mailbox_item.py +66 -0
  188. office365/common/mailbox_protection_rule.py +18 -0
  189. office365/common/mailbox_protection_unit.py +30 -0
  190. office365/common/mailbox_protection_units_bulk_addition_job.py +23 -0
  191. office365/common/mailbox_restore_artifact.py +30 -0
  192. office365/common/mailbox_restore_artifacts_bulk_addition_request.py +23 -0
  193. office365/common/managed_android_lob_app.py +37 -0
  194. office365/common/managed_android_store_app.py +31 -0
  195. office365/common/managed_app_status_raw.py +17 -0
  196. office365/common/managed_ios_lob_app.py +51 -0
  197. office365/common/managed_ios_store_app.py +38 -0
  198. office365/common/managed_mobile_lob_app.py +50 -0
  199. office365/common/meeting_engagement.py +16 -0
  200. office365/common/meeting_engagement_type.py +15 -0
  201. office365/common/member.py +15 -0
  202. office365/common/mention.py +63 -0
  203. office365/common/mentions_preview.py +11 -0
  204. office365/common/microsoft_account_user_conversation_member.py +18 -0
  205. office365/common/microsoft_authenticator_authentication_method_configuration.py +51 -0
  206. office365/common/microsoft_authenticator_authentication_method_target.py +19 -0
  207. office365/common/microsoft_store_for_business_app.py +43 -0
  208. office365/common/mime_content.py +12 -0
  209. office365/common/mute_participant_operation.py +8 -0
  210. office365/common/oidc_identity_provider.py +57 -0
  211. office365/common/on_attribute_collection_listener.py +17 -0
  212. office365/common/on_attribute_collection_start_custom_extension.py +7 -0
  213. office365/common/on_attribute_collection_start_listener.py +17 -0
  214. office365/common/on_attribute_collection_submit_custom_extension.py +7 -0
  215. office365/common/on_attribute_collection_submit_listener.py +17 -0
  216. office365/common/on_authentication_method_load_start_listener.py +19 -0
  217. office365/common/on_email_otp_send_listener.py +17 -0
  218. office365/common/on_fraud_protection_load_start_listener.py +19 -0
  219. office365/common/on_interactive_auth_flow_start_listener.py +17 -0
  220. office365/common/on_otp_send_custom_extension.py +7 -0
  221. office365/common/on_password_submit_custom_extension.py +7 -0
  222. office365/common/on_password_submit_listener.py +17 -0
  223. office365/common/on_token_issuance_start_listener.py +17 -0
  224. office365/common/on_user_create_start_listener.py +17 -0
  225. office365/common/on_verified_id_claim_validation_listener.py +17 -0
  226. office365/common/operation.py +33 -0
  227. office365/common/os_version_count.py +15 -0
  228. office365/common/participant_joining_notification.py +24 -0
  229. office365/common/participant_left_notification.py +30 -0
  230. office365/common/passkey_authentication_method_target.py +17 -0
  231. office365/common/passkey_profile.py +39 -0
  232. office365/common/phone_user_conversation_member.py +18 -0
  233. office365/common/play_prompt_operation.py +8 -0
  234. office365/common/privacy.py +34 -0
  235. office365/common/prompt.py +7 -0
  236. office365/common/protection_units_bulk_job_base.py +58 -0
  237. office365/common/provision_response.py +12 -0
  238. office365/common/proxied_domain.py +12 -0
  239. office365/common/qr_code.py +44 -0
  240. office365/common/qr_code_pin_authentication_method.py +45 -0
  241. office365/common/qr_code_pin_authentication_method_configuration.py +46 -0
  242. office365/common/qr_pin.py +37 -0
  243. office365/common/reading_assignment_submission.py +141 -0
  244. office365/common/reading_coach_passage.py +69 -0
  245. office365/common/record_operation.py +25 -0
  246. office365/common/reflect_check_in_response.py +75 -0
  247. office365/common/related_tenants_refresh_request.py +18 -0
  248. office365/common/reports_root.py +84 -0
  249. office365/common/request.py +50 -0
  250. office365/common/reseller_delegated_admin_relationship.py +24 -0
  251. office365/common/restore_artifact_base.py +60 -0
  252. office365/common/restore_artifacts_bulk_request_base.py +93 -0
  253. office365/common/restore_point.py +46 -0
  254. office365/common/restore_session_base.py +96 -0
  255. office365/common/role_assignment.py +45 -0
  256. office365/common/role_definition.py +56 -0
  257. office365/common/saml_or_ws_fed_external_domain_federation.py +30 -0
  258. office365/common/section.py +7 -0
  259. office365/common/section_map.py +18 -0
  260. office365/common/send_dtmf_tones_operation.py +18 -0
  261. office365/common/service_announcement_attachment.py +43 -0
  262. office365/common/setting_source.py +14 -0
  263. office365/common/shared_pc_configuration.py +87 -0
  264. office365/common/sharepoint_embedded_configuration.py +11 -0
  265. office365/common/single_value_extended_property.py +18 -0
  266. office365/common/site_protection_rule.py +18 -0
  267. office365/common/site_protection_unit.py +30 -0
  268. office365/common/site_protection_units_bulk_addition_job.py +23 -0
  269. office365/common/site_restore_artifact.py +30 -0
  270. office365/common/site_restore_artifacts_bulk_addition_request.py +23 -0
  271. office365/common/skype_for_business_user_conversation_member.py +24 -0
  272. office365/common/skype_user_conversation_member.py +18 -0
  273. office365/common/software_oath_authentication_method.py +18 -0
  274. office365/common/software_oath_authentication_method_configuration.py +34 -0
  275. office365/common/speaker_assignment_submission.py +128 -0
  276. office365/common/storage_quota_breakdown.py +30 -0
  277. office365/common/string_dictionary.py +7 -0
  278. office365/common/structured_data_entry.py +15 -0
  279. office365/common/structured_data_entry_typed_value.py +16 -0
  280. office365/common/structured_data_entry_value_type.py +21 -0
  281. office365/common/subscribe_to_tone_operation.py +8 -0
  282. office365/common/task_file_attachment.py +11 -0
  283. office365/common/teamwork_hosted_content.py +24 -0
  284. office365/common/telecom_provider_settings.py +16 -0
  285. office365/common/temporary_access_pass_authentication_method_configuration.py +64 -0
  286. office365/common/unit_map.py +18 -0
  287. office365/common/user_configuration.py +33 -0
  288. office365/common/verifiable_credential_authentication_method_target.py +17 -0
  289. office365/common/verifiable_credentials_authentication_method_configuration.py +36 -0
  290. office365/common/voice_authentication_method_configuration.py +47 -0
  291. office365/common/web_app.py +24 -0
  292. office365/common/what_if_analysis_result.py +25 -0
  293. office365/communications/aad_user_conversation_member_result.py +11 -0
  294. office365/communications/aad_user_notification_recipient.py +11 -0
  295. office365/communications/accept_join_response.py +7 -0
  296. office365/communications/adhoc_call.py +3 -0
  297. office365/communications/app_hosted_media_config.py +11 -0
  298. office365/communications/application_identity.py +12 -0
  299. office365/communications/application_instance_identity.py +12 -0
  300. office365/communications/attendance_interval.py +15 -0
  301. office365/communications/audio_conferencing.py +19 -0
  302. office365/communications/azure_communication_services_user_identity.py +11 -0
  303. office365/communications/broadcast_meeting_caption_settings.py +16 -0
  304. office365/communications/call_participant_info.py +14 -0
  305. office365/communications/callrecords/administrative_unit_info.py +11 -0
  306. office365/communications/callrecords/call_record.py +27 -19
  307. office365/communications/callrecords/client_user_agent.py +16 -0
  308. office365/communications/callrecords/collection.py +14 -0
  309. office365/communications/callrecords/device_info.py +31 -0
  310. office365/communications/callrecords/direct_routing_log_row.py +47 -2
  311. office365/communications/callrecords/endpoint.py +8 -2
  312. office365/communications/callrecords/failure_info.py +13 -0
  313. office365/communications/callrecords/feedback_token_set.py +7 -0
  314. office365/communications/callrecords/media.py +22 -0
  315. office365/communications/callrecords/media_stream.py +63 -0
  316. office365/communications/callrecords/network_info.py +52 -0
  317. office365/communications/callrecords/organizer.py +7 -0
  318. office365/communications/callrecords/participant.py +7 -0
  319. office365/communications/callrecords/participant_base.py +18 -0
  320. office365/communications/callrecords/participant_endpoint.py +22 -0
  321. office365/communications/callrecords/pstn_call_log_row.py +38 -0
  322. office365/communications/callrecords/segment.py +35 -0
  323. office365/communications/callrecords/service_endpoint.py +7 -0
  324. office365/communications/callrecords/service_user_agent.py +12 -0
  325. office365/communications/callrecords/session.py +14 -0
  326. office365/communications/callrecords/trace_route_hop.py +18 -0
  327. office365/communications/callrecords/user_agent.py +12 -0
  328. office365/communications/callrecords/user_feedback.py +17 -0
  329. office365/communications/callrecords/user_identity.py +11 -0
  330. office365/communications/callrecords/wifi_band.py +15 -0
  331. office365/communications/callrecords/wifi_radio_type.py +18 -0
  332. office365/communications/calls/ai_insight.py +59 -0
  333. office365/communications/calls/ai_insight_view_point.py +1 -2
  334. office365/communications/calls/audio_routing_group.py +30 -0
  335. office365/communications/calls/call.py +104 -8
  336. office365/communications/calls/collection.py +2 -0
  337. office365/communications/calls/content_sharing_session.py +7 -0
  338. office365/communications/calls/ended_event_message_detail.py +7 -2
  339. office365/communications/calls/event.py +42 -0
  340. office365/communications/calls/incoming_context.py +14 -2
  341. office365/communications/calls/invitation_participant_info.py +5 -2
  342. office365/communications/calls/media_state.py +12 -0
  343. office365/communications/calls/options.py +8 -3
  344. office365/communications/calls/participant.py +54 -1
  345. office365/communications/calls/participant_info.py +17 -2
  346. office365/communications/calls/recording_event_message_detail.py +1 -2
  347. office365/communications/calls/route.py +13 -2
  348. office365/communications/calls/started_event_message_detail.py +1 -2
  349. office365/communications/calls/transcript.py +10 -0
  350. office365/communications/calls/transcript_event_message_detail.py +1 -2
  351. office365/communications/calls/transcription_info.py +15 -0
  352. office365/communications/chat_members_notification_recipient.py +11 -0
  353. office365/communications/chat_renamed_event_message_detail.py +16 -0
  354. office365/communications/chat_restrictions.py +11 -0
  355. office365/communications/cloud_communications.py +89 -5
  356. office365/communications/comms_notification.py +12 -0
  357. office365/communications/comms_notifications.py +17 -0
  358. office365/communications/conversation_member_role_updated_event_message_detail.py +18 -0
  359. office365/communications/emergency_caller_info.py +18 -0
  360. office365/communications/encrypted_identity.py +7 -0
  361. office365/communications/engagement_identity_set.py +15 -0
  362. office365/communications/guest_identity.py +11 -0
  363. office365/communications/incoming_call_options.py +7 -0
  364. office365/communications/invite_new_bot_response.py +11 -0
  365. office365/communications/join_meeting_id_settings.py +13 -0
  366. office365/communications/max_work_location_details.py +15 -0
  367. office365/communications/media_config.py +7 -0
  368. office365/communications/media_info.py +12 -0
  369. office365/communications/media_prompt.py +14 -0
  370. office365/communications/meetings/join_meeting_id_info.py +10 -0
  371. office365/communications/onlinemeetings/attendance_record.py +67 -0
  372. office365/communications/onlinemeetings/attendee_notification_info.py +0 -3
  373. office365/communications/onlinemeetings/base.py +102 -5
  374. office365/communications/onlinemeetings/broadcast_settings.py +6 -2
  375. office365/communications/onlinemeetings/chatmode.py +8 -9
  376. office365/communications/onlinemeetings/collection.py +43 -4
  377. office365/communications/onlinemeetings/engagement_conversation.py +15 -1
  378. office365/communications/onlinemeetings/lobby_bypass_settings.py +0 -3
  379. office365/communications/onlinemeetings/meeting_attendance_report.py +64 -0
  380. office365/communications/onlinemeetings/online_meeting.py +20 -9
  381. office365/communications/onlinemeetings/online_meeting_info.py +7 -2
  382. office365/communications/onlinemeetings/participant_info.py +1 -2
  383. office365/communications/onlinemeetings/participants.py +1 -2
  384. office365/communications/onlinemeetings/recordings/call.py +10 -1
  385. office365/communications/onlinemeetings/restricted.py +16 -3
  386. office365/communications/onlinemeetings/sensitivity_label_assignment.py +11 -0
  387. office365/communications/onlinemeetings/watermark_protection_values.py +0 -3
  388. office365/communications/operations/comms.py +22 -3
  389. office365/communications/operations/invite_participants.py +3 -1
  390. office365/communications/organizer_meeting_info.py +14 -0
  391. office365/communications/out_of_office_settings.py +12 -0
  392. office365/communications/outgoing_call_options.py +7 -0
  393. office365/communications/participant_joining_response.py +7 -0
  394. office365/communications/phone_identity.py +7 -0
  395. office365/communications/presences/presence.py +25 -0
  396. office365/communications/presences/status_message.py +5 -2
  397. office365/communications/quotas.py +136 -6
  398. office365/communications/recording_info.py +16 -0
  399. office365/communications/reject_join_response.py +12 -0
  400. office365/communications/removed_state.py +11 -0
  401. office365/communications/result_info.py +0 -3
  402. office365/communications/service_hosted_media_config.py +15 -0
  403. office365/communications/teleconference_device_audio_quality.py +7 -0
  404. office365/communications/teleconference_device_media_quality.py +36 -0
  405. office365/communications/teleconference_device_screen_sharing_quality.py +7 -0
  406. office365/communications/teleconference_device_video_quality.py +14 -0
  407. office365/communications/teleconferencedevicequality.py +32 -2
  408. office365/communications/token_meeting_info.py +11 -0
  409. office365/communications/tone_info.py +13 -0
  410. office365/communications/user_identity.py +11 -0
  411. office365/communications/user_work_location.py +15 -0
  412. office365/communications/virtualevents/communications_identity_set.py +1 -2
  413. office365/communications/virtualevents/external_information.py +12 -0
  414. office365/communications/virtualevents/external_registration_information.py +12 -0
  415. office365/communications/virtualevents/presenter.py +29 -0
  416. office365/communications/virtualevents/presenter_details.py +20 -0
  417. office365/communications/virtualevents/presenter_info.py +16 -0
  418. office365/communications/virtualevents/registration.py +106 -0
  419. office365/communications/virtualevents/registration_configuration.py +58 -0
  420. office365/communications/virtualevents/registration_custom_question.py +26 -0
  421. office365/communications/virtualevents/registration_predefined_question.py +19 -0
  422. office365/communications/virtualevents/registration_question_answer.py +18 -0
  423. office365/communications/virtualevents/registration_question_base.py +24 -0
  424. office365/communications/virtualevents/root.py +25 -0
  425. office365/communications/virtualevents/session.py +34 -0
  426. office365/communications/virtualevents/settings.py +6 -3
  427. office365/communications/virtualevents/townhall.py +85 -0
  428. office365/communications/virtualevents/townhall_registration_configuration.py +7 -0
  429. office365/communications/virtualevents/virtual_event.py +69 -2
  430. office365/communications/virtualevents/webinar.py +66 -0
  431. office365/communications/virtualevents/webinar_registration_configuration.py +7 -0
  432. office365/copilot/action_item.py +0 -3
  433. office365/copilot/action_result_part.py +4 -2
  434. office365/copilot/admin_catalog.py +30 -0
  435. office365/copilot/admin_limited_mode.py +24 -0
  436. office365/copilot/admin_setting.py +26 -0
  437. office365/copilot/ai_agent_info.py +0 -3
  438. office365/copilot/ai_interaction.py +107 -0
  439. office365/copilot/ai_interaction_attachment.py +0 -3
  440. office365/copilot/ai_interaction_context.py +0 -3
  441. office365/copilot/ai_interaction_entity.py +0 -3
  442. office365/copilot/ai_interaction_history.py +9 -0
  443. office365/copilot/ai_interaction_link.py +0 -3
  444. office365/copilot/ai_interaction_mention.py +1 -2
  445. office365/copilot/ai_interaction_mentioned_identity_set.py +1 -2
  446. office365/copilot/ai_interaction_plugin.py +0 -3
  447. office365/copilot/ai_online_meeting.py +28 -0
  448. office365/copilot/ai_user.py +42 -0
  449. office365/copilot/copilot_package_request_status.py +14 -0
  450. office365/copilot/copilot_package_request_type.py +15 -0
  451. office365/copilot/package.py +157 -0
  452. office365/copilot/package_access_entity.py +3 -3
  453. office365/copilot/package_detail.py +102 -0
  454. office365/copilot/package_element.py +1 -2
  455. office365/copilot/package_element_detail.py +1 -2
  456. office365/copilot/package_request_info.py +24 -0
  457. office365/copilot/package_request_metadata.py +17 -0
  458. office365/copilot/package_request_principal.py +13 -0
  459. office365/copilot/package_request_principal_type.py +15 -0
  460. office365/copilot/report_root.py +9 -0
  461. office365/copilot/retrieval_data_source.py +2 -0
  462. office365/copilot/root.py +3 -0
  463. office365/count_collection.py +2 -2
  464. office365/delta_collection.py +37 -1
  465. office365/directory/administrative_unit.py +63 -2
  466. office365/directory/allowed_value.py +18 -0
  467. office365/directory/application_permission_type.py +13 -0
  468. office365/directory/application_resource_permission.py +15 -0
  469. office365/directory/applications/all_allowed_scopes.py +0 -3
  470. office365/directory/applications/api.py +1 -2
  471. office365/directory/applications/app_identity.py +0 -3
  472. office365/directory/applications/application.py +261 -19
  473. office365/directory/applications/application_risk_factors.py +1 -2
  474. office365/directory/applications/application_risk_score.py +0 -3
  475. office365/directory/applications/applications_required_resource_access.py +20 -0
  476. office365/directory/applications/collection.py +45 -2
  477. office365/directory/applications/custom_security_attribute_exemption.py +2 -5
  478. office365/directory/applications/custom_security_attribute_string_value_exemption.py +0 -3
  479. office365/directory/applications/enumerated_scopes.py +1 -2
  480. office365/directory/applications/identifier_uri_restriction.py +1 -2
  481. office365/directory/applications/inheritable_scopes.py +0 -3
  482. office365/directory/applications/instance_resource_access.py +18 -0
  483. office365/directory/applications/key_credential_configuration.py +1 -2
  484. office365/directory/applications/location.py +0 -3
  485. office365/directory/applications/no_scopes.py +0 -3
  486. office365/directory/applications/optional_claims.py +4 -2
  487. office365/directory/applications/parentalcontrolsettings.py +0 -3
  488. office365/directory/applications/password_credential_configuration.py +1 -2
  489. office365/directory/applications/public_client.py +1 -2
  490. office365/directory/applications/requestsignatureverification.py +0 -3
  491. office365/directory/applications/required_resource_access.py +1 -2
  492. office365/directory/applications/resource_access.py +0 -3
  493. office365/directory/applications/resource_permission.py +12 -0
  494. office365/directory/applications/riskfactors/certificate_info.py +0 -3
  495. office365/directory/applications/riskfactors/general_info.py +1 -2
  496. office365/directory/applications/riskfactors/legal_info.py +1 -2
  497. office365/directory/applications/riskfactors/legal_info_gdpr.py +0 -3
  498. office365/directory/applications/riskfactors/security_info.py +1 -2
  499. office365/directory/applications/roles/assignment.py +9 -0
  500. office365/directory/applications/roles/collection.py +3 -1
  501. office365/directory/applications/roles/role.py +1 -2
  502. office365/directory/applications/security_compliance.py +0 -3
  503. office365/directory/applications/spa.py +1 -2
  504. office365/directory/applications/template.py +18 -0
  505. office365/directory/applications/verifiedpublisher.py +0 -2
  506. office365/directory/applications/web.py +1 -2
  507. office365/directory/approval_settings.py +21 -0
  508. office365/directory/attribute_rule_members.py +0 -3
  509. office365/directory/audit/activity_initiator.py +1 -2
  510. office365/directory/audit/directory.py +9 -0
  511. office365/directory/audit/initiator.py +0 -3
  512. office365/directory/audit/log_root.py +4 -1
  513. office365/directory/audit/logs/recordtype.py +36 -0
  514. office365/directory/audit/provisioning/errorinfo.py +0 -3
  515. office365/directory/audit/provisioning/object_summary.py +30 -3
  516. office365/directory/audit/provisioning/provisionedidentity.py +1 -2
  517. office365/directory/audit/provisioning/statusinfo.py +1 -2
  518. office365/directory/audit/provisioning/step.py +1 -2
  519. office365/directory/audit/provisioning/system.py +1 -2
  520. office365/directory/audit/signins/activity.py +2 -4
  521. office365/directory/audit/signins/authentication_app_device_details.py +0 -3
  522. office365/directory/audit/signins/governance_insight.py +2 -0
  523. office365/directory/audit/signins/location.py +1 -2
  524. office365/directory/audit/signins/membership_outlier_insight.py +8 -0
  525. office365/directory/audit/signins/signin.py +29 -2
  526. office365/directory/audit/signins/status.py +0 -3
  527. office365/directory/audit/signins/user_sign_in_insight.py +2 -0
  528. office365/directory/audit/target_resource.py +1 -2
  529. office365/directory/authentication/attributecollection/external_users_self_service_sign_up.py +1 -2
  530. office365/directory/authentication/attributecollection/handler.py +0 -3
  531. office365/directory/authentication/attributecollection/input_configuration.py +1 -2
  532. office365/directory/authentication/attributecollection/method_load_start_handler.py +0 -3
  533. office365/directory/authentication/attributecollection/option_configuration.py +0 -3
  534. office365/directory/authentication/attributecollection/page.py +1 -2
  535. office365/directory/authentication/attributecollection/page_view_configuration.py +1 -2
  536. office365/directory/authentication/attributecollection/start_custom_extension_handler.py +9 -2
  537. office365/directory/authentication/attributecollection/start_handler.py +0 -3
  538. office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +9 -2
  539. office365/directory/authentication/attributecollection/submit_handler.py +0 -3
  540. office365/directory/authentication/authentication.py +156 -9
  541. office365/directory/authentication/azure_ad_token_authentication.py +0 -3
  542. office365/directory/authentication/behaviors.py +2 -3
  543. office365/directory/authentication/client_certificate.py +1 -2
  544. office365/directory/authentication/conditions/application.py +16 -0
  545. office365/directory/authentication/conditions/conditions.py +1 -2
  546. office365/directory/authentication/conditions/event_listener.py +28 -0
  547. office365/directory/authentication/configuration/base.py +1 -2
  548. office365/directory/authentication/configuration/validation.py +1 -2
  549. office365/directory/authentication/error_correction_level.py +2 -0
  550. office365/directory/authentication/fido2keyrestrictions.py +0 -3
  551. office365/directory/authentication/fraud_protection_configuration.py +0 -3
  552. office365/directory/authentication/fraud_protection_provider.py +18 -0
  553. office365/directory/authentication/fraud_protection_provider_configuration.py +8 -2
  554. office365/directory/authentication/include_target.py +0 -3
  555. office365/directory/authentication/methods/configuration.py +3 -0
  556. office365/directory/authentication/methods/details.py +16 -0
  557. office365/directory/authentication/methods/email.py +2 -0
  558. office365/directory/authentication/methods/excludetarget.py +0 -3
  559. office365/directory/authentication/methods/featureconfiguration.py +1 -2
  560. office365/directory/authentication/methods/featuretarget.py +0 -3
  561. office365/directory/authentication/methods/fido.py +38 -0
  562. office365/directory/authentication/methods/method.py +18 -0
  563. office365/directory/authentication/methods/microsoft_authenticator.py +39 -0
  564. office365/directory/authentication/methods/microsoftauthenticatorfeaturesettings.py +1 -2
  565. office365/directory/authentication/methods/mode_detail.py +3 -0
  566. office365/directory/authentication/methods/password.py +1 -0
  567. office365/directory/authentication/methods/phone.py +32 -1
  568. office365/directory/authentication/methods/registrationcampaign.py +1 -2
  569. office365/directory/authentication/methods/registrationcampaignincludetarget.py +0 -3
  570. office365/directory/authentication/methods/registrationenforcement.py +1 -2
  571. office365/directory/authentication/methods/resource_account_key_authentication_method.py +30 -0
  572. office365/directory/authentication/methods/root.py +10 -1
  573. office365/directory/authentication/methods/sms.py +17 -0
  574. office365/directory/authentication/methods/target.py +3 -0
  575. office365/directory/authentication/oidc_address_inbound_claims.py +0 -3
  576. office365/directory/authentication/oidc_client_authentication.py +0 -3
  577. office365/directory/authentication/oidc_client_secret_authentication.py +0 -3
  578. office365/directory/authentication/oidc_inbound_claim_mapping_override.py +1 -2
  579. office365/directory/authentication/oidc_private_jwt_key_client_authentication.py +0 -3
  580. office365/directory/authentication/open_id_connect_setting.py +0 -3
  581. office365/directory/authentication/password_reset_response.py +4 -3
  582. office365/directory/authentication/platform_credential_authentication_method.py +44 -0
  583. office365/directory/authentication/qr_code_image_details.py +5 -3
  584. office365/directory/authentication/signing_certificate_update_status.py +1 -2
  585. office365/directory/authentication/strength/root.py +4 -0
  586. office365/directory/authentication/strength/usage.py +1 -2
  587. office365/directory/authentication/temporary_access_pass_authentication_method.py +49 -0
  588. office365/directory/authentication/webauthn_authentication_extensions_client_inputs.py +0 -3
  589. office365/directory/authentication/webauthn_authentication_extensions_client_outputs.py +0 -3
  590. office365/directory/authentication/webauthn_authenticator_attestation_response.py +0 -3
  591. office365/directory/authentication/webauthn_authenticator_selection_criteria.py +0 -3
  592. office365/directory/authentication/webauthn_credential_creation_options.py +1 -2
  593. office365/directory/authentication/webauthn_public_key_credential.py +1 -2
  594. office365/directory/authentication/webauthn_public_key_credential_creation_options.py +1 -2
  595. office365/directory/authentication/webauthn_public_key_credential_descriptor.py +1 -2
  596. office365/directory/authentication/webauthn_public_key_credential_parameters.py +0 -3
  597. office365/directory/authentication/webauthn_public_key_credential_rp_entity.py +0 -3
  598. office365/directory/authentication/webauthn_public_key_credential_user_entity.py +0 -3
  599. office365/directory/authentication/windows_hello_for_business_authentication_method.py +37 -0
  600. office365/directory/b2b_registration_metrics.py +45 -0
  601. office365/directory/b2b_registration_metrics_initial.py +19 -0
  602. office365/directory/b2b_registration_metrics_recent.py +19 -0
  603. office365/directory/b2b_sign_in_activity_metrics.py +45 -0
  604. office365/directory/b2b_sign_in_activity_metrics_initial.py +19 -0
  605. office365/directory/b2b_sign_in_activity_metrics_recent.py +19 -0
  606. office365/directory/certificates/auth_configuration.py +2 -0
  607. office365/directory/certificates/auth_pki.py +56 -0
  608. office365/directory/certificates/authority.py +0 -3
  609. office365/directory/certificates/authority_detail.py +80 -0
  610. office365/directory/certificates/certification.py +0 -2
  611. office365/directory/certificates/pkcs12_certificate.py +0 -3
  612. office365/directory/certificates/pkcs12_information.py +0 -3
  613. office365/directory/certificates/public_key_infrastructure_root.py +2 -0
  614. office365/directory/certificates/self_signed.py +0 -2
  615. office365/directory/certificates/x509/authentication_method_configuration.py +77 -0
  616. office365/directory/certificates/x509/authenticationmodeconfiguration.py +1 -2
  617. office365/directory/certificates/x509/authority_scope.py +1 -2
  618. office365/directory/certificates/x509/combination_configuration.py +23 -0
  619. office365/directory/certificates/x509/crlvalidationconfiguration.py +0 -3
  620. office365/directory/certificates/x509/issuer_hints_configuration.py +0 -3
  621. office365/directory/certificates/x509/rule.py +0 -3
  622. office365/directory/certificates/x509/userbinding.py +0 -3
  623. office365/directory/claim_binding.py +14 -0
  624. office365/directory/claim_binding_source.py +12 -0
  625. office365/directory/claim_validation.py +12 -0
  626. office365/directory/connected_organization_members.py +0 -3
  627. office365/directory/connection_info.py +0 -3
  628. office365/directory/credential.py +105 -0
  629. office365/directory/cross_cloud_azure_active_directory_tenant.py +13 -0
  630. office365/directory/cross_tenant_migration_cancel_response.py +12 -0
  631. office365/directory/cross_tenant_migration_job.py +121 -0
  632. office365/directory/cross_tenant_migration_job_status.py +29 -0
  633. office365/directory/cross_tenant_migration_job_type.py +13 -0
  634. office365/directory/cross_tenant_migration_service_status.py +24 -0
  635. office365/directory/cross_tenant_migration_service_status_details.py +19 -0
  636. office365/directory/cross_tenant_migration_task.py +36 -0
  637. office365/directory/custom_security_attribute_definition.py +75 -0
  638. office365/directory/datapolicy/operation.py +9 -1
  639. office365/directory/delegated_administration_role_assignment.py +23 -0
  640. office365/directory/delegated_administration_role_assignment_snapshot.py +19 -0
  641. office365/directory/delegatedadmin/access_assignment.py +46 -0
  642. office365/directory/delegatedadmin/access_container.py +15 -0
  643. office365/directory/delegatedadmin/access_details.py +15 -0
  644. office365/directory/delegatedadmin/customer.py +48 -0
  645. office365/directory/delegatedadmin/relationship.py +134 -0
  646. office365/directory/delegatedadmin/relationship_customer_participant.py +12 -0
  647. office365/directory/delegatedadmin/relationship_operation.py +48 -0
  648. office365/directory/delegatedadmin/relationship_request.py +39 -0
  649. office365/directory/delegatedadmin/service_management_detail.py +24 -0
  650. office365/directory/delegatedadmin/service_provider_constraints.py +32 -0
  651. office365/directory/device_local_credential_info.py +20 -2
  652. office365/directory/directory.py +97 -4
  653. office365/directory/domains/collection.py +57 -0
  654. office365/directory/domains/dns_cname_record.py +15 -0
  655. office365/directory/domains/dns_record.py +53 -0
  656. office365/directory/domains/domain.py +119 -4
  657. office365/directory/domains/internal_domain_federation.py +70 -0
  658. office365/directory/drifted_property.py +16 -0
  659. office365/directory/entity_type_and_ids.py +16 -0
  660. office365/directory/exchange_online_cross_tenant_migration_settings.py +12 -0
  661. office365/directory/extensions/custom/callbackconfiguration.py +0 -2
  662. office365/directory/extensions/custom/calloutrequest.py +1 -2
  663. office365/directory/extensions/custom/calloutresponse.py +1 -2
  664. office365/directory/extensions/custom/clientconfiguration.py +0 -3
  665. office365/directory/extensions/custom/http_request_endpoint.py +0 -3
  666. office365/directory/extensions/extended_property.py +3 -0
  667. office365/directory/extensions/extension_property.py +7 -0
  668. office365/directory/extensions/open_type.py +2 -0
  669. office365/directory/extensions/schema.py +5 -0
  670. office365/directory/extensions/schema_property.py +0 -3
  671. office365/directory/external_domain_federation.py +13 -0
  672. office365/directory/external_sponsors.py +7 -0
  673. office365/directory/external_token_based_sap_iag_connection_info.py +16 -0
  674. office365/directory/governance_invitation.py +49 -0
  675. office365/directory/governance_relationship.py +64 -0
  676. office365/directory/governance_request.py +82 -0
  677. office365/directory/groups/assigned_label.py +0 -3
  678. office365/directory/groups/collection.py +20 -3
  679. office365/directory/groups/group.py +128 -16
  680. office365/directory/groups/group_members.py +0 -3
  681. office365/directory/groups/lifecycle_policy.py +7 -0
  682. office365/directory/groups/on_premises_sync_behavior.py +2 -0
  683. office365/directory/groups/profile.py +1 -2
  684. office365/directory/groups/setting.py +13 -0
  685. office365/directory/groups/setting_template.py +29 -0
  686. office365/directory/groups/setting_template_value.py +0 -3
  687. office365/directory/identities/api_connector.py +24 -0
  688. office365/directory/identities/application_context.py +1 -2
  689. office365/directory/identities/application_enforced_restrictions_session_control.py +0 -3
  690. office365/directory/identities/assignment_order.py +1 -2
  691. office365/directory/identities/auth_context.py +0 -3
  692. office365/directory/identities/authentication_events_flow.py +31 -0
  693. office365/directory/identities/authentication_flow.py +0 -3
  694. office365/directory/identities/b2x_identity_user_flow.py +91 -0
  695. office365/directory/identities/conditional_access_root.py +39 -3
  696. office365/directory/identities/conditional_access_session_control.py +0 -3
  697. office365/directory/identities/conditional_access_template.py +38 -0
  698. office365/directory/identities/container.py +96 -14
  699. office365/directory/identities/country_named_location.py +4 -0
  700. office365/directory/identities/ip_range.py +0 -3
  701. office365/directory/identities/named_location.py +34 -0
  702. office365/directory/identities/object_identity.py +0 -3
  703. office365/directory/identities/on_fraud_protection_load_start_external_users_auth_handler.py +1 -2
  704. office365/directory/identities/on_interactive_auth_flow_start_external_users_self_service_sign_up.py +0 -3
  705. office365/directory/identities/on_interactive_auth_flow_start_handler.py +0 -3
  706. office365/directory/identities/on_otp_send_custom_extension_handler.py +7 -2
  707. office365/directory/identities/on_otp_send_handler.py +0 -3
  708. office365/directory/identities/on_password_migration_custom_extension_handler.py +9 -2
  709. office365/directory/identities/on_password_submit_handler.py +0 -3
  710. office365/directory/identities/on_token_issuance_start_custom_extension.py +21 -0
  711. office365/directory/identities/on_token_issuance_start_custom_extension_handler.py +9 -2
  712. office365/directory/identities/on_token_issuance_start_handler.py +0 -3
  713. office365/directory/identities/on_token_issuance_start_return_claim.py +0 -3
  714. office365/directory/identities/on_user_create_start_external_users_self_service_sign_up.py +0 -3
  715. office365/directory/identities/on_user_create_start_handler.py +0 -3
  716. office365/directory/identities/on_verified_id_claim_validation_custom_extension.py +7 -0
  717. office365/directory/identities/on_verified_id_claim_validation_custom_extension_handler.py +9 -2
  718. office365/directory/identities/on_verified_id_claim_validation_handler.py +0 -3
  719. office365/directory/identities/provider.py +21 -0
  720. office365/directory/identities/provider_collection.py +2 -0
  721. office365/directory/identities/providers/base.py +2 -0
  722. office365/directory/identities/providers/base_collection.py +2 -0
  723. office365/directory/identities/providers/builtin_identity.py +2 -0
  724. office365/directory/identities/providers/on_authentication_method_load_start_external_users_self_service_sign_up.py +0 -3
  725. office365/directory/identities/providers/on_fraud_protection_load_start_handler.py +0 -3
  726. office365/directory/identities/providers/saml_or_wsfed.py +33 -0
  727. office365/directory/identities/providers/social_identity.py +4 -0
  728. office365/directory/identities/riskPrevention/akamai_attack_group_action_model.py +0 -3
  729. office365/directory/identities/riskPrevention/akamai_custom_rule_model.py +0 -3
  730. office365/directory/identities/riskPrevention/akamai_rapid_rules_model.py +0 -3
  731. office365/directory/identities/riskPrevention/akamai_verified_details_model.py +1 -2
  732. office365/directory/identities/riskPrevention/container.py +74 -0
  733. office365/directory/identities/riskPrevention/web_application_firewall_dns_configuration.py +0 -3
  734. office365/directory/identities/riskPrevention/web_application_firewall_verification_result.py +1 -2
  735. office365/directory/identities/riskPrevention/web_application_firewall_verified_details.py +1 -2
  736. office365/directory/identities/sign_in_context.py +0 -3
  737. office365/directory/identities/userflows/attribute.py +35 -0
  738. office365/directory/identities/userflows/b2x/user_flow.py +3 -12
  739. office365/directory/identities/userflows/language_configuration.py +15 -2
  740. office365/directory/identities/userflows/user_attribute_assignment.py +62 -0
  741. office365/directory/identities/userflows/user_attribute_values_item.py +0 -3
  742. office365/directory/identities/userflows/user_flow.py +21 -1
  743. office365/directory/identities/userflows/user_flow_api_connector_configuration.py +0 -3
  744. office365/directory/identities/verified_id_root.py +30 -0
  745. office365/directory/identities/web_application_firewall_provider.py +18 -0
  746. office365/directory/identities/web_application_firewall_verification_model.py +63 -0
  747. office365/directory/identity_set.py +18 -0
  748. office365/directory/identitygovernance/access_package_suggestion.py +42 -0
  749. office365/directory/identitygovernance/accessreview/context_data.py +7 -0
  750. office365/directory/identitygovernance/accessreview/context_data_base.py +12 -0
  751. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +4 -2
  752. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_stats.py +0 -3
  753. office365/directory/identitygovernance/accessreview/disable_and_delete_user_apply_action.py +0 -3
  754. office365/directory/identitygovernance/accessreview/error.py +0 -3
  755. office365/directory/identitygovernance/accessreview/history/definition.py +28 -3
  756. office365/directory/identitygovernance/accessreview/history_instance.py +8 -0
  757. office365/directory/identitygovernance/accessreview/history_schedule_settings.py +1 -2
  758. office365/directory/identitygovernance/accessreview/inactive_users_query_scope.py +0 -2
  759. office365/directory/identitygovernance/accessreview/instance.py +41 -2
  760. office365/directory/identitygovernance/accessreview/instance_decision_item.py +59 -2
  761. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_assignment_policy_resource.py +0 -3
  762. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_resource.py +0 -3
  763. office365/directory/identitygovernance/accessreview/instance_decision_item_apply_result.py +16 -0
  764. office365/directory/identitygovernance/accessreview/instance_decision_item_azure_role_resource.py +1 -2
  765. office365/directory/identitygovernance/accessreview/instance_decision_item_custom_data_provided_resource.py +13 -0
  766. office365/directory/identitygovernance/accessreview/instance_decision_item_permission.py +14 -0
  767. office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +2 -3
  768. office365/directory/identitygovernance/accessreview/instance_decision_item_service_principal_resource.py +0 -3
  769. office365/directory/identitygovernance/accessreview/notification_recipient_item.py +1 -2
  770. office365/directory/identitygovernance/accessreview/notification_recipient_query_scope.py +0 -3
  771. office365/directory/identitygovernance/accessreview/principal_resource_memberships_scope.py +1 -2
  772. office365/directory/identitygovernance/accessreview/principal_scope.py +5 -3
  773. office365/directory/identitygovernance/accessreview/principal_scope_type.py +15 -0
  774. office365/directory/identitygovernance/accessreview/query_scope.py +0 -3
  775. office365/directory/identitygovernance/accessreview/recommendation_insight_setting.py +0 -3
  776. office365/directory/identitygovernance/accessreview/remove_access_apply_action.py +0 -3
  777. office365/directory/identitygovernance/accessreview/resource_scope.py +5 -3
  778. office365/directory/identitygovernance/accessreview/resource_scope_type.py +16 -0
  779. office365/directory/identitygovernance/accessreview/reviewer.py +4 -0
  780. office365/directory/identitygovernance/accessreview/reviewer_scope.py +5 -3
  781. office365/directory/identitygovernance/accessreview/reviewer_scope_type.py +18 -0
  782. office365/directory/identitygovernance/accessreview/schedule_definition.py +57 -2
  783. office365/directory/identitygovernance/accessreview/set.py +37 -2
  784. office365/directory/identitygovernance/accessreview/stage.py +25 -0
  785. office365/directory/identitygovernance/accessreview/stage_settings.py +1 -2
  786. office365/directory/identitygovernance/accessreview/target_owners.py +1 -2
  787. office365/directory/identitygovernance/activate_group_scope.py +0 -3
  788. office365/directory/identitygovernance/activate_processing_result_scope.py +0 -3
  789. office365/directory/identitygovernance/activate_run_scope.py +0 -3
  790. office365/directory/identitygovernance/activate_user_scope.py +0 -3
  791. office365/directory/identitygovernance/activities_container.py +32 -0
  792. office365/directory/identitygovernance/appconsent/approval_route.py +2 -0
  793. office365/directory/identitygovernance/appconsent/approval_stage.py +8 -0
  794. office365/directory/identitygovernance/appconsent/request.py +3 -1
  795. office365/directory/identitygovernance/appconsent/request_collection.py +2 -0
  796. office365/directory/identitygovernance/apply_decision_context_data.py +7 -0
  797. office365/directory/identitygovernance/attribute_set_entry.py +0 -3
  798. office365/directory/identitygovernance/awaited_workflow_processing_result.py +7 -3
  799. office365/directory/identitygovernance/cancel_runs_scope.py +0 -3
  800. office365/directory/identitygovernance/cancel_scope.py +0 -3
  801. office365/directory/identitygovernance/content_activity.py +31 -0
  802. office365/directory/identitygovernance/content_base.py +0 -3
  803. office365/directory/identitygovernance/count_based_quarantine_condition.py +0 -3
  804. office365/directory/identitygovernance/custom_callout_extension_type.py +15 -0
  805. office365/directory/identitygovernance/custom_extension_resource_type.py +16 -0
  806. office365/directory/identitygovernance/custom_task_extension.py +16 -1
  807. office365/directory/identitygovernance/custom_task_extension_callout_data.py +13 -3
  808. office365/directory/identitygovernance/custom_task_extension_reply_mode.py +14 -0
  809. office365/directory/identitygovernance/custom_task_extension_response_data.py +2 -3
  810. office365/directory/identitygovernance/data.py +7 -0
  811. office365/directory/identitygovernance/data_security_and_governance.py +25 -0
  812. office365/directory/identitygovernance/deleted_item_container.py +19 -0
  813. office365/directory/identitygovernance/directory_object_workflow_subject.py +0 -3
  814. office365/directory/identitygovernance/emailsettings.py +0 -3
  815. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer.py +0 -3
  816. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_choice.py +1 -2
  817. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_string.py +0 -3
  818. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approval_stage.py +1 -2
  819. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment.py +33 -2
  820. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_approval_settings.py +1 -2
  821. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy.py +102 -3
  822. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy_scope.py +0 -3
  823. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request.py +55 -3
  824. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_callback_data.py +0 -3
  825. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_parameters.py +0 -3
  826. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_requirements.py +1 -2
  827. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_workflow_extension.py +6 -0
  828. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_requestor_settings.py +1 -2
  829. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_review_settings.py +1 -2
  830. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_workflow_extension.py +6 -0
  831. office365/directory/identitygovernance/entitlementmanagement/accesspackage/automatic_request_settings.py +0 -2
  832. office365/directory/identitygovernance/entitlementmanagement/accesspackage/catalog.py +87 -2
  833. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_file.py +31 -0
  834. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_session.py +78 -0
  835. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_extension_callout_instance.py +0 -3
  836. office365/directory/identitygovernance/entitlementmanagement/accesspackage/dynamic_approval_stage.py +0 -3
  837. office365/directory/identitygovernance/entitlementmanagement/accesspackage/expiration_pattern.py +1 -2
  838. office365/directory/identitygovernance/entitlementmanagement/accesspackage/localized_text.py +0 -3
  839. office365/directory/identitygovernance/entitlementmanagement/accesspackage/multiple_choice_question.py +14 -0
  840. office365/directory/identitygovernance/entitlementmanagement/accesspackage/notification_settings.py +0 -3
  841. office365/directory/identitygovernance/entitlementmanagement/accesspackage/package.py +98 -1
  842. office365/directory/identitygovernance/entitlementmanagement/accesspackage/question.py +17 -0
  843. office365/directory/identitygovernance/entitlementmanagement/accesspackage/request_approval_stage_callback_configuration.py +0 -3
  844. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource.py +61 -1
  845. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute.py +1 -2
  846. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_destination.py +0 -3
  847. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_question.py +0 -3
  848. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_source.py +0 -3
  849. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_environment.py +19 -1
  850. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_request.py +6 -0
  851. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role.py +16 -1
  852. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role_scope.py +36 -0
  853. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_scope.py +7 -0
  854. office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject.py +36 -1
  855. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_reason.py +0 -3
  856. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_based.py +1 -2
  857. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_self_assignment_history_based.py +1 -2
  858. office365/directory/identitygovernance/entitlementmanagement/accesspackage/text_input_question.py +3 -0
  859. office365/directory/identitygovernance/entitlementmanagement/accesspackage/user_directory_attribute_store.py +0 -3
  860. office365/directory/identitygovernance/entitlementmanagement/assignment_request_approval_stage_callback_data.py +1 -2
  861. office365/directory/identitygovernance/entitlementmanagement/available_access_package.py +46 -0
  862. office365/directory/identitygovernance/entitlementmanagement/azure_active_directory_tenant.py +0 -3
  863. office365/directory/identitygovernance/entitlementmanagement/connected_organization.py +16 -0
  864. office365/directory/identitygovernance/entitlementmanagement/control_configuration.py +43 -0
  865. office365/directory/identitygovernance/entitlementmanagement/custom_extension_behavior_on_error.py +0 -3
  866. office365/directory/identitygovernance/entitlementmanagement/custom_extension_overwrite_configuration.py +1 -2
  867. office365/directory/identitygovernance/entitlementmanagement/domain_identity_source.py +0 -3
  868. office365/directory/identitygovernance/entitlementmanagement/entitlement_management.py +264 -1
  869. office365/directory/identitygovernance/entitlementmanagement/external_origin_resource_connector.py +63 -0
  870. office365/directory/identitygovernance/entitlementmanagement/fallback_to_microsoft_provider_on_error.py +0 -3
  871. office365/directory/identitygovernance/entitlementmanagement/identity_source.py +5 -4
  872. office365/directory/identitygovernance/entitlementmanagement/management_settings.py +3 -0
  873. office365/directory/identitygovernance/entitlementmanagement/schedule.py +1 -2
  874. office365/directory/identitygovernance/entitlementmanagement/social_identity_source.py +0 -3
  875. office365/directory/identitygovernance/governance.py +47 -5
  876. office365/directory/identitygovernance/guest_sponsor_trigger.py +0 -3
  877. office365/directory/identitygovernance/insights.py +3 -1
  878. office365/directory/identitygovernance/lifecycle_management_settings.py +10 -0
  879. office365/directory/identitygovernance/lifecycle_workflows_container.py +43 -2
  880. office365/directory/identitygovernance/lifecycletaskcategory.py +4 -0
  881. office365/directory/identitygovernance/lifecycleworkflows/category.py +4 -0
  882. office365/directory/identitygovernance/parameter.py +1 -2
  883. office365/directory/identitygovernance/percentage_based_quarantine_condition.py +0 -3
  884. office365/directory/identitygovernance/preview_failed_task.py +0 -3
  885. office365/directory/identitygovernance/privilegedaccess/approval.py +2 -0
  886. office365/directory/identitygovernance/privilegedaccess/group.py +30 -0
  887. office365/directory/identitygovernance/privilegedaccess/group_assignment_schedule.py +9 -0
  888. office365/directory/identitygovernance/privilegedaccess/group_assignment_schedule_request.py +9 -0
  889. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule.py +7 -0
  890. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule_instance.py +8 -0
  891. office365/directory/identitygovernance/privilegedaccess/group_eligibility_schedule_request.py +8 -0
  892. office365/directory/identitygovernance/privilegedaccess/group_resource.py +7 -0
  893. office365/directory/identitygovernance/privilegedaccess/role_management_custom_callout_extension.py +39 -0
  894. office365/directory/identitygovernance/privilegedaccess/root.py +30 -1
  895. office365/directory/identitygovernance/privilegedaccess/schedule/group_assignment_instance.py +10 -0
  896. office365/directory/identitygovernance/privilegedaccess/schedule/instance.py +3 -0
  897. office365/directory/identitygovernance/privilegedaccess/schedule/schedule.py +14 -0
  898. office365/directory/identitygovernance/privilegedaccess/schedule_request.py +21 -1
  899. office365/directory/identitygovernance/process_content_metadata_base.py +6 -2
  900. office365/directory/identitygovernance/provisioning_attribute_mapping.py +0 -3
  901. office365/directory/identitygovernance/provisioning_object_workflow_subject.py +1 -2
  902. office365/directory/identitygovernance/quarantine_condition.py +0 -3
  903. office365/directory/identitygovernance/quarantine_configuration.py +1 -2
  904. office365/directory/identitygovernance/quarantine_details.py +1 -2
  905. office365/directory/identitygovernance/resource_access_detail.py +0 -3
  906. office365/directory/identitygovernance/rulebasedsubjectset.py +0 -3
  907. office365/directory/identitygovernance/run.py +54 -5
  908. office365/directory/identitygovernance/runsummary.py +0 -3
  909. office365/directory/identitygovernance/subject_processing_result.py +117 -0
  910. office365/directory/identitygovernance/subject_summary.py +0 -3
  911. office365/directory/identitygovernance/subject_type.py +13 -0
  912. office365/directory/identitygovernance/task.py +10 -0
  913. office365/directory/identitygovernance/task_definition.py +7 -0
  914. office365/directory/identitygovernance/task_processing_result.py +21 -1
  915. office365/directory/identitygovernance/task_report.py +13 -0
  916. office365/directory/identitygovernance/taskreportsummary.py +0 -3
  917. office365/directory/identitygovernance/termsofuse/agreement.py +26 -3
  918. office365/directory/identitygovernance/termsofuse/agreement_acceptance.py +14 -0
  919. office365/directory/identitygovernance/termsofuse/agreement_file.py +6 -2
  920. office365/directory/identitygovernance/termsofuse/agreement_file_data.py +0 -3
  921. office365/directory/identitygovernance/termsofuse/agreement_file_localization.py +6 -2
  922. office365/directory/identitygovernance/termsofuse/agreement_file_properties.py +14 -0
  923. office365/directory/identitygovernance/termsofuse/agreement_file_version.py +4 -2
  924. office365/directory/identitygovernance/termsofuse/container.py +3 -0
  925. office365/directory/identitygovernance/termsofuse/terms_expiration.py +1 -2
  926. office365/directory/identitygovernance/text_content.py +0 -3
  927. office365/directory/identitygovernance/timebasedattributetrigger.py +0 -3
  928. office365/directory/identitygovernance/toptasksinsightssummary.py +0 -3
  929. office365/directory/identitygovernance/topworkflowsinsightssummary.py +0 -3
  930. office365/directory/identitygovernance/triggerandscopebasedconditions.py +4 -2
  931. office365/directory/identitygovernance/user_data_security_and_governance.py +37 -0
  932. office365/directory/identitygovernance/user_inactivity_trigger.py +0 -3
  933. office365/directory/identitygovernance/user_processing_result.py +13 -0
  934. office365/directory/identitygovernance/user_protection_scope_container.py +9 -0
  935. office365/directory/identitygovernance/userconsent/request.py +3 -0
  936. office365/directory/identitygovernance/userconsent/request_collection.py +2 -0
  937. office365/directory/identitygovernance/usersprocessingsummary.py +0 -3
  938. office365/directory/identitygovernance/usersummary.py +0 -3
  939. office365/directory/identitygovernance/workflow/attributechangetrigger.py +1 -2
  940. office365/directory/identitygovernance/workflow/base.py +28 -2
  941. office365/directory/identitygovernance/workflow/custom_callout_extension.py +6 -0
  942. office365/directory/identitygovernance/workflow/custom_extension_stage_setting.py +3 -0
  943. office365/directory/identitygovernance/workflow/customtaskextensioncallbackdata.py +0 -3
  944. office365/directory/identitygovernance/workflow/executiontype.py +4 -0
  945. office365/directory/identitygovernance/workflow/insightsbycategory.py +0 -3
  946. office365/directory/identitygovernance/workflow/insightssummary.py +0 -3
  947. office365/directory/identitygovernance/workflow/membershipchangetrigger.py +0 -3
  948. office365/directory/identitygovernance/workflow/setting.py +16 -0
  949. office365/directory/identitygovernance/workflow/subject.py +7 -0
  950. office365/directory/identitygovernance/workflow/template.py +6 -0
  951. office365/directory/identitygovernance/workflow/triggerattribute.py +0 -3
  952. office365/directory/identitygovernance/workflow/version.py +26 -0
  953. office365/directory/identitygovernance/workflow/workflow.py +141 -0
  954. office365/directory/inheritable_permission.py +26 -0
  955. office365/directory/insights/identity.py +12 -0
  956. office365/directory/insights/office_graph.py +4 -0
  957. office365/directory/insights/resource_reference.py +4 -3
  958. office365/directory/insights/shared.py +25 -1
  959. office365/directory/insights/sharing_detail.py +5 -2
  960. office365/directory/insights/trending.py +21 -1
  961. office365/directory/insights/usage_details.py +4 -2
  962. office365/directory/insights/used.py +15 -1
  963. office365/directory/internal/sponsors.py +7 -0
  964. office365/directory/invitations/collection.py +5 -0
  965. office365/directory/invitations/invitation.py +13 -1
  966. office365/directory/invitations/message_info.py +1 -2
  967. office365/directory/key_credential.py +8 -25
  968. office365/directory/licenses/assigned_license.py +1 -2
  969. office365/directory/licenses/assigned_plan.py +0 -2
  970. office365/directory/licenses/assignment_state.py +1 -2
  971. office365/directory/licenses/collection.py +30 -0
  972. office365/directory/licenses/details.py +2 -0
  973. office365/directory/licenses/processing_state.py +0 -3
  974. office365/directory/licenses/service_plan_info.py +0 -3
  975. office365/directory/licenses/subscribed_sku.py +4 -0
  976. office365/directory/licenses/units_detail.py +0 -3
  977. office365/directory/migrations_root.py +30 -0
  978. office365/directory/modified_property.py +13 -0
  979. office365/directory/multi_tenant_application_metrics.py +45 -0
  980. office365/directory/multi_tenant_application_metrics_base.py +31 -0
  981. office365/directory/multi_tenant_application_metrics_initial.py +19 -0
  982. office365/directory/multi_tenant_application_metrics_recent.py +19 -0
  983. office365/directory/multi_tenant_applications_to_provision.py +22 -0
  984. office365/directory/multi_tenant_applications_to_provision_snapshot.py +22 -0
  985. office365/directory/multi_tenant_organization_identity_sync_policy_template.py +24 -0
  986. office365/directory/multi_tenant_organization_join_request_record.py +41 -0
  987. office365/directory/multi_tenant_organization_member.py +67 -0
  988. office365/directory/multi_tenant_organization_partner_configuration_template.py +56 -0
  989. office365/directory/o_auth_consent_app_detail.py +14 -0
  990. office365/directory/objects/addin.py +1 -2
  991. office365/directory/objects/collection.py +39 -0
  992. office365/directory/objects/informationalurl.py +0 -3
  993. office365/directory/objects/object.py +39 -0
  994. office365/directory/objects/onpremisesprovisioningerror.py +0 -2
  995. office365/directory/objects/service_provisioning_xml_error.py +0 -3
  996. office365/directory/objects/serviceprovisioningerror.py +0 -2
  997. office365/directory/on_premises_directory_synchronization.py +28 -0
  998. office365/directory/password_credential.py +9 -25
  999. office365/directory/permissions/checker.py +23 -13
  1000. office365/directory/permissions/comment_action.py +1 -2
  1001. office365/directory/permissions/create_action.py +0 -3
  1002. office365/directory/permissions/delete_action.py +0 -3
  1003. office365/directory/permissions/grants/condition_set.py +31 -0
  1004. office365/directory/permissions/grants/oauth2.py +6 -0
  1005. office365/directory/permissions/grants/resource_specific.py +6 -0
  1006. office365/directory/permissions/grants/resourcespecificpermission.py +0 -2
  1007. office365/directory/permissions/guard.py +36 -13
  1008. office365/directory/permissions/identity.py +4 -3
  1009. office365/directory/permissions/identity_set.py +7 -25
  1010. office365/directory/permissions/scope.py +0 -3
  1011. office365/directory/permissions/scoped_role_membership.py +4 -0
  1012. office365/directory/policies/activity_based_timeout_policy.py +7 -0
  1013. office365/directory/policies/admin_consent_request.py +49 -0
  1014. office365/directory/policies/all_devices_assignment_target.py +0 -3
  1015. office365/directory/policies/all_domains.py +0 -3
  1016. office365/directory/policies/all_licensed_users_assignment_target.py +0 -3
  1017. office365/directory/policies/app_management.py +11 -1
  1018. office365/directory/policies/app_management_application_configuration.py +1 -2
  1019. office365/directory/policies/app_management_configuration.py +1 -2
  1020. office365/directory/policies/app_management_policy_actor_exemptions.py +1 -2
  1021. office365/directory/policies/app_management_service_principal_configuration.py +0 -3
  1022. office365/directory/policies/applied_conditional_access.py +1 -2
  1023. office365/directory/policies/authentication_combination_configuration.py +2 -0
  1024. office365/directory/policies/authentication_context_class_reference.py +4 -0
  1025. office365/directory/policies/authentication_flows.py +23 -0
  1026. office365/directory/policies/authentication_methods.py +9 -0
  1027. office365/directory/policies/authentication_strength.py +14 -0
  1028. office365/directory/policies/authorization.py +21 -0
  1029. office365/directory/policies/azure_ad_registration_policy.py +1 -2
  1030. office365/directory/policies/base.py +3 -0
  1031. office365/directory/policies/ca_policies_deletable_root.py +3 -0
  1032. office365/directory/policies/cloud_app_security_session_control.py +0 -3
  1033. office365/directory/policies/conditionalaccess/all_external_tenants.py +0 -3
  1034. office365/directory/policies/conditionalaccess/applications.py +1 -2
  1035. office365/directory/policies/conditionalaccess/authentication_flows.py +0 -3
  1036. office365/directory/policies/conditionalaccess/client_applications.py +1 -2
  1037. office365/directory/policies/conditionalaccess/condition_set.py +1 -2
  1038. office365/directory/policies/conditionalaccess/conditional_access.py +78 -0
  1039. office365/directory/policies/conditionalaccess/device_and_app_management_assignment_target.py +0 -3
  1040. office365/directory/policies/conditionalaccess/device_info.py +1 -2
  1041. office365/directory/policies/conditionalaccess/devices.py +1 -2
  1042. office365/directory/policies/conditionalaccess/enumerated_external_tenants.py +1 -2
  1043. office365/directory/policies/conditionalaccess/external_tenants.py +0 -3
  1044. office365/directory/policies/conditionalaccess/filter.py +0 -3
  1045. office365/directory/policies/conditionalaccess/grant_controls.py +1 -2
  1046. office365/directory/policies/conditionalaccess/guests_or_external_users.py +1 -2
  1047. office365/directory/policies/conditionalaccess/locations.py +1 -2
  1048. office365/directory/policies/conditionalaccess/persistent_browser_session_control.py +0 -3
  1049. office365/directory/policies/conditionalaccess/platforms.py +1 -2
  1050. office365/directory/policies/conditionalaccess/policy_deletable_item.py +2 -0
  1051. office365/directory/policies/conditionalaccess/policy_detail.py +1 -2
  1052. office365/directory/policies/conditionalaccess/secure_sign_in_session_control.py +0 -3
  1053. office365/directory/policies/conditionalaccess/service_principal_sign_in.py +0 -3
  1054. office365/directory/policies/conditionalaccess/session_controls.py +1 -2
  1055. office365/directory/policies/conditionalaccess/sign_in_conditions.py +1 -2
  1056. office365/directory/policies/conditionalaccess/sign_in_frequency_session_control.py +0 -3
  1057. office365/directory/policies/conditionalaccess/sign_in_identity.py +0 -3
  1058. office365/directory/policies/conditionalaccess/user_action_context.py +0 -3
  1059. office365/directory/policies/conditionalaccess/user_sign_in.py +0 -3
  1060. office365/directory/policies/conditionalaccess/users.py +1 -2
  1061. office365/directory/policies/crosstenant/access.py +47 -0
  1062. office365/directory/policies/crosstenant/app_service_connect_setting.py +1 -2
  1063. office365/directory/policies/crosstenant/b2_b_setting.py +1 -2
  1064. office365/directory/policies/crosstenant/inbound_trust.py +0 -3
  1065. office365/directory/policies/crosstenant/m365_collaboration_inbound_setting.py +1 -2
  1066. office365/directory/policies/crosstenant/m365_collaboration_outbound_setting.py +1 -2
  1067. office365/directory/policies/crosstenant/target.py +0 -3
  1068. office365/directory/policies/crosstenant/target_configuration.py +1 -2
  1069. office365/directory/policies/crosstenant/tenant_restrictions.py +1 -2
  1070. office365/directory/policies/crosstenant/user_sync_inbound.py +0 -3
  1071. office365/directory/policies/custom_app_management_application_configuration.py +1 -2
  1072. office365/directory/policies/custom_app_management_configuration.py +1 -2
  1073. office365/directory/policies/default_invitation_redemption_identity_provider_configuration.py +0 -3
  1074. office365/directory/policies/device_registration.py +55 -0
  1075. office365/directory/policies/devices_filter.py +0 -3
  1076. office365/directory/policies/dlpaction.py +4 -0
  1077. office365/directory/policies/enumerated_domains.py +1 -2
  1078. office365/directory/policies/face_check_configuration.py +0 -3
  1079. office365/directory/policies/feature_rollout.py +40 -1
  1080. office365/directory/policies/federated_token_validation_policy.py +17 -0
  1081. office365/directory/policies/group_scope.py +0 -3
  1082. office365/directory/policies/identifier_uri_configuration.py +1 -2
  1083. office365/directory/policies/inbound_outbound_policy_configuration.py +0 -3
  1084. office365/directory/policies/invitation_redemption_identity_provider_configuration.py +1 -2
  1085. office365/directory/policies/ownerless_group_policy.py +57 -0
  1086. office365/directory/policies/permission_grant.py +3 -0
  1087. office365/directory/policies/protected_application_metadata.py +2 -3
  1088. office365/directory/policies/protection_policy_artifact_count.py +0 -3
  1089. office365/directory/policies/restrict_access_action.py +0 -3
  1090. office365/directory/policies/restrict_access_action_base.py +1 -4
  1091. office365/directory/policies/retention_setting.py +0 -2
  1092. office365/directory/policies/root.py +164 -7
  1093. office365/directory/policies/scope_base.py +0 -3
  1094. office365/directory/policies/security_defaults.py +2 -0
  1095. office365/directory/policies/self_service_sign_up_authentication_flow_configuration.py +0 -3
  1096. office365/directory/policies/sts.py +3 -1
  1097. office365/directory/policies/template.py +48 -0
  1098. office365/directory/policies/tenant_app_management.py +31 -0
  1099. office365/directory/policies/tenant_scope.py +0 -3
  1100. office365/directory/policies/unifiedrolemanagement/policy.py +84 -1
  1101. office365/directory/policies/unifiedrolemanagement/unified_role_assignment_schedule_request.py +154 -0
  1102. office365/directory/policies/update_allowed_combinations_result.py +1 -2
  1103. office365/directory/policies/user_scope.py +0 -3
  1104. office365/directory/policies/validating_domains.py +0 -3
  1105. office365/directory/policies/verified_id_profile_configuration.py +13 -2
  1106. office365/directory/policies/verified_id_usage_configuration.py +5 -3
  1107. office365/directory/profile_card_annotation.py +18 -0
  1108. office365/directory/profile_photo.py +3 -0
  1109. office365/directory/profile_source_localization.py +13 -0
  1110. office365/directory/protection/bitlocker.py +34 -0
  1111. office365/directory/protection/bitlocker_recovery_key.py +38 -0
  1112. office365/directory/protection/information.py +26 -0
  1113. office365/directory/protection/policy/base.py +85 -0
  1114. office365/directory/protection/policy/one_drive_for_business.py +46 -0
  1115. office365/directory/protection/risk_detection.py +20 -0
  1116. office365/directory/protection/riskyusers/activity.py +1 -2
  1117. office365/directory/protection/riskyusers/collection.py +3 -0
  1118. office365/directory/protection/riskyusers/history_item.py +2 -0
  1119. office365/directory/protection/riskyusers/risk_service_principal_activity.py +1 -2
  1120. office365/directory/protection/riskyusers/risky_service_principal.py +11 -0
  1121. office365/directory/protection/riskyusers/risky_service_principal_history_item.py +9 -0
  1122. office365/directory/protection/riskyusers/risky_user.py +6 -0
  1123. office365/directory/protection/riskyusers/service_principal_risk_detection.py +21 -0
  1124. office365/directory/protection/root.py +46 -2
  1125. office365/directory/protection/rules/base.py +77 -0
  1126. office365/directory/protection/rules/drive.py +15 -0
  1127. office365/directory/protection/threatassessment/requests/email_file.py +23 -0
  1128. office365/directory/protection/threatassessment/requests/file.py +12 -0
  1129. office365/directory/protection/threatassessment/requests/mail.py +30 -0
  1130. office365/directory/protection/threatassessment/requests/request.py +45 -1
  1131. office365/directory/protection/threatassessment/requests/threat_assessment_result.py +32 -0
  1132. office365/directory/protection/threatassessment/requests/url.py +8 -0
  1133. office365/directory/quotas.py +39 -2
  1134. office365/directory/recovery/change_object_base.py +31 -0
  1135. office365/directory/recovery/job.py +30 -0
  1136. office365/directory/recovery/job_base.py +57 -0
  1137. office365/directory/recovery/job_entity_name_and_ids_filter.py +17 -0
  1138. office365/directory/recovery/job_entity_names_filter.py +17 -0
  1139. office365/directory/recovery/job_filtering_criteria_base.py +7 -0
  1140. office365/directory/recovery/preview_job.py +9 -0
  1141. office365/directory/recovery/recovery.py +40 -0
  1142. office365/directory/related_tenant.py +96 -0
  1143. office365/directory/related_tenants_refresh_status.py +15 -0
  1144. office365/directory/relationship_creation_type.py +13 -0
  1145. office365/directory/relationship_policy.py +28 -0
  1146. office365/directory/relationship_status.py +14 -0
  1147. office365/directory/remote_tenant_group.py +43 -0
  1148. office365/directory/request_schedule.py +20 -0
  1149. office365/directory/request_status.py +14 -0
  1150. office365/directory/requestor_manager.py +0 -3
  1151. office365/directory/resource_visualization.py +18 -0
  1152. office365/directory/role_template.py +12 -0
  1153. office365/directory/role_type.py +15 -0
  1154. office365/directory/rolemanagement/app_scope.py +21 -0
  1155. office365/directory/rolemanagement/application.py +145 -3
  1156. office365/directory/rolemanagement/management.py +2 -1
  1157. office365/directory/rolemanagement/resource_action.py +5 -2
  1158. office365/directory/rolemanagement/roles/collection.py +34 -4
  1159. office365/directory/rolemanagement/roles/management_deleted_item_container.py +30 -0
  1160. office365/directory/rolemanagement/roles/permission.py +5 -2
  1161. office365/directory/rolemanagement/roles/role.py +16 -1
  1162. office365/directory/rolemanagement/templates/template.py +3 -0
  1163. office365/directory/rolemanagement/unifiedrole/assignment.py +43 -3
  1164. office365/directory/rolemanagement/unifiedrole/definition.py +38 -1
  1165. office365/directory/rolemanagement/unifiedrole/notification_recipients.py +1 -2
  1166. office365/directory/rolemanagement/unifiedrole/permission.py +1 -2
  1167. office365/directory/service_provider_constraints.py +7 -0
  1168. office365/directory/service_storage_quota_breakdown.py +7 -0
  1169. office365/directory/serviceprincipals/approved_client_app.py +18 -0
  1170. office365/directory/serviceprincipals/collection.py +48 -4
  1171. office365/directory/serviceprincipals/delegated_permission_classification.py +4 -0
  1172. office365/directory/serviceprincipals/federated_identity_credential.py +6 -0
  1173. office365/directory/serviceprincipals/identity.py +11 -0
  1174. office365/directory/serviceprincipals/lockconfiguration.py +0 -3
  1175. office365/directory/serviceprincipals/remote_desktop_security_configuration.py +43 -1
  1176. office365/directory/serviceprincipals/samlsinglesignonsettings.py +0 -3
  1177. office365/directory/serviceprincipals/service_principal.py +472 -67
  1178. office365/directory/serviceprincipals/target_device_group.py +18 -0
  1179. office365/directory/single_service_principal.py +0 -3
  1180. office365/directory/single_user.py +0 -3
  1181. office365/directory/snapshot.py +55 -0
  1182. office365/directory/status.py +15 -0
  1183. office365/directory/subscriptions/company.py +84 -0
  1184. office365/directory/synchronization/attribute_mapping.py +2 -3
  1185. office365/directory/synchronization/attribute_mapping_function_schema.py +3 -1
  1186. office365/directory/synchronization/directory_definition.py +8 -1
  1187. office365/directory/synchronization/filter_operator_schema.py +4 -0
  1188. office365/directory/synchronization/job.py +19 -1
  1189. office365/directory/synchronization/job_application_parameters.py +1 -2
  1190. office365/directory/synchronization/job_subject.py +5 -4
  1191. office365/directory/synchronization/linked_objects.py +7 -10
  1192. office365/directory/synchronization/metadata_entry.py +0 -3
  1193. office365/directory/synchronization/on_premises_accidental_deletion_prevention.py +0 -3
  1194. office365/directory/synchronization/on_premises_directory_synchronization_configuration.py +1 -2
  1195. office365/directory/synchronization/on_premises_directory_synchronization_feature.py +0 -3
  1196. office365/directory/synchronization/progress.py +0 -3
  1197. office365/directory/synchronization/quarantine.py +1 -2
  1198. office365/directory/synchronization/rule.py +5 -6
  1199. office365/directory/synchronization/schedule.py +1 -2
  1200. office365/directory/synchronization/schema.py +20 -1
  1201. office365/directory/synchronization/secret_key_string_value_pair.py +0 -3
  1202. office365/directory/synchronization/status.py +2 -3
  1203. office365/directory/synchronization/synchronization.py +16 -0
  1204. office365/directory/synchronization/template.py +19 -0
  1205. office365/directory/target_agent_identity_sponsors_or_owners.py +0 -3
  1206. office365/directory/target_application_owners.py +0 -3
  1207. office365/directory/target_manager.py +0 -3
  1208. office365/directory/target_user_sponsors.py +0 -3
  1209. office365/directory/tenant_governance.py +105 -0
  1210. office365/directory/tenant_governance_policy_template.py +70 -0
  1211. office365/directory/tenant_governance_setting.py +24 -0
  1212. office365/directory/tenantinformation/information.py +0 -3
  1213. office365/directory/tenantinformation/multi_organization.py +73 -0
  1214. office365/directory/tenantinformation/relationship.py +53 -1
  1215. office365/directory/ticket_info.py +12 -0
  1216. office365/directory/unified_approval_stage.py +24 -0
  1217. office365/directory/unified_rbac_resource_action.py +48 -0
  1218. office365/directory/unified_rbac_resource_namespace.py +40 -0
  1219. office365/directory/unified_role.py +11 -0
  1220. office365/directory/unified_role_assignment_schedule.py +50 -0
  1221. office365/directory/unified_role_assignment_schedule_instance.py +68 -0
  1222. office365/directory/unified_role_eligibility_schedule.py +25 -0
  1223. office365/directory/unified_role_eligibility_schedule_instance.py +37 -0
  1224. office365/directory/unified_role_eligibility_schedule_request.py +141 -0
  1225. office365/directory/unified_role_management_policy_approval_rule.py +17 -0
  1226. office365/directory/unified_role_management_policy_assignment.py +54 -0
  1227. office365/directory/unified_role_management_policy_authentication_context_rule.py +24 -0
  1228. office365/directory/unified_role_management_policy_custom_extension_rule.py +37 -0
  1229. office365/directory/unified_role_management_policy_enablement_rule.py +17 -0
  1230. office365/directory/unified_role_management_policy_expiration_rule.py +25 -0
  1231. office365/directory/unified_role_management_policy_notification_rule.py +43 -0
  1232. office365/directory/unified_role_management_policy_rule.py +17 -0
  1233. office365/directory/unified_role_management_policy_rule_target.py +30 -0
  1234. office365/directory/unified_role_schedule_base.py +109 -0
  1235. office365/directory/unified_role_schedule_instance_base.py +84 -0
  1236. office365/directory/unified_root.py +70 -0
  1237. office365/directory/unified_storage_quota.py +70 -0
  1238. office365/directory/users/activities/activity.py +31 -2
  1239. office365/directory/users/activities/collection.py +2 -0
  1240. office365/directory/users/activities/history_item.py +48 -1
  1241. office365/directory/users/authorizationinfo.py +1 -2
  1242. office365/directory/users/collection.py +18 -1
  1243. office365/directory/users/employeeorgdata.py +0 -3
  1244. office365/directory/users/identity.py +4 -3
  1245. office365/directory/users/inference_classification.py +25 -0
  1246. office365/directory/users/inference_classification_override.py +24 -0
  1247. office365/directory/users/insights_settings.py +2 -0
  1248. office365/directory/users/item_insights.py +7 -0
  1249. office365/directory/users/note.py +109 -0
  1250. office365/directory/users/onpremisesextensionattributes.py +0 -3
  1251. office365/directory/users/password_profile.py +0 -3
  1252. office365/directory/users/profile.py +1 -2
  1253. office365/directory/users/provisioned_plan.py +13 -0
  1254. office365/directory/users/settings.py +58 -3
  1255. office365/directory/users/storage.py +17 -0
  1256. office365/directory/users/user.py +321 -24
  1257. office365/directory/users/windows_setting.py +53 -0
  1258. office365/directory/users/windows_setting_instance.py +37 -0
  1259. office365/directory/users/work_hours_and_locations_setting.py +51 -0
  1260. office365/directory/users/work_plan_occurrence.py +51 -0
  1261. office365/directory/users/work_plan_recurrence.py +45 -0
  1262. office365/directory/verified_id_profile.py +75 -0
  1263. office365/directory/visual_info.py +19 -0
  1264. office365/education/challenging_word.py +12 -0
  1265. office365/education/related_contact.py +0 -3
  1266. office365/education/root.py +4 -0
  1267. office365/education/rubric_criterion.py +7 -0
  1268. office365/education/rubric_level.py +12 -0
  1269. office365/education/rubric_quality.py +20 -0
  1270. office365/education/rubric_quality_feedback_model.py +11 -0
  1271. office365/education/rubric_quality_selected_column_model.py +12 -0
  1272. office365/entity.py +79 -4
  1273. office365/entity_collection.py +33 -2
  1274. office365/exchange/README.md +170 -0
  1275. office365/exchange/__init__.py +6 -0
  1276. office365/exchange/client.py +163 -0
  1277. office365/exchange/cmdlets.py +68 -0
  1278. office365/exchange/environments.py +30 -0
  1279. office365/exchange/query.py +49 -0
  1280. office365/exchange/request.py +134 -0
  1281. office365/externalconnectors/acl.py +18 -0
  1282. office365/externalconnectors/activity_settings.py +17 -0
  1283. office365/externalconnectors/connection_operation.py +14 -2
  1284. office365/externalconnectors/connector_type.py +12 -0
  1285. office365/externalconnectors/content_category.py +18 -4
  1286. office365/externalconnectors/display_template.py +19 -0
  1287. office365/externalconnectors/external_activity.py +18 -1
  1288. office365/externalconnectors/external_activity_result.py +8 -0
  1289. office365/externalconnectors/external_group.py +19 -1
  1290. office365/externalconnectors/external_item_content.py +16 -0
  1291. office365/externalconnectors/external_item_information_protection_label.py +11 -0
  1292. office365/externalconnectors/identity.py +19 -0
  1293. office365/externalconnectors/item_id_resolver.py +15 -0
  1294. office365/externalconnectors/principal.py +17 -0
  1295. office365/externalconnectors/properties.py +7 -0
  1296. office365/externalconnectors/property.py +27 -0
  1297. office365/externalconnectors/property_rule.py +21 -0
  1298. office365/externalconnectors/schema.py +2 -0
  1299. office365/externalconnectors/url_match_info.py +15 -0
  1300. office365/externalconnectors/url_to_item_resolver_base.py +11 -0
  1301. office365/graph_client.py +208 -62
  1302. office365/graph_request.py +56 -4
  1303. office365/intune/audit/actor.py +25 -0
  1304. office365/intune/audit/event.py +62 -2
  1305. office365/intune/audit/event_collection.py +25 -0
  1306. office365/intune/audit/property.py +12 -0
  1307. office365/intune/audit/resource.py +15 -2
  1308. office365/intune/browser/browser_site_history.py +1 -2
  1309. office365/intune/devices/alternative_security_id.py +0 -3
  1310. office365/intune/devices/and_app_management_role_assignment.py +17 -0
  1311. office365/intune/devices/and_app_management_role_definition.py +7 -0
  1312. office365/intune/devices/category.py +21 -0
  1313. office365/intune/devices/cloud_pc.py +15 -0
  1314. office365/intune/devices/cloud_pc_launch_detail.py +0 -3
  1315. office365/intune/devices/cloud_pc_windows_setting.py +0 -3
  1316. office365/intune/devices/collection.py +6 -0
  1317. office365/intune/devices/compliance/android_compliance_policy.py +142 -0
  1318. office365/intune/devices/compliance/android_work_profile_compliance_policy.py +142 -0
  1319. office365/intune/devices/compliance/compliance.py +7 -0
  1320. office365/intune/devices/compliance/information.py +18 -0
  1321. office365/intune/devices/compliance/ios_compliance_policy.py +100 -0
  1322. office365/intune/devices/compliance/mac_os_compliance_policy.py +118 -0
  1323. office365/intune/devices/compliance/management_partner.py +79 -0
  1324. office365/intune/devices/compliance/management_partner_assignment.py +16 -0
  1325. office365/intune/devices/compliance/policy.py +180 -0
  1326. office365/intune/devices/compliance/policy_state.py +52 -0
  1327. office365/intune/devices/compliance/setting_state_device_summary.py +66 -0
  1328. office365/intune/devices/compliance/windows10_compliance_policy.py +127 -0
  1329. office365/intune/devices/compliance/windows10_mobile_compliance_policy.py +109 -0
  1330. office365/intune/devices/compliance/windows81_compliance_policy.py +79 -0
  1331. office365/intune/devices/compliance/windows_phone81_compliance_policy.py +79 -0
  1332. office365/intune/devices/compliance_action_item.py +38 -0
  1333. office365/intune/devices/compliance_device_overview.py +55 -0
  1334. office365/intune/devices/compliance_device_status.py +56 -0
  1335. office365/intune/devices/compliance_policy_assignment.py +19 -0
  1336. office365/intune/devices/compliance_policy_device_state_summary.py +66 -0
  1337. office365/intune/devices/compliance_policy_setting_state_summary.py +97 -0
  1338. office365/intune/devices/compliance_scheduled_action_for_rule.py +42 -0
  1339. office365/intune/devices/compliance_setting_state.py +80 -0
  1340. office365/intune/devices/compliance_user_overview.py +55 -0
  1341. office365/intune/devices/compliance_user_status.py +44 -0
  1342. office365/intune/devices/configuration_assignment.py +19 -0
  1343. office365/intune/devices/configuration_device_overview.py +55 -0
  1344. office365/intune/devices/configuration_device_state_summary.py +54 -0
  1345. office365/intune/devices/configuration_device_status.py +56 -0
  1346. office365/intune/devices/configuration_state.py +54 -0
  1347. office365/intune/devices/configuration_user_overview.py +55 -0
  1348. office365/intune/devices/configuration_user_status.py +44 -0
  1349. office365/intune/devices/configurations/android/android_lob_app.py +11 -0
  1350. office365/intune/devices/configurations/android/android_store_app.py +10 -0
  1351. office365/intune/devices/configurations/android/custom_configuration.py +18 -0
  1352. office365/intune/devices/configurations/android/general_device_configuration.py +305 -0
  1353. office365/intune/devices/configurations/android/minimum_operating_system.py +26 -0
  1354. office365/intune/devices/configurations/android/mobile_app_identifier.py +11 -0
  1355. office365/intune/devices/configurations/android/work_profile_custom_configuration.py +18 -0
  1356. office365/intune/devices/configurations/android/work_profile_general_device_configuration.py +231 -0
  1357. office365/intune/devices/configurations/configuration.py +148 -0
  1358. office365/intune/devices/configurations/edge_search_engine.py +14 -0
  1359. office365/intune/devices/configurations/edge_search_engine_base.py +7 -0
  1360. office365/intune/devices/configurations/edge_search_engine_custom.py +11 -0
  1361. office365/intune/devices/configurations/ios/certificate_profile.py +7 -0
  1362. office365/intune/devices/configurations/ios/custom_configuration.py +30 -0
  1363. office365/intune/devices/configurations/ios/features_configuration.py +48 -0
  1364. office365/intune/devices/configurations/ios/general/device_configuration.py +815 -0
  1365. office365/intune/devices/configurations/ios/home_screen_app.py +11 -0
  1366. office365/intune/devices/configurations/ios/home_screen_folder.py +19 -0
  1367. office365/intune/devices/configurations/ios/home_screen_folder_page.py +18 -0
  1368. office365/intune/devices/configurations/ios/home_screen_item.py +11 -0
  1369. office365/intune/devices/configurations/ios/home_screen_page.py +20 -0
  1370. office365/intune/devices/configurations/ios/minimum_operating_system.py +18 -0
  1371. office365/intune/devices/configurations/ios/network_usage_rule.py +17 -0
  1372. office365/intune/devices/configurations/ios/notification_settings.py +22 -0
  1373. office365/intune/devices/configurations/ios/update_configuration.py +39 -0
  1374. office365/intune/devices/configurations/macos/mac_os_custom_configuration.py +30 -0
  1375. office365/intune/devices/configurations/macos/mac_os_device_features_configuration.py +7 -0
  1376. office365/intune/devices/configurations/macos/mac_os_general_device_configuration.py +89 -0
  1377. office365/intune/devices/configurations/macos/mac_os_minimum_operating_system.py +22 -0
  1378. office365/intune/devices/configurations/media_content_rating_australia.py +18 -0
  1379. office365/intune/devices/configurations/media_content_rating_canada.py +18 -0
  1380. office365/intune/devices/configurations/media_content_rating_france.py +18 -0
  1381. office365/intune/devices/configurations/media_content_rating_germany.py +18 -0
  1382. office365/intune/devices/configurations/media_content_rating_ireland.py +18 -0
  1383. office365/intune/devices/configurations/media_content_rating_japan.py +18 -0
  1384. office365/intune/devices/configurations/media_content_rating_new_zealand.py +18 -0
  1385. office365/intune/devices/configurations/media_content_rating_united_kingdom.py +18 -0
  1386. office365/intune/devices/configurations/media_content_rating_united_states.py +18 -0
  1387. office365/intune/devices/configurations/oma_setting.py +13 -0
  1388. office365/intune/devices/configurations/oma_setting_base64.py +12 -0
  1389. office365/intune/devices/configurations/oma_setting_boolean.py +11 -0
  1390. office365/intune/devices/configurations/oma_setting_date_time.py +13 -0
  1391. office365/intune/devices/configurations/oma_setting_floating_point.py +11 -0
  1392. office365/intune/devices/configurations/oma_setting_integer.py +11 -0
  1393. office365/intune/devices/configurations/oma_setting_string.py +11 -0
  1394. office365/intune/devices/configurations/oma_setting_string_xml.py +12 -0
  1395. office365/intune/devices/configurations/rgb_color.py +13 -0
  1396. office365/intune/devices/configurations/windows/bit_locker_removable_drive_policy.py +16 -0
  1397. office365/intune/devices/configurations/windows/defender_advanced_threat_protection_configuration.py +24 -0
  1398. office365/intune/devices/configurations/windows/firewall_network_profile.py +25 -0
  1399. office365/intune/devices/configurations/windows/minimum_operating_system.py +13 -0
  1400. office365/intune/devices/configurations/windows/out_of_box_experience_setting.py +22 -0
  1401. office365/intune/devices/configurations/windows/phone81_custom_configuration.py +18 -0
  1402. office365/intune/devices/configurations/windows/phone81_general_configuration.py +190 -0
  1403. office365/intune/devices/configurations/windows/shared_pc_account_manager_policy.py +17 -0
  1404. office365/intune/devices/configurations/windows/update_active_hours_install.py +14 -0
  1405. office365/intune/devices/configurations/windows/update_for_business_configuration.py +246 -0
  1406. office365/intune/devices/configurations/windows/update_install_schedule_type.py +7 -0
  1407. office365/intune/devices/configurations/windows/update_scheduled_install.py +17 -0
  1408. office365/intune/devices/configurations/windows/windows10_custom_configuration.py +18 -0
  1409. office365/intune/devices/configurations/windows/windows10_endpoint_protection_configuration.py +260 -0
  1410. office365/intune/devices/configurations/windows/windows10_enrollment_completion_page_configuration.py +18 -0
  1411. office365/intune/devices/configurations/windows/windows10_enterprise_modern_app_management_configuration.py +18 -0
  1412. office365/intune/devices/configurations/windows/windows10_general_configuration.py +1251 -0
  1413. office365/intune/devices/configurations/windows/windows10_network_proxy_server.py +16 -0
  1414. office365/intune/devices/configurations/windows/windows10_secure_assessment_configuration.py +42 -0
  1415. office365/intune/devices/configurations/windows/windows10_team_general_configuration.py +137 -0
  1416. office365/intune/devices/configurations/windows/windows81_general_configuration.py +214 -0
  1417. office365/intune/devices/data.py +8 -0
  1418. office365/intune/devices/detail.py +0 -3
  1419. office365/intune/devices/device.py +170 -5
  1420. office365/intune/devices/device_metadata.py +1 -2
  1421. office365/intune/devices/enrollment/configuration.py +56 -1
  1422. office365/intune/devices/enrollment/configuration_assignment.py +16 -0
  1423. office365/intune/devices/enrollment/limit_configuration.py +15 -0
  1424. office365/intune/devices/enrollment_platform_restrictions_configuration.py +41 -0
  1425. office365/intune/devices/enrollment_windows_hello_for_business_configuration.py +86 -0
  1426. office365/intune/devices/enumerated_device_registration_membership.py +1 -2
  1427. office365/intune/devices/install_state.py +62 -0
  1428. office365/intune/devices/local_credential.py +0 -2
  1429. office365/intune/devices/log_collection_response.py +63 -0
  1430. office365/intune/devices/management/action_result.py +17 -0
  1431. office365/intune/devices/management/all_device_registration_membership.py +0 -3
  1432. office365/intune/devices/management/android_managed_app_registration.py +7 -0
  1433. office365/intune/devices/management/app_management.py +176 -4
  1434. office365/intune/devices/management/apple_push_notification_certificate.py +61 -0
  1435. office365/intune/devices/management/compliance_policy_setting_state.py +27 -0
  1436. office365/intune/devices/management/configuration_manager_client_enabled_features.py +16 -0
  1437. office365/intune/devices/management/configuration_manager_collection_assignment_target.py +11 -0
  1438. office365/intune/devices/management/configuration_setting_state.py +27 -0
  1439. office365/intune/devices/management/defender_detected_malware_actions.py +15 -0
  1440. office365/intune/devices/management/delete_user_from_shared_apple_device_action_result.py +11 -0
  1441. office365/intune/devices/management/detected_app.py +67 -0
  1442. office365/intune/devices/management/device_protection_overview.py +0 -3
  1443. office365/intune/devices/management/enrollment_platform_restriction.py +14 -0
  1444. office365/intune/devices/management/exchange_access_state_summary.py +15 -0
  1445. office365/intune/devices/management/geo_location.py +20 -0
  1446. office365/intune/devices/management/group_peer_outlier_recommendation_insight_settings.py +7 -0
  1447. office365/intune/devices/management/health_attestation_state.py +44 -0
  1448. office365/intune/devices/management/imported_windows_autopilot_device_identity.py +57 -0
  1449. office365/intune/devices/management/imported_windows_autopilot_device_identity_state.py +19 -0
  1450. office365/intune/devices/management/insight_value_double.py +11 -0
  1451. office365/intune/devices/management/insight_value_int.py +11 -0
  1452. office365/intune/devices/management/integer_range.py +12 -0
  1453. office365/intune/devices/management/ios_managed_app_registration.py +7 -0
  1454. office365/intune/devices/management/ios_update_device_status.py +81 -0
  1455. office365/intune/devices/management/localized_notification_message.py +43 -0
  1456. office365/intune/devices/management/locate_device_action_result.py +14 -0
  1457. office365/intune/devices/management/m365_capability_base.py +33 -0
  1458. office365/intune/devices/management/m365_capability_inbound_access.py +17 -0
  1459. office365/intune/devices/management/m365_capability_resource_scope.py +13 -0
  1460. office365/intune/devices/management/m365_capability_resource_scopes.py +22 -0
  1461. office365/intune/devices/management/m365_resource_type.py +14 -0
  1462. office365/intune/devices/management/managed/app/app.py +3 -0
  1463. office365/intune/devices/management/managed/app/configuration.py +2 -0
  1464. office365/intune/devices/management/managed/app/diagnostic_status.py +12 -0
  1465. office365/intune/devices/management/managed/app/operation.py +37 -0
  1466. office365/intune/devices/management/managed/app/protections/android.py +42 -1
  1467. office365/intune/devices/management/managed/app/protections/default.py +47 -2
  1468. office365/intune/devices/management/managed/app/protections/ios.py +42 -2
  1469. office365/intune/devices/management/managed/app/protections/protection.py +28 -0
  1470. office365/intune/devices/management/managed/app/protections/targeted.py +25 -1
  1471. office365/intune/devices/management/managed/app/protections/targeted_managed_app_policy_assignment.py +19 -0
  1472. office365/intune/devices/management/managed/app/protections/windows.py +206 -1
  1473. office365/intune/devices/management/managed/app/registration.py +43 -2
  1474. office365/intune/devices/management/managed/app/status.py +3 -0
  1475. office365/intune/devices/management/managed/app_policy_deployment_summary.py +50 -0
  1476. office365/intune/devices/management/managed/collection.py +26 -0
  1477. office365/intune/devices/management/managed/device_mobile_app_configuration.py +150 -0
  1478. office365/intune/devices/management/managed/device_mobile_app_configuration_assignment.py +19 -0
  1479. office365/intune/devices/management/managed/device_mobile_app_configuration_device_status.py +56 -0
  1480. office365/intune/devices/management/managed/device_mobile_app_configuration_device_summary.py +55 -0
  1481. office365/intune/devices/management/managed/device_mobile_app_configuration_user_status.py +44 -0
  1482. office365/intune/devices/management/managed/device_mobile_app_configuration_user_summary.py +55 -0
  1483. office365/intune/devices/management/managed/device_overview.py +44 -0
  1484. office365/intune/devices/management/managed/ebook/e_book_assignment.py +26 -0
  1485. office365/intune/devices/management/managed/ebook/ebook.py +84 -1
  1486. office365/intune/devices/management/managed/ebook/install_summary.py +48 -0
  1487. office365/intune/devices/management/managed/ebook/user_install_state_summary.py +54 -0
  1488. office365/intune/devices/management/managed/managed.py +172 -11
  1489. office365/intune/devices/management/managed/mobile_app.py +25 -0
  1490. office365/intune/devices/management/management.py +1035 -12
  1491. office365/intune/devices/management/mdm_windows_information_protection_policy.py +7 -0
  1492. office365/intune/devices/management/mobile_threat_defense_connector.py +104 -0
  1493. office365/intune/devices/management/mobileapps/app_configuration_setting_item.py +14 -0
  1494. office365/intune/devices/management/mobileapps/app_list_item.py +14 -0
  1495. office365/intune/devices/management/mobileapps/app_log_collection_download_details.py +16 -0
  1496. office365/intune/devices/management/mobileapps/app_log_collection_request.py +39 -0
  1497. office365/intune/devices/management/mobileapps/apps_installation_options_for_mac.py +12 -0
  1498. office365/intune/devices/management/mobileapps/apps_installation_options_for_windows.py +14 -0
  1499. office365/intune/devices/management/mobileapps/assignment.py +18 -0
  1500. office365/intune/devices/management/mobileapps/category.py +3 -0
  1501. office365/intune/devices/management/mobileapps/content.py +27 -1
  1502. office365/intune/devices/management/mobileapps/content_file.py +11 -0
  1503. office365/intune/devices/management/mobileapps/file_encryption_info.py +0 -3
  1504. office365/intune/devices/management/mobileapps/ios/ios_device_type.py +0 -3
  1505. office365/intune/devices/management/mobileapps/ios/ios_mobile_app_configuration.py +12 -0
  1506. office365/intune/devices/management/mobileapps/ios/iosi_pad_os_web_clip.py +24 -0
  1507. office365/intune/devices/management/mobileapps/ios/lob_app.py +51 -0
  1508. office365/intune/devices/management/mobileapps/ios/lob_app_assignment_settings.py +13 -0
  1509. office365/intune/devices/management/mobileapps/ios/lob_app_provisioning_configuration_assignment.py +19 -0
  1510. office365/intune/devices/management/mobileapps/ios/mobile_app_identifier.py +11 -0
  1511. office365/intune/devices/management/mobileapps/ios/store_app.py +38 -0
  1512. office365/intune/devices/management/mobileapps/ios/store_app_assignment_settings.py +13 -0
  1513. office365/intune/devices/management/mobileapps/ios/vpp_app.py +76 -0
  1514. office365/intune/devices/management/mobileapps/ios/vpp_app_assignment_settings.py +12 -0
  1515. office365/intune/devices/management/mobileapps/ios/vpp_e_book.py +62 -0
  1516. office365/intune/devices/management/mobileapps/ios/vpp_e_book_assignment.py +7 -0
  1517. office365/intune/devices/management/mobileapps/macos/mac_os_dmg_app.py +45 -0
  1518. office365/intune/devices/management/mobileapps/macos/mac_os_included_app.py +12 -0
  1519. office365/intune/devices/management/mobileapps/macos/mac_os_lob_app.py +70 -0
  1520. office365/intune/devices/management/mobileapps/macos/mac_os_lob_app_assignment_settings.py +11 -0
  1521. office365/intune/devices/management/mobileapps/macos/mac_os_lob_child_app.py +13 -0
  1522. office365/intune/devices/management/mobileapps/macos/mac_os_microsoft_defender_app.py +7 -0
  1523. office365/intune/devices/management/mobileapps/macos/mac_os_microsoft_edge_app.py +17 -0
  1524. office365/intune/devices/management/mobileapps/macos/mac_os_office_suite_app.py +7 -0
  1525. office365/intune/devices/management/mobileapps/managed/app_policy_deployment_summary_per_app.py +17 -0
  1526. office365/intune/devices/management/mobileapps/microsoft_store_for_business_app_assignment_settings.py +11 -0
  1527. office365/intune/devices/management/mobileapps/mobile_app.py +45 -2
  1528. office365/intune/devices/management/mobileapps/mobile_app_assignment_settings.py +7 -0
  1529. office365/intune/devices/management/mobileapps/mobile_app_identifier.py +7 -0
  1530. office365/intune/devices/management/mobileapps/mobile_app_install_time_settings.py +15 -0
  1531. office365/intune/devices/management/mobileapps/mobile_app_troubleshooting_event.py +30 -0
  1532. office365/intune/devices/management/mobileapps/mobile_lob_app.py +25 -1
  1533. office365/intune/devices/management/mobileapps/relationship.py +9 -0
  1534. office365/intune/devices/management/mobileapps/vpp_licensing_type.py +12 -0
  1535. office365/intune/devices/management/mobileapps/win32/lob_app.py +102 -0
  1536. office365/intune/devices/management/mobileapps/win32/lob_app_assignment_settings.py +34 -0
  1537. office365/intune/devices/management/mobileapps/win32/lob_app_auto_update_settings.py +16 -0
  1538. office365/intune/devices/management/mobileapps/win32/lob_app_file_system_rule.py +22 -0
  1539. office365/intune/devices/management/mobileapps/win32/lob_app_install_experience.py +18 -0
  1540. office365/intune/devices/management/mobileapps/win32/lob_app_msi_information.py +20 -0
  1541. office365/intune/devices/management/mobileapps/win32/lob_app_power_shell_script_rule.py +29 -0
  1542. office365/intune/devices/management/mobileapps/win32/lob_app_product_code_rule.py +16 -0
  1543. office365/intune/devices/management/mobileapps/win32/lob_app_registry_rule.py +22 -0
  1544. office365/intune/devices/management/mobileapps/win32/lob_app_restart_settings.py +13 -0
  1545. office365/intune/devices/management/mobileapps/win32/lob_app_return_code.py +15 -0
  1546. office365/intune/devices/management/mobileapps/win32/lob_app_rule.py +14 -0
  1547. office365/intune/devices/management/mobileapps/windows/app_x.py +56 -0
  1548. office365/intune/devices/management/mobileapps/windows/app_x_app_assignment_settings.py +11 -0
  1549. office365/intune/devices/management/mobileapps/windows/microsoft_edge_app.py +25 -0
  1550. office365/intune/devices/management/mobileapps/windows/mobile_msi.py +36 -0
  1551. office365/intune/devices/management/mobileapps/windows/universal_app_x.py +85 -0
  1552. office365/intune/devices/management/mobileapps/windows/universal_app_x_app_assignment_settings.py +11 -0
  1553. office365/intune/devices/management/mobileapps/windows/universal_app_x_contained_app.py +18 -0
  1554. office365/intune/devices/management/mobileapps/windows/web_app.py +18 -0
  1555. office365/intune/devices/management/notification_message_template.py +69 -0
  1556. office365/intune/devices/management/obliteration_behavior.py +15 -0
  1557. office365/intune/devices/management/on_premises_conditional_access_settings.py +37 -0
  1558. office365/intune/devices/management/operating_system_summary.py +22 -0
  1559. office365/intune/devices/management/partner_assignment.py +16 -0
  1560. office365/intune/devices/management/remote_lock_action_result.py +11 -0
  1561. office365/intune/devices/management/remoteassistance/partner.py +38 -0
  1562. office365/intune/devices/management/reports/reports.py +29 -0
  1563. office365/intune/devices/management/reset_passcode_action_result.py +12 -0
  1564. office365/intune/devices/management/resource_operation.py +30 -0
  1565. office365/intune/devices/management/rotate_bit_locker_keys_device_action_result.py +11 -0
  1566. office365/intune/devices/management/settings.py +0 -3
  1567. office365/intune/devices/management/software_update_status_summary.py +102 -0
  1568. office365/intune/devices/management/system_browser_enabled_on.py +16 -0
  1569. office365/intune/devices/management/targeted_managed_app_configuration.py +74 -0
  1570. office365/intune/devices/management/terms_and_conditions.py +98 -0
  1571. office365/intune/devices/management/terms_and_conditions_acceptance_status.py +56 -0
  1572. office365/intune/devices/management/terms_and_conditions_assignment.py +19 -0
  1573. office365/intune/devices/management/update_windows_device_account_action_parameter.py +21 -0
  1574. office365/intune/devices/management/user_experience_analytics_settings.py +0 -3
  1575. office365/intune/devices/management/user_last_sign_in_recommendation_insight_setting.py +20 -0
  1576. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_details.py +60 -0
  1577. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_device_id.py +61 -0
  1578. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_os_version.py +66 -0
  1579. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_application_performance.py +66 -0
  1580. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_model_performance.py +49 -0
  1581. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance.py +80 -0
  1582. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance_details.py +55 -0
  1583. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_os_version_performance.py +42 -0
  1584. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_autopilot_devices_summary.py +13 -0
  1585. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_baseline.py +132 -0
  1586. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_category.py +46 -0
  1587. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_identity_devices_summary.py +11 -0
  1588. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_management_devices_summary.py +13 -0
  1589. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_performance.py +134 -0
  1590. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_scores.py +67 -0
  1591. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_history.py +112 -0
  1592. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process.py +42 -0
  1593. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process_performance.py +48 -0
  1594. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight.py +25 -0
  1595. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight_value.py +7 -0
  1596. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric.py +24 -0
  1597. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric_history.py +31 -0
  1598. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_model_scores.py +67 -0
  1599. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_overview.py +22 -0
  1600. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_score_history.py +19 -0
  1601. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_windows10_devices_summary.py +11 -0
  1602. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_device.py +220 -0
  1603. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_devices_summary.py +46 -0
  1604. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_hardware_readiness_metric.py +78 -0
  1605. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_metric.py +36 -0
  1606. office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_model_performance.py +67 -0
  1607. office365/intune/devices/management/virtualendpoint/cloudpcs/auditactor.py +1 -2
  1608. office365/intune/devices/management/virtualendpoint/cloudpcs/auditproperty.py +0 -3
  1609. office365/intune/devices/management/virtualendpoint/cloudpcs/auditresource.py +1 -2
  1610. office365/intune/devices/management/virtualendpoint/cloudpcs/domainjoinconfiguration.py +0 -3
  1611. office365/intune/devices/management/virtualendpoint/cloudpcs/exclusion_group_assignment_target.py +0 -3
  1612. office365/intune/devices/management/virtualendpoint/cloudpcs/group_assignment_target.py +0 -3
  1613. office365/intune/devices/management/virtualendpoint/cloudpcs/managementgroupassignmenttarget.py +0 -3
  1614. office365/intune/devices/management/virtualendpoint/cloudpcs/onpremisesconnectionhealthcheck.py +0 -2
  1615. office365/intune/devices/management/virtualendpoint/cloudpcs/onpremisesconnectionstatusdetail.py +1 -2
  1616. office365/intune/devices/management/virtualendpoint/cloudpcs/provisioningpolicyautopatch.py +0 -3
  1617. office365/intune/devices/management/virtualendpoint/cloudpcs/restorepointsetting.py +0 -3
  1618. office365/intune/devices/management/virtualendpoint/cloudpcs/sourcedeviceimage.py +0 -3
  1619. office365/intune/devices/management/virtualendpoint/cloudpcs/userrolescopetaginfo.py +0 -3
  1620. office365/intune/devices/management/virtualendpoint/provisioningpolicies/microsoft_managed_desktop.py +0 -3
  1621. office365/intune/devices/management/virtualendpoint/virtual_endpoint.py +147 -0
  1622. office365/intune/devices/management/vpptokens/vpp_token.py +12 -0
  1623. office365/intune/devices/management/windows_autopilot_deployment_profile.py +110 -0
  1624. office365/intune/devices/management/windows_autopilot_deployment_profile_assignment.py +7 -0
  1625. office365/intune/devices/management/windows_autopilot_device_identity.py +110 -0
  1626. office365/intune/devices/management/windows_defender_scan_action_result.py +11 -0
  1627. office365/intune/devices/management/windows_device_account.py +11 -0
  1628. office365/intune/devices/management/windows_device_ad_account.py +12 -0
  1629. office365/intune/devices/management/windows_device_azure_ad_account.py +11 -0
  1630. office365/intune/devices/management/windows_information_protection_app.py +15 -0
  1631. office365/intune/devices/management/windows_information_protection_app_learning_summary.py +31 -0
  1632. office365/intune/devices/management/windows_information_protection_app_locker_file.py +36 -0
  1633. office365/intune/devices/management/windows_information_protection_data_recovery_certificate.py +16 -0
  1634. office365/intune/devices/management/windows_information_protection_desktop_app.py +13 -0
  1635. office365/intune/devices/management/windows_information_protection_ip_range_collection.py +16 -0
  1636. office365/intune/devices/management/windows_information_protection_network_learning_summary.py +24 -0
  1637. office365/intune/devices/management/windows_information_protection_pin_character_requirements.py +13 -0
  1638. office365/intune/devices/management/windows_information_protection_policy.py +87 -0
  1639. office365/intune/devices/management/windows_information_protection_proxied_domain_collection.py +18 -0
  1640. office365/intune/devices/management/windows_information_protection_resource_collection.py +15 -0
  1641. office365/intune/devices/management/windows_information_protection_store_app.py +7 -0
  1642. office365/intune/devices/management/windows_malware_overview.py +34 -2
  1643. office365/intune/devices/management/windows_protection_state.py +163 -0
  1644. office365/intune/devices/management/windowsmalware/malware_state_for_windows_device.py +51 -0
  1645. office365/intune/devices/management/windowsmalware/windows_device_malware_state.py +78 -0
  1646. office365/intune/devices/management/windowsmalware/windows_malware_category_count.py +20 -0
  1647. office365/intune/devices/management/windowsmalware/windows_malware_execution_state_count.py +18 -0
  1648. office365/intune/devices/management/windowsmalware/windows_malware_information.py +67 -0
  1649. office365/intune/devices/management/windowsmalware/windows_malware_name_count.py +16 -0
  1650. office365/intune/devices/management/windowsmalware/windows_malware_severity_count.py +19 -0
  1651. office365/intune/devices/management/windowsmalware/windows_malware_state_count.py +20 -0
  1652. office365/intune/devices/management_cached_report_configuration.py +7 -0
  1653. office365/intune/devices/management_exchange_connector.py +69 -0
  1654. office365/intune/devices/management_export_job.py +72 -0
  1655. office365/intune/devices/management_partner.py +74 -0
  1656. office365/intune/devices/management_troubleshooting_event.py +25 -0
  1657. office365/intune/devices/no_device_registration_membership.py +0 -3
  1658. office365/intune/devices/operating_system_specifications.py +0 -3
  1659. office365/intune/devices/registration_membership.py +0 -3
  1660. office365/intune/organizations/branding.py +31 -0
  1661. office365/intune/organizations/branding_properties.py +199 -0
  1662. office365/intune/organizations/contact.py +132 -3
  1663. office365/intune/organizations/content_customization.py +9 -2
  1664. office365/intune/organizations/login_page_layout_configuration.py +0 -3
  1665. office365/intune/organizations/login_page_text_visibility_settings.py +0 -3
  1666. office365/intune/organizations/organization.py +136 -2
  1667. office365/intune/organizations/organizational_branding_localization.py +7 -0
  1668. office365/intune/organizations/physical_office_address.py +0 -3
  1669. office365/intune/organizations/privacy_profile.py +0 -3
  1670. office365/intune/policies/azure_ad_join_policy.py +1 -2
  1671. office365/intune/policies/local_admin_password_settings.py +0 -3
  1672. office365/intune/policies/local_admin_settings.py +1 -2
  1673. office365/intune/policies/managed_app.py +6 -0
  1674. office365/intune/print/air_print_settings.py +14 -0
  1675. office365/intune/print/archived_print_job.py +25 -0
  1676. office365/intune/print/certificate_signing_request.py +12 -0
  1677. office365/intune/print/connectors/connector.py +47 -0
  1678. office365/intune/print/document.py +43 -0
  1679. office365/intune/print/document_upload_properties.py +13 -0
  1680. office365/intune/print/job.py +97 -0
  1681. office365/intune/print/job_configuration.py +45 -0
  1682. office365/intune/print/job_status.py +21 -0
  1683. office365/intune/print/margin.py +14 -0
  1684. office365/intune/print/operation.py +27 -0
  1685. office365/intune/print/operation_status.py +15 -0
  1686. office365/intune/print/print.py +71 -0
  1687. office365/intune/print/printers/base.py +72 -2
  1688. office365/intune/print/printers/capabilities.py +81 -0
  1689. office365/intune/print/printers/create_operation.py +31 -0
  1690. office365/intune/print/printers/defaults.py +39 -0
  1691. office365/intune/print/printers/discovery_settings.py +14 -0
  1692. office365/intune/print/printers/location.py +30 -0
  1693. office365/intune/print/printers/printer.py +78 -0
  1694. office365/intune/print/printers/share_viewpoint.py +13 -0
  1695. office365/intune/print/printers/status.py +22 -0
  1696. office365/intune/print/services/endpoint.py +21 -0
  1697. office365/intune/print/settings.py +15 -0
  1698. office365/intune/print/shares/share.py +65 -0
  1699. office365/intune/print/task.py +50 -0
  1700. office365/intune/print/task_definition.py +40 -0
  1701. office365/intune/print/task_status.py +13 -0
  1702. office365/intune/print/task_trigger.py +33 -0
  1703. office365/intune/print/user_print.py +7 -2
  1704. office365/intune/servicecommunications/announcement.py +3 -1
  1705. office365/intune/servicecommunications/announcement_base.py +42 -0
  1706. office365/intune/servicecommunications/health/health.py +42 -0
  1707. office365/intune/servicecommunications/issues/issue.py +50 -0
  1708. office365/intune/servicecommunications/messages/update.py +97 -0
  1709. office365/intune/servicecommunications/service_health_issue_post.py +18 -0
  1710. office365/intune/servicecommunications/service_update_message_viewpoint.py +13 -0
  1711. office365/limits.py +24 -4
  1712. office365/migration/__init__.py +59 -4
  1713. office365/migration/adapters/__init__.py +62 -6
  1714. office365/migration/adapters/bundle.py +308 -0
  1715. office365/migration/adapters/filesystem.py +5 -14
  1716. office365/migration/assessment/report.py +0 -1
  1717. office365/migration/base.py +138 -10
  1718. office365/migration/checkpoint.py +17 -16
  1719. office365/migration/clients.py +87 -0
  1720. office365/migration/delta.py +205 -0
  1721. office365/migration/fidelity.py +344 -0
  1722. office365/migration/identity.py +320 -0
  1723. office365/migration/job.py +206 -13
  1724. office365/migration/logging.py +373 -0
  1725. office365/migration/manifest.py +8 -3
  1726. office365/migration/map.py +84 -0
  1727. office365/migration/offline.py +26 -0
  1728. office365/migration/outlook/__init__.py +74 -3
  1729. office365/migration/outlook/adapters.py +380 -0
  1730. office365/migration/outlook/assessor.py +22 -6
  1731. office365/migration/outlook/calendar_adapters.py +347 -0
  1732. office365/migration/outlook/calendar_codec.py +207 -0
  1733. office365/migration/outlook/calendar_models.py +241 -0
  1734. office365/migration/outlook/calendar_profile.py +109 -0
  1735. office365/migration/outlook/contacts_adapters.py +331 -0
  1736. office365/migration/outlook/contacts_models.py +277 -0
  1737. office365/migration/outlook/eml_import.py +219 -0
  1738. office365/migration/outlook/fidelity.py +175 -0
  1739. office365/migration/outlook/models.py +219 -0
  1740. office365/migration/outlook/records.py +298 -0
  1741. office365/migration/outlook/restore.py +29 -0
  1742. office365/migration/package/builder.py +103 -16
  1743. office365/migration/package/manifest_xml.py +19 -4
  1744. office365/migration/package/staging.py +49 -0
  1745. office365/migration/report.py +33 -5
  1746. office365/migration/runner.py +185 -28
  1747. office365/migration/server_job.py +259 -15
  1748. office365/migration/session.py +335 -18
  1749. office365/migration/settings.py +78 -4
  1750. office365/migration/sharepoint/__init__.py +146 -0
  1751. office365/migration/sharepoint/adapters.py +2697 -157
  1752. office365/migration/sharepoint/assessor.py +25 -15
  1753. office365/migration/sharepoint/branding.py +261 -0
  1754. office365/migration/sharepoint/handoff.py +253 -0
  1755. office365/migration/sharepoint/navigation.py +165 -0
  1756. office365/migration/sharepoint/package_target.py +310 -9
  1757. office365/migration/sharepoint/pages.py +753 -0
  1758. office365/migration/sharepoint/resolvers.py +750 -30
  1759. office365/migration/sharepoint/scanners/browser_file_handling.py +7 -5
  1760. office365/migration/sharepoint/scanners/checked_out_files.py +5 -3
  1761. office365/migration/sharepoint/scanners/fields.py +2 -2
  1762. office365/migration/sharepoint/scanners/file_versions.py +3 -3
  1763. office365/migration/sharepoint/scanners/files.py +4 -2
  1764. office365/migration/sharepoint/scanners/large_excel_files.py +4 -3
  1765. office365/migration/sharepoint/scanners/long_onedrive_urls.py +1 -1
  1766. office365/migration/sharepoint/scanners/lookup.py +2 -4
  1767. office365/migration/sharepoint/scanners/paths.py +2 -2
  1768. office365/migration/sharepoint/scanners/permissions.py +1 -1
  1769. office365/migration/sharepoint/scanners/smat.py +1 -1
  1770. office365/migration/sharepoint/scanners/thicket_folders.py +3 -3
  1771. office365/migration/sharepoint/security.py +506 -0
  1772. office365/migration/sharepoint/site_scope.py +222 -0
  1773. office365/migration/sharepoint/site_settings.py +196 -0
  1774. office365/migration/sharepoint/site_verify.py +202 -0
  1775. office365/migration/sharepoint/structure.py +1481 -0
  1776. office365/migration/sharepoint/verify.py +186 -0
  1777. office365/migration/teams/__init__.py +1 -14
  1778. office365/migration/teams/adapters.py +70 -24
  1779. office365/migration/throttling.py +215 -0
  1780. office365/migration/validators.py +250 -15
  1781. office365/onedrive/analytics/item_action_stat.py +0 -3
  1782. office365/onedrive/analytics/item_activity.py +4 -1
  1783. office365/onedrive/analytics/item_activity_stat.py +8 -0
  1784. office365/onedrive/analytics/item_analytics.py +3 -3
  1785. office365/onedrive/base_item.py +12 -1
  1786. office365/onedrive/columns/boolean.py +0 -3
  1787. office365/onedrive/columns/calculated.py +0 -3
  1788. office365/onedrive/columns/choice.py +1 -2
  1789. office365/onedrive/columns/column_link.py +2 -0
  1790. office365/onedrive/columns/content_approval_status.py +0 -3
  1791. office365/onedrive/columns/currency.py +0 -3
  1792. office365/onedrive/columns/datetime.py +0 -3
  1793. office365/onedrive/columns/default_value.py +0 -3
  1794. office365/onedrive/columns/definition.py +37 -2
  1795. office365/onedrive/columns/definition_collection.py +1 -1
  1796. office365/onedrive/columns/display_name_localization.py +0 -3
  1797. office365/onedrive/columns/geolocation.py +0 -3
  1798. office365/onedrive/columns/hyperlink_or_picture.py +0 -3
  1799. office365/onedrive/columns/lookup.py +0 -3
  1800. office365/onedrive/columns/number.py +0 -3
  1801. office365/onedrive/columns/person_or_group.py +0 -3
  1802. office365/onedrive/columns/term.py +0 -3
  1803. office365/onedrive/columns/text.py +0 -3
  1804. office365/onedrive/columns/thumbnail.py +0 -3
  1805. office365/onedrive/columns/validation.py +1 -2
  1806. office365/onedrive/contenttypes/collection.py +1 -1
  1807. office365/onedrive/contenttypes/content_type.py +40 -4
  1808. office365/onedrive/contenttypes/info.py +0 -3
  1809. office365/onedrive/contenttypes/order.py +0 -3
  1810. office365/onedrive/deleted.py +11 -0
  1811. office365/onedrive/documentsets/content.py +0 -3
  1812. office365/onedrive/documentsets/document_set.py +1 -2
  1813. office365/onedrive/documentsets/version.py +4 -0
  1814. office365/onedrive/documentsets/version_item.py +0 -3
  1815. office365/onedrive/driveitems/album.py +0 -3
  1816. office365/onedrive/driveitems/audio.py +0 -3
  1817. office365/onedrive/driveitems/bundle.py +0 -3
  1818. office365/onedrive/driveitems/collection.py +30 -0
  1819. office365/onedrive/driveitems/copy_result.py +121 -0
  1820. office365/onedrive/driveitems/driveItem.py +410 -48
  1821. office365/onedrive/driveitems/geo_coordinates.py +0 -3
  1822. office365/onedrive/driveitems/image.py +0 -3
  1823. office365/onedrive/driveitems/item_preview_info.py +0 -3
  1824. office365/onedrive/driveitems/malware.py +0 -3
  1825. office365/onedrive/driveitems/package.py +0 -3
  1826. office365/onedrive/driveitems/photo.py +1 -2
  1827. office365/onedrive/driveitems/publication_facet.py +1 -2
  1828. office365/onedrive/driveitems/remote_item.py +1 -2
  1829. office365/onedrive/driveitems/retention_label.py +3 -0
  1830. office365/onedrive/driveitems/retention_label_settings.py +1 -4
  1831. office365/onedrive/driveitems/source.py +0 -3
  1832. office365/onedrive/driveitems/special_folder.py +0 -3
  1833. office365/onedrive/driveitems/system_facet.py +0 -3
  1834. office365/onedrive/driveitems/thumbnail.py +0 -3
  1835. office365/onedrive/driveitems/thumbnail_set.py +5 -0
  1836. office365/onedrive/driveitems/uploadable_properties.py +7 -12
  1837. office365/onedrive/driveitems/video.py +0 -3
  1838. office365/onedrive/drives/collection.py +1 -1
  1839. office365/onedrive/drives/drive.py +57 -10
  1840. office365/onedrive/drives/quota.py +1 -2
  1841. office365/onedrive/drives/recipient.py +0 -3
  1842. office365/onedrive/edit_action.py +0 -3
  1843. office365/onedrive/files/file.py +1 -2
  1844. office365/onedrive/files/hashes.py +0 -3
  1845. office365/onedrive/files/system_info.py +0 -3
  1846. office365/onedrive/filestorage/access_action.py +0 -3
  1847. office365/onedrive/filestorage/containers/collection.py +13 -4
  1848. office365/onedrive/filestorage/containers/container.py +152 -2
  1849. office365/onedrive/filestorage/containers/custom_property_dictionary.py +0 -3
  1850. office365/onedrive/filestorage/containers/custom_property_value.py +2 -3
  1851. office365/onedrive/filestorage/containers/settings.py +0 -3
  1852. office365/onedrive/filestorage/containers/viewpoint.py +0 -3
  1853. office365/onedrive/filestorage/containertypes/app_permission_grant.py +5 -0
  1854. office365/onedrive/filestorage/containertypes/collection.py +1 -1
  1855. office365/onedrive/filestorage/containertypes/registration.py +10 -0
  1856. office365/onedrive/filestorage/containertypes/registration_settings.py +2 -3
  1857. office365/onedrive/filestorage/containertypes/settings.py +2 -2
  1858. office365/onedrive/filestorage/containertypes/settings_override.py +2 -0
  1859. office365/onedrive/filestorage/containertypes/type.py +13 -4
  1860. office365/onedrive/filestorage/file_storage.py +5 -0
  1861. office365/onedrive/folders/folder.py +0 -3
  1862. office365/onedrive/folders/view.py +0 -3
  1863. office365/onedrive/incomplete_data.py +0 -2
  1864. office365/onedrive/internal/paths/children.py +7 -1
  1865. office365/onedrive/listitems/collection.py +35 -5
  1866. office365/onedrive/listitems/item_reference.py +1 -2
  1867. office365/onedrive/listitems/list_item.py +18 -3
  1868. office365/onedrive/lists/collection.py +1 -1
  1869. office365/onedrive/lists/info.py +0 -3
  1870. office365/onedrive/lists/list.py +37 -2
  1871. office365/onedrive/media_source.py +0 -3
  1872. office365/onedrive/mention_action.py +1 -2
  1873. office365/onedrive/meta_data_key_string_pair.py +0 -3
  1874. office365/onedrive/meta_data_key_value_pair.py +0 -3
  1875. office365/onedrive/move_action.py +0 -3
  1876. office365/onedrive/operations/long_running.py +31 -1
  1877. office365/onedrive/operations/pending.py +1 -2
  1878. office365/onedrive/operations/pending_content_update.py +0 -3
  1879. office365/onedrive/operations/public_error_detail.py +0 -3
  1880. office365/onedrive/operations/public_inner_error.py +7 -17
  1881. office365/onedrive/operations/rich_long_running.py +27 -0
  1882. office365/onedrive/permissions/collection.py +5 -0
  1883. office365/onedrive/permissions/permission.py +24 -0
  1884. office365/onedrive/permissions/sharepoint_identity.py +0 -2
  1885. office365/onedrive/permissions/sharepoint_identity_set.py +1 -2
  1886. office365/onedrive/permissions/sharing_invitation.py +1 -2
  1887. office365/onedrive/permissions/sharing_link.py +1 -2
  1888. office365/onedrive/quotas.py +116 -0
  1889. office365/onedrive/reactions_facet.py +0 -3
  1890. office365/onedrive/recyclebin/item.py +3 -0
  1891. office365/onedrive/recyclebin/recyclebin.py +3 -0
  1892. office365/onedrive/recyclebin/settings.py +0 -3
  1893. office365/onedrive/rename_action.py +0 -3
  1894. office365/onedrive/restore_action.py +0 -3
  1895. office365/onedrive/root.py +0 -3
  1896. office365/onedrive/sensitivitylabels/assignment.py +0 -3
  1897. office365/onedrive/sensitivitylabels/extract_result.py +1 -2
  1898. office365/onedrive/server_processed_content.py +1 -2
  1899. office365/onedrive/share_action.py +1 -2
  1900. office365/onedrive/sharepoint/group.py +5 -0
  1901. office365/onedrive/sharepoint/group_identity.py +0 -3
  1902. office365/onedrive/sharepoint/group_member.py +2 -0
  1903. office365/onedrive/sharepoint/ids.py +0 -3
  1904. office365/onedrive/sharepoint/migration/container_info.py +0 -3
  1905. office365/onedrive/sharepoint/migration/event.py +4 -0
  1906. office365/onedrive/sharepoint/migration/finish_manifest_file_upload_event.py +2 -0
  1907. office365/onedrive/sharepoint/migration/jobs/cancelled_event.py +3 -0
  1908. office365/onedrive/sharepoint/migration/jobs/error_event.py +25 -0
  1909. office365/onedrive/sharepoint/migration/jobs/postponed_event.py +5 -0
  1910. office365/onedrive/sharepoint/migration/jobs/progress_event.py +18 -0
  1911. office365/onedrive/sharepoint/migration/jobs/start_event.py +3 -0
  1912. office365/onedrive/sharepoint/migration/migration_job.py +3 -0
  1913. office365/onedrive/shares/drive_item.py +11 -5
  1914. office365/onedrive/shares/shared.py +1 -2
  1915. office365/onedrive/sitepages/base.py +2 -0
  1916. office365/onedrive/sitepages/canvas_layout.py +2 -2
  1917. office365/onedrive/sitepages/collection.py +34 -4
  1918. office365/onedrive/sitepages/sections/horizontal.py +4 -0
  1919. office365/onedrive/sitepages/sections/horizontal_column.py +3 -1
  1920. office365/onedrive/sitepages/sections/vertical.py +3 -1
  1921. office365/onedrive/sitepages/site_page.py +17 -5
  1922. office365/onedrive/sitepages/title_area.py +1 -2
  1923. office365/onedrive/sitepages/webparts/data.py +1 -2
  1924. office365/onedrive/sitepages/webparts/position.py +0 -3
  1925. office365/onedrive/sitepages/webparts/standard.py +4 -0
  1926. office365/onedrive/sitepages/webparts/text.py +2 -0
  1927. office365/onedrive/sitepages/webparts/web_part.py +4 -0
  1928. office365/onedrive/sites/archival_details.py +0 -3
  1929. office365/onedrive/sites/collection.py +1 -2
  1930. office365/onedrive/sites/site.py +176 -5
  1931. office365/onedrive/sites/sites_with_root.py +34 -2
  1932. office365/onedrive/sites/website.py +0 -3
  1933. office365/onedrive/storage/settings.py +15 -0
  1934. office365/onedrive/storage/storage.py +3 -0
  1935. office365/onedrive/storage_plan_information.py +0 -3
  1936. office365/onedrive/termstore/groups/collection.py +24 -4
  1937. office365/onedrive/termstore/groups/group.py +29 -3
  1938. office365/onedrive/termstore/relation.py +11 -2
  1939. office365/onedrive/termstore/sets/collection.py +28 -13
  1940. office365/onedrive/termstore/sets/name.py +5 -2
  1941. office365/onedrive/termstore/sets/set.py +22 -4
  1942. office365/onedrive/termstore/store.py +30 -3
  1943. office365/onedrive/termstore/store_manager.py +42 -10
  1944. office365/onedrive/termstore/terms/collection.py +1 -1
  1945. office365/onedrive/termstore/terms/description.py +4 -3
  1946. office365/onedrive/termstore/terms/label.py +4 -3
  1947. office365/onedrive/termstore/terms/term.py +16 -3
  1948. office365/onedrive/version_action.py +0 -3
  1949. office365/onedrive/versions/base_item.py +1 -0
  1950. office365/onedrive/versions/drive_item.py +4 -1
  1951. office365/onedrive/versions/list_item.py +7 -0
  1952. office365/onedrive/wellknown_list_name.py +11 -0
  1953. office365/onedrive/workbooks/applications/application.py +4 -0
  1954. office365/onedrive/workbooks/charts/area_format.py +30 -0
  1955. office365/onedrive/workbooks/charts/axes.py +3 -3
  1956. office365/onedrive/workbooks/charts/axis.py +80 -0
  1957. office365/onedrive/workbooks/charts/axis_format.py +35 -0
  1958. office365/onedrive/workbooks/charts/axis_title.py +42 -0
  1959. office365/onedrive/workbooks/charts/axis_title_format.py +24 -0
  1960. office365/onedrive/workbooks/charts/chart.py +61 -3
  1961. office365/onedrive/workbooks/charts/data_label_format.py +33 -0
  1962. office365/onedrive/workbooks/charts/data_labels.py +64 -1
  1963. office365/onedrive/workbooks/charts/fill.py +6 -0
  1964. office365/onedrive/workbooks/charts/font.py +45 -0
  1965. office365/onedrive/workbooks/charts/gridlines.py +36 -0
  1966. office365/onedrive/workbooks/charts/gridlines_format.py +26 -0
  1967. office365/onedrive/workbooks/charts/legend/format.py +30 -0
  1968. office365/onedrive/workbooks/charts/legend/legend.py +29 -1
  1969. office365/onedrive/workbooks/charts/line_format.py +18 -0
  1970. office365/onedrive/workbooks/charts/point.py +32 -0
  1971. office365/onedrive/workbooks/charts/point_format.py +24 -0
  1972. office365/onedrive/workbooks/charts/series/format.py +32 -0
  1973. office365/onedrive/workbooks/charts/series/series.py +17 -0
  1974. office365/onedrive/workbooks/charts/title.py +28 -0
  1975. office365/onedrive/workbooks/charts/title_format.py +30 -0
  1976. office365/onedrive/workbooks/comments/comment.py +4 -0
  1977. office365/onedrive/workbooks/comments/reply.py +21 -0
  1978. office365/onedrive/workbooks/filter.py +9 -0
  1979. office365/onedrive/workbooks/filter_criteria.py +1 -2
  1980. office365/onedrive/workbooks/filter_datetime.py +0 -3
  1981. office365/onedrive/workbooks/functions/functions.py +12 -0
  1982. office365/onedrive/workbooks/functions/result.py +18 -1
  1983. office365/onedrive/workbooks/icon.py +0 -3
  1984. office365/onedrive/workbooks/names/collection.py +2 -0
  1985. office365/onedrive/workbooks/names/named_item.py +32 -0
  1986. office365/onedrive/workbooks/operations/error.py +0 -3
  1987. office365/onedrive/workbooks/operations/workbook.py +7 -2
  1988. office365/onedrive/workbooks/quotas.py +35 -0
  1989. office365/onedrive/workbooks/ranges/border.py +5 -0
  1990. office365/onedrive/workbooks/ranges/fill.py +8 -0
  1991. office365/onedrive/workbooks/ranges/font.py +7 -0
  1992. office365/onedrive/workbooks/ranges/format.py +16 -0
  1993. office365/onedrive/workbooks/ranges/format_protection.py +21 -0
  1994. office365/onedrive/workbooks/ranges/range.py +73 -0
  1995. office365/onedrive/workbooks/ranges/reference.py +0 -3
  1996. office365/onedrive/workbooks/ranges/sort.py +6 -0
  1997. office365/onedrive/workbooks/ranges/view.py +63 -0
  1998. office365/onedrive/workbooks/session_info.py +0 -3
  1999. office365/onedrive/workbooks/sort_field.py +1 -2
  2000. office365/onedrive/workbooks/tables/collection.py +2 -0
  2001. office365/onedrive/workbooks/tables/columns/collection.py +2 -0
  2002. office365/onedrive/workbooks/tables/columns/column.py +28 -1
  2003. office365/onedrive/workbooks/tables/pivot_table.py +7 -1
  2004. office365/onedrive/workbooks/tables/pivot_table_collection.py +2 -0
  2005. office365/onedrive/workbooks/tables/rows/collection.py +3 -0
  2006. office365/onedrive/workbooks/tables/rows/row.py +9 -0
  2007. office365/onedrive/workbooks/tables/sort.py +28 -1
  2008. office365/onedrive/workbooks/tables/table.py +37 -0
  2009. office365/onedrive/workbooks/workbook.py +20 -12
  2010. office365/onedrive/workbooks/worksheets/collection.py +2 -2
  2011. office365/onedrive/workbooks/worksheets/protection.py +17 -0
  2012. office365/onedrive/workbooks/worksheets/protection_options.py +0 -3
  2013. office365/onedrive/workbooks/worksheets/worksheet.py +28 -5
  2014. office365/onenote/diagnostic.py +0 -3
  2015. office365/onenote/entity_base_model.py +18 -0
  2016. office365/onenote/entity_hierarchy_model.py +1 -0
  2017. office365/onenote/notebook_links.py +1 -2
  2018. office365/onenote/notebooks/collection.py +39 -1
  2019. office365/onenote/notebooks/notebook.py +47 -5
  2020. office365/onenote/notebooks/recent.py +1 -2
  2021. office365/onenote/notebooks/recent_links.py +1 -2
  2022. office365/onenote/onenote.py +9 -4
  2023. office365/onenote/onenote_page_preview.py +1 -2
  2024. office365/onenote/onenote_patch_content_command.py +0 -3
  2025. office365/onenote/operations/onenote.py +29 -1
  2026. office365/onenote/operations/onenote_operation_error.py +0 -3
  2027. office365/onenote/pages/collection.py +37 -21
  2028. office365/onenote/pages/external_link.py +0 -3
  2029. office365/onenote/pages/links.py +1 -2
  2030. office365/onenote/pages/page.py +43 -3
  2031. office365/onenote/pages/preview_links.py +1 -2
  2032. office365/onenote/quotas.py +71 -0
  2033. office365/onenote/resources/resource.py +15 -1
  2034. office365/onenote/sectiongroups/section_group.py +26 -7
  2035. office365/onenote/sections/collection.py +47 -0
  2036. office365/onenote/sections/links.py +1 -2
  2037. office365/onenote/sections/section.py +16 -8
  2038. office365/outlook/attachment_info.py +11 -0
  2039. office365/outlook/calendar/attendees/attendee.py +8 -4
  2040. office365/outlook/calendar/attendees/availability.py +1 -2
  2041. office365/outlook/calendar/attendees/base.py +4 -3
  2042. office365/outlook/calendar/calendar.py +42 -6
  2043. office365/outlook/calendar/check_in_claim.py +33 -0
  2044. office365/outlook/calendar/dateTimeTimeZone.py +69 -12
  2045. office365/outlook/calendar/email_address.py +6 -4
  2046. office365/outlook/calendar/events/collection.py +1 -1
  2047. office365/outlook/calendar/events/event.py +87 -14
  2048. office365/outlook/calendar/events/mention_event.py +1 -2
  2049. office365/outlook/calendar/events/reminder.py +1 -2
  2050. office365/outlook/calendar/group.py +5 -0
  2051. office365/outlook/calendar/location_constraint.py +1 -2
  2052. office365/outlook/calendar/meetingtimes/suggestion.py +1 -2
  2053. office365/outlook/calendar/meetingtimes/suggestions_result.py +1 -2
  2054. office365/outlook/calendar/meetingtimes/time_constraint.py +1 -2
  2055. office365/outlook/calendar/meetingtimes/time_slot.py +1 -2
  2056. office365/outlook/calendar/permissions/collection.py +1 -1
  2057. office365/outlook/calendar/permissions/permission.py +3 -0
  2058. office365/outlook/calendar/place.py +80 -2
  2059. office365/outlook/calendar/place_collection.py +34 -0
  2060. office365/outlook/calendar/response_status.py +1 -2
  2061. office365/outlook/calendar/rooms/list.py +4 -0
  2062. office365/outlook/calendar/rooms/room.py +65 -0
  2063. office365/outlook/calendar/rooms/workspace.py +40 -0
  2064. office365/outlook/calendar/schedule/free_busy_error.py +0 -3
  2065. office365/outlook/calendar/schedule/information.py +1 -2
  2066. office365/outlook/calendar/schedule/item.py +1 -2
  2067. office365/outlook/calendar/schedule/open_shift_item.py +0 -3
  2068. office365/outlook/calendar/sharing/message_action.py +0 -3
  2069. office365/outlook/calendar/sharing_message.py +33 -0
  2070. office365/outlook/calendar/timezones/base.py +0 -3
  2071. office365/outlook/calendar/timezones/custom.py +1 -2
  2072. office365/outlook/calendar/timezones/daylight_time_zone_offset.py +0 -3
  2073. office365/outlook/calendar/working_hours.py +1 -2
  2074. office365/outlook/categories/category.py +3 -0
  2075. office365/outlook/contacts/collection.py +1 -1
  2076. office365/outlook/contacts/contact.py +40 -10
  2077. office365/outlook/contacts/folders/collection.py +23 -3
  2078. office365/outlook/contacts/folders/folder.py +11 -6
  2079. office365/outlook/convert_id_result.py +1 -2
  2080. office365/outlook/geo_coordinates.py +0 -3
  2081. office365/outlook/item.py +11 -4
  2082. office365/outlook/locale_info.py +0 -3
  2083. office365/outlook/mail/attachments/attachment.py +16 -1
  2084. office365/outlook/mail/attachments/attachment_item.py +0 -2
  2085. office365/outlook/mail/attachments/collection.py +14 -5
  2086. office365/outlook/mail/attachments/file.py +19 -3
  2087. office365/outlook/mail/attachments/item.py +2 -0
  2088. office365/outlook/mail/attachments/type.py +7 -2
  2089. office365/outlook/mail/automaticreplies/mailtips.py +1 -2
  2090. office365/outlook/mail/automaticreplies/setting.py +1 -2
  2091. office365/outlook/mail/conversation.py +5 -0
  2092. office365/outlook/mail/conversation_thread.py +6 -1
  2093. office365/outlook/mail/email_details.py +0 -3
  2094. office365/outlook/mail/export_item_response.py +2 -3
  2095. office365/outlook/mail/folders/collection.py +39 -1
  2096. office365/outlook/mail/folders/folder.py +57 -8
  2097. office365/outlook/mail/folders/search.py +5 -0
  2098. office365/outlook/mail/item_body.py +5 -4
  2099. office365/outlook/mail/location.py +17 -9
  2100. office365/outlook/mail/mailbox_item_import_session.py +1 -2
  2101. office365/outlook/mail/mailbox_settings.py +1 -2
  2102. office365/outlook/mail/messages/collection.py +43 -2
  2103. office365/outlook/mail/messages/event_message.py +70 -0
  2104. office365/outlook/mail/messages/followup_flag.py +1 -2
  2105. office365/outlook/mail/messages/internet_header.py +0 -3
  2106. office365/outlook/mail/messages/message.py +108 -24
  2107. office365/outlook/mail/messages/pinned_event_message_detail.py +1 -2
  2108. office365/outlook/mail/messages/rules/actions.py +1 -2
  2109. office365/outlook/mail/messages/rules/collection.py +1 -1
  2110. office365/outlook/mail/messages/rules/predicates.py +1 -2
  2111. office365/outlook/mail/messages/rules/rule.py +1 -0
  2112. office365/outlook/mail/messages/rules/size_range.py +0 -3
  2113. office365/outlook/mail/messages/unpinned_event_message_detail.py +1 -2
  2114. office365/outlook/mail/patterned_recurrence.py +1 -2
  2115. office365/outlook/mail/physical_address.py +0 -3
  2116. office365/outlook/mail/post.py +124 -1
  2117. office365/outlook/mail/recipient.py +5 -3
  2118. office365/outlook/mail/recurrence_pattern.py +1 -2
  2119. office365/outlook/mail/recurrence_range.py +0 -2
  2120. office365/outlook/mail/tips/error.py +0 -3
  2121. office365/outlook/mail/tips/tips.py +1 -2
  2122. office365/outlook/people/person_type.py +2 -3
  2123. office365/outlook/people/profile_card_property.py +29 -0
  2124. office365/outlook/person.py +40 -0
  2125. office365/outlook/quotas.py +83 -0
  2126. office365/outlook/resource_link.py +0 -3
  2127. office365/outlook/scored_email_address.py +0 -3
  2128. office365/outlook/timezones/information.py +0 -3
  2129. office365/outlook/timezones/standard_time_zone_offset.py +0 -2
  2130. office365/outlook/user.py +7 -1
  2131. office365/partners/billing/azure_aggregated_usage.py +26 -0
  2132. office365/partners/billing/azure_usage.py +3 -0
  2133. office365/partners/billing/billed_aggregated_usage.py +9 -0
  2134. office365/partners/billing/billed_reconciliation.py +3 -1
  2135. office365/partners/billing/billed_usage.py +3 -1
  2136. office365/partners/billing/billing.py +21 -1
  2137. office365/partners/billing/blob.py +12 -0
  2138. office365/partners/billing/export_success_operation.py +4 -1
  2139. office365/partners/billing/failed_operation.py +10 -1
  2140. office365/partners/billing/manifest.py +18 -0
  2141. office365/partners/billing/metrics.py +37 -0
  2142. office365/partners/billing/metrics_base.py +62 -0
  2143. office365/partners/billing/metrics_initial.py +19 -0
  2144. office365/partners/billing/metrics_recent.py +19 -0
  2145. office365/partners/billing/operation.py +31 -1
  2146. office365/partners/billing/reconciliation.py +43 -0
  2147. office365/partners/billing/running_operation.py +2 -1
  2148. office365/partners/billing/unbilled_reconciliation.py +3 -1
  2149. office365/partners/billing/unbilled_usage.py +3 -1
  2150. office365/partners/partners.py +2 -0
  2151. office365/partners/partnertenanttype.py +8 -12
  2152. office365/permissions/__init__.py +63 -0
  2153. office365/permissions/catalog.py +96 -0
  2154. office365/permissions/declaration.py +286 -0
  2155. office365/permissions/index.py +209 -0
  2156. office365/permissions/requirement.py +205 -0
  2157. office365/permissions/resource.py +39 -0
  2158. office365/permissions/roles.py +45 -0
  2159. office365/permissions/snapshots/__init__.py +6 -0
  2160. office365/permissions/snapshots/graph.py +1824 -0
  2161. office365/permissions/snapshots/sharepoint.py +85 -0
  2162. office365/permissions/token.py +103 -0
  2163. office365/planner/applied_categories.py +7 -0
  2164. office365/planner/assigned_to_task_board_task_format.py +25 -0
  2165. office365/planner/assignment.py +21 -0
  2166. office365/planner/assignments.py +45 -1
  2167. office365/planner/bucket_task_board_task_format.py +18 -0
  2168. office365/planner/buckets/bucket.py +26 -8
  2169. office365/planner/buckets/collection.py +61 -15
  2170. office365/planner/category_descriptions.py +56 -0
  2171. office365/planner/entity.py +52 -0
  2172. office365/planner/external_reference.py +19 -0
  2173. office365/planner/group.py +2 -0
  2174. office365/planner/internal/paths/collections.py +27 -0
  2175. office365/planner/order_hints_by_assignee.py +7 -0
  2176. office365/planner/planner.py +6 -2
  2177. office365/planner/plans/collection.py +6 -0
  2178. office365/planner/plans/container.py +4 -3
  2179. office365/planner/plans/details.py +6 -2
  2180. office365/planner/plans/plan.py +44 -26
  2181. office365/planner/progress_task_board_task_format.py +18 -0
  2182. office365/planner/tasks/check_list_item.py +21 -2
  2183. office365/planner/tasks/check_list_items.py +46 -9
  2184. office365/planner/tasks/collection.py +72 -32
  2185. office365/planner/tasks/task.py +194 -24
  2186. office365/planner/tasks/task_details.py +57 -5
  2187. office365/planner/user.py +11 -6
  2188. office365/reports/internal/queries/create_report_query.py +8 -24
  2189. office365/reports/partners.py +11 -0
  2190. office365/reports/print_usage.py +12 -0
  2191. office365/reports/print_usage_by_printer.py +3 -0
  2192. office365/reports/print_usage_by_user.py +2 -0
  2193. office365/reports/quotas.py +58 -0
  2194. office365/reports/relying_party_detailed_summary.py +12 -0
  2195. office365/reports/report.py +4 -3
  2196. office365/reports/report_export.py +197 -0
  2197. office365/reports/report_result.py +61 -0
  2198. office365/reports/root.py +109 -47
  2199. office365/reports/security/root.py +13 -7
  2200. office365/reports/userregistration/feature_count.py +0 -3
  2201. office365/reports/userregistration/feature_summary.py +1 -2
  2202. office365/reports/userregistration/method_count.py +0 -3
  2203. office365/reports/userregistration/method_summary.py +1 -2
  2204. office365/runtime/auth/authentication_context.py +107 -19
  2205. office365/runtime/auth/certificate.py +105 -0
  2206. office365/runtime/auth/entra/authentication_context.py +148 -9
  2207. office365/runtime/client_object.py +295 -57
  2208. office365/runtime/client_object_collection.py +363 -19
  2209. office365/runtime/client_request.py +328 -27
  2210. office365/runtime/client_request_exception.py +64 -2
  2211. office365/runtime/client_result.py +98 -5
  2212. office365/runtime/client_runtime_context.py +692 -50
  2213. office365/runtime/client_value.py +112 -30
  2214. office365/runtime/client_value_collection.py +72 -39
  2215. office365/runtime/compare_check.py +81 -0
  2216. office365/runtime/converters/coercion.py +131 -0
  2217. office365/runtime/converters/csv_reader.py +58 -4
  2218. office365/runtime/converters/csv_writer.py +5 -5
  2219. office365/runtime/converters/keyvalue.py +4 -0
  2220. office365/runtime/converters/records.py +34 -2
  2221. office365/runtime/converters/scalars.py +286 -32
  2222. office365/runtime/converters/upsert.py +3 -3
  2223. office365/runtime/converters/value.py +172 -34
  2224. office365/runtime/csom/request.py +1 -1
  2225. office365/runtime/display.py +238 -0
  2226. office365/runtime/exceptions.py +65 -4
  2227. office365/runtime/http/prefer.py +151 -2
  2228. office365/runtime/http/request_options.py +10 -3
  2229. office365/runtime/http/throttling.py +151 -21
  2230. office365/runtime/imports.py +160 -34
  2231. office365/runtime/limits.py +166 -45
  2232. office365/runtime/lro.py +486 -0
  2233. office365/runtime/odata/batch_util.py +60 -11
  2234. office365/runtime/odata/comparable.py +149 -0
  2235. office365/runtime/odata/dialect.py +134 -0
  2236. office365/runtime/odata/edm.py +120 -0
  2237. office365/runtime/odata/json_format.py +259 -43
  2238. office365/runtime/odata/literals.py +49 -0
  2239. office365/runtime/odata/query_options.py +22 -8
  2240. office365/runtime/odata/request.py +35 -102
  2241. office365/runtime/odata/v3/batch_request.py +176 -28
  2242. office365/runtime/odata/v3/json_light_format.py +10 -51
  2243. office365/runtime/odata/v4/batch_request.py +148 -17
  2244. office365/runtime/odata/v4/json_format.py +9 -43
  2245. office365/runtime/odata/v4/upload_session.py +1 -2
  2246. office365/runtime/odata/v4/upload_session_request.py +19 -1
  2247. office365/runtime/operation.py +727 -0
  2248. office365/runtime/operations.py +3 -2
  2249. office365/runtime/paths/alternate_key.py +44 -0
  2250. office365/runtime/paths/appid.py +8 -8
  2251. office365/runtime/paths/builder.py +18 -7
  2252. office365/runtime/paths/resource_path.py +5 -0
  2253. office365/runtime/persistence.py +71 -0
  2254. office365/runtime/pollable.py +386 -0
  2255. office365/runtime/progress.py +52 -0
  2256. office365/runtime/queries/batch.py +13 -5
  2257. office365/runtime/queries/client_query.py +50 -6
  2258. office365/runtime/queries/create_entity.py +7 -2
  2259. office365/runtime/queries/deferred.py +7 -0
  2260. office365/runtime/queries/get_or_create.py +19 -3
  2261. office365/runtime/queries/read_entity.py +48 -4
  2262. office365/runtime/queries/upsert_entity.py +103 -0
  2263. office365/runtime/query_capabilities.py +333 -0
  2264. office365/runtime/record_collection.py +231 -25
  2265. office365/runtime/respond_async.py +138 -0
  2266. office365/runtime/retry.py +164 -22
  2267. office365/runtime/schema.py +395 -0
  2268. office365/runtime/serialization.py +55 -0
  2269. office365/runtime/transfer.py +51 -0
  2270. office365/runtime/transport/base.py +175 -4
  2271. office365/runtime/transport/httpx_transport.py +272 -0
  2272. office365/runtime/transport/offload.py +156 -0
  2273. office365/runtime/transport/requests_transport.py +166 -18
  2274. office365/runtime/transport/throttled_transport.py +29 -6
  2275. office365/runtime/types/binary_content.py +0 -3
  2276. office365/runtime/types/collections.py +0 -3
  2277. office365/runtime/types/duration.py +21 -9
  2278. office365/runtime/types/error.py +12 -0
  2279. office365/runtime/types/ipv4_cidr_range.py +0 -3
  2280. office365/runtime/types/ipv6_cidr_range.py +0 -3
  2281. office365/runtime/types/json.py +0 -3
  2282. office365/runtime/types/key_value_pair.py +0 -3
  2283. office365/runtime/types/odata_property.py +307 -15
  2284. office365/runtime/types/public_error.py +1 -2
  2285. office365/runtime/types/public_inner_error.py +1 -2
  2286. office365/runtime/types/setting_value.py +0 -3
  2287. office365/runtime/verification.py +41 -9
  2288. office365/search/acronyms/acronym.py +18 -0
  2289. office365/search/aggregation.py +1 -2
  2290. office365/search/aggregation_option.py +12 -2
  2291. office365/search/alteration_options.py +0 -3
  2292. office365/search/alteration_response.py +17 -0
  2293. office365/search/altered_query_token.py +13 -0
  2294. office365/search/answers/answer.py +15 -0
  2295. office365/search/answers/keyword.py +16 -0
  2296. office365/search/answers/variant.py +16 -0
  2297. office365/search/bookmarks/bookmark.py +26 -0
  2298. office365/search/bucket.py +4 -3
  2299. office365/search/bucket_aggregation_definition.py +22 -0
  2300. office365/search/bucket_aggregation_range.py +12 -0
  2301. office365/search/collapse_property.py +15 -0
  2302. office365/search/connection_item.py +11 -0
  2303. office365/search/entity.py +10 -6
  2304. office365/search/entity_type.py +1 -1
  2305. office365/search/external/configuration.py +1 -2
  2306. office365/search/external/connection.py +101 -2
  2307. office365/search/external/external.py +2 -0
  2308. office365/search/external/item.py +30 -0
  2309. office365/search/external/item_configuration.py +17 -0
  2310. office365/search/external/search_settings.py +11 -2
  2311. office365/search/hits/container.py +5 -2
  2312. office365/search/hits/hit.py +10 -3
  2313. office365/search/identity.py +13 -0
  2314. office365/search/identity_set.py +8 -2
  2315. office365/search/qnas/qna.py +24 -0
  2316. office365/search/query.py +4 -3
  2317. office365/search/recommended_action.py +13 -0
  2318. office365/search/request.py +21 -5
  2319. office365/search/response.py +11 -2
  2320. office365/search/result_template.py +15 -0
  2321. office365/search/result_template_dictionary.py +7 -0
  2322. office365/search/result_template_option.py +11 -0
  2323. office365/search/retrieval_extract.py +12 -0
  2324. office365/search/retrieval_hit.py +26 -0
  2325. office365/search/retrieval_response.py +17 -0
  2326. office365/search/search_alteration.py +20 -0
  2327. office365/search/search_alteration_options.py +12 -0
  2328. office365/search/search_resource_metadata_dictionary.py +7 -0
  2329. office365/search/search_result.py +11 -0
  2330. office365/search/sharepoint_onedrive_options.py +7 -3
  2331. office365/search/sort_property.py +4 -3
  2332. office365/security/a365_ai_guardrail.py +7 -0
  2333. office365/security/a365_ai_inference_call.py +7 -0
  2334. office365/security/a365_ai_invoke_agent.py +7 -0
  2335. office365/security/a365_ai_run_summary.py +7 -0
  2336. office365/security/a365_span_outputs.py +7 -0
  2337. office365/security/account.py +23 -0
  2338. office365/security/account_entity_mapping.py +17 -0
  2339. office365/security/account_object_id_action.py +11 -0
  2340. office365/security/account_sid_action.py +11 -0
  2341. office365/security/account_target_content.py +14 -0
  2342. office365/security/activity_metadata.py +12 -0
  2343. office365/security/address_book_account_target_content.py +14 -0
  2344. office365/security/aed_audit_record.py +7 -0
  2345. office365/security/agent_admin_activity_record.py +7 -0
  2346. office365/security/agent_setting_admin_activity.py +7 -0
  2347. office365/security/ai_agent_evidence.py +16 -0
  2348. office365/security/ai_guardrail.py +7 -0
  2349. office365/security/aip_discover.py +7 -0
  2350. office365/security/aip_file_deleted.py +7 -0
  2351. office365/security/aip_heart_beat.py +7 -0
  2352. office365/security/aip_protection_action_log_request.py +7 -0
  2353. office365/security/aip_scanner_discover_event.py +7 -0
  2354. office365/security/aip_sensitivity_label_action_log_request.py +7 -0
  2355. office365/security/air_admin_action_investigation_data.py +7 -0
  2356. office365/security/air_investigation_data.py +7 -0
  2357. office365/security/alerts/active_directory_domain_evidence.py +17 -0
  2358. office365/security/alerts/alert.py +451 -0
  2359. office365/security/alerts/azure_resource_evidence.py +13 -0
  2360. office365/security/alerts/blob_container_evidence.py +16 -0
  2361. office365/security/alerts/blob_evidence.py +20 -0
  2362. office365/security/alerts/collection.py +49 -0
  2363. office365/security/alerts/comment.py +18 -0
  2364. office365/security/alerts/custom_details.py +7 -0
  2365. office365/security/alerts/detection.py +13 -0
  2366. office365/security/alerts/evidence.py +27 -0
  2367. office365/security/alerts/file_security_state.py +22 -0
  2368. office365/security/alerts/history_state.py +29 -0
  2369. office365/security/alerts/malware_evidence.py +22 -0
  2370. office365/security/alerts/process_evidence.py +27 -0
  2371. office365/security/alerts/sas_token_evidence.py +25 -0
  2372. office365/security/alerts/template.py +24 -0
  2373. office365/security/alerts/trigger.py +13 -0
  2374. office365/security/amazon_resource_entity_mapping.py +11 -0
  2375. office365/security/amazon_resource_evidence.py +14 -0
  2376. office365/security/analyzed_message_evidence.py +33 -0
  2377. office365/security/article.py +79 -0
  2378. office365/security/assigned_training_info.py +13 -0
  2379. office365/security/attacksimulations/automation.py +91 -0
  2380. office365/security/attacksimulations/automation_run.py +40 -0
  2381. office365/security/attacksimulations/event.py +21 -0
  2382. office365/security/attacksimulations/landing_page.py +101 -0
  2383. office365/security/attacksimulations/landing_page_detail.py +30 -0
  2384. office365/security/attacksimulations/login_page.py +76 -0
  2385. office365/security/attacksimulations/operations/operation.py +33 -0
  2386. office365/security/attacksimulations/payload.py +157 -0
  2387. office365/security/attacksimulations/repeat_offender.py +20 -0
  2388. office365/security/attacksimulations/reports/overview.py +29 -0
  2389. office365/security/attacksimulations/reports/report.py +28 -0
  2390. office365/security/attacksimulations/root.py +130 -0
  2391. office365/security/attacksimulations/simulation.py +199 -0
  2392. office365/security/attacksimulations/training_user_coverage.py +21 -0
  2393. office365/security/attacksimulations/user.py +17 -0
  2394. office365/security/attacksimulations/user_coverage.py +25 -0
  2395. office365/security/attacksimulations/users/details.py +47 -0
  2396. office365/security/attribute_definition.py +36 -0
  2397. office365/security/attribute_definition_metadata_entry.py +13 -0
  2398. office365/security/attribute_mapping.py +11 -0
  2399. office365/security/attribute_mapping_parameter_schema.py +15 -0
  2400. office365/security/attribute_mapping_source.py +23 -0
  2401. office365/security/audit/a365_ai_execute_tool.py +7 -0
  2402. office365/security/audit/aad_risk_detection_audit_record.py +7 -0
  2403. office365/security/audit/ai_app_interaction_audit_record.py +7 -0
  2404. office365/security/audit/ai_execute_tool_audit_record.py +7 -0
  2405. office365/security/audit/ai_interactions_change_notification_audit_record.py +7 -0
  2406. office365/security/audit/ai_interactions_export_audit_record.py +7 -0
  2407. office365/security/audit/ai_interactions_subscription_audit_record.py +7 -0
  2408. office365/security/audit/ai_invoke_agent_audit_record.py +7 -0
  2409. office365/security/audit/ai_span_outputs_audit_record.py +7 -0
  2410. office365/security/audit/air_manual_investigation_data.py +7 -0
  2411. office365/security/audit/alert_submission_audit_record.py +7 -0
  2412. office365/security/audit/alert_submission_result_detail_audit_record.py +7 -0
  2413. office365/security/audit/attack_sim_admin_audit_record.py +7 -0
  2414. office365/security/audit/attack_sim_audit_record.py +7 -0
  2415. office365/security/audit/audit_config_audit_record.py +7 -0
  2416. office365/security/audit/audit_data.py +14 -0
  2417. office365/security/audit/audit_record_type_dictionary.py +7 -0
  2418. office365/security/audit/audit_search_audit_record.py +7 -0
  2419. office365/security/audit/azfw_application_rule_aggregation_event_record.py +7 -0
  2420. office365/security/audit/azfw_dns_query_event_record.py +7 -0
  2421. office365/security/audit/azfw_network_rule_event_record.py +7 -0
  2422. office365/security/audit/azure_active_directory_account_logon_audit_record.py +7 -0
  2423. office365/security/audit/azure_active_directory_audit_record.py +7 -0
  2424. office365/security/audit/azure_active_directory_sts_logon_audit_record.py +7 -0
  2425. office365/security/audit/azure_ai_search_audit_record.py +7 -0
  2426. office365/security/audit/campaign_audit_record.py +7 -0
  2427. office365/security/audit/ccrai_policy_violation_record.py +7 -0
  2428. office365/security/audit/cdp_classifier_health_record.py +7 -0
  2429. office365/security/audit/cdp_cold_crawl_status_record.py +7 -0
  2430. office365/security/audit/cdp_consumption_resource_record.py +7 -0
  2431. office365/security/audit/cdp_content_explorer_aggregate_record.py +7 -0
  2432. office365/security/audit/cdp_dlp_sensitive_endpoint_audit_record.py +7 -0
  2433. office365/security/audit/cdp_log_record.py +7 -0
  2434. office365/security/audit/cdp_ocr_billing_record.py +7 -0
  2435. office365/security/audit/cdp_resource_scope_change_event_record.py +7 -0
  2436. office365/security/audit/cdpdlmai_interaction_insights_record.py +7 -0
  2437. office365/security/audit/cloud_update_device_config_audit_record.py +7 -0
  2438. office365/security/audit/cloud_update_profile_config_audit_record.py +7 -0
  2439. office365/security/audit/cloud_update_tenant_config_audit_record.py +7 -0
  2440. office365/security/audit/compliance_connector_audit_record.py +7 -0
  2441. office365/security/audit/compliance_dlm_exchange_audit_record.py +7 -0
  2442. office365/security/audit/compliance_dlm_share_point_audit_record.py +7 -0
  2443. office365/security/audit/compliance_dlp_applications_audit_record.py +7 -0
  2444. office365/security/audit/compliance_dlp_applications_classification_audit_record.py +7 -0
  2445. office365/security/audit/compliance_dlp_endpoint_audit_record.py +7 -0
  2446. office365/security/audit/compliance_dlp_endpoint_discovery_audit_record.py +7 -0
  2447. office365/security/audit/compliance_dlp_enforcement_audit_record.py +7 -0
  2448. office365/security/audit/compliance_dlp_exchange_audit_record.py +7 -0
  2449. office365/security/audit/compliance_dlp_exchange_classification_audit_record.py +7 -0
  2450. office365/security/audit/compliance_dlp_exchange_classification_cdp_record.py +7 -0
  2451. office365/security/audit/compliance_dlp_exchange_discovery_audit_record.py +7 -0
  2452. office365/security/audit/compliance_dlp_share_point_audit_record.py +7 -0
  2453. office365/security/audit/compliance_dlp_share_point_classification_audit_record.py +7 -0
  2454. office365/security/audit/compliance_dlp_share_point_classification_cdp_record.py +7 -0
  2455. office365/security/audit/compliance_dlp_share_point_classification_extended_audit_record.py +7 -0
  2456. office365/security/audit/compliance_exchange_ocr_audit_record.py +7 -0
  2457. office365/security/audit/compliance_manager_action_record.py +7 -0
  2458. office365/security/audit/compliance_policy_grading_share_point_audit_record.py +7 -0
  2459. office365/security/audit/compliance_settings_change_audit_record.py +7 -0
  2460. office365/security/audit/compliance_sit_grading_share_point_audit_record.py +7 -0
  2461. office365/security/audit/compliance_supervision_exchange_audit_record.py +7 -0
  2462. office365/security/audit/connected_ai_app_interaction_audit_record.py +7 -0
  2463. office365/security/audit/consumption_resource_audit_record.py +7 -0
  2464. office365/security/audit/content_store_metadata_record.py +7 -0
  2465. office365/security/audit/copilot_agent_management_audit_record.py +7 -0
  2466. office365/security/audit/copilot_for_security_logging_audit_record.py +7 -0
  2467. office365/security/audit/copilot_for_security_trigger_audit_record.py +7 -0
  2468. office365/security/audit/copilot_interaction_audit_record.py +7 -0
  2469. office365/security/audit/copilot_plugin_setting_audit_record.py +7 -0
  2470. office365/security/audit/copilot_prompt_book_setting_audit_record.py +7 -0
  2471. office365/security/audit/copilot_session_sharing_audit_record.py +7 -0
  2472. office365/security/audit/copilot_setting_audit_record.py +7 -0
  2473. office365/security/audit/copilot_workspace_setting_audit_record.py +7 -0
  2474. office365/security/audit/core_reporting_settings_audit_record.py +7 -0
  2475. office365/security/audit/core_root.py +31 -0
  2476. office365/security/audit/critical_asset_management_classification_record.py +7 -0
  2477. office365/security/audit/crm_entity_operation_audit_record.py +7 -0
  2478. office365/security/audit/cross_tenant_access_policy_audit_record.py +7 -0
  2479. office365/security/audit/device_discovery_settings_authenticated_scans_record.py +7 -0
  2480. office365/security/audit/device_discovery_settings_exclusion_record.py +7 -0
  2481. office365/security/audit/device_discovery_settings_record.py +7 -0
  2482. office365/security/audit/discovery_audit_record.py +7 -0
  2483. office365/security/audit/dlp_endpoint_audit_record.py +7 -0
  2484. office365/security/audit/dlp_import_result_audit_record.py +7 -0
  2485. office365/security/audit/dragon_copilot_access_record.py +7 -0
  2486. office365/security/audit/dragon_copilot_admin_record.py +7 -0
  2487. office365/security/audit/dragon_copilot_clinical_data_record.py +7 -0
  2488. office365/security/audit/dragon_copilot_session_record.py +7 -0
  2489. office365/security/audit/dynamics365_business_central_audit_record.py +7 -0
  2490. office365/security/audit/ehr_connector_audit_base_record.py +7 -0
  2491. office365/security/audit/eop_submission_feed_entity_audit_record.py +7 -0
  2492. office365/security/audit/exchange_admin_audit_record.py +7 -0
  2493. office365/security/audit/exchange_aggregated_mailbox_audit_record.py +7 -0
  2494. office365/security/audit/exchange_aggregated_operation_record.py +7 -0
  2495. office365/security/audit/exchange_mailbox_audit_group_record.py +7 -0
  2496. office365/security/audit/exchange_mailbox_audit_record.py +7 -0
  2497. office365/security/audit/hosted_rpa_audit_record.py +7 -0
  2498. office365/security/audit/hr_signal_audit_record.py +7 -0
  2499. office365/security/audit/hygiene_event_record.py +7 -0
  2500. office365/security/audit/information_barrier_policy_application_audit_record.py +7 -0
  2501. office365/security/audit/information_worker_protection_audit_record.py +7 -0
  2502. office365/security/audit/insider_risk_scoped_user_insights_record.py +7 -0
  2503. office365/security/audit/insider_risk_scoped_users_record.py +7 -0
  2504. office365/security/audit/log_query.py +126 -0
  2505. office365/security/audit/log_record.py +89 -0
  2506. office365/security/audit/microsoft_stream_audit_record.py +7 -0
  2507. office365/security/audit/microsoft_teams_admin_audit_record.py +7 -0
  2508. office365/security/audit/microsoft_teams_analytics_audit_record.py +7 -0
  2509. office365/security/audit/microsoft_teams_audit_record.py +7 -0
  2510. office365/security/audit/microsoft_teams_device_audit_record.py +7 -0
  2511. office365/security/audit/microsoft_teams_retention_label_action_audit_record.py +7 -0
  2512. office365/security/audit/microsoft_teams_sensitivity_label_action_audit_record.py +7 -0
  2513. office365/security/audit/microsoft_teams_shifts_audit_record.py +7 -0
  2514. office365/security/audit/microsoft_teams_user_concern_audit_record.py +7 -0
  2515. office365/security/audit/multi_tenant_organization_join_request_transition_details.py +17 -0
  2516. office365/security/audit/multi_tenant_organization_member_transition_details.py +19 -0
  2517. office365/security/audit/whois_record.py +24 -0
  2518. office365/security/auto_auditing_configuration.py +18 -0
  2519. office365/security/automated_action.py +7 -0
  2520. office365/security/automated_action_set.py +64 -0
  2521. office365/security/autonomous_system.py +14 -0
  2522. office365/security/average_comparative_score.py +12 -0
  2523. office365/security/azure_resource_entity_mapping.py +11 -0
  2524. office365/security/base_end_user_notification.py +18 -0
  2525. office365/security/cases/case.py +51 -0
  2526. office365/security/cases/ediscovery.py +145 -0
  2527. office365/security/cases/operation.py +63 -0
  2528. office365/security/cases/root.py +24 -0
  2529. office365/security/category_template.py +32 -0
  2530. office365/security/certification_control.py +12 -0
  2531. office365/security/citation_template.py +24 -0
  2532. office365/security/cloud_app_security_state.py +13 -0
  2533. office365/security/cloud_application_entity_mapping.py +12 -0
  2534. office365/security/cloud_application_evidence.py +19 -0
  2535. office365/security/cloud_clipboard_item.py +41 -0
  2536. office365/security/cloud_clipboard_item_payload.py +12 -0
  2537. office365/security/cloud_clipboard_root.py +30 -0
  2538. office365/security/cloud_flare_rule_model.py +13 -0
  2539. office365/security/cloud_flare_ruleset_model.py +13 -0
  2540. office365/security/cloud_flare_verified_details_model.py +24 -0
  2541. office365/security/cloud_flare_web_application_firewall_provider.py +24 -0
  2542. office365/security/cloud_logon_request_evidence.py +11 -0
  2543. office365/security/cloud_logon_session_evidence.py +23 -0
  2544. office365/security/cloud_pc_audit_event.py +87 -0
  2545. office365/security/cloud_pc_device_image.py +88 -0
  2546. office365/security/cloud_pc_gallery_image.py +74 -0
  2547. office365/security/cloud_pc_on_premises_connection.py +136 -0
  2548. office365/security/cloud_pc_provisioning_policy.py +148 -0
  2549. office365/security/cloud_pc_provisioning_policy_assignment.py +37 -0
  2550. office365/security/cloud_pc_report.py +9 -0
  2551. office365/security/cloud_pc_service_plan.py +36 -0
  2552. office365/security/cloud_pc_user_setting.py +72 -0
  2553. office365/security/cloud_pc_user_setting_assignment.py +28 -0
  2554. office365/security/cloud_security_connector.py +7 -0
  2555. office365/security/cloud_security_enablement.py +7 -0
  2556. office365/security/cloud_security_management.py +7 -0
  2557. office365/security/cloud_video_interop_info.py +13 -0
  2558. office365/security/coachmark_location.py +15 -0
  2559. office365/security/coachmark_location_type.py +17 -0
  2560. office365/security/collaboration/analyzed_email.py +258 -0
  2561. office365/security/collaboration/analyzed_email_attachment.py +24 -0
  2562. office365/security/collaboration/analyzed_email_authentication_detail.py +14 -0
  2563. office365/security/collaboration/analyzed_email_delivery_detail.py +18 -0
  2564. office365/security/collaboration/analyzed_email_dlp_rule_info.py +12 -0
  2565. office365/security/collaboration/analyzed_email_exchange_transport_rule_info.py +12 -0
  2566. office365/security/collaboration/analyzed_email_recipient_detail.py +15 -0
  2567. office365/security/collaboration/analyzed_email_sender_detail.py +22 -0
  2568. office365/security/collaboration/analyzed_email_url.py +20 -0
  2569. office365/security/collaboration/collaboration_root.py +24 -0
  2570. office365/security/compliance_endpoint_evaluation_incomplete.py +7 -0
  2571. office365/security/compliance_evaluation_incomplete.py +7 -0
  2572. office365/security/compromise_indicator.py +14 -0
  2573. office365/security/container_evidence.py +27 -0
  2574. office365/security/container_filter.py +14 -0
  2575. office365/security/container_image_evidence.py +16 -0
  2576. office365/security/container_registry_evidence.py +11 -0
  2577. office365/security/control_score.py +14 -0
  2578. office365/security/cortana_briefing_audit_record.py +7 -0
  2579. office365/security/csc_content_metadata.py +7 -0
  2580. office365/security/custom_training_setting.py +23 -0
  2581. office365/security/customer_key_service_encryption_audit_record.py +7 -0
  2582. office365/security/cvss_summary.py +15 -0
  2583. office365/security/data_center_security_cmdlet_audit_record.py +7 -0
  2584. office365/security/data_governance_audit_record.py +7 -0
  2585. office365/security/data_insights_rest_api_audit_record.py +7 -0
  2586. office365/security/data_lake_export_operation_audit_record.py +7 -0
  2587. office365/security/data_set.py +38 -0
  2588. office365/security/data_share_operation_audit_record.py +7 -0
  2589. office365/security/data_source_container.py +51 -0
  2590. office365/security/datasecurity/application_mode.py +14 -0
  2591. office365/security/datasecurity/classifcation_error_base.py +17 -0
  2592. office365/security/datasecurity/classification_error.py +19 -0
  2593. office365/security/datasecurity/classification_inner_error.py +17 -0
  2594. office365/security/datasecurity/compute_rights_and_inheritance_result.py +23 -0
  2595. office365/security/datasecurity/current_label.py +13 -0
  2596. office365/security/datasecurity/custom_metadata_dictionary.py +7 -0
  2597. office365/security/datasecurity/dlp_action_info.py +12 -0
  2598. office365/security/datasecurity/governance.py +43 -0
  2599. office365/security/datasecurity/integrated_application_metadata.py +12 -0
  2600. office365/security/datasecurity/investigation_audit_record.py +7 -0
  2601. office365/security/datasecurity/label_content_right.py +47 -0
  2602. office365/security/datasecurity/policy_binding.py +16 -0
  2603. office365/security/datasecurity/policy_location.py +11 -0
  2604. office365/security/datasecurity/policy_location_application.py +7 -0
  2605. office365/security/datasecurity/policy_location_domain.py +7 -0
  2606. office365/security/datasecurity/policy_location_url.py +7 -0
  2607. office365/security/datasecurity/policy_scope_base.py +25 -0
  2608. office365/security/datasecurity/policy_tenant_scope.py +14 -0
  2609. office365/security/datasecurity/policy_tip_action.py +13 -0
  2610. office365/security/datasecurity/policy_user_scope.py +7 -0
  2611. office365/security/datasecurity/process_content_batch_request.py +16 -0
  2612. office365/security/datasecurity/process_content_request.py +32 -0
  2613. office365/security/datasecurity/process_content_response.py +23 -0
  2614. office365/security/datasecurity/process_content_responses.py +15 -0
  2615. office365/security/datasecurity/process_conversation_metadata.py +26 -0
  2616. office365/security/datasecurity/process_file_metadata.py +15 -0
  2617. office365/security/datasecurity/protected_content.py +13 -0
  2618. office365/security/datasecurity/sensitivity_label.py +135 -0
  2619. office365/security/datasecurity/tenant_protection_scope_container.py +9 -0
  2620. office365/security/datasecurity/usage_rights_included.py +31 -0
  2621. office365/security/default_audit_data.py +7 -0
  2622. office365/security/defender_automation_rule.py +7 -0
  2623. office365/security/defender_case_management_audit_record.py +7 -0
  2624. office365/security/defender_generated_playbook.py +7 -0
  2625. office365/security/defender_integration.py +7 -0
  2626. office365/security/defender_preview_features_record.py +7 -0
  2627. office365/security/defender_security_for_ai_configuration_audit_record.py +7 -0
  2628. office365/security/deploy_feature_activity_record.py +7 -0
  2629. office365/security/deployment_access_key_type.py +11 -0
  2630. office365/security/detection_action.py +18 -0
  2631. office365/security/detection_rule.py +77 -0
  2632. office365/security/detection_rule_status.py +14 -0
  2633. office365/security/detonation_behaviour_details.py +22 -0
  2634. office365/security/detonation_chain.py +17 -0
  2635. office365/security/detonation_details.py +33 -0
  2636. office365/security/detonation_observables.py +16 -0
  2637. office365/security/device_action.py +11 -0
  2638. office365/security/device_evidence.py +49 -0
  2639. office365/security/dictionary.py +7 -0
  2640. office365/security/dlp_sensitive_information_type_rule_package_cmdlet_record.py +7 -0
  2641. office365/security/dns_entity_mapping.py +13 -0
  2642. office365/security/dns_evidence.py +18 -0
  2643. office365/security/dspm_admin_activity.py +7 -0
  2644. office365/security/dynamic_column_value.py +7 -0
  2645. office365/security/ecs_content_metadata.py +7 -0
  2646. office365/security/ediscovery/case_member.py +31 -0
  2647. office365/security/ediscovery/custodian.py +83 -0
  2648. office365/security/ediscovery/ediscovery_case_settings.py +45 -0
  2649. office365/security/ediscovery/ediscovery_estimate_operation.py +72 -0
  2650. office365/security/ediscovery/ediscovery_export_operation.py +68 -0
  2651. office365/security/ediscovery/ediscovery_index_operation.py +8 -0
  2652. office365/security/ediscovery/ediscovery_review_tag.py +38 -0
  2653. office365/security/ediscovery/noncustodial_data_source.py +40 -0
  2654. office365/security/ediscovery/operations/add_to_review_set.py +70 -0
  2655. office365/security/ediscovery/operations/hold.py +8 -0
  2656. office365/security/ediscovery/operations/hold_policy_sync.py +19 -0
  2657. office365/security/ediscovery/operations/purge_data.py +19 -0
  2658. office365/security/ediscovery/operations/search_export.py +93 -0
  2659. office365/security/ediscovery/operations/tag.py +8 -0
  2660. office365/security/ediscovery/review_set.py +24 -0
  2661. office365/security/ediscovery/review_set_query.py +9 -0
  2662. office365/security/ediscovery/search.py +88 -0
  2663. office365/security/email_action.py +12 -0
  2664. office365/security/email_payload_detail.py +14 -0
  2665. office365/security/email_sender.py +13 -0
  2666. office365/security/end_user_notification.py +100 -0
  2667. office365/security/end_user_notification_detail.py +49 -0
  2668. office365/security/end_user_notification_setting.py +24 -0
  2669. office365/security/entity_mapping.py +7 -0
  2670. office365/security/entity_mapping_configuration.py +77 -0
  2671. office365/security/evaluation_outcome.py +13 -0
  2672. office365/security/event_propagation_result.py +15 -0
  2673. office365/security/event_query.py +14 -0
  2674. office365/security/export_file_metadata.py +13 -0
  2675. office365/security/expression_input_object.py +19 -0
  2676. office365/security/fabric_audit_record.py +7 -0
  2677. office365/security/fabric_policy_record.py +7 -0
  2678. office365/security/file_action.py +16 -0
  2679. office365/security/file_details.py +20 -0
  2680. office365/security/file_entity_mapping.py +13 -0
  2681. office365/security/file_evidence.py +17 -0
  2682. office365/security/file_hash.py +18 -0
  2683. office365/security/file_hash_evidence.py +13 -0
  2684. office365/security/file_plan_applied_category.py +14 -0
  2685. office365/security/file_plan_authority.py +7 -0
  2686. office365/security/file_plan_citation.py +12 -0
  2687. office365/security/file_plan_department.py +7 -0
  2688. office365/security/file_plan_descriptor_base.py +11 -0
  2689. office365/security/file_plan_descriptor_template.py +32 -0
  2690. office365/security/file_plan_reference.py +7 -0
  2691. office365/security/file_plan_subcategory.py +7 -0
  2692. office365/security/filter.py +21 -0
  2693. office365/security/filter_clause.py +16 -0
  2694. office365/security/filter_group.py +16 -0
  2695. office365/security/filter_operand.py +14 -0
  2696. office365/security/filtering_teams_message_file_info.py +7 -0
  2697. office365/security/formatted_content.py +13 -0
  2698. office365/security/geo_location.py +15 -0
  2699. office365/security/git_hub_organization_evidence.py +16 -0
  2700. office365/security/git_hub_repo_evidence.py +15 -0
  2701. office365/security/git_hub_user_evidence.py +15 -0
  2702. office365/security/google_cloud_resource_entity_mapping.py +11 -0
  2703. office365/security/google_cloud_resource_evidence.py +18 -0
  2704. office365/security/group_entity_mapping.py +13 -0
  2705. office365/security/group_filter.py +14 -0
  2706. office365/security/health_issue.py +95 -0
  2707. office365/security/healthcare_signal_record.py +7 -0
  2708. office365/security/host_entity_mapping.py +15 -0
  2709. office365/security/host_security_state.py +19 -0
  2710. office365/security/host_ssl_certificate_port.py +15 -0
  2711. office365/security/hunting_query_results.py +23 -0
  2712. office365/security/hyperlink.py +12 -0
  2713. office365/security/identity_accounts.py +50 -0
  2714. office365/security/identity_provider.py +14 -0
  2715. office365/security/incidents/incident.py +159 -0
  2716. office365/security/include_all_account_target_content.py +7 -0
  2717. office365/security/indicator.py +25 -0
  2718. office365/security/integrated_apps_app_admin_activity_audit_record.py +7 -0
  2719. office365/security/integrated_apps_app_settings_admin_activity_audit_record.py +7 -0
  2720. office365/security/intelligence_profile_country_or_region_of_origin.py +12 -0
  2721. office365/security/intelligence_profile_indicator.py +24 -0
  2722. office365/security/investigation_security_state.py +12 -0
  2723. office365/security/invoke_action_result.py +22 -0
  2724. office365/security/io_t_device_evidence.py +45 -0
  2725. office365/security/ip_address.py +37 -0
  2726. office365/security/ip_entity_mapping.py +12 -0
  2727. office365/security/ip_evidence.py +18 -0
  2728. office365/security/irm_activity_audit_trail_record.py +7 -0
  2729. office365/security/irm_user_defined_detection_record.py +7 -0
  2730. office365/security/isolate_device_action.py +12 -0
  2731. office365/security/isolation_type.py +13 -0
  2732. office365/security/kaizala_audit_record.py +7 -0
  2733. office365/security/kubernetes_cluster_evidence.py +19 -0
  2734. office365/security/kubernetes_controller_evidence.py +18 -0
  2735. office365/security/kubernetes_namespace_evidence.py +17 -0
  2736. office365/security/kubernetes_pod_evidence.py +37 -0
  2737. office365/security/kubernetes_secret_evidence.py +16 -0
  2738. office365/security/kubernetes_service_account_evidence.py +15 -0
  2739. office365/security/kubernetes_service_evidence.py +28 -0
  2740. office365/security/kubernetes_service_port.py +17 -0
  2741. office365/security/labels/analytics_aggregate_audit_record.py +7 -0
  2742. office365/security/labels/content_explorer_audit_record.py +7 -0
  2743. office365/security/labels/retention/collection.py +81 -0
  2744. office365/security/labels/retention/disposition_review_stage.py +32 -0
  2745. office365/security/labels/retention/duration_in_days.py +13 -0
  2746. office365/security/labels/retention/fileplan_descriptor.py +97 -0
  2747. office365/security/labels/retention/label.py +163 -0
  2748. office365/security/labels/root.py +87 -0
  2749. office365/security/large_content_metadata_audit_record.py +7 -0
  2750. office365/security/logged_on_user.py +12 -0
  2751. office365/security/m365_compliance_connector_audit_record.py +7 -0
  2752. office365/security/m365_search_sections_record.py +7 -0
  2753. office365/security/m365daad_audit_record.py +7 -0
  2754. office365/security/m365odsp_asset_metadata_record.py +7 -0
  2755. office365/security/mail_cluster_entity_mapping.py +12 -0
  2756. office365/security/mail_cluster_evidence.py +19 -0
  2757. office365/security/mail_message_entity_mapping.py +14 -0
  2758. office365/security/mail_submission_data.py +7 -0
  2759. office365/security/mailbox_configuration_evidence.py +22 -0
  2760. office365/security/mailbox_entity_mapping.py +11 -0
  2761. office365/security/mailbox_evidence.py +17 -0
  2762. office365/security/malware_state.py +15 -0
  2763. office365/security/managed_services_audit_record.py +7 -0
  2764. office365/security/managed_tenants_audit_record.py +7 -0
  2765. office365/security/mapg_alerts_audit_record.py +7 -0
  2766. office365/security/mapg_onboard_audit_record.py +7 -0
  2767. office365/security/mapg_policy_audit_record.py +7 -0
  2768. office365/security/mapg_remediation_audit_record.py +7 -0
  2769. office365/security/mcas_alerts_audit_record.py +7 -0
  2770. office365/security/mcs_raw_email_content_metadata.py +7 -0
  2771. office365/security/mda_audit_record.py +7 -0
  2772. office365/security/mda_data_security_signal_record.py +7 -0
  2773. office365/security/mdash_audit_record.py +7 -0
  2774. office365/security/mdatp_audit_record.py +7 -0
  2775. office365/security/mdc_events_record.py +7 -0
  2776. office365/security/mdi_audit_record.py +7 -0
  2777. office365/security/merge_response.py +11 -0
  2778. office365/security/mes_raw_email_content_metadata.py +7 -0
  2779. office365/security/mesh_worlds_audit_record.py +7 -0
  2780. office365/security/message_security_state.py +21 -0
  2781. office365/security/microsoft365_backup_backup_item_audit_record.py +7 -0
  2782. office365/security/microsoft365_backup_backup_policy_audit_record.py +7 -0
  2783. office365/security/microsoft365_backup_granular_browse_task_audit_record.py +7 -0
  2784. office365/security/microsoft365_backup_restore_item_audit_record.py +7 -0
  2785. office365/security/microsoft365_backup_restore_task_audit_record.py +7 -0
  2786. office365/security/microsoft365_copilot_scheduled_prompt_audit_record.py +7 -0
  2787. office365/security/microsoft_custom_training_setting.py +25 -0
  2788. office365/security/microsoft_defender_experts_xdr_audit_record.py +7 -0
  2789. office365/security/microsoft_flow_audit_record.py +7 -0
  2790. office365/security/microsoft_forms_audit_record.py +7 -0
  2791. office365/security/microsoft_graph_data_connect_consent.py +7 -0
  2792. office365/security/microsoft_graph_data_connect_operation.py +7 -0
  2793. office365/security/microsoft_managed_training_setting.py +17 -0
  2794. office365/security/microsoft_purview_data_catalog_operation_record.py +7 -0
  2795. office365/security/microsoft_purview_data_map_operation_record.py +7 -0
  2796. office365/security/microsoft_purview_metadata_policy_operation_record.py +7 -0
  2797. office365/security/microsoft_purview_policy_operation_record.py +7 -0
  2798. office365/security/microsoft_purview_privacy_audit_event.py +7 -0
  2799. office365/security/microsoft_purview_unified_catalog_operation_record.py +7 -0
  2800. office365/security/microsoft_security_for_ai_configuration.py +7 -0
  2801. office365/security/microsoft_security_for_ai_real_time_protection.py +7 -0
  2802. office365/security/microsoft_teams_move_messages.py +7 -0
  2803. office365/security/microsoft_training_assignment_mapping.py +25 -0
  2804. office365/security/mip_auto_label_exchange_item_audit_record.py +7 -0
  2805. office365/security/mip_auto_label_progress_feedback_audit_record.py +7 -0
  2806. office365/security/mip_auto_label_share_point_item_audit_record.py +7 -0
  2807. office365/security/mip_auto_label_share_point_policy_location_audit_record.py +7 -0
  2808. office365/security/mip_auto_label_simulation_share_point_completion_record.py +7 -0
  2809. office365/security/mip_auto_label_simulation_share_point_progress_record.py +7 -0
  2810. office365/security/mip_auto_label_simulation_statistics_record.py +7 -0
  2811. office365/security/mip_exact_data_match_audit_record.py +7 -0
  2812. office365/security/mip_label_analytics_audit_record.py +7 -0
  2813. office365/security/mip_label_audit_record.py +7 -0
  2814. office365/security/mitre_tactic.py +18 -0
  2815. office365/security/mitre_technique.py +15 -0
  2816. office365/security/monitor_mode.py +12 -0
  2817. office365/security/monitor_run_status.py +14 -0
  2818. office365/security/monitor_status.py +13 -0
  2819. office365/security/mos_agent_info_record.py +7 -0
  2820. office365/security/mos_agent_info_record_v2.py +7 -0
  2821. office365/security/ms365d_custom_detection_audit_record.py +7 -0
  2822. office365/security/ms365d_incident_audit_record.py +7 -0
  2823. office365/security/ms365d_suppression_rule_audit_record.py +7 -0
  2824. office365/security/msde_custom_collection_audit_record.py +7 -0
  2825. office365/security/msde_general_settings_audit_record.py +7 -0
  2826. office365/security/msde_indicators_settings_audit_record.py +7 -0
  2827. office365/security/msde_response_actions_audit_record.py +7 -0
  2828. office365/security/msde_roles_settings_audit_record.py +7 -0
  2829. office365/security/msp_vector_search_content_metadata_audit_record.py +7 -0
  2830. office365/security/mstic_nation_state_notification_record.py +7 -0
  2831. office365/security/mtp_content_metadata.py +7 -0
  2832. office365/security/multi_stage_disposition_audit_record.py +7 -0
  2833. office365/security/my_analytics_settings_audit_record.py +7 -0
  2834. office365/security/network_adapter.py +24 -0
  2835. office365/security/network_connection.py +37 -0
  2836. office365/security/network_connection_evidence.py +20 -0
  2837. office365/security/nic_evidence.py +17 -0
  2838. office365/security/no_training_notification_setting.py +14 -0
  2839. office365/security/no_training_setting.py +7 -0
  2840. office365/security/noisy_alert_policy_audit_record.py +7 -0
  2841. office365/security/o_auth_application_entity_mapping.py +11 -0
  2842. office365/security/oauth_application_evidence.py +14 -0
  2843. office365/security/object_definition.py +24 -0
  2844. office365/security/object_definition_metadata_entry.py +13 -0
  2845. office365/security/object_mapping.py +32 -0
  2846. office365/security/object_mapping_metadata_entry.py +13 -0
  2847. office365/security/ocr_settings.py +15 -0
  2848. office365/security/office_native_audit_record.py +7 -0
  2849. office365/security/ome_portal_audit_record.py +7 -0
  2850. office365/security/on_demand_exchange_classification.py +7 -0
  2851. office365/security/on_demand_share_point_classification_audit_record.py +7 -0
  2852. office365/security/on_premises_file_share_scanner_dlp_audit_record.py +7 -0
  2853. office365/security/on_premises_share_point_scanner_dlp_audit_record.py +7 -0
  2854. office365/security/one_drive_audit_record.py +7 -0
  2855. office365/security/organizational_data_in_m365_audit_record.py +7 -0
  2856. office365/security/organizational_scope.py +14 -0
  2857. office365/security/outlook_copilot_automation_audit_record.py +7 -0
  2858. office365/security/owa_get_access_token_for_resource_audit_record.py +7 -0
  2859. office365/security/p4_ai_risk_score_record.py +7 -0
  2860. office365/security/p4ai_assessment_category_record.py +7 -0
  2861. office365/security/p4ai_assessment_fabric_scanner_record.py +7 -0
  2862. office365/security/p4ai_assessment_location_result_record.py +7 -0
  2863. office365/security/p4ai_assessment_record.py +7 -0
  2864. office365/security/p4ai_dag_site_permissions_record.py +7 -0
  2865. office365/security/parse_expression_response.py +21 -0
  2866. office365/security/passive_dns_record.py +54 -0
  2867. office365/security/payload_coachmark.py +20 -0
  2868. office365/security/payload_detail.py +19 -0
  2869. office365/security/people_admin_settings_audit_record.py +7 -0
  2870. office365/security/people_skills_admin.py +7 -0
  2871. office365/security/people_skills_user.py +7 -0
  2872. office365/security/physical_badging_signal_audit_record.py +7 -0
  2873. office365/security/places_directory_audit_record.py +7 -0
  2874. office365/security/planner_chat_message_audit_record.py +7 -0
  2875. office365/security/planner_chat_message_list_audit_record.py +7 -0
  2876. office365/security/planner_copy_plan_audit_record.py +7 -0
  2877. office365/security/planner_custom_field_definition.py +7 -0
  2878. office365/security/planner_custom_field_definition_list.py +7 -0
  2879. office365/security/planner_dependency.py +7 -0
  2880. office365/security/planner_dependency_list.py +7 -0
  2881. office365/security/planner_goal_audit_record.py +7 -0
  2882. office365/security/planner_goal_list_audit_record.py +7 -0
  2883. office365/security/planner_plan_audit_record.py +7 -0
  2884. office365/security/planner_plan_list_audit_record.py +7 -0
  2885. office365/security/planner_plan_sensitivity_label_audit_record.py +7 -0
  2886. office365/security/planner_roster_audit_record.py +7 -0
  2887. office365/security/planner_roster_sensitivity_label_audit_record.py +7 -0
  2888. office365/security/planner_task_audit_record.py +7 -0
  2889. office365/security/planner_task_list_audit_record.py +7 -0
  2890. office365/security/planner_tenant_settings_audit_record.py +7 -0
  2891. office365/security/policy_config_change_audit_record.py +7 -0
  2892. office365/security/positive_reinforcement_notification.py +14 -0
  2893. office365/security/power_apps_audit_app_record.py +7 -0
  2894. office365/security/power_apps_audit_plan_record.py +7 -0
  2895. office365/security/power_apps_audit_resource_record.py +7 -0
  2896. office365/security/power_bi_audit_record.py +7 -0
  2897. office365/security/power_bi_dlp_audit_record.py +7 -0
  2898. office365/security/power_pages_site_audit_record.py +7 -0
  2899. office365/security/power_platform_admin_dlp_audit_record.py +7 -0
  2900. office365/security/power_platform_admin_environment_audit_record.py +7 -0
  2901. office365/security/power_platform_administrator_activity_record.py +7 -0
  2902. office365/security/power_platform_lockbox_resource_access_request_audit_record.py +7 -0
  2903. office365/security/power_platform_lockbox_resource_command_audit_record.py +7 -0
  2904. office365/security/power_platform_service_activity_audit_record.py +7 -0
  2905. office365/security/power_platform_tenant_isolation_record.py +7 -0
  2906. office365/security/priva_privacy_assessment_operation_record.py +7 -0
  2907. office365/security/priva_privacy_consent_operation_record.py +7 -0
  2908. office365/security/privacy_data_match_audit_record.py +7 -0
  2909. office365/security/privacy_data_minimization_record.py +7 -0
  2910. office365/security/privacy_digest_email_record.py +7 -0
  2911. office365/security/privacy_open_access_audit_record.py +7 -0
  2912. office365/security/privacy_portal_audit_record.py +7 -0
  2913. office365/security/privacy_remediation_action_record.py +7 -0
  2914. office365/security/privacy_remediation_record.py +7 -0
  2915. office365/security/process.py +27 -0
  2916. office365/security/process_entity_mapping.py +12 -0
  2917. office365/security/processing_error.py +12 -0
  2918. office365/security/project_audit_record.py +7 -0
  2919. office365/security/project_for_the_web_assigned_to_me_settings_audit_record.py +7 -0
  2920. office365/security/project_for_the_web_project_audit_record.py +7 -0
  2921. office365/security/project_for_the_web_project_settings_audit_record.py +7 -0
  2922. office365/security/project_for_the_web_roadmap_audit_record.py +7 -0
  2923. office365/security/project_for_the_web_roadmap_item_audit_record.py +7 -0
  2924. office365/security/project_for_the_web_roadmap_settings_audit_record.py +7 -0
  2925. office365/security/project_for_the_web_task_audit_record.py +7 -0
  2926. office365/security/public_error_response.py +14 -0
  2927. office365/security/public_folder_audit_record.py +7 -0
  2928. office365/security/purview_insider_risk_alerts_record.py +7 -0
  2929. office365/security/purview_insider_risk_cases_record.py +7 -0
  2930. office365/security/purview_mc_recommendation_record.py +7 -0
  2931. office365/security/purview_posture_agent_audit_record.py +7 -0
  2932. office365/security/quarantine_audit_record.py +7 -0
  2933. office365/security/query_condition.py +11 -0
  2934. office365/security/quotas.py +141 -0
  2935. office365/security/recipient_type.py +15 -0
  2936. office365/security/records_management_audit_record.py +7 -0
  2937. office365/security/redundancy_detection_settings.py +14 -0
  2938. office365/security/referenced_object.py +12 -0
  2939. office365/security/registry_key_evidence.py +12 -0
  2940. office365/security/registry_key_state.py +23 -0
  2941. office365/security/registry_value_entity_mapping.py +12 -0
  2942. office365/security/registry_value_evidence.py +16 -0
  2943. office365/security/report_file_metadata.py +13 -0
  2944. office365/security/report_submission.py +7 -0
  2945. office365/security/report_submission_result_detail.py +7 -0
  2946. office365/security/resource_access_event.py +17 -0
  2947. office365/security/restricted_mode_audit_record.py +7 -0
  2948. office365/security/retention_duration_forever.py +7 -0
  2949. office365/security/retention_event.py +97 -0
  2950. office365/security/retention_event_status.py +17 -0
  2951. office365/security/retention_policy_audit_record.py +7 -0
  2952. office365/security/rti_operations_agent_audit_record.py +7 -0
  2953. office365/security/rule_schedule.py +16 -0
  2954. office365/security/rules_root.py +30 -0
  2955. office365/security/sbp_configuration_event_record.py +7 -0
  2956. office365/security/sbp_usage_event_record.py +7 -0
  2957. office365/security/score_evidence.py +7 -0
  2958. office365/security/score_platform_generic_audit_record.py +7 -0
  2959. office365/security/scorecontrol/profile.py +139 -0
  2960. office365/security/script_run_audit_record.py +7 -0
  2961. office365/security/search/audit_record.py +7 -0
  2962. office365/security/search/data_source.py +39 -0
  2963. office365/security/search.py +56 -0
  2964. office365/security/securescores/control_state_update.py +17 -0
  2965. office365/security/securescores/secure_score.py +80 -0
  2966. office365/security/security.py +234 -0
  2967. office365/security/security_compliance_alert_record.py +7 -0
  2968. office365/security/security_compliance_center_eop_cmdlet_audit_record.py +7 -0
  2969. office365/security/security_compliance_insights_audit_record.py +7 -0
  2970. office365/security/security_compliance_rbac_audit_record.py +7 -0
  2971. office365/security/security_compliance_user_change_audit_record.py +7 -0
  2972. office365/security/security_copilot_identity_management_audit_record.py +7 -0
  2973. office365/security/security_development_lifecycle_ai_log_audit_record.py +7 -0
  2974. office365/security/security_group_evidence.py +18 -0
  2975. office365/security/security_resource.py +15 -0
  2976. office365/security/security_vendor_information.py +14 -0
  2977. office365/security/sensitive_info_remediation_agent_data_record.py +7 -0
  2978. office365/security/sensitivity_label_action_audit_record.py +7 -0
  2979. office365/security/sensitivity_label_info.py +15 -0
  2980. office365/security/sensitivity_label_policy_match_audit_record.py +7 -0
  2981. office365/security/sensitivity_labeled_file_action_audit_record.py +7 -0
  2982. office365/security/sensor.py +92 -0
  2983. office365/security/sensor_candidate.py +37 -0
  2984. office365/security/sensor_candidate_activation_configuration.py +17 -0
  2985. office365/security/sensor_deployment_package.py +12 -0
  2986. office365/security/sensor_settings.py +19 -0
  2987. office365/security/sentinel_ai_tool_audit_record.py +7 -0
  2988. office365/security/sentinel_graph_audit_record.py +7 -0
  2989. office365/security/sentinel_job_audit_record.py +7 -0
  2990. office365/security/sentinel_kql_on_lake_audit_record.py +7 -0
  2991. office365/security/sentinel_lake_data_onboarding_audit_record.py +7 -0
  2992. office365/security/sentinel_lake_encryption_audit_record.py +7 -0
  2993. office365/security/sentinel_lake_onboarding_audit_record.py +7 -0
  2994. office365/security/sentinel_notebook_on_lake_audit_record.py +7 -0
  2995. office365/security/sentinel_package_audit_record.py +7 -0
  2996. office365/security/service_principal_evidence.py +18 -0
  2997. office365/security/settings_container.py +21 -0
  2998. office365/security/share_point_app_permission_operation_audit_record.py +7 -0
  2999. office365/security/share_point_audit_record.py +7 -0
  3000. office365/security/share_point_comment_operation_audit_record.py +7 -0
  3001. office365/security/share_point_content_security_policy_audit_record.py +7 -0
  3002. office365/security/share_point_content_type_operation_audit_record.py +7 -0
  3003. office365/security/share_point_e_signature_audit_record.py +7 -0
  3004. office365/security/share_point_field_operation_audit_record.py +7 -0
  3005. office365/security/share_point_file_operation_audit_record.py +7 -0
  3006. office365/security/share_point_list_item_operation_audit_record.py +7 -0
  3007. office365/security/share_point_list_operation_audit_record.py +7 -0
  3008. office365/security/share_point_sharing_operation_audit_record.py +7 -0
  3009. office365/security/sharepoint_file_archive_policy.py +7 -0
  3010. office365/security/simulation_event.py +12 -0
  3011. office365/security/simulation_events_content.py +18 -0
  3012. office365/security/simulation_notification.py +14 -0
  3013. office365/security/single_property_schema.py +12 -0
  3014. office365/security/site_source.py +18 -0
  3015. office365/security/skype_for_business_cmdlets_audit_record.py +7 -0
  3016. office365/security/skype_for_business_pstn_usage_audit_record.py +7 -0
  3017. office365/security/skype_for_business_users_blocked_audit_record.py +7 -0
  3018. office365/security/sonar_detonation_content_metadata.py +7 -0
  3019. office365/security/sonar_detonation_entity_audit_record.py +7 -0
  3020. office365/security/sonar_file_detonation_entity_audit_record.py +7 -0
  3021. office365/security/sonar_submission_entity_audit_record.py +7 -0
  3022. office365/security/sonar_url_detonation_entity_audit_record.py +7 -0
  3023. office365/security/spark_core_custom_live_pool_record.py +7 -0
  3024. office365/security/ssl_certificate.py +81 -0
  3025. office365/security/ssl_certificate_entity.py +23 -0
  3026. office365/security/stop_and_quarantine_file_action.py +12 -0
  3027. office365/security/stream.py +11 -0
  3028. office365/security/string_key_attribute_mapping_source_value_pair.py +17 -0
  3029. office365/security/string_key_long_value_pair.py +12 -0
  3030. office365/security/string_key_object_value_pair.py +11 -0
  3031. office365/security/string_key_string_value_pair.py +12 -0
  3032. office365/security/string_value_dictionary.py +7 -0
  3033. office365/security/subdomain.py +29 -0
  3034. office365/security/subjectrightsrequests/all_mailbox_location.py +7 -0
  3035. office365/security/subjectrightsrequests/all_site_location.py +7 -0
  3036. office365/security/subjectrightsrequests/authored_note.py +33 -0
  3037. office365/security/subjectrightsrequests/data_subject.py +14 -0
  3038. office365/security/subjectrightsrequests/detail.py +25 -0
  3039. office365/security/subjectrightsrequests/enumerated_mailbox_location.py +14 -0
  3040. office365/security/subjectrightsrequests/enumerated_site_location.py +14 -0
  3041. office365/security/subjectrightsrequests/history.py +21 -0
  3042. office365/security/subjectrightsrequests/mailbox_location.py +7 -0
  3043. office365/security/subjectrightsrequests/request.py +228 -0
  3044. office365/security/subjectrightsrequests/site_location.py +7 -0
  3045. office365/security/subjectrightsrequests/stage_detail.py +18 -0
  3046. office365/security/submission_entity_audit_record.py +7 -0
  3047. office365/security/submission_mail_evidence.py +22 -0
  3048. office365/security/supervisory_review_day_x_insights_audit_record.py +7 -0
  3049. office365/security/synthetic_media_detection_event.py +7 -0
  3050. office365/security/synthetic_probe_audit_record.py +7 -0
  3051. office365/security/tag.py +38 -0
  3052. office365/security/team_copilot_interaction_audit_record.py +7 -0
  3053. office365/security/teams_easy_approvals_audit_record.py +7 -0
  3054. office365/security/teams_eval_data_hub_admin_operation_audit_record.py +7 -0
  3055. office365/security/teams_eval_data_hub_data_access_audit_record.py +7 -0
  3056. office365/security/teams_eval_data_hub_permission_change_audit_record.py +7 -0
  3057. office365/security/teams_healthcare_audit_record.py +7 -0
  3058. office365/security/teams_message_evidence.py +51 -0
  3059. office365/security/teams_updates_audit_record.py +7 -0
  3060. office365/security/tenant_allow_block_list_audit_record.py +7 -0
  3061. office365/security/threat_detection_detail.py +13 -0
  3062. office365/security/threat_finder_audit_record.py +7 -0
  3063. office365/security/threatintelligence/articles/__init__.py +0 -0
  3064. office365/security/threatintelligence/articles/collection.py +24 -0
  3065. office365/security/threatintelligence/atp_content_data.py +7 -0
  3066. office365/security/threatintelligence/export_audit_record.py +7 -0
  3067. office365/security/threatintelligence/host.py +154 -0
  3068. office365/security/threatintelligence/host_component.py +53 -0
  3069. office365/security/threatintelligence/host_cookie.py +47 -0
  3070. office365/security/threatintelligence/host_logon_session_evidence.py +20 -0
  3071. office365/security/threatintelligence/host_pair.py +47 -0
  3072. office365/security/threatintelligence/host_port.py +92 -0
  3073. office365/security/threatintelligence/host_port_banner.py +18 -0
  3074. office365/security/threatintelligence/host_port_component.py +18 -0
  3075. office365/security/threatintelligence/host_reputation.py +33 -0
  3076. office365/security/threatintelligence/host_reputation_rule.py +18 -0
  3077. office365/security/threatintelligence/host_ssl_certificate.py +52 -0
  3078. office365/security/threatintelligence/host_tracker.py +47 -0
  3079. office365/security/threatintelligence/hostname.py +24 -0
  3080. office365/security/threatintelligence/hosts/__init__.py +0 -0
  3081. office365/security/threatintelligence/mail_data.py +7 -0
  3082. office365/security/threatintelligence/object_audit_record.py +7 -0
  3083. office365/security/threatintelligence/profile.py +107 -0
  3084. office365/security/threatintelligence/threat_intelligence.py +211 -0
  3085. office365/security/threatintelligence/url_click_data.py +7 -0
  3086. office365/security/threatintelligence/whoisrecords/__init__.py +0 -0
  3087. office365/security/timeline_event.py +24 -0
  3088. office365/security/todo_audit_record.py +7 -0
  3089. office365/security/topic_modeling_settings.py +14 -0
  3090. office365/security/trainable_classifier_audit_record.py +7 -0
  3091. office365/security/training.py +118 -0
  3092. office365/security/training_language_detail.py +68 -0
  3093. office365/security/training_notification_setting.py +20 -0
  3094. office365/security/training_reminder_notification.py +14 -0
  3095. office365/security/training_setting.py +14 -0
  3096. office365/security/triggers/__init__.py +0 -0
  3097. office365/security/triggers/root.py +32 -0
  3098. office365/security/triggertypes/__init__.py +0 -0
  3099. office365/security/triggertypes/collection.py +17 -0
  3100. office365/security/triggertypes/event_type.py +54 -0
  3101. office365/security/triggertypes/root.py +26 -0
  3102. office365/security/uam_operation_audit_record.py +7 -0
  3103. office365/security/unclassified_artifact.py +24 -0
  3104. office365/security/unified_group_audit_record.py +7 -0
  3105. office365/security/unified_group_source.py +25 -0
  3106. office365/security/unified_simulation_matched_item_audit_record.py +7 -0
  3107. office365/security/unified_simulation_summary_audit_record.py +7 -0
  3108. office365/security/universal_print_management_audit_record.py +7 -0
  3109. office365/security/universal_print_print_job_audit_record.py +7 -0
  3110. office365/security/universal_print_secure_scan.py +7 -0
  3111. office365/security/urbac_assignment_audit_record.py +7 -0
  3112. office365/security/urbac_enable_state_audit_record.py +7 -0
  3113. office365/security/urbac_role_audit_record.py +7 -0
  3114. office365/security/uri_click_security_state.py +18 -0
  3115. office365/security/url_entity_mapping.py +11 -0
  3116. office365/security/url_evidence.py +11 -0
  3117. office365/security/user.py +24 -0
  3118. office365/security/user_account.py +26 -0
  3119. office365/security/user_evidence.py +16 -0
  3120. office365/security/user_security_state.py +31 -0
  3121. office365/security/user_simulation_event_info.py +19 -0
  3122. office365/security/user_source.py +31 -0
  3123. office365/security/user_training_audit_record.py +7 -0
  3124. office365/security/user_training_content_event_info.py +17 -0
  3125. office365/security/user_training_event_info.py +21 -0
  3126. office365/security/user_training_status_info.py +17 -0
  3127. office365/security/usx_workspace_onboarding_audit_record.py +7 -0
  3128. office365/security/vfam_create_policy_audit_record.py +7 -0
  3129. office365/security/vfam_delete_policy_audit_record.py +7 -0
  3130. office365/security/vfam_update_policy_audit_record.py +7 -0
  3131. office365/security/viva_amplify_audit_record.py +7 -0
  3132. office365/security/viva_engage_events_audit_record.py +7 -0
  3133. office365/security/viva_engage_network_association_audit_record.py +7 -0
  3134. office365/security/viva_engage_segment_audit_record.py +7 -0
  3135. office365/security/viva_glint_advanced_configuration_audit_record.py +7 -0
  3136. office365/security/viva_glint_agentic_campaign_audit_record.py +7 -0
  3137. office365/security/viva_glint_client_configuration.py +7 -0
  3138. office365/security/viva_glint_data_retention.py +7 -0
  3139. office365/security/viva_glint_feedback_program_audit_record.py +7 -0
  3140. office365/security/viva_glint_organizational_data_audit_record.py +7 -0
  3141. office365/security/viva_glint_pulse_program_audit_record.py +7 -0
  3142. office365/security/viva_glint_pulse_program_respondent_rate_audit_record.py +7 -0
  3143. office365/security/viva_glint_question_audit_record.py +7 -0
  3144. office365/security/viva_glint_role_audit_record.py +7 -0
  3145. office365/security/viva_glint_rubicon_audit_record.py +7 -0
  3146. office365/security/viva_glint_support_access_audit_record.py +7 -0
  3147. office365/security/viva_glint_system_audit_record.py +7 -0
  3148. office365/security/viva_glint_user_audit_record.py +7 -0
  3149. office365/security/viva_glint_user_group_audit_record.py +7 -0
  3150. office365/security/viva_glint_viva_insights_integration.py +7 -0
  3151. office365/security/viva_goals_audit_record.py +7 -0
  3152. office365/security/viva_learning_admin_audit_record.py +7 -0
  3153. office365/security/viva_learning_audit_record.py +7 -0
  3154. office365/security/viva_pulse_admin_audit_record.py +7 -0
  3155. office365/security/viva_pulse_organizer_audit_record.py +7 -0
  3156. office365/security/viva_pulse_report_audit_record.py +7 -0
  3157. office365/security/viva_pulse_response_audit_record.py +7 -0
  3158. office365/security/vm_metadata.py +16 -0
  3159. office365/security/vulnerability.py +132 -0
  3160. office365/security/vulnerability_component.py +18 -0
  3161. office365/security/vulnerability_state.py +13 -0
  3162. office365/security/wdatp_alerts_audit_record.py +7 -0
  3163. office365/security/web_content_filtering_audit_record.py +7 -0
  3164. office365/security/whois_base_record.py +126 -0
  3165. office365/security/whois_contact.py +19 -0
  3166. office365/security/whois_nameserver.py +19 -0
  3167. office365/security/windows365_customer_lockbox_audit_record.py +7 -0
  3168. office365/security/work_iq_admin_activity.py +7 -0
  3169. office365/security/workplace_analytics_audit_record.py +7 -0
  3170. office365/security/yammer_audit_record.py +7 -0
  3171. office365/security/yammer_user_hiding_audit_record.py +7 -0
  3172. office365/sharepoint/activities/action_facet.py +1 -2
  3173. office365/sharepoint/activities/capabilities.py +0 -2
  3174. office365/sharepoint/activities/client_request.py +1 -2
  3175. office365/sharepoint/activities/client_response.py +0 -2
  3176. office365/sharepoint/activities/clientidentity.py +0 -2
  3177. office365/sharepoint/activities/entity.py +23 -6
  3178. office365/sharepoint/activities/facets/activity_time.py +0 -2
  3179. office365/sharepoint/activities/facets/add_to_onedrive.py +0 -3
  3180. office365/sharepoint/activities/facets/checkin.py +0 -3
  3181. office365/sharepoint/activities/facets/checkout.py +0 -3
  3182. office365/sharepoint/activities/facets/coalesced.py +0 -3
  3183. office365/sharepoint/activities/facets/comment.py +1 -2
  3184. office365/sharepoint/activities/facets/create.py +0 -3
  3185. office365/sharepoint/activities/facets/delete.py +0 -2
  3186. office365/sharepoint/activities/facets/discard_checkout.py +0 -3
  3187. office365/sharepoint/activities/facets/edit.py +0 -3
  3188. office365/sharepoint/activities/facets/get_comment.py +1 -2
  3189. office365/sharepoint/activities/facets/get_mention.py +1 -2
  3190. office365/sharepoint/activities/facets/in_doc.py +0 -3
  3191. office365/sharepoint/activities/facets/mention.py +1 -2
  3192. office365/sharepoint/activities/facets/move.py +1 -2
  3193. office365/sharepoint/activities/facets/point_in_time_restore.py +0 -2
  3194. office365/sharepoint/activities/facets/rename.py +0 -2
  3195. office365/sharepoint/activities/facets/resource.py +1 -2
  3196. office365/sharepoint/activities/facets/revision_set.py +1 -2
  3197. office365/sharepoint/activities/facets/sharing.py +1 -2
  3198. office365/sharepoint/activities/facets/task_completed.py +1 -2
  3199. office365/sharepoint/activities/facets/taskcreated.py +1 -2
  3200. office365/sharepoint/activities/facets/taskreopened.py +1 -2
  3201. office365/sharepoint/activities/facets/version.py +0 -2
  3202. office365/sharepoint/activities/identity.py +1 -2
  3203. office365/sharepoint/activities/identity_item.py +0 -3
  3204. office365/sharepoint/activities/logger.py +5 -0
  3205. office365/sharepoint/activities/officefileuservalueresponse.py +0 -2
  3206. office365/sharepoint/activities/revision_info.py +0 -2
  3207. office365/sharepoint/activities/taskreassignedfacet.py +1 -2
  3208. office365/sharepoint/activities/tracked_item_service.py +2 -0
  3209. office365/sharepoint/activities/tracked_item_updates_request.py +0 -2
  3210. office365/sharepoint/administration/analytics/usage_service.py +3 -0
  3211. office365/sharepoint/administration/archiving/file_size_metric.py +6 -0
  3212. office365/sharepoint/administration/custom_fonts_resource.py +0 -2
  3213. office365/sharepoint/administration/filerequestbrandingassetconfig.py +1 -2
  3214. office365/sharepoint/administration/filerequestbrandingcdninfo.py +0 -2
  3215. office365/sharepoint/administration/filerequestbrandingprofile.py +0 -2
  3216. office365/sharepoint/administration/orgassets/library.py +1 -2
  3217. office365/sharepoint/administration/orgassets/library_collection.py +1 -2
  3218. office365/sharepoint/administration/orgassets/org_assets.py +1 -2
  3219. office365/sharepoint/administration/sitemove/service.py +257 -1
  3220. office365/sharepoint/administration/sitemove/systemsitelockexpres.py +9 -2
  3221. office365/sharepoint/administration/spfarm.py +8 -0
  3222. office365/sharepoint/administration/spwebapplication.py +23 -1
  3223. office365/sharepoint/administration/unlicensedodblicenseenforcementwarningcontext.py +0 -2
  3224. office365/sharepoint/administration/unlicensedodbtenantmetrics.py +0 -2
  3225. office365/sharepoint/administration/usageentry.py +0 -2
  3226. office365/sharepoint/administration/web_application.py +3 -0
  3227. office365/sharepoint/administration/web_service.py +3 -0
  3228. office365/sharepoint/agreements/approveitemapprovalrequestpayload.py +0 -2
  3229. office365/sharepoint/agreements/attestationpolicyresourcestorage.py +0 -3
  3230. office365/sharepoint/agreements/attributedto.py +1 -2
  3231. office365/sharepoint/agreements/attributerequestdto.py +0 -2
  3232. office365/sharepoint/agreements/cancelitemapprovalrequestpayload.py +0 -2
  3233. office365/sharepoint/agreements/countryresponse.py +0 -3
  3234. office365/sharepoint/agreements/createitemapprovalrequestpayload.py +0 -2
  3235. office365/sharepoint/agreements/datapair.py +0 -3
  3236. office365/sharepoint/agreements/document.py +1 -2
  3237. office365/sharepoint/agreements/documentsinfo.py +1 -2
  3238. office365/sharepoint/agreements/esignstatusupdatedpayload.py +0 -2
  3239. office365/sharepoint/agreements/fieldcreationparameters.py +0 -2
  3240. office365/sharepoint/agreements/importdata.py +0 -3
  3241. office365/sharepoint/agreements/location.py +0 -2
  3242. office365/sharepoint/agreements/locationdata.py +0 -3
  3243. office365/sharepoint/agreements/metadata.py +1 -2
  3244. office365/sharepoint/agreements/permissionsdata.py +0 -3
  3245. office365/sharepoint/agreements/rejectitemapprovalrequestpayload.py +0 -2
  3246. office365/sharepoint/agreements/reportbasedata.py +1 -2
  3247. office365/sharepoint/agreements/reportfilter.py +0 -3
  3248. office365/sharepoint/agreements/searchparameters.py +0 -3
  3249. office365/sharepoint/agreements/site.py +1 -2
  3250. office365/sharepoint/agreements/ssolutionenabledsitesresponse.py +1 -2
  3251. office365/sharepoint/agreements/summarydata.py +1 -2
  3252. office365/sharepoint/agreements/templatecreationparameters.py +0 -2
  3253. office365/sharepoint/agreements/updateesignconfigpayload.py +1 -2
  3254. office365/sharepoint/agreements/updatemetadatapayload.py +0 -3
  3255. office365/sharepoint/agreements/updatestatepayload.py +0 -3
  3256. office365/sharepoint/alerts/alert.py +34 -0
  3257. office365/sharepoint/alerts/collection.py +4 -0
  3258. office365/sharepoint/alerts/creation_information.py +0 -2
  3259. office365/sharepoint/analytics/usage_entry.py +3 -0
  3260. office365/sharepoint/appprincipal/credential.py +3 -0
  3261. office365/sharepoint/appprincipal/identity_provider.py +2 -0
  3262. office365/sharepoint/approvals/accessrequestresponse.py +0 -2
  3263. office365/sharepoint/approvals/additionalaccessstatusresponse.py +0 -3
  3264. office365/sharepoint/approvals/agreementworkflowresponse.py +0 -3
  3265. office365/sharepoint/approvals/approvals.py +273 -1
  3266. office365/sharepoint/approvals/createrequestparameters.py +0 -2
  3267. office365/sharepoint/approvals/createtemplateresponse.py +0 -2
  3268. office365/sharepoint/approvals/mediaserviceupdateparameters.py +1 -2
  3269. office365/sharepoint/approvals/properties.py +0 -2
  3270. office365/sharepoint/approvals/reviewconfigurationpayload.py +1 -2
  3271. office365/sharepoint/approvals/reviewconfigurationresponse.py +1 -2
  3272. office365/sharepoint/approvals/reviewdeletionconfigurationresponse.py +0 -2
  3273. office365/sharepoint/approvals/reviewworkflowresponsedto.py +0 -2
  3274. office365/sharepoint/approvals/spagreementresults.py +1 -2
  3275. office365/sharepoint/approvals/updatereviewrequestdto.py +0 -2
  3276. office365/sharepoint/approvals/updateuploadedagreementmetadatapayload.py +0 -3
  3277. office365/sharepoint/approvals/user.py +0 -2
  3278. office365/sharepoint/apps/access_requests.py +72 -0
  3279. office365/sharepoint/apps/app.py +4 -0
  3280. office365/sharepoint/apps/app_collection.py +3 -0
  3281. office365/sharepoint/apps/appinstanceerrordetails.py +8 -0
  3282. office365/sharepoint/apps/appsitecontextutility.py +25 -1
  3283. office365/sharepoint/apps/apptileproperties.py +65 -1
  3284. office365/sharepoint/apps/catalog.py +21 -1
  3285. office365/sharepoint/apps/context_site.py +3 -0
  3286. office365/sharepoint/apps/instance.py +113 -1
  3287. office365/sharepoint/apps/launcher.py +2 -0
  3288. office365/sharepoint/apps/license.py +0 -2
  3289. office365/sharepoint/apps/license_collection.py +1 -2
  3290. office365/sharepoint/apps/license_manager.py +2 -0
  3291. office365/sharepoint/apps/management/principal_info.py +19 -0
  3292. office365/sharepoint/apps/properties.py +0 -2
  3293. office365/sharepoint/attachments/attachment.py +11 -1
  3294. office365/sharepoint/attachments/collection.py +23 -3
  3295. office365/sharepoint/attachments/creation_information.py +0 -2
  3296. office365/sharepoint/audit/audit.py +7 -0
  3297. office365/sharepoint/authentication/acs_service_principal_info.py +0 -2
  3298. office365/sharepoint/authentication/auth_file_detonation_request_response.py +27 -0
  3299. office365/sharepoint/authpolicy/events/collection.py +3 -0
  3300. office365/sharepoint/authpolicy/events/event.py +24 -0
  3301. office365/sharepoint/authpolicy/events/role_assignment_resource_payload.py +0 -2
  3302. office365/sharepoint/authpolicy/spjitdlppolicydata.py +0 -2
  3303. office365/sharepoint/authpolicy/tenant/compliancereport.py +10 -0
  3304. office365/sharepoint/authpolicy/tenant/compliancereportentitydata.py +16 -0
  3305. office365/sharepoint/automations/automations.py +707 -1
  3306. office365/sharepoint/brandcenter/brand_center.py +305 -0
  3307. office365/sharepoint/brandcenter/configuration.py +1 -2
  3308. office365/sharepoint/brandcenter/orgassetslibraryconfigparam.py +0 -2
  3309. office365/sharepoint/brandcenter/tenantthemes.py +1 -2
  3310. office365/sharepoint/brandcenter/theme_data.py +0 -2
  3311. office365/sharepoint/businessdata/app_bdc_catalog.py +8 -0
  3312. office365/sharepoint/businessdata/entityfield.py +5 -0
  3313. office365/sharepoint/businessdata/entityfieldvaluedictionary.py +6 -0
  3314. office365/sharepoint/businessdata/entityidentifier.py +7 -0
  3315. office365/sharepoint/businessdata/entityidentity.py +2 -0
  3316. office365/sharepoint/businessdata/entityinstance.py +5 -0
  3317. office365/sharepoint/businessdata/entityview.py +7 -0
  3318. office365/sharepoint/businessdata/externalsubscriptionstore.py +2 -0
  3319. office365/sharepoint/businessdata/filter.py +7 -0
  3320. office365/sharepoint/businessdata/infrastructure/securestore/connection_settings.py +42 -0
  3321. office365/sharepoint/businessdata/lobsysteminstance.py +2 -0
  3322. office365/sharepoint/businessdata/methodexecutionresult.py +2 -0
  3323. office365/sharepoint/businessdata/notificationcallback.py +4 -0
  3324. office365/sharepoint/businessdata/runtime/subscription.py +18 -0
  3325. office365/sharepoint/businessdata/typedescriptor.py +12 -0
  3326. office365/sharepoint/campaigns/campaigns.py +2 -0
  3327. office365/sharepoint/campaigns/communicationentity.py +1 -2
  3328. office365/sharepoint/campaigns/entity.py +1 -2
  3329. office365/sharepoint/campaigns/summary.py +1 -2
  3330. office365/sharepoint/campaigns/userinfo.py +1 -2
  3331. office365/sharepoint/changes/alert.py +11 -0
  3332. office365/sharepoint/changes/app_consent_principal.py +11 -0
  3333. office365/sharepoint/changes/change.py +10 -0
  3334. office365/sharepoint/changes/collection.py +2 -2
  3335. office365/sharepoint/changes/content_type.py +11 -0
  3336. office365/sharepoint/changes/field.py +11 -0
  3337. office365/sharepoint/changes/file.py +3 -0
  3338. office365/sharepoint/changes/folder.py +11 -0
  3339. office365/sharepoint/changes/group.py +2 -0
  3340. office365/sharepoint/changes/item.py +79 -7
  3341. office365/sharepoint/changes/list.py +33 -0
  3342. office365/sharepoint/changes/log_item_query.py +0 -2
  3343. office365/sharepoint/changes/query.py +0 -2
  3344. office365/sharepoint/changes/token.py +0 -2
  3345. office365/sharepoint/changes/user.py +3 -0
  3346. office365/sharepoint/changes/view.py +4 -0
  3347. office365/sharepoint/changes/web.py +2 -0
  3348. office365/sharepoint/client_context.py +303 -20
  3349. office365/sharepoint/clientsidecomponent/actionshowcard.py +1 -2
  3350. office365/sharepoint/clientsidecomponent/actionsubmit.py +0 -3
  3351. office365/sharepoint/clientsidecomponent/adaptivecard.py +1 -2
  3352. office365/sharepoint/clientsidecomponent/adaptivecardcolumn.py +0 -3
  3353. office365/sharepoint/clientsidecomponent/agreementssolutionfilecontext.py +1 -2
  3354. office365/sharepoint/clientsidecomponent/card_element.py +0 -2
  3355. office365/sharepoint/clientsidecomponent/columnset.py +1 -2
  3356. office365/sharepoint/clientsidecomponent/component_context_info.py +2 -0
  3357. office365/sharepoint/clientsidecomponent/elementupdate.py +1 -2
  3358. office365/sharepoint/clientsidecomponent/hostedapps/add_response.py +23 -0
  3359. office365/sharepoint/clientsidecomponent/hostedapps/app.py +3 -0
  3360. office365/sharepoint/clientsidecomponent/hostedapps/manager.py +2 -0
  3361. office365/sharepoint/clientsidecomponent/identifier.py +0 -3
  3362. office365/sharepoint/clientsidecomponent/padding.py +0 -3
  3363. office365/sharepoint/clientsidecomponent/query_result.py +1 -2
  3364. office365/sharepoint/clientsidecomponent/spfx3rdpartycustomprincipalinfo.py +4 -0
  3365. office365/sharepoint/clientsidecomponent/spteamsappcomponent.py +0 -3
  3366. office365/sharepoint/clientsidecomponent/storage_entity.py +5 -1
  3367. office365/sharepoint/clientsidecomponent/updatecard.py +1 -2
  3368. office365/sharepoint/clientsidecomponent/updatecardelement.py +0 -3
  3369. office365/sharepoint/comments/client/identity.py +0 -2
  3370. office365/sharepoint/comments/collection.py +3 -1
  3371. office365/sharepoint/comments/comment.py +41 -2
  3372. office365/sharepoint/comments/contentanchor.py +0 -2
  3373. office365/sharepoint/comments/information.py +1 -2
  3374. office365/sharepoint/compliance/classification/publishconfig.py +1 -2
  3375. office365/sharepoint/compliance/classification/result.py +1 -2
  3376. office365/sharepoint/compliance/dlp_classification_result.py +0 -2
  3377. office365/sharepoint/compliance/pending_review_items_statistics.py +0 -2
  3378. office365/sharepoint/compliance/preservedcloudattachment.py +0 -2
  3379. office365/sharepoint/compliance/retentionlabelconfig.py +0 -2
  3380. office365/sharepoint/compliance/sensitivitylabels/collection.py +35 -1
  3381. office365/sharepoint/compliance/sensitivitylabels/config.py +0 -2
  3382. office365/sharepoint/compliance/sensitivitylabels/info.py +0 -3
  3383. office365/sharepoint/compliance/store_proxy.py +29 -0
  3384. office365/sharepoint/compliance/tags/info.py +0 -2
  3385. office365/sharepoint/compliance/tags/tag.py +0 -2
  3386. office365/sharepoint/containers/active/collection.py +1 -2
  3387. office365/sharepoint/containers/active/properties.py +2 -2
  3388. office365/sharepoint/content_solution.py +20 -0
  3389. office365/sharepoint/contentcenter/cdsmetadata.py +4 -0
  3390. office365/sharepoint/contentcenter/defaultcontentcentersiteinfo.py +5 -0
  3391. office365/sharepoint/contentcenter/machinelearning/dependentmodel.py +0 -2
  3392. office365/sharepoint/contentcenter/machinelearning/enabled.py +46 -0
  3393. office365/sharepoint/contentcenter/machinelearning/extractorpublishconfig.py +0 -2
  3394. office365/sharepoint/contentcenter/machinelearning/hub.py +84 -9
  3395. office365/sharepoint/contentcenter/machinelearning/modeldependencies.py +1 -2
  3396. office365/sharepoint/contentcenter/machinelearning/modelpublishconfig.py +1 -2
  3397. office365/sharepoint/contentcenter/machinelearning/models/columndef.py +0 -2
  3398. office365/sharepoint/contentcenter/machinelearning/models/entity_data.py +147 -0
  3399. office365/sharepoint/contentcenter/machinelearning/models/model.py +63 -2
  3400. office365/sharepoint/contentcenter/machinelearning/publicationentitydata.py +0 -2
  3401. office365/sharepoint/contentcenter/machinelearning/publicationresult.py +1 -2
  3402. office365/sharepoint/contentcenter/machinelearning/publications/publication.py +42 -0
  3403. office365/sharepoint/contentcenter/machinelearning/publicationsentitydata.py +8 -0
  3404. office365/sharepoint/contentcenter/machinelearning/samples/entity_data.py +17 -0
  3405. office365/sharepoint/contentcenter/machinelearning/samples/meta.py +0 -2
  3406. office365/sharepoint/contentcenter/machinelearning/samples/sample.py +32 -0
  3407. office365/sharepoint/contentcenter/machinelearning/workitementitydata.py +20 -0
  3408. office365/sharepoint/contentcenter/machinelearning/workitems/item.py +28 -0
  3409. office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_data.py +24 -0
  3410. office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_result.py +15 -0
  3411. office365/sharepoint/contentcenter/sp_machine_learning_list_autofill_single_data.py +14 -0
  3412. office365/sharepoint/contentcenter/sp_machine_learning_list_autofill_single_result.py +12 -0
  3413. office365/sharepoint/contentcenter/sp_machine_learning_publications_result.py +34 -0
  3414. office365/sharepoint/contentcenter/syntex_models_landing_info.py +29 -0
  3415. office365/sharepoint/contentcenter/template_api.py +205 -0
  3416. office365/sharepoint/contentsolution/create_template_using_stream_request.py +4 -0
  3417. office365/sharepoint/contentsolution/template_api.py +10 -0
  3418. office365/sharepoint/contenttypes/builtin_content_type_id.py +23 -0
  3419. office365/sharepoint/contenttypes/collection.py +58 -17
  3420. office365/sharepoint/contenttypes/content_type.py +162 -8
  3421. office365/sharepoint/contenttypes/content_type_id.py +4 -2
  3422. office365/sharepoint/contenttypes/creation_information.py +0 -2
  3423. office365/sharepoint/contenttypes/entity_data.py +0 -2
  3424. office365/sharepoint/contenttypes/fieldlinks/collection.py +4 -2
  3425. office365/sharepoint/contenttypes/fieldlinks/field_link.py +29 -2
  3426. office365/sharepoint/convergence/addnoliveblobsinodcservicestateapi.py +2 -0
  3427. office365/sharepoint/convergence/consumer_permissions.py +3 -0
  3428. office365/sharepoint/convergence/migration_complete_state_api.py +4 -0
  3429. office365/sharepoint/convergence/odcmetadatacleanedupapi.py +2 -0
  3430. office365/sharepoint/copilot/files/collection.py +2 -0
  3431. office365/sharepoint/copilot/files/collection_query_result.py +1 -2
  3432. office365/sharepoint/copilot/files/metadata.py +1 -2
  3433. office365/sharepoint/copilot/files/user_relationship.py +0 -2
  3434. office365/sharepoint/copilot/transitivesharing/statusinformation.py +1 -2
  3435. office365/sharepoint/copilot/transitivesharing/statusitem.py +0 -2
  3436. office365/sharepoint/copilot/useridentity.py +0 -2
  3437. office365/sharepoint/customactions/element.py +1 -2
  3438. office365/sharepoint/customactions/element_collection.py +1 -2
  3439. office365/sharepoint/deployment/shortcutinformation.py +0 -2
  3440. office365/sharepoint/directory/conditional_access_policy.py +14 -0
  3441. office365/sharepoint/directory/extendedattributedata.py +0 -3
  3442. office365/sharepoint/directory/group_and_user_status.py +12 -0
  3443. office365/sharepoint/directory/groups/group.py +159 -6
  3444. office365/sharepoint/directory/groups/namevalidationresult.py +1 -2
  3445. office365/sharepoint/directory/groups/namevalidationresulterrorparams.py +0 -2
  3446. office365/sharepoint/directory/helper.py +9 -0
  3447. office365/sharepoint/directory/link.py +24 -0
  3448. office365/sharepoint/directory/linktarget.py +0 -3
  3449. office365/sharepoint/directory/members_info.py +18 -0
  3450. office365/sharepoint/directory/membership_result.py +3 -1
  3451. office365/sharepoint/directory/multi_conditional_access_policy.py +12 -0
  3452. office365/sharepoint/directory/my_groups_result.py +17 -0
  3453. office365/sharepoint/directory/named_location_policy.py +29 -0
  3454. office365/sharepoint/directory/propertycollectiondata.py +0 -3
  3455. office365/sharepoint/directory/propertydata.py +0 -3
  3456. office365/sharepoint/directory/provider/alternate_id_data.py +0 -2
  3457. office365/sharepoint/directory/provider/link_change.py +1 -2
  3458. office365/sharepoint/directory/provider/notification.py +3 -0
  3459. office365/sharepoint/directory/provider/object_changes.py +1 -2
  3460. office365/sharepoint/directory/provider/object_data.py +1 -2
  3461. office365/sharepoint/directory/provider/property_change.py +1 -2
  3462. office365/sharepoint/directory/provider/provider.py +152 -0
  3463. office365/sharepoint/directory/provider/session_data.py +0 -2
  3464. office365/sharepoint/directory/relationdata.py +0 -3
  3465. office365/sharepoint/directory/relationsetdata.py +0 -3
  3466. office365/sharepoint/directory/resourcedata.py +0 -3
  3467. office365/sharepoint/directory/schemadata.py +0 -3
  3468. office365/sharepoint/directory/session.py +76 -0
  3469. office365/sharepoint/directory/statedata.py +0 -3
  3470. office365/sharepoint/directory/tenant.py +33 -0
  3471. office365/sharepoint/directory/users/creationinformation.py +0 -3
  3472. office365/sharepoint/directory/users/information.py +0 -2
  3473. office365/sharepoint/directory/users/user.py +409 -1
  3474. office365/sharepoint/document_location.py +12 -0
  3475. office365/sharepoint/documentmanagement/document_id.py +5 -0
  3476. office365/sharepoint/documentmanagement/document_set.py +6 -0
  3477. office365/sharepoint/documents/caaefieldelement.py +0 -3
  3478. office365/sharepoint/documents/caaesnippetelement.py +0 -3
  3479. office365/sharepoint/documents/cafieldvalue.py +0 -3
  3480. office365/sharepoint/documents/coauthconfiguration.py +1 -2
  3481. office365/sharepoint/documents/columntypeinfo.py +0 -3
  3482. office365/sharepoint/documents/contentassemblyfileinfo.py +0 -3
  3483. office365/sharepoint/documents/contentassemblyformanswer.py +0 -3
  3484. office365/sharepoint/documents/contentassemblymoderntemplatecolumnsmappinginfo.py +1 -2
  3485. office365/sharepoint/documents/contentcontrolinfo.py +1 -2
  3486. office365/sharepoint/documents/countbydate.py +0 -2
  3487. office365/sharepoint/documents/createagreementfolderinfo.py +0 -3
  3488. office365/sharepoint/documents/createhvcsitemapprovalrequestparameters.py +0 -3
  3489. office365/sharepoint/documents/createreviewrequestdto.py +0 -2
  3490. office365/sharepoint/documents/customizedformspage.py +0 -2
  3491. office365/sharepoint/documents/customizedformspagecollection.py +1 -2
  3492. office365/sharepoint/documents/destinationlibraryinfo.py +0 -2
  3493. office365/sharepoint/documents/documentgenerationinfo.py +1 -2
  3494. office365/sharepoint/documents/effectivebasepermissions.py +0 -2
  3495. office365/sharepoint/documents/encryptionoption.py +0 -3
  3496. office365/sharepoint/documents/fieldvalueswithurl.py +1 -2
  3497. office365/sharepoint/documents/fontoption.py +0 -3
  3498. office365/sharepoint/documents/getnextagreementworkflowrequest.py +0 -3
  3499. office365/sharepoint/documents/getreviewconfigrequestdto.py +0 -2
  3500. office365/sharepoint/documents/gridinitinfotype.py +0 -3
  3501. office365/sharepoint/documents/ingestiontaskkey.py +0 -3
  3502. office365/sharepoint/documents/itemorderupdatevalue.py +0 -3
  3503. office365/sharepoint/documents/librarydetails.py +0 -2
  3504. office365/sharepoint/documents/location.py +0 -2
  3505. office365/sharepoint/documents/lockfiledata.py +1 -2
  3506. office365/sharepoint/documents/placeholder.py +0 -3
  3507. office365/sharepoint/documents/placeholderv2.py +0 -2
  3508. office365/sharepoint/documents/publishmoderntemplatepayload.py +2 -2
  3509. office365/sharepoint/documents/publishsnippetpayload.py +1 -2
  3510. office365/sharepoint/documents/publishtemplatev2payload.py +1 -2
  3511. office365/sharepoint/documents/smarttemplatecontenttype.py +0 -3
  3512. office365/sharepoint/documents/snippet.py +1 -2
  3513. office365/sharepoint/documents/templatemetadata.py +1 -2
  3514. office365/sharepoint/documents/updatetemplateinfo.py +1 -2
  3515. office365/sharepoint/documents/updatetemplateinfov2.py +1 -2
  3516. office365/sharepoint/documents/uploaddocumentinfo.py +0 -3
  3517. office365/sharepoint/dynamiccontent/updateservice.py +219 -1
  3518. office365/sharepoint/edgeworth_settings_apis.py +7 -0
  3519. office365/sharepoint/engage_distribution_info.py +15 -0
  3520. office365/sharepoint/entity.py +107 -5
  3521. office365/sharepoint/entity_collection.py +86 -1
  3522. office365/sharepoint/esign/digitallegacy.py +388 -1
  3523. office365/sharepoint/esign/models/addaudittrailentry.py +0 -2
  3524. office365/sharepoint/esign/models/cancelagreement.py +0 -2
  3525. office365/sharepoint/esign/models/completeagreement.py +0 -2
  3526. office365/sharepoint/esign/models/completeagreementv4.py +0 -2
  3527. office365/sharepoint/esign/models/createagreement.py +0 -2
  3528. office365/sharepoint/esign/models/createagreementv2.py +0 -2
  3529. office365/sharepoint/esign/models/declineagreement.py +0 -2
  3530. office365/sharepoint/esign/models/initializeagreement.py +0 -2
  3531. office365/sharepoint/esign/models/initializewriteback.py +0 -2
  3532. office365/sharepoint/esign/models/signagreement.py +0 -2
  3533. office365/sharepoint/esign/models/updateaudittrailentry.py +0 -2
  3534. office365/sharepoint/esign/models/updatewritebackfile.py +0 -2
  3535. office365/sharepoint/esign/models/writebacklocation.py +0 -2
  3536. office365/sharepoint/eventreceivers/creation_information.py +0 -2
  3537. office365/sharepoint/eventreceivers/definition.py +35 -0
  3538. office365/sharepoint/eventreceivers/definition_collection.py +2 -0
  3539. office365/sharepoint/exceptions.py +12 -2
  3540. office365/sharepoint/features/collection.py +13 -6
  3541. office365/sharepoint/features/definitions/collection.py +2 -0
  3542. office365/sharepoint/features/definitions/definition.py +8 -0
  3543. office365/sharepoint/features/feature.py +3 -0
  3544. office365/sharepoint/fields/calculated.py +29 -0
  3545. office365/sharepoint/fields/choice.py +11 -0
  3546. office365/sharepoint/fields/collection.py +66 -7
  3547. office365/sharepoint/fields/computed.py +2 -0
  3548. office365/sharepoint/fields/creation_information.py +0 -2
  3549. office365/sharepoint/fields/currency.py +2 -0
  3550. office365/sharepoint/fields/date_time.py +6 -0
  3551. office365/sharepoint/fields/field.py +355 -37
  3552. office365/sharepoint/fields/fieldcalculatederrorvalue.py +0 -3
  3553. office365/sharepoint/fields/fieldratingscalequestionanswer.py +0 -3
  3554. office365/sharepoint/fields/geolocation_value.py +0 -3
  3555. office365/sharepoint/fields/image_value.py +1 -2
  3556. office365/sharepoint/fields/lookup.py +34 -0
  3557. office365/sharepoint/fields/lookup_value.py +0 -2
  3558. office365/sharepoint/fields/multi_choice.py +12 -0
  3559. office365/sharepoint/fields/multi_choice_value.py +0 -3
  3560. office365/sharepoint/fields/multi_line_text.py +21 -0
  3561. office365/sharepoint/fields/multi_lookup_value.py +0 -3
  3562. office365/sharepoint/fields/multi_user_value.py +0 -3
  3563. office365/sharepoint/fields/number.py +36 -0
  3564. office365/sharepoint/fields/rating_scale.py +35 -0
  3565. office365/sharepoint/fields/related_field.py +5 -1
  3566. office365/sharepoint/fields/schema.py +141 -0
  3567. office365/sharepoint/fields/text.py +2 -0
  3568. office365/sharepoint/fields/type.py +14 -0
  3569. office365/sharepoint/fields/url.py +2 -0
  3570. office365/sharepoint/fields/url_value.py +0 -3
  3571. office365/sharepoint/fields/user.py +18 -0
  3572. office365/sharepoint/fields/user_value.py +0 -2
  3573. office365/sharepoint/fields/xmlSchemaFieldCreationInformation.py +0 -3
  3574. office365/sharepoint/files/checked_out_file.py +21 -1
  3575. office365/sharepoint/files/checked_out_file_collection.py +2 -0
  3576. office365/sharepoint/files/collection.py +275 -38
  3577. office365/sharepoint/files/collectionaddparameters.py +0 -3
  3578. office365/sharepoint/files/creation_information.py +1 -4
  3579. office365/sharepoint/files/deleteparameters.py +0 -3
  3580. office365/sharepoint/files/download_operation.py +475 -0
  3581. office365/sharepoint/files/file.py +767 -33
  3582. office365/sharepoint/files/file_url_virus_status_update.py +15 -0
  3583. office365/sharepoint/files/publish/status.py +51 -0
  3584. office365/sharepoint/files/recent_file_collection.py +45 -0
  3585. office365/sharepoint/files/systemitem.py +9 -0
  3586. office365/sharepoint/files/versionbatchdeleteparameters.py +1 -2
  3587. office365/sharepoint/files/versions/collection.py +8 -1
  3588. office365/sharepoint/files/versions/event.py +17 -0
  3589. office365/sharepoint/files/versions/policyselectionparameters.py +1 -2
  3590. office365/sharepoint/files/versions/version.py +40 -4
  3591. office365/sharepoint/flows/connector_result.py +3 -0
  3592. office365/sharepoint/flows/permissions.py +2 -0
  3593. office365/sharepoint/flows/synchronization_result.py +16 -1
  3594. office365/sharepoint/folders/collection.py +3 -0
  3595. office365/sharepoint/folders/coloring.py +33 -0
  3596. office365/sharepoint/folders/coloring_information.py +0 -3
  3597. office365/sharepoint/folders/delete_parameters.py +0 -3
  3598. office365/sharepoint/folders/folder.py +221 -14
  3599. office365/sharepoint/folders/foldercollectionaddparameters.py +0 -3
  3600. office365/sharepoint/folders/temporaryfolderfileinfo.py +0 -3
  3601. office365/sharepoint/fontpackages/creation_parameters.py +0 -2
  3602. office365/sharepoint/fontpackages/font_package.py +81 -0
  3603. office365/sharepoint/fontpackages/oob_settings.py +50 -0
  3604. office365/sharepoint/forms/apprenderinfo.py +0 -2
  3605. office365/sharepoint/forms/customization.py +2 -0
  3606. office365/sharepoint/forms/form.py +13 -0
  3607. office365/sharepoint/glutamate_controller.py +46 -0
  3608. office365/sharepoint/gtp/asyncexecuteresponse.py +1 -2
  3609. office365/sharepoint/gtp/asyncsubmitresponse.py +0 -2
  3610. office365/sharepoint/gtp/base_request_options.py +0 -2
  3611. office365/sharepoint/gtp/base_response.py +0 -2
  3612. office365/sharepoint/gtp/chat/response.py +1 -2
  3613. office365/sharepoint/gtp/chat/responsechoice.py +1 -2
  3614. office365/sharepoint/gtp/embeddings/requestoptions.py +0 -2
  3615. office365/sharepoint/gtp/embeddings/response.py +1 -2
  3616. office365/sharepoint/gtp/embeddings/responsedata.py +1 -2
  3617. office365/sharepoint/gtp/message_entry.py +1 -2
  3618. office365/sharepoint/gtp/requestoptions.py +0 -2
  3619. office365/sharepoint/gtp/response.py +1 -2
  3620. office365/sharepoint/gtp/responsechoice.py +0 -2
  3621. office365/sharepoint/gtp/responseusage.py +1 -2
  3622. office365/sharepoint/htmlpages/html_page.py +8 -0
  3623. office365/sharepoint/htmlpages/html_page_service.py +2 -0
  3624. office365/sharepoint/identity/defaultdocumentlibrary.py +0 -2
  3625. office365/sharepoint/identity/rubysite.py +1 -2
  3626. office365/sharepoint/ir/migration.py +2 -0
  3627. office365/sharepoint/item_reference.py +15 -0
  3628. office365/sharepoint/largeoperation/operation.py +31 -1
  3629. office365/sharepoint/likes/liked_by_information.py +2 -1
  3630. office365/sharepoint/likes/user_entity.py +14 -0
  3631. office365/sharepoint/list_creation_information.py +16 -0
  3632. office365/sharepoint/listhome/favorite_lists.py +136 -0
  3633. office365/sharepoint/listhome/favoritelistssubstrate.py +111 -1
  3634. office365/sharepoint/listhome/item.py +0 -2
  3635. office365/sharepoint/listhome/item2.py +29 -0
  3636. office365/sharepoint/listhome/itemcollection.py +105 -1
  3637. office365/sharepoint/listhome/nucleus.py +17 -1
  3638. office365/sharepoint/listhome/pinneditems.py +133 -1
  3639. office365/sharepoint/listitems/caml/query.py +2 -4
  3640. office365/sharepoint/listitems/collection.py +26 -8
  3641. office365/sharepoint/listitems/collection_position.py +0 -3
  3642. office365/sharepoint/listitems/compliance_info.py +0 -3
  3643. office365/sharepoint/listitems/creation_information.py +0 -3
  3644. office365/sharepoint/listitems/creation_information_using_path.py +0 -2
  3645. office365/sharepoint/listitems/delete_parameters.py +0 -3
  3646. office365/sharepoint/listitems/favoriteitemcollection.py +22 -1
  3647. office365/sharepoint/listitems/form_update_value.py +2 -4
  3648. office365/sharepoint/listitems/listdata_validation_exception_value.py +1 -2
  3649. office365/sharepoint/listitems/listitem.py +1086 -57
  3650. office365/sharepoint/listitems/moderation_status.py +15 -0
  3651. office365/sharepoint/listitems/relateditem.py +0 -3
  3652. office365/sharepoint/listitems/relateditemmanager.py +238 -1
  3653. office365/sharepoint/listitems/update_parameters.py +0 -3
  3654. office365/sharepoint/listitems/updateresults.py +1 -2
  3655. office365/sharepoint/listitems/upsert.py +2 -0
  3656. office365/sharepoint/listitems/user_info_item.py +115 -4
  3657. office365/sharepoint/listitems/versions/change.py +0 -3
  3658. office365/sharepoint/listitems/versions/collection.py +2 -0
  3659. office365/sharepoint/listitems/versions/collection_position.py +0 -3
  3660. office365/sharepoint/listitems/versions/get_parameters.py +1 -2
  3661. office365/sharepoint/listitems/versions/version.py +19 -2
  3662. office365/sharepoint/lists/apihubconnector.py +20 -1
  3663. office365/sharepoint/lists/base_type.py +13 -0
  3664. office365/sharepoint/lists/batch_convert_asset_result.py +16 -0
  3665. office365/sharepoint/lists/batch_convert_classic_wiki_page_input.py +12 -0
  3666. office365/sharepoint/lists/batch_convert_item_result.py +19 -0
  3667. office365/sharepoint/lists/bloom_filter.py +43 -1
  3668. office365/sharepoint/lists/collection.py +6 -0
  3669. office365/sharepoint/lists/collection_position.py +0 -2
  3670. office365/sharepoint/lists/creatable_item_info.py +0 -2
  3671. office365/sharepoint/lists/creatable_item_info_col.py +1 -2
  3672. office365/sharepoint/lists/creatables_info.py +3 -0
  3673. office365/sharepoint/lists/creation_information.py +0 -2
  3674. office365/sharepoint/lists/currency.py +2 -0
  3675. office365/sharepoint/lists/currency_information.py +0 -2
  3676. office365/sharepoint/lists/currency_information_collection.py +1 -2
  3677. office365/sharepoint/lists/data_parameters.py +0 -2
  3678. office365/sharepoint/lists/data_source.py +0 -2
  3679. office365/sharepoint/lists/data_validation_failure.py +0 -2
  3680. office365/sharepoint/lists/document_library_information.py +0 -2
  3681. office365/sharepoint/lists/extended_share_point_permission_settings.py +3 -0
  3682. office365/sharepoint/lists/get_parameters.py +1 -2
  3683. office365/sharepoint/lists/list.py +1506 -65
  3684. office365/sharepoint/lists/list_forms_api.py +111 -1
  3685. office365/sharepoint/lists/listform.py +0 -2
  3686. office365/sharepoint/lists/playlist.py +36 -1
  3687. office365/sharepoint/lists/recentlist.py +29 -0
  3688. office365/sharepoint/lists/recentlistcollection.py +80 -1
  3689. office365/sharepoint/lists/recentlistproxy.py +33 -1
  3690. office365/sharepoint/lists/recommendationcollection.py +75 -1
  3691. office365/sharepoint/lists/render_data_parameters.py +0 -2
  3692. office365/sharepoint/lists/render_override_parameters.py +0 -2
  3693. office365/sharepoint/lists/renderlistcontextmenudataparameters.py +0 -3
  3694. office365/sharepoint/lists/rules/action.py +1 -2
  3695. office365/sharepoint/lists/rules/definition.py +1 -2
  3696. office365/sharepoint/lists/rules/definitiongroup.py +1 -2
  3697. office365/sharepoint/lists/rules/properties.py +0 -2
  3698. office365/sharepoint/lists/rules/reviewinfo.py +0 -2
  3699. office365/sharepoint/lists/rules/rule.py +1 -2
  3700. office365/sharepoint/lists/rules/userinfo.py +0 -3
  3701. office365/sharepoint/lists/rules/validationentryresponse.py +1 -2
  3702. office365/sharepoint/lists/smart_wiki_library_utility.py +109 -0
  3703. office365/sharepoint/lists/smart_wiki_metadata_update_parameters.py +17 -0
  3704. office365/sharepoint/lists/templates/template.py +73 -0
  3705. office365/sharepoint/lists/templates/type.py +3 -0
  3706. office365/sharepoint/lists/templatization_metadata.py +1 -2
  3707. office365/sharepoint/lists/version_policy_manager.py +17 -0
  3708. office365/sharepoint/logger/activityextraproperties.py +0 -2
  3709. office365/sharepoint/logger/activityrequest.py +0 -2
  3710. office365/sharepoint/logger/alternateurl.py +3 -0
  3711. office365/sharepoint/logger/export.py +5 -0
  3712. office365/sharepoint/logger/fileinfo.py +7 -0
  3713. office365/sharepoint/marketplace/app_metadata.py +32 -0
  3714. office365/sharepoint/marketplace/appstatequeryjobdefinition.py +3 -0
  3715. office365/sharepoint/marketplace/corporatecuratedgallery/addins/instance_info.py +0 -2
  3716. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_failed_info.py +0 -2
  3717. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_info.py +1 -2
  3718. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_request.py +1 -2
  3719. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +1 -2
  3720. office365/sharepoint/marketplace/corporatecuratedgallery/addins/principals_response.py +1 -2
  3721. office365/sharepoint/marketplace/corporatecuratedgallery/app_request_information.py +0 -2
  3722. office365/sharepoint/marketplace/corporatecuratedgallery/app_response_information.py +0 -2
  3723. office365/sharepoint/marketplace/corporatecuratedgallery/app_upgrade_availability.py +0 -2
  3724. office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +1 -2
  3725. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/card_design.py +0 -2
  3726. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/card_designs.py +3 -0
  3727. office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/features.py +0 -2
  3728. office365/sharepoint/marketplace/corporatecuratedgallery/spaddinprincipalinfo.py +0 -2
  3729. office365/sharepoint/marketplace/corporatecuratedgallery/spappaddanddeployresponseinfomation.py +0 -2
  3730. office365/sharepoint/marketplace/corporatecuratedgallery/sperrorwithserverrelativeurl.py +0 -2
  3731. office365/sharepoint/marketplace/corporatecuratedgallery/spfailtotriggeruninstalladdinjobresponse.py +0 -2
  3732. office365/sharepoint/marketplace/corporatecuratedgallery/spsitecollectionscopedpermissioninfo.py +0 -2
  3733. office365/sharepoint/marketplace/corporatecuratedgallery/spstoreappcreatebyidinformation.py +0 -2
  3734. office365/sharepoint/marketplace/corporatecuratedgallery/sptriggereduninstalladdinjobresponse.py +0 -2
  3735. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinerrordetail.py +0 -2
  3736. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinjobdetail.py +1 -2
  3737. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinrequest.py +1 -2
  3738. office365/sharepoint/marketplace/corporatecuratedgallery/spuninstalladdinresponse.py +1 -2
  3739. office365/sharepoint/marketplace/corporatecuratedgallery/storeappcreationinformation.py +0 -2
  3740. office365/sharepoint/marketplace/corporatecuratedgallery/teams_package_download.py +3 -0
  3741. office365/sharepoint/marketplace/corporatecuratedgallery/tenantscopedpermissioninfo.py +0 -2
  3742. office365/sharepoint/marketplace/sitecollection/appcatalog/accessor.py +1 -1
  3743. office365/sharepoint/marketplace/sitecollection/appcatalog/allowed_item.py +4 -0
  3744. office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +17 -3
  3745. office365/sharepoint/microfeed/attachment_store.py +6 -0
  3746. office365/sharepoint/microfeed/data.py +11 -0
  3747. office365/sharepoint/microfeed/datalink.py +0 -2
  3748. office365/sharepoint/microfeed/datalinkcollection.py +1 -2
  3749. office365/sharepoint/microfeed/dataquery.py +1 -2
  3750. office365/sharepoint/microfeed/entity.py +0 -2
  3751. office365/sharepoint/microfeed/link.py +1 -2
  3752. office365/sharepoint/microfeed/linkaction.py +0 -2
  3753. office365/sharepoint/microfeed/manager.py +23 -0
  3754. office365/sharepoint/microfeed/microblogentitycollection.py +1 -2
  3755. office365/sharepoint/microfeed/microfeedstore.py +7 -0
  3756. office365/sharepoint/microfeed/posts/collection.py +1 -2
  3757. office365/sharepoint/microfeed/posts/definition.py +0 -2
  3758. office365/sharepoint/microfeed/posts/definitionnamecollection.py +1 -2
  3759. office365/sharepoint/microfeed/posts/definitionnames.py +0 -3
  3760. office365/sharepoint/microfeed/posts/options.py +1 -2
  3761. office365/sharepoint/microfeed/posts/post.py +1 -2
  3762. office365/sharepoint/microfeed/retrievaloptions.py +1 -2
  3763. office365/sharepoint/microfeed/userpostcollection.py +1 -2
  3764. office365/sharepoint/microservice/manager.py +6 -0
  3765. office365/sharepoint/microservice/pacinfo.py +0 -2
  3766. office365/sharepoint/microservice/workitemproperties.py +0 -2
  3767. office365/sharepoint/migrationcenter/agentgroup.py +6 -0
  3768. office365/sharepoint/migrationcenter/agentgroupentity.py +28 -1
  3769. office365/sharepoint/migrationcenter/batchdeletionresult.py +1 -2
  3770. office365/sharepoint/migrationcenter/batchupdatepayload.py +1 -2
  3771. office365/sharepoint/migrationcenter/batchupdateresult.py +1 -2
  3772. office365/sharepoint/migrationcenter/common/results/batch_creation.py +0 -3
  3773. office365/sharepoint/migrationcenter/common/task.py +47 -1
  3774. office365/sharepoint/migrationcenter/common/task_definition.py +0 -2
  3775. office365/sharepoint/migrationcenter/common/task_entity_data.py +277 -0
  3776. office365/sharepoint/migrationcenter/common/teams/channel_resource.py +15 -0
  3777. office365/sharepoint/migrationcenter/common/teams/team_resource.py +14 -0
  3778. office365/sharepoint/migrationcenter/common/url_parser.py +45 -1
  3779. office365/sharepoint/migrationcenter/credentialentitydata.py +13 -0
  3780. office365/sharepoint/migrationcenter/deploy_status.py +3 -0
  3781. office365/sharepoint/migrationcenter/device.py +28 -0
  3782. office365/sharepoint/migrationcenter/deviceentitydata.py +23 -0
  3783. office365/sharepoint/migrationcenter/folderinformation.py +0 -2
  3784. office365/sharepoint/migrationcenter/listinformation.py +1 -2
  3785. office365/sharepoint/migrationcenter/mmtasksettings.py +0 -2
  3786. office365/sharepoint/migrationcenter/perfrecommendation.py +3 -0
  3787. office365/sharepoint/migrationcenter/service/credential.py +25 -0
  3788. office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +1 -2
  3789. office365/sharepoint/migrationcenter/service/performance/data.py +4 -0
  3790. office365/sharepoint/migrationcenter/service/performance/entity_data.py +15 -0
  3791. office365/sharepoint/migrationcenter/service/performance/throughput_data.py +0 -2
  3792. office365/sharepoint/migrationcenter/service/properties.py +5 -0
  3793. office365/sharepoint/migrationcenter/service/property.py +0 -2
  3794. office365/sharepoint/migrationcenter/service/services.py +86 -0
  3795. office365/sharepoint/migrationcenter/service/storage.py +17 -0
  3796. office365/sharepoint/migrationcenter/spflight.py +3 -0
  3797. office365/sharepoint/migrationcenter/storagesettings.py +0 -2
  3798. office365/sharepoint/migrationcenter/taskschedulerinformation.py +0 -2
  3799. office365/sharepoint/migrationcenter/tasksettings.py +0 -2
  3800. office365/sharepoint/migrationcenter/taskupdateresult.py +0 -2
  3801. office365/sharepoint/migrationcenter/urlparseresult.py +26 -0
  3802. office365/sharepoint/mount/appviewcreationinfo.py +0 -2
  3803. office365/sharepoint/mount/folder_info.py +41 -0
  3804. office365/sharepoint/mount/getsourceitemmetadataforodcmountpointrequest.py +1 -2
  3805. office365/sharepoint/mount/mountpointinfo.py +3 -0
  3806. office365/sharepoint/mount/notifychangetomountpointsrequest.py +1 -2
  3807. office365/sharepoint/mount/onedriveitemcollection.py +28 -1
  3808. office365/sharepoint/mount/placesentity.py +3 -0
  3809. office365/sharepoint/mount/placesinformation.py +27 -1
  3810. office365/sharepoint/mount/placesuserentity.py +0 -2
  3811. office365/sharepoint/mount/point.py +2 -0
  3812. office365/sharepoint/mount/requests/get_remote_item_Info.py +1 -2
  3813. office365/sharepoint/mount/service.py +2 -0
  3814. office365/sharepoint/multigeo/service/administratorentitydata.py +0 -2
  3815. office365/sharepoint/multigeo/service/allowed_data_location.py +7 -0
  3816. office365/sharepoint/multigeo/service/alloweddatalocationentitydata.py +5 -0
  3817. office365/sharepoint/multigeo/service/compatibledb.py +4 -0
  3818. office365/sharepoint/multigeo/service/contentdbschemaversion.py +2 -0
  3819. office365/sharepoint/multigeo/service/copyparameters.py +0 -2
  3820. office365/sharepoint/multigeo/service/cross_geo_user_placement_job.py +7 -0
  3821. office365/sharepoint/multigeo/service/crossfarmgroupmovejob.py +5 -0
  3822. office365/sharepoint/multigeo/service/crossfarmsitemovejob.py +5 -0
  3823. office365/sharepoint/multigeo/service/crossfarmsitemovejobentitydata.py +3 -0
  3824. office365/sharepoint/multigeo/service/crossfarmusermovejob.py +5 -0
  3825. office365/sharepoint/multigeo/service/crossfarmusermovejobentitydata.py +3 -0
  3826. office365/sharepoint/multigeo/service/crossgeosyncuserproperty.py +0 -2
  3827. office365/sharepoint/multigeo/service/crossgeotenantbyok.py +2 -0
  3828. office365/sharepoint/multigeo/service/crossgeotenantcompatibility.py +7 -0
  3829. office365/sharepoint/multigeo/service/crossgeotenantproperty.py +2 -0
  3830. office365/sharepoint/multigeo/service/crossgeotenantpropertyentitydata.py +5 -0
  3831. office365/sharepoint/multigeo/service/crossgeouserplacementjobentitydata.py +5 -0
  3832. office365/sharepoint/multigeo/service/dblevelworkitem.py +2 -0
  3833. office365/sharepoint/multigeo/service/dblevelworkitementitydata.py +8 -0
  3834. office365/sharepoint/multigeo/service/dbschemacompatibilitycheck.py +2 -0
  3835. office365/sharepoint/multigeo/service/df_deprecation_job.py +21 -0
  3836. office365/sharepoint/multigeo/service/dfdeprecationjob.py +3 -0
  3837. office365/sharepoint/multigeo/service/dfdeprecationsiteentitydata.py +4 -0
  3838. office365/sharepoint/multigeo/service/geo_tenant_instance_information.py +7 -0
  3839. office365/sharepoint/multigeo/service/geoadministrator.py +6 -0
  3840. office365/sharepoint/multigeo/service/geoexperience.py +7 -0
  3841. office365/sharepoint/multigeo/service/geolocationdata.py +5 -0
  3842. office365/sharepoint/multigeo/service/geomovetenantcompatibilitycheck.py +5 -0
  3843. office365/sharepoint/multigeo/service/geomovetenantpropertycompatibilitycheck.py +0 -2
  3844. office365/sharepoint/multigeo/service/geotenantinstanceinformationentitydata.py +12 -0
  3845. office365/sharepoint/multigeo/service/globaladmincheck.py +2 -0
  3846. office365/sharepoint/multigeo/service/groupmovejob.py +8 -0
  3847. office365/sharepoint/multigeo/service/groupmovejobentitydata.py +2 -0
  3848. office365/sharepoint/multigeo/service/hasmnalicense.py +2 -0
  3849. office365/sharepoint/multigeo/service/job_entity_data.py +24 -0
  3850. office365/sharepoint/multigeo/service/microfeedpostdefinitionmanager.py +97 -0
  3851. office365/sharepoint/multigeo/service/microfeedpostoptioncollection.py +2 -0
  3852. office365/sharepoint/multigeo/service/mnagroupmovevalidationresult.py +2 -0
  3853. office365/sharepoint/multigeo/service/move_job_entity_data.py +133 -0
  3854. office365/sharepoint/multigeo/service/move_job_report.py +3 -0
  3855. office365/sharepoint/multigeo/service/move_site_ro_state.py +21 -0
  3856. office365/sharepoint/multigeo/service/movejob.py +5 -0
  3857. office365/sharepoint/multigeo/service/movesiterostate.py +3 -0
  3858. office365/sharepoint/multigeo/service/movesiterostateentity.py +3 -0
  3859. office365/sharepoint/multigeo/service/multigeoservicesbeta.py +84 -13
  3860. office365/sharepoint/multigeo/service/orgrelationgroupmanagedpath.py +2 -0
  3861. office365/sharepoint/multigeo/service/orgrelationnotification.py +2 -0
  3862. office365/sharepoint/multigeo/service/orgrelationverification.py +3 -0
  3863. office365/sharepoint/multigeo/service/partner_company_id_lookup.py +3 -0
  3864. office365/sharepoint/multigeo/service/resolveuserupnbyuserobjectid.py +2 -0
  3865. office365/sharepoint/multigeo/service/restoreworkflowcount.py +2 -0
  3866. office365/sharepoint/multigeo/service/sbsitemovejob.py +40 -0
  3867. office365/sharepoint/multigeo/service/services.py +5 -2
  3868. office365/sharepoint/multigeo/service/site_move_job_entity_data.py +90 -0
  3869. office365/sharepoint/multigeo/service/siteattargetentitydata.py +4 -0
  3870. office365/sharepoint/multigeo/service/sitemovejob.py +8 -0
  3871. office365/sharepoint/multigeo/service/spmultigeoproxy.py +3 -0
  3872. office365/sharepoint/multigeo/service/storage_quota.py +59 -0
  3873. office365/sharepoint/multigeo/service/storagequotaentitydata.py +7 -0
  3874. office365/sharepoint/multigeo/service/supportedgeolocationsfortenant.py +2 -0
  3875. office365/sharepoint/multigeo/service/taxonomyreplicationparameters.py +5 -0
  3876. office365/sharepoint/multigeo/service/tenant_information.py +48 -0
  3877. office365/sharepoint/multigeo/service/unified_group.py +42 -0
  3878. office365/sharepoint/multigeo/service/user_personal_site_location.py +36 -0
  3879. office365/sharepoint/multigeo/service/usermnaodmovevalidationresult.py +2 -0
  3880. office365/sharepoint/multigeo/service/usermovejob.py +19 -0
  3881. office365/sharepoint/multigeo/service/usermovejobentitydata.py +4 -0
  3882. office365/sharepoint/multigeo/service/userpersonalsiteid.py +4 -0
  3883. office365/sharepoint/multigeo/service/xtenantmovecompatibilitycheck.py +4 -0
  3884. office365/sharepoint/navigation/configured_metadata_item.py +0 -3
  3885. office365/sharepoint/navigation/configured_metadata_item_col.py +1 -2
  3886. office365/sharepoint/navigation/home_site_navigation_settings.py +10 -1
  3887. office365/sharepoint/navigation/menu/node.py +1 -2
  3888. office365/sharepoint/navigation/menu/state.py +1 -2
  3889. office365/sharepoint/navigation/metadata_settings.py +2 -0
  3890. office365/sharepoint/navigation/navigation.py +41 -2
  3891. office365/sharepoint/navigation/nodes/collection.py +19 -4
  3892. office365/sharepoint/navigation/nodes/creationinformation.py +2 -3
  3893. office365/sharepoint/navigation/nodes/node.py +37 -5
  3894. office365/sharepoint/navigation/quickaccessitemcollection.py +40 -1
  3895. office365/sharepoint/navigation/service.py +9 -1
  3896. office365/sharepoint/navigation/servicerest.py +13 -0
  3897. office365/sharepoint/news/itemreference.py +0 -2
  3898. office365/sharepoint/news/ngspdatacollection.py +26 -1
  3899. office365/sharepoint/news/serializabletype.py +0 -2
  3900. office365/sharepoint/ngsp_ai_settings.py +35 -0
  3901. office365/sharepoint/oauth/accesstokenoptionalclaim.py +2 -0
  3902. office365/sharepoint/oauth/authentication.py +2 -0
  3903. office365/sharepoint/oauth/native_client.py +2 -0
  3904. office365/sharepoint/oauth/token.py +2 -0
  3905. office365/sharepoint/oauth/token_response.py +64 -0
  3906. office365/sharepoint/onboarding/customerkeyinfo.py +1 -2
  3907. office365/sharepoint/onboarding/customerkeystatusinfo.py +0 -3
  3908. office365/sharepoint/onboarding/customerkeyvaultinfo.py +0 -2
  3909. office365/sharepoint/onboarding/job_entity_data.py +17 -0
  3910. office365/sharepoint/onboarding/onboardingservicesbeta.py +4 -0
  3911. office365/sharepoint/onboarding/prioritysiterename/job.py +4 -0
  3912. office365/sharepoint/onboarding/prioritysiterename/jobentitydata.py +2 -0
  3913. office365/sharepoint/onboarding/siterename/job.py +8 -0
  3914. office365/sharepoint/onboarding/siterename/jobentitydata.py +6 -0
  3915. office365/sharepoint/onboarding/siterename/jobsfortenantrename.py +3 -0
  3916. office365/sharepoint/onboarding/tenantrename/job.py +23 -0
  3917. office365/sharepoint/onboarding/tenantrename/jobentitydata.py +26 -0
  3918. office365/sharepoint/orgnewssite/api.py +2 -0
  3919. office365/sharepoint/orgnewssite/info.py +0 -2
  3920. office365/sharepoint/packaging/app_details.py +6 -0
  3921. office365/sharepoint/packaging/appiconinfo.py +3 -0
  3922. office365/sharepoint/pageinstrumentation/pageimpressionclient.py +0 -2
  3923. office365/sharepoint/pages/textblock.py +0 -2
  3924. office365/sharepoint/pages/wiki_page_creation_information.py +0 -2
  3925. office365/sharepoint/permissions/__init__.py +91 -0
  3926. office365/sharepoint/permissions/base_permissions.py +22 -6
  3927. office365/sharepoint/permissions/irm/effective_settings.py +96 -0
  3928. office365/sharepoint/permissions/irm/file_settings.py +65 -0
  3929. office365/sharepoint/permissions/irm/settings.py +34 -0
  3930. office365/sharepoint/permissions/roles/assignments/assignment.py +3 -1
  3931. office365/sharepoint/permissions/roles/assignments/collection.py +3 -0
  3932. office365/sharepoint/permissions/roles/definitions/collection.py +4 -0
  3933. office365/sharepoint/permissions/roles/definitions/creation_information.py +1 -2
  3934. office365/sharepoint/permissions/roles/definitions/definition.py +24 -0
  3935. office365/sharepoint/permissions/securable_object.py +68 -3
  3936. office365/sharepoint/photos/migration.py +2 -0
  3937. office365/sharepoint/policy/dlp_policy_tip.py +8 -0
  3938. office365/sharepoint/policy/evaluation_info.py +5 -0
  3939. office365/sharepoint/policy/license_utilities.py +3 -0
  3940. office365/sharepoint/portal/channels/info.py +0 -2
  3941. office365/sharepoint/portal/channels/info_collection.py +1 -2
  3942. office365/sharepoint/portal/collaborationmailboxresponse.py +0 -2
  3943. office365/sharepoint/portal/ensureteamforgroupexresponse.py +0 -2
  3944. office365/sharepoint/portal/groups/creation_context.py +1 -2
  3945. office365/sharepoint/portal/groups/creation_information.py +1 -2
  3946. office365/sharepoint/portal/groups/creation_params.py +1 -2
  3947. office365/sharepoint/portal/groups/moveoperation.py +0 -2
  3948. office365/sharepoint/portal/groups/service.py +4 -0
  3949. office365/sharepoint/portal/groups/site_info.py +0 -2
  3950. office365/sharepoint/portal/groups/site_manager.py +110 -4
  3951. office365/sharepoint/portal/groups/siteconversioninfo.py +1 -2
  3952. office365/sharepoint/portal/home/datacache.py +1 -2
  3953. office365/sharepoint/portal/home/datacachecollection.py +1 -2
  3954. office365/sharepoint/portal/home/datacachecontext.py +0 -2
  3955. office365/sharepoint/portal/home/datacacheentry.py +1 -2
  3956. office365/sharepoint/portal/home/page_context.py +5 -2
  3957. office365/sharepoint/portal/home/service_context.py +54 -0
  3958. office365/sharepoint/portal/home/service_context_builder.py +2 -0
  3959. office365/sharepoint/portal/hub_sites_utility.py +2 -0
  3960. office365/sharepoint/portal/linkedsites/contract.py +0 -2
  3961. office365/sharepoint/portal/linkedsites/list_contract.py +1 -2
  3962. office365/sharepoint/portal/linkedsites/manager.py +4 -0
  3963. office365/sharepoint/portal/m365tabitem.py +0 -2
  3964. office365/sharepoint/portal/mysite_recommendations.py +3 -0
  3965. office365/sharepoint/portal/organization_news.py +40 -2
  3966. office365/sharepoint/portal/orglabels/context.py +0 -2
  3967. office365/sharepoint/portal/orglabels/context_list.py +1 -2
  3968. office365/sharepoint/portal/orgnews/sitereference.py +0 -2
  3969. office365/sharepoint/portal/parentgroup.py +0 -2
  3970. office365/sharepoint/portal/pintoteamparams.py +1 -2
  3971. office365/sharepoint/portal/pintoteamresponse.py +1 -2
  3972. office365/sharepoint/portal/project/myrecscacheblob.py +1 -2
  3973. office365/sharepoint/portal/project/myrecsqueryinfo.py +1 -2
  3974. office365/sharepoint/portal/rating_settings.py +2 -0
  3975. office365/sharepoint/portal/sites/creation_request.py +1 -2
  3976. office365/sharepoint/portal/sites/creation_response.py +0 -2
  3977. office365/sharepoint/portal/sites/icon_manager.py +3 -0
  3978. office365/sharepoint/portal/sites/manager.py +21 -0
  3979. office365/sharepoint/portal/teams/recent_and_joined_response.py +1 -2
  3980. office365/sharepoint/portal/theme_manager.py +32 -0
  3981. office365/sharepoint/portal/userprofiles/documentsshared/with_group.py +2 -0
  3982. office365/sharepoint/portal/userprofiles/documentsshared/with_me.py +2 -0
  3983. office365/sharepoint/portal/userprofiles/sharedwithme/document.py +328 -2
  3984. office365/sharepoint/portal/userprofiles/sharedwithme/document_user.py +0 -2
  3985. office365/sharepoint/portal/userprofiles/sharedwithme/item_collection.py +155 -0
  3986. office365/sharepoint/portal/userprofiles/sharedwithme/items.py +2 -0
  3987. office365/sharepoint/portal/userprofiles/sharedwithme/view_item_removal_result.py +0 -2
  3988. office365/sharepoint/portal/webcontrols/recentdocument.py +15 -0
  3989. office365/sharepoint/portal/webcontrols/resourcemanifestinformation.py +3 -0
  3990. office365/sharepoint/principal/groups/collection.py +4 -0
  3991. office365/sharepoint/principal/groups/creation_information.py +0 -2
  3992. office365/sharepoint/principal/groups/group.py +32 -2
  3993. office365/sharepoint/principal/principal.py +12 -5
  3994. office365/sharepoint/principal/users/collection.py +4 -0
  3995. office365/sharepoint/principal/users/id_info.py +4 -4
  3996. office365/sharepoint/principal/users/user.py +24 -314
  3997. office365/sharepoint/publishing/acronyminformation.py +0 -2
  3998. office365/sharepoint/publishing/allowancecheckresult.py +4 -0
  3999. office365/sharepoint/publishing/amplify/amplifiedchannels.py +0 -2
  4000. office365/sharepoint/publishing/amplify/clientamplifyanywhereresults.py +2 -3
  4001. office365/sharepoint/publishing/amplify/clientamplifyendpointinfo.py +1 -2
  4002. office365/sharepoint/publishing/amplify/clientamplifyextraproperty.py +0 -2
  4003. office365/sharepoint/publishing/amplify/clientamplifyresults.py +1 -2
  4004. office365/sharepoint/publishing/amplify/history.py +1 -2
  4005. office365/sharepoint/publishing/amplify/historyresult.py +2 -3
  4006. office365/sharepoint/publishing/amplify/requestendpoint.py +0 -2
  4007. office365/sharepoint/publishing/amplify/requestparams.py +1 -2
  4008. office365/sharepoint/publishing/amplify/result.py +2 -3
  4009. office365/sharepoint/publishing/announcements/author.py +0 -2
  4010. office365/sharepoint/publishing/announcements/controller.py +3 -0
  4011. office365/sharepoint/publishing/announcements/data.py +3 -4
  4012. office365/sharepoint/publishing/approval/request.py +23 -0
  4013. office365/sharepoint/publishing/approval/requestcreationinfo.py +1 -2
  4014. office365/sharepoint/publishing/approval/requestresponse.py +0 -2
  4015. office365/sharepoint/publishing/approval/requestsyncresponse.py +3 -0
  4016. office365/sharepoint/publishing/authoringschemafeatureversion.py +0 -2
  4017. office365/sharepoint/publishing/booleancustomproperty.py +2 -0
  4018. office365/sharepoint/publishing/boostfieldsdata.py +0 -2
  4019. office365/sharepoint/publishing/calltoaction.py +0 -2
  4020. office365/sharepoint/publishing/campaign/association.py +0 -2
  4021. office365/sharepoint/publishing/campaign/campaign.py +23 -0
  4022. office365/sharepoint/publishing/campaign/loadmaildraftparam.py +0 -2
  4023. office365/sharepoint/publishing/campaign/metadata.py +0 -2
  4024. office365/sharepoint/publishing/campaign/resetendpointparam.py +1 -2
  4025. office365/sharepoint/publishing/campaign/savemaildraftparam.py +0 -2
  4026. office365/sharepoint/publishing/cancreatepageresponse.py +5 -0
  4027. office365/sharepoint/publishing/channelannouncement.py +4 -5
  4028. office365/sharepoint/publishing/content_distribution_controller.py +3 -0
  4029. office365/sharepoint/publishing/copytoparams.py +1 -2
  4030. office365/sharepoint/publishing/customproperties/base.py +23 -0
  4031. office365/sharepoint/publishing/customproperties/bigint.py +11 -0
  4032. office365/sharepoint/publishing/datetimecustomproperty.py +0 -2
  4033. office365/sharepoint/publishing/datetimetypecustomproperty.py +2 -0
  4034. office365/sharepoint/publishing/diagnostics/controller.py +3 -0
  4035. office365/sharepoint/publishing/diagnostics/page_details.py +0 -2
  4036. office365/sharepoint/publishing/diagnostics/page_diagnostics.py +0 -2
  4037. office365/sharepoint/publishing/diagnostics/page_result.py +3 -4
  4038. office365/sharepoint/publishing/dynamiccontentsignalspayload.py +1 -2
  4039. office365/sharepoint/publishing/dynamicfaqsingalsdata.py +0 -2
  4040. office365/sharepoint/publishing/emailpublishingstatus.py +1 -2
  4041. office365/sharepoint/publishing/embed_data_v1.py +26 -0
  4042. office365/sharepoint/publishing/embed_service.py +2 -0
  4043. office365/sharepoint/publishing/error.py +1 -2
  4044. office365/sharepoint/publishing/faqsignalactionpayload.py +0 -2
  4045. office365/sharepoint/publishing/faqsignaldata.py +1 -2
  4046. office365/sharepoint/publishing/feedvideopage.py +31 -0
  4047. office365/sharepoint/publishing/file_picker_options.py +1 -2
  4048. office365/sharepoint/publishing/gettyimage.py +0 -2
  4049. office365/sharepoint/publishing/highlights_info.py +17 -0
  4050. office365/sharepoint/publishing/icon.py +0 -2
  4051. office365/sharepoint/publishing/itemviewsanalyticsdata.py +1 -2
  4052. office365/sharepoint/publishing/missingsharepointdestinationwebidrepairitem.py +0 -2
  4053. office365/sharepoint/publishing/multivaluestringcustomproperty.py +2 -0
  4054. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +5 -0
  4055. office365/sharepoint/publishing/numbercustomproperty.py +2 -0
  4056. office365/sharepoint/publishing/pagecopywithassets/response.py +87 -0
  4057. office365/sharepoint/publishing/pagedeepcopywarning.py +0 -2
  4058. office365/sharepoint/publishing/pagemoveparams.py +0 -2
  4059. office365/sharepoint/publishing/pages/_3d/__init__.py +0 -0
  4060. office365/sharepoint/publishing/pages/_3d/page.py +346 -0
  4061. office365/sharepoint/publishing/pages/boostproperties.py +0 -2
  4062. office365/sharepoint/publishing/pages/campaign/maildraftdata.py +0 -2
  4063. office365/sharepoint/publishing/pages/campaign/publication.py +159 -16
  4064. office365/sharepoint/publishing/pages/canvas.py +81 -0
  4065. office365/sharepoint/publishing/pages/coauth_state.py +1 -2
  4066. office365/sharepoint/publishing/pages/collaborator.py +0 -2
  4067. office365/sharepoint/publishing/pages/collection.py +46 -5
  4068. office365/sharepoint/publishing/pages/dependency_metadata.py +1 -2
  4069. office365/sharepoint/publishing/pages/fields.py +39 -0
  4070. office365/sharepoint/publishing/pages/fields_data.py +2 -3
  4071. office365/sharepoint/publishing/pages/metadata.py +156 -5
  4072. office365/sharepoint/publishing/pages/move_response.py +69 -0
  4073. office365/sharepoint/publishing/pages/page.py +142 -11
  4074. office365/sharepoint/publishing/pages/reposts/collection.py +2 -0
  4075. office365/sharepoint/publishing/pages/reposts/metadata.py +36 -0
  4076. office365/sharepoint/publishing/pages/reposts/repost.py +32 -0
  4077. office365/sharepoint/publishing/pages/schedulepublicationresponse.py +0 -2
  4078. office365/sharepoint/publishing/pages/sendtestemailresponse.py +0 -2
  4079. office365/sharepoint/publishing/pages/sendtestteamsmessageresponse.py +0 -2
  4080. office365/sharepoint/publishing/pages/service.py +23 -2
  4081. office365/sharepoint/publishing/pages/sharepagebyemaildata.py +1 -2
  4082. office365/sharepoint/publishing/pages/sharepagepreviewbyemailfieldsdata.py +0 -2
  4083. office365/sharepoint/publishing/pages/topics/topic.py +31 -2
  4084. office365/sharepoint/publishing/pages/version_info.py +0 -2
  4085. office365/sharepoint/publishing/pages/versioninfocollection.py +0 -2
  4086. office365/sharepoint/publishing/person/core.py +0 -2
  4087. office365/sharepoint/publishing/person/customproperty.py +0 -2
  4088. office365/sharepoint/publishing/person/identity.py +0 -2
  4089. office365/sharepoint/publishing/person/magazinedata.py +0 -2
  4090. office365/sharepoint/publishing/person/magazineuserprofile.py +4 -5
  4091. office365/sharepoint/publishing/person/magazineuserprofiledirectsdata.py +1 -2
  4092. office365/sharepoint/publishing/personmagazine/taxonomicproperties.py +1 -2
  4093. office365/sharepoint/publishing/personmagazine/userprofiledata.py +2 -3
  4094. office365/sharepoint/publishing/persontypecustomproperty.py +2 -0
  4095. office365/sharepoint/publishing/point/docprops.py +14 -0
  4096. office365/sharepoint/publishing/point/magazineprops.py +10 -0
  4097. office365/sharepoint/publishing/point/post.py +14 -0
  4098. office365/sharepoint/publishing/point/postservicemanager.py +10 -0
  4099. office365/sharepoint/publishing/point/site_status.py +30 -0
  4100. office365/sharepoint/publishing/point/tenantmanager.py +2 -0
  4101. office365/sharepoint/publishing/point/user.py +22 -0
  4102. office365/sharepoint/publishing/portalhealth/details.py +0 -3
  4103. office365/sharepoint/publishing/portalhealth/status.py +0 -2
  4104. office365/sharepoint/publishing/portalhealth/statusdetails.py +0 -2
  4105. office365/sharepoint/publishing/portallaunch/wave.py +1 -2
  4106. office365/sharepoint/publishing/portallaunch/wavegroup.py +0 -2
  4107. office365/sharepoint/publishing/portallaunchwavesetup.py +1 -2
  4108. office365/sharepoint/publishing/portallaunchwavesmanager.py +4 -0
  4109. office365/sharepoint/publishing/portalnavigationcachewrapper.py +4 -0
  4110. office365/sharepoint/publishing/primary_city_time.py +4 -0
  4111. office365/sharepoint/publishing/profilecoreproperties.py +0 -2
  4112. office365/sharepoint/publishing/profiledata.py +2 -3
  4113. office365/sharepoint/publishing/profiledatetime.py +0 -2
  4114. office365/sharepoint/publishing/profiledirectsdata.py +1 -2
  4115. office365/sharepoint/publishing/profilefullproperties.py +4 -5
  4116. office365/sharepoint/publishing/profilepropertyvieweditpolicy.py +0 -2
  4117. office365/sharepoint/publishing/profilevieweditpolicies.py +25 -26
  4118. office365/sharepoint/publishing/propertyvalue.py +1 -2
  4119. office365/sharepoint/publishing/publicationmetadata.py +3 -4
  4120. office365/sharepoint/publishing/publishpublicationresponse.py +0 -2
  4121. office365/sharepoint/publishing/publishsiteinformation.py +0 -2
  4122. office365/sharepoint/publishing/removedstatus.py +4 -0
  4123. office365/sharepoint/publishing/rich_sharing.py +4 -0
  4124. office365/sharepoint/publishing/ruleerrordetails.py +2 -3
  4125. office365/sharepoint/publishing/ruleresult.py +2 -3
  4126. office365/sharepoint/publishing/search.py +10 -0
  4127. office365/sharepoint/publishing/sharepointids.py +0 -2
  4128. office365/sharepoint/publishing/sharepointpublishingstatus.py +1 -2
  4129. office365/sharepoint/publishing/sitepageauthoringmetadata.py +0 -2
  4130. office365/sharepoint/publishing/sitepagstreamdata.py +2 -3
  4131. office365/sharepoint/publishing/sites/communication/creation_request.py +0 -3
  4132. office365/sharepoint/publishing/sites/communication/creation_response.py +0 -2
  4133. office365/sharepoint/publishing/sites/communication/site.py +6 -0
  4134. office365/sharepoint/publishing/sitesharingemailcontext.py +0 -2
  4135. office365/sharepoint/publishing/spotlightchannel.py +26 -1
  4136. office365/sharepoint/publishing/spotlightvideo.py +24 -1
  4137. office365/sharepoint/publishing/spstatusresponse.py +2 -3
  4138. office365/sharepoint/publishing/startcoauthmetadata.py +1 -2
  4139. office365/sharepoint/publishing/statusresponse.py +3 -6
  4140. office365/sharepoint/publishing/stringcustomproperty.py +2 -0
  4141. office365/sharepoint/publishing/structuralnavigationcachestate.py +0 -2
  4142. office365/sharepoint/publishing/submitinfo.py +0 -2
  4143. office365/sharepoint/publishing/subtitlefile.py +4 -0
  4144. office365/sharepoint/publishing/textvaluewithlanguage.py +0 -2
  4145. office365/sharepoint/publishing/timeframestatistics.py +0 -2
  4146. office365/sharepoint/publishing/tooldetails.py +0 -2
  4147. office365/sharepoint/publishing/topicpagemetadata.py +3 -0
  4148. office365/sharepoint/publishing/user_info.py +8 -2
  4149. office365/sharepoint/publishing/validations/errorcodesforemail.py +1 -2
  4150. office365/sharepoint/publishing/validations/errorcodesforsharepointsite.py +1 -2
  4151. office365/sharepoint/publishing/validations/errorcodesforteams.py +1 -2
  4152. office365/sharepoint/publishing/validations/prepublishvalidationserrorcodesforvivaengage.py +2 -3
  4153. office365/sharepoint/publishing/validations/response.py +1 -2
  4154. office365/sharepoint/publishing/video/channel.py +29 -0
  4155. office365/sharepoint/publishing/video/item.py +48 -2
  4156. office365/sharepoint/publishing/video/service_discoverer.py +11 -0
  4157. office365/sharepoint/publishing/video/service_manager.py +80 -2
  4158. office365/sharepoint/publishing/video/view_data.py +0 -2
  4159. office365/sharepoint/publishing/videopermissiongroup.py +5 -0
  4160. office365/sharepoint/publishing/videoplaybackmetadata.py +5 -0
  4161. office365/sharepoint/publishing/videothumbnail.py +4 -0
  4162. office365/sharepoint/publishing/viewprogressanalyticsdata.py +0 -2
  4163. office365/sharepoint/publishing/webpartdetailswrapper.py +0 -2
  4164. office365/sharepoint/pushnotifications/subscriber.py +15 -0
  4165. office365/sharepoint/quotamanagement/consumer/consumer_quota_info_api.py +3 -0
  4166. office365/sharepoint/quotamanagement/consumer/non_quota_backfill_api.py +3 -0
  4167. office365/sharepoint/quotamanagement/consumer/nonquotamigrationapi.py +3 -0
  4168. office365/sharepoint/quotamanagement/consumer/quotamigrationapi.py +3 -0
  4169. office365/sharepoint/recyclebin/item.py +38 -3
  4170. office365/sharepoint/recyclebin/item_collection.py +8 -1
  4171. office365/sharepoint/recyclebin/query_information.py +0 -2
  4172. office365/sharepoint/reputationmodel/reputation.py +3 -0
  4173. office365/sharepoint/request.py +73 -16
  4174. office365/sharepoint/request_context.py +48 -2
  4175. office365/sharepoint/request_user_context.py +3 -0
  4176. office365/sharepoint/role_definition_creation_information.py +13 -0
  4177. office365/sharepoint/search/administration/document_crawl_log.py +6 -0
  4178. office365/sharepoint/search/administration/providers/crawl_versions_info.py +10 -0
  4179. office365/sharepoint/search/administration/providers/recycle_bin_info.py +5 -0
  4180. office365/sharepoint/search/administration/providers/site_content_processing_info.py +5 -0
  4181. office365/sharepoint/search/administration/providers/site_me_ta_info.py +3 -0
  4182. office365/sharepoint/search/analytics/action.py +1 -2
  4183. office365/sharepoint/search/analytics/actor.py +1 -2
  4184. office365/sharepoint/search/analytics/analyticsitem.py +1 -2
  4185. office365/sharepoint/search/analytics/signal.py +1 -2
  4186. office365/sharepoint/search/analytics/signal_store.py +3 -0
  4187. office365/sharepoint/search/context_condition.py +0 -3
  4188. office365/sharepoint/search/custom_result.py +1 -2
  4189. office365/sharepoint/search/endpoints.py +1 -2
  4190. office365/sharepoint/search/object_owner_result.py +0 -3
  4191. office365/sharepoint/search/promoted_result_query_rule.py +1 -2
  4192. office365/sharepoint/search/promoted_results_operations_result.py +1 -2
  4193. office365/sharepoint/search/promotedresults.py +0 -2
  4194. office365/sharepoint/search/query/auto_completion.py +1 -2
  4195. office365/sharepoint/search/query/auto_completion_match.py +0 -3
  4196. office365/sharepoint/search/query/auto_completion_results.py +1 -2
  4197. office365/sharepoint/search/query/condition.py +1 -2
  4198. office365/sharepoint/search/query/configuration.py +1 -2
  4199. office365/sharepoint/search/query/context.py +1 -2
  4200. office365/sharepoint/search/query/customsuggestions.py +1 -2
  4201. office365/sharepoint/search/query/expanded_parameters.py +1 -2
  4202. office365/sharepoint/search/query/personal_result_suggestion.py +0 -3
  4203. office365/sharepoint/search/query/popular_tenant_query.py +0 -3
  4204. office365/sharepoint/search/query/property.py +1 -2
  4205. office365/sharepoint/search/query/property_value.py +0 -3
  4206. office365/sharepoint/search/query/reordering_rule.py +0 -3
  4207. office365/sharepoint/search/query/routing_info.py +1 -2
  4208. office365/sharepoint/search/query/sort/collection.py +5 -0
  4209. office365/sharepoint/search/query/sort/sort.py +0 -3
  4210. office365/sharepoint/search/query/suggestion_results.py +1 -2
  4211. office365/sharepoint/search/query/suggestionquery.py +0 -3
  4212. office365/sharepoint/search/query/suggestionrange.py +0 -3
  4213. office365/sharepoint/search/query/tenant_custom_query_suggestions.py +1 -2
  4214. office365/sharepoint/search/query_result.py +1 -2
  4215. office365/sharepoint/search/ranking_labeling.py +5 -0
  4216. office365/sharepoint/search/refinement_results.py +1 -2
  4217. office365/sharepoint/search/refiner/entry.py +0 -3
  4218. office365/sharepoint/search/refiner/refiner.py +1 -2
  4219. office365/sharepoint/search/relevant_results.py +12 -6
  4220. office365/sharepoint/search/reordering_rule_collection.py +5 -0
  4221. office365/sharepoint/search/reports/abandoned_queries.py +1 -2
  4222. office365/sharepoint/search/reports/abandonedqueries/item.py +1 -2
  4223. office365/sharepoint/search/reports/abandonedqueriesdata.py +0 -3
  4224. office365/sharepoint/search/reports/base.py +0 -3
  4225. office365/sharepoint/search/reports/noresultdata.py +0 -3
  4226. office365/sharepoint/search/reports/noresultitem.py +1 -2
  4227. office365/sharepoint/search/reports/noresultqueries.py +1 -2
  4228. office365/sharepoint/search/reports/numberofqueries.py +1 -2
  4229. office365/sharepoint/search/reports/numberofqueriesdata.py +0 -3
  4230. office365/sharepoint/search/reports/numberofqueriesitem.py +1 -2
  4231. office365/sharepoint/search/reports/queryrules.py +1 -2
  4232. office365/sharepoint/search/reports/queryrulesdata.py +0 -3
  4233. office365/sharepoint/search/reports/queryrulesitem.py +1 -2
  4234. office365/sharepoint/search/reports/top_queries.py +1 -2
  4235. office365/sharepoint/search/reports/topqueries/data.py +0 -3
  4236. office365/sharepoint/search/reports/topqueries/item.py +1 -2
  4237. office365/sharepoint/search/request.py +1 -2
  4238. office365/sharepoint/search/result.py +11 -6
  4239. office365/sharepoint/search/scs_endpoint.py +0 -3
  4240. office365/sharepoint/search/searchresultitemcollection.py +90 -1
  4241. office365/sharepoint/search/semantic/crawlerenqueueitem.py +0 -2
  4242. office365/sharepoint/search/semantic/enqueueproxy.py +73 -1
  4243. office365/sharepoint/search/semantic/itemcollection.py +38 -1
  4244. office365/sharepoint/search/service.py +24 -0
  4245. office365/sharepoint/search/setting.py +12 -0
  4246. office365/sharepoint/search/simple_data_row.py +11 -4
  4247. office365/sharepoint/search/simple_data_table.py +1 -2
  4248. office365/sharepoint/search/special_term_result.py +0 -3
  4249. office365/sharepoint/search/special_term_results.py +1 -2
  4250. office365/sharepoint/search/xssearchpolicy.py +0 -3
  4251. office365/sharepoint/securestore/target_application.py +19 -0
  4252. office365/sharepoint/securestore/target_application_field.py +21 -0
  4253. office365/sharepoint/server_settings.py +4 -0
  4254. office365/sharepoint/sharing/abilities.py +1 -2
  4255. office365/sharepoint/sharing/ability_status.py +0 -3
  4256. office365/sharepoint/sharing/access_request_settings.py +0 -3
  4257. office365/sharepoint/sharing/address_bar_link_settings.py +0 -3
  4258. office365/sharepoint/sharing/audience.py +0 -2
  4259. office365/sharepoint/sharing/cexternalsharingthrottling.py +0 -2
  4260. office365/sharepoint/sharing/direct_abilities.py +1 -2
  4261. office365/sharepoint/sharing/document_manager.py +4 -0
  4262. office365/sharepoint/sharing/domain_restriction_settings.py +0 -3
  4263. office365/sharepoint/sharing/emaildata.py +0 -3
  4264. office365/sharepoint/sharing/entitypermission.py +0 -3
  4265. office365/sharepoint/sharing/entityresult.py +1 -2
  4266. office365/sharepoint/sharing/entityresultdescription.py +0 -3
  4267. office365/sharepoint/sharing/entityresultsettingpolicyreason.py +0 -3
  4268. office365/sharepoint/sharing/ephemerallinkrequest.py +1 -2
  4269. office365/sharepoint/sharing/information.py +341 -6
  4270. office365/sharepoint/sharing/information_request.py +0 -3
  4271. office365/sharepoint/sharing/inherited_from.py +1 -2
  4272. office365/sharepoint/sharing/internal/canonymouslinkuselimit.py +0 -2
  4273. office365/sharepoint/sharing/internal/cexternalsharingenforcement.py +0 -2
  4274. office365/sharepoint/sharing/internal/sharing_restrictions.py +19 -1
  4275. office365/sharepoint/sharing/invitation/creation_result.py +0 -3
  4276. office365/sharepoint/sharing/invitation/link.py +1 -2
  4277. office365/sharepoint/sharing/itemsharingsettings.py +0 -3
  4278. office365/sharepoint/sharing/link_abilities.py +1 -2
  4279. office365/sharepoint/sharing/link_info.py +1 -2
  4280. office365/sharepoint/sharing/linkexpirationabilitystatus.py +0 -3
  4281. office365/sharepoint/sharing/linkparameters.py +0 -3
  4282. office365/sharepoint/sharing/linkpasswordabilitystatus.py +0 -3
  4283. office365/sharepoint/sharing/links/access_request.py +0 -3
  4284. office365/sharepoint/sharing/links/data.py +0 -3
  4285. office365/sharepoint/sharing/links/default_template.py +1 -2
  4286. office365/sharepoint/sharing/links/default_templates_collection.py +1 -2
  4287. office365/sharepoint/sharing/links/info.py +1 -2
  4288. office365/sharepoint/sharing/links/partial_success_response.py +1 -2
  4289. office365/sharepoint/sharing/links/share_request.py +1 -2
  4290. office365/sharepoint/sharing/links/share_response.py +1 -2
  4291. office365/sharepoint/sharing/links/share_settings.py +1 -2
  4292. office365/sharepoint/sharing/linktemplate.py +0 -3
  4293. office365/sharepoint/sharing/mainaccessinformation.py +1 -2
  4294. office365/sharepoint/sharing/mainlinkabilities.py +1 -2
  4295. office365/sharepoint/sharing/mainlinkaudienceabilities.py +1 -2
  4296. office365/sharepoint/sharing/mainlinkinfo.py +1 -2
  4297. office365/sharepoint/sharing/mainlinkroleabilities.py +1 -2
  4298. office365/sharepoint/sharing/object_sharing_information.py +58 -0
  4299. office365/sharepoint/sharing/object_sharing_information_user.py +84 -0
  4300. office365/sharepoint/sharing/object_sharing_settings.py +186 -4
  4301. office365/sharepoint/sharing/oversharedwebinfo.py +1 -2
  4302. office365/sharepoint/sharing/permission_collection.py +1 -2
  4303. office365/sharepoint/sharing/permission_information.py +29 -0
  4304. office365/sharepoint/sharing/personal_web.py +2 -0
  4305. office365/sharepoint/sharing/picker_settings.py +35 -3
  4306. office365/sharepoint/sharing/principal.py +1 -2
  4307. office365/sharepoint/sharing/principal_info.py +24 -0
  4308. office365/sharepoint/sharing/recipient.py +0 -3
  4309. office365/sharepoint/sharing/recipient_limits.py +1 -2
  4310. office365/sharepoint/sharing/recipientlimitsinfo.py +0 -3
  4311. office365/sharepoint/sharing/reports/site_capabilities.py +1 -2
  4312. office365/sharepoint/sharing/restorefacet.py +0 -3
  4313. office365/sharepoint/sharing/restoreversionfacet.py +0 -3
  4314. office365/sharepoint/sharing/result.py +13 -0
  4315. office365/sharepoint/sharing/sensitivitylabelinformation.py +0 -3
  4316. office365/sharepoint/sharing/settingsabilities.py +1 -2
  4317. office365/sharepoint/sharing/shared_document_info.py +200 -1
  4318. office365/sharepoint/sharing/shared_with_user.py +0 -3
  4319. office365/sharepoint/sharing/sharedwithusercollection.py +1 -2
  4320. office365/sharepoint/sharing/sharepoint_sharing_settings.py +102 -1
  4321. office365/sharepoint/sharing/site_sharing_report_helper.py +4 -0
  4322. office365/sharepoint/sharing/site_sharing_report_status.py +1 -2
  4323. office365/sharepoint/sharing/sitesharingreportjobdata.py +0 -3
  4324. office365/sharepoint/sharing/uniqueaccessgroupinfo.py +0 -2
  4325. office365/sharepoint/sharing/uniqueaccessgroupswrapper.py +1 -2
  4326. office365/sharepoint/sharing/user_directory_info.py +0 -3
  4327. office365/sharepoint/sharing/user_role_assignment.py +0 -3
  4328. office365/sharepoint/sharing/user_sharing_result.py +1 -2
  4329. office365/sharepoint/sharing/utility.py +3 -0
  4330. office365/sharepoint/sharing/workitemauthcryptoprovider.py +0 -3
  4331. office365/sharepoint/sitedesigns/actionopenurl.py +0 -2
  4332. office365/sharepoint/sitedesigns/actionset.py +1 -2
  4333. office365/sharepoint/sitedesigns/adaptivecardaction.py +0 -2
  4334. office365/sharepoint/sitedesigns/autoinvokeaction.py +1 -2
  4335. office365/sharepoint/sitedesigns/autoinvokeoptions.py +0 -2
  4336. office365/sharepoint/sitedesigns/choice.py +0 -2
  4337. office365/sharepoint/sitedesigns/creation_info.py +1 -2
  4338. office365/sharepoint/sitedesigns/design_package_menu_contents.py +19 -0
  4339. office365/sharepoint/sitedesigns/header.py +0 -2
  4340. office365/sharepoint/sitedesigns/heroimage.py +0 -2
  4341. office365/sharepoint/sitedesigns/image.py +0 -2
  4342. office365/sharepoint/sitedesigns/messagecard.py +1 -2
  4343. office365/sharepoint/sitedesigns/messagecardactionbutton.py +1 -2
  4344. office365/sharepoint/sitedesigns/messagecardinput.py +1 -2
  4345. office365/sharepoint/sitedesigns/potentialaction.py +1 -2
  4346. office365/sharepoint/sitedesigns/principal.py +23 -0
  4347. office365/sharepoint/sitedesigns/run.py +53 -0
  4348. office365/sharepoint/sitedesigns/section.py +1 -2
  4349. office365/sharepoint/sitedesigns/sectiondesignideasapi.py +3 -0
  4350. office365/sharepoint/sitedesigns/sectionmodel.py +1 -2
  4351. office365/sharepoint/sitedesigns/spsitescriptstatusandschema.py +1 -2
  4352. office365/sharepoint/sitedesigns/task.py +0 -2
  4353. office365/sharepoint/sitedesigns/userfirstrun.py +58 -0
  4354. office365/sharepoint/sitedesigns/webpartmodel.py +0 -2
  4355. office365/sharepoint/sitedesigns/zonemodel.py +1 -2
  4356. office365/sharepoint/sites/asyncreadjobinfo.py +0 -2
  4357. office365/sharepoint/sites/asyncreadoptions.py +0 -2
  4358. office365/sharepoint/sites/autolabellingworkinformation.py +0 -2
  4359. office365/sharepoint/sites/azure_container_Info.py +0 -3
  4360. office365/sharepoint/sites/copy_job_progress.py +2 -3
  4361. office365/sharepoint/sites/copy_migration_iInfo.py +11 -3
  4362. office365/sharepoint/sites/enqueuejobinformation.py +0 -3
  4363. office365/sharepoint/sites/followedsitesparams.py +0 -2
  4364. office365/sharepoint/sites/health/result.py +0 -2
  4365. office365/sharepoint/sites/health/summary.py +6 -1
  4366. office365/sharepoint/sites/home/details.py +1 -2
  4367. office365/sharepoint/sites/home/navconfiguration.py +0 -3
  4368. office365/sharepoint/sites/home/reference.py +1 -2
  4369. office365/sharepoint/sites/home/sharepointhomeservicemanager.py +2 -0
  4370. office365/sharepoint/sites/home/site.py +299 -0
  4371. office365/sharepoint/sites/home/siteconfigurationparam.py +1 -2
  4372. office365/sharepoint/sites/home/spreference.py +0 -3
  4373. office365/sharepoint/sites/html_field_security_setting.py +1 -2
  4374. office365/sharepoint/sites/language.py +0 -2
  4375. office365/sharepoint/sites/language_collection.py +22 -0
  4376. office365/sharepoint/sites/manager/missinglink.py +1 -2
  4377. office365/sharepoint/sites/manager/missinglinkreferrer.py +0 -2
  4378. office365/sharepoint/sites/manager/missinglinksresult.py +1 -2
  4379. office365/sharepoint/sites/manager/retirablepagemetadata.py +0 -2
  4380. office365/sharepoint/sites/manager/retirablepagesqueryresult.py +1 -2
  4381. office365/sharepoint/sites/manager/service.py +19 -0
  4382. office365/sharepoint/sites/manager/sitemanagersignals.py +1 -2
  4383. office365/sharepoint/sites/manager/smaretirepageminimumagefeedbacksignal.py +0 -2
  4384. office365/sharepoint/sites/manager/smaretirepagesignal.py +1 -2
  4385. office365/sharepoint/sites/manager/suggestionitem.py +0 -2
  4386. office365/sharepoint/sites/manager/topsitefile.py +0 -2
  4387. office365/sharepoint/sites/manager/topsitefilesresult.py +1 -2
  4388. office365/sharepoint/sites/migration/copyoptions.py +1 -2
  4389. office365/sharepoint/sites/migration/job_status.py +18 -0
  4390. office365/sharepoint/sites/migration/jobprogress.py +1 -2
  4391. office365/sharepoint/sites/migration/moveandsharefileinfo.py +1 -2
  4392. office365/sharepoint/sites/ngsprequestparams.py +1 -2
  4393. office365/sharepoint/sites/ownedbymeparams.py +0 -2
  4394. office365/sharepoint/sites/provisionedmigrationcontainersinfo.py +0 -3
  4395. office365/sharepoint/sites/provisionedmigrationqueueinfo.py +0 -3
  4396. office365/sharepoint/sites/recentfilesparams.py +0 -2
  4397. office365/sharepoint/sites/restrictaccesscontrolupdate.py +1 -2
  4398. office365/sharepoint/sites/restrictcontentorgwidepolicyupdate.py +0 -3
  4399. office365/sharepoint/sites/site.py +218 -11
  4400. office365/sharepoint/sites/siteprovisioninginfoprovider.py +3 -0
  4401. office365/sharepoint/sites/team_site_data.py +54 -0
  4402. office365/sharepoint/sites/template.py +0 -2
  4403. office365/sharepoint/sites/themes.py +1 -2
  4404. office365/sharepoint/sites/upgrade_info.py +0 -2
  4405. office365/sharepoint/sites/usage_info.py +0 -2
  4406. office365/sharepoint/sites/version_policy_manager.py +42 -1
  4407. office365/sharepoint/sitescripts/action_result.py +0 -2
  4408. office365/sharepoint/sitescripts/action_status.py +0 -2
  4409. office365/sharepoint/sitescripts/creation_info.py +0 -2
  4410. office365/sharepoint/sitescripts/metadata.py +0 -2
  4411. office365/sharepoint/sitescripts/scriptsafedomainentitydata.py +0 -2
  4412. office365/sharepoint/sitescripts/serialization_info.py +0 -2
  4413. office365/sharepoint/sitescripts/serialization_result.py +0 -3
  4414. office365/sharepoint/sitescripts/utility.py +19 -0
  4415. office365/sharepoint/smartcache/item.py +127 -0
  4416. office365/sharepoint/social/actor.py +0 -2
  4417. office365/sharepoint/social/actor_info.py +0 -2
  4418. office365/sharepoint/social/announcement_manager.py +2 -0
  4419. office365/sharepoint/social/attachment.py +1 -2
  4420. office365/sharepoint/social/attachment_action.py +0 -2
  4421. office365/sharepoint/social/data_overlay.py +1 -2
  4422. office365/sharepoint/social/dataitem.py +0 -2
  4423. office365/sharepoint/social/exceptiondetails.py +0 -2
  4424. office365/sharepoint/social/feed/feed.py +1 -2
  4425. office365/sharepoint/social/feed/manager.py +229 -1
  4426. office365/sharepoint/social/feed/rest.py +3 -1
  4427. office365/sharepoint/social/feedoptions.py +0 -2
  4428. office365/sharepoint/social/following/manager.py +94 -1
  4429. office365/sharepoint/social/following/rest_manager.py +201 -0
  4430. office365/sharepoint/social/link.py +0 -2
  4431. office365/sharepoint/social/microfeed/thread.py +1 -2
  4432. office365/sharepoint/social/microfeed/thread_collection.py +1 -2
  4433. office365/sharepoint/social/microfeed/user_posts.py +0 -2
  4434. office365/sharepoint/social/posts/actor_info.py +1 -2
  4435. office365/sharepoint/social/posts/creation_data.py +1 -2
  4436. office365/sharepoint/social/posts/definition_data.py +1 -2
  4437. office365/sharepoint/social/posts/definition_data_item.py +0 -2
  4438. office365/sharepoint/social/posts/post.py +1 -2
  4439. office365/sharepoint/social/posts/reference.py +1 -2
  4440. office365/sharepoint/social/rest_actor.py +31 -0
  4441. office365/sharepoint/social/rest_thread.py +46 -1
  4442. office365/sharepoint/social/restpostcreationdata.py +1 -2
  4443. office365/sharepoint/social/switch.py +2 -0
  4444. office365/sharepoint/social/thread.py +1 -2
  4445. office365/sharepoint/sp_playlist_subscriber.py +14 -0
  4446. office365/sharepoint/storagemetrics/storage_metrics.py +8 -0
  4447. office365/sharepoint/taxonomy/contenttypeinfo.py +0 -3
  4448. office365/sharepoint/taxonomy/contenttypesyndicationresult.py +1 -2
  4449. office365/sharepoint/taxonomy/create_xml_parameters.py +5 -8
  4450. office365/sharepoint/taxonomy/field.py +66 -19
  4451. office365/sharepoint/taxonomy/field_value.py +3 -4
  4452. office365/sharepoint/taxonomy/field_value_col.py +21 -2
  4453. office365/sharepoint/taxonomy/groups/collection.py +19 -2
  4454. office365/sharepoint/taxonomy/groups/group.py +1 -1
  4455. office365/sharepoint/taxonomy/metadata.py +0 -3
  4456. office365/sharepoint/taxonomy/service.py +3 -3
  4457. office365/sharepoint/taxonomy/sets/info.py +0 -3
  4458. office365/sharepoint/taxonomy/sets/name.py +0 -3
  4459. office365/sharepoint/taxonomy/stores/store.py +13 -1
  4460. office365/sharepoint/taxonomy/terms/label.py +0 -3
  4461. office365/sharepoint/teams/channel.py +3 -0
  4462. office365/sharepoint/teams/channel_manager.py +290 -0
  4463. office365/sharepoint/teams/publishingstatus.py +1 -2
  4464. office365/sharepoint/teams/site_owner_response.py +0 -2
  4465. office365/sharepoint/teams/statusresponse.py +1 -2
  4466. office365/sharepoint/tenant/administration/app_service_principal_public.py +51 -0
  4467. office365/sharepoint/tenant/administration/audit/data.py +5 -3
  4468. office365/sharepoint/tenant/administration/audit/datacollectionresponse.py +0 -2
  4469. office365/sharepoint/tenant/administration/audit/search_request_status.py +0 -2
  4470. office365/sharepoint/tenant/administration/audit/unified_record.py +1 -2
  4471. office365/sharepoint/tenant/administration/collaboration/collaborativeonedriveuser.py +0 -3
  4472. office365/sharepoint/tenant/administration/collaboration/collaborativeuser.py +0 -3
  4473. office365/sharepoint/tenant/administration/collaboration/insights_data.py +1 -2
  4474. office365/sharepoint/tenant/administration/collaboration/insights_overview.py +0 -2
  4475. office365/sharepoint/tenant/administration/columnsinfo.py +0 -3
  4476. office365/sharepoint/tenant/administration/commentsonsitepagesdisabled.py +0 -3
  4477. office365/sharepoint/tenant/administration/consumer_quota_info_api.py +7 -0
  4478. office365/sharepoint/tenant/administration/container/applicationproperties.py +0 -2
  4479. office365/sharepoint/tenant/administration/container/collection.py +1 -2
  4480. office365/sharepoint/tenant/administration/container/filterorder.py +2 -3
  4481. office365/sharepoint/tenant/administration/container/properties.py +2 -3
  4482. office365/sharepoint/tenant/administration/container/searchparameters.py +0 -3
  4483. office365/sharepoint/tenant/administration/container/sortorder.py +0 -3
  4484. office365/sharepoint/tenant/administration/container/type/billingproperties.py +0 -2
  4485. office365/sharepoint/tenant/administration/container/type/configurationproperties.py +2 -3
  4486. office365/sharepoint/tenant/administration/container/type/properties.py +1 -2
  4487. office365/sharepoint/tenant/administration/container/type/status.py +0 -2
  4488. office365/sharepoint/tenant/administration/contentmanagementassessmentoperationresult.py +0 -3
  4489. office365/sharepoint/tenant/administration/contentmanagementassessmentpolicyreportdetails.py +0 -3
  4490. office365/sharepoint/tenant/administration/contentmanagementassessmentresults.py +1 -2
  4491. office365/sharepoint/tenant/administration/copilot/adaptive_card_config.py +1 -2
  4492. office365/sharepoint/tenant/administration/copilot/agentinsights/client.py +3 -0
  4493. office365/sharepoint/tenant/administration/copilot/agentinsights/report_metadata.py +0 -2
  4494. office365/sharepoint/tenant/administration/copilot/agentinsightscopilotagentsonsitesdetails.py +0 -3
  4495. office365/sharepoint/tenant/administration/copilot/agentinsightssitedistribution.py +0 -3
  4496. office365/sharepoint/tenant/administration/copilot/agentinsightstopsitesdetails.py +0 -3
  4497. office365/sharepoint/tenant/administration/copilot/base_raw_data_sources.py +1 -2
  4498. office365/sharepoint/tenant/administration/copilot/promousage.py +1 -2
  4499. office365/sharepoint/tenant/administration/copilot/reportmetadata.py +1 -2
  4500. office365/sharepoint/tenant/administration/copilot/reportrow.py +2 -3
  4501. office365/sharepoint/tenant/administration/copilot/transpilerpayload.py +1 -2
  4502. office365/sharepoint/tenant/administration/copilot/transpilerresponse.py +1 -2
  4503. office365/sharepoint/tenant/administration/copilot/transpilerstatement.py +1 -2
  4504. office365/sharepoint/tenant/administration/customformurl.py +0 -3
  4505. office365/sharepoint/tenant/administration/datagovernance/insight_client.py +18 -0
  4506. office365/sharepoint/tenant/administration/datagovernance/insight_metadata.py +0 -2
  4507. office365/sharepoint/tenant/administration/dataset_metadata_info.py +1 -0
  4508. office365/sharepoint/tenant/administration/dataset_metadata_request_info.py +2 -0
  4509. office365/sharepoint/tenant/administration/dataset_metadata_response.py +10 -1
  4510. office365/sharepoint/tenant/administration/ddiadapter.py +8 -0
  4511. office365/sharepoint/tenant/administration/deletedsiteproperties.py +9 -0
  4512. office365/sharepoint/tenant/administration/endpoints.py +12 -0
  4513. office365/sharepoint/tenant/administration/errorfacet.py +0 -3
  4514. office365/sharepoint/tenant/administration/esignaturethirdpartyprovidersinfo.py +0 -3
  4515. office365/sharepoint/tenant/administration/eventdata.py +0 -3
  4516. office365/sharepoint/tenant/administration/filesensitivitylabelinfo.py +5 -0
  4517. office365/sharepoint/tenant/administration/groups/group.py +141 -0
  4518. office365/sharepoint/tenant/administration/groups/info.py +0 -3
  4519. office365/sharepoint/tenant/administration/groupsitesactivitydetail.py +0 -2
  4520. office365/sharepoint/tenant/administration/hubsites/collection.py +4 -0
  4521. office365/sharepoint/tenant/administration/hubsites/creation_information.py +0 -3
  4522. office365/sharepoint/tenant/administration/hubsites/hub_site.py +82 -0
  4523. office365/sharepoint/tenant/administration/hubsites/permission.py +0 -3
  4524. office365/sharepoint/tenant/administration/hubsites/properties.py +67 -1
  4525. office365/sharepoint/tenant/administration/ibsegmentinfo.py +0 -3
  4526. office365/sharepoint/tenant/administration/inactivesitepolicyresourcestorage.py +1 -2
  4527. office365/sharepoint/tenant/administration/includeataglanceinshareemails.py +0 -3
  4528. office365/sharepoint/tenant/administration/insights/queueitem.py +0 -2
  4529. office365/sharepoint/tenant/administration/insights/reportmetadata.py +0 -2
  4530. office365/sharepoint/tenant/administration/insights/summary_response.py +0 -3
  4531. office365/sharepoint/tenant/administration/internal/aad/collection.py +3 -0
  4532. office365/sharepoint/tenant/administration/internal/aad/permission_grant.py +47 -0
  4533. office365/sharepoint/tenant/administration/internal/appservice/permission_grant.py +9 -0
  4534. office365/sharepoint/tenant/administration/internal/appservice/permission_request.py +26 -0
  4535. office365/sharepoint/tenant/administration/internal/appservice/principal.py +104 -2
  4536. office365/sharepoint/tenant/administration/jobs/spo_operation.py +6 -1
  4537. office365/sharepoint/tenant/administration/licensed_onedrives_summary_metrics.py +13 -0
  4538. office365/sharepoint/tenant/administration/listitemcolumnvalue.py +0 -3
  4539. office365/sharepoint/tenant/administration/mailfromaddress.py +0 -3
  4540. office365/sharepoint/tenant/administration/malware/file.py +44 -0
  4541. office365/sharepoint/tenant/administration/mobilenotificationisenabledforsharepoint.py +0 -3
  4542. office365/sharepoint/tenant/administration/modified_property.py +0 -3
  4543. office365/sharepoint/tenant/administration/monthlyusage.py +0 -3
  4544. office365/sharepoint/tenant/administration/newsitemanagedpath.py +0 -3
  4545. office365/sharepoint/tenant/administration/newsubsiteinmodernoffforall.py +0 -3
  4546. office365/sharepoint/tenant/administration/newsubsiteinmodernoffformoderntemplates.py +0 -3
  4547. office365/sharepoint/tenant/administration/newteamsitemanagedpath.py +0 -3
  4548. office365/sharepoint/tenant/administration/odb_license_enforcement_service.py +3 -0
  4549. office365/sharepoint/tenant/administration/onedrives_count_and_size.py +12 -0
  4550. office365/sharepoint/tenant/administration/onedrives_summary_metrics.py +22 -0
  4551. office365/sharepoint/tenant/administration/onedrives_summary_metrics_by_unlicensed_reason.py +24 -0
  4552. office365/sharepoint/tenant/administration/owner_not_in_entra_onedrives_summary_metrics.py +21 -0
  4553. office365/sharepoint/tenant/administration/ownershippolicyresourcestorage.py +1 -2
  4554. office365/sharepoint/tenant/administration/pageresponse.py +1 -2
  4555. office365/sharepoint/tenant/administration/parentsiteurl.py +0 -3
  4556. office365/sharepoint/tenant/administration/policies/app_billing_properties.py +0 -2
  4557. office365/sharepoint/tenant/administration/policies/cdnpolicy.py +3 -0
  4558. office365/sharepoint/tenant/administration/policies/content_security_configuration.py +64 -0
  4559. office365/sharepoint/tenant/administration/policies/create_request.py +0 -2
  4560. office365/sharepoint/tenant/administration/policies/definition.py +0 -2
  4561. office365/sharepoint/tenant/administration/policies/file_version_types.py +0 -2
  4562. office365/sharepoint/tenant/administration/policies/fileversionsettings.py +1 -2
  4563. office365/sharepoint/tenant/administration/policies/list_parameters.py +0 -2
  4564. office365/sharepoint/tenant/administration/policies/report.py +0 -2
  4565. office365/sharepoint/tenant/administration/policies/resource_storage.py +1 -2
  4566. office365/sharepoint/tenant/administration/policyoption.py +0 -3
  4567. office365/sharepoint/tenant/administration/powerapps/environment.py +0 -3
  4568. office365/sharepoint/tenant/administration/powerapps/environment_context.py +1 -2
  4569. office365/sharepoint/tenant/administration/ransomware/activitiesoverview.py +0 -2
  4570. office365/sharepoint/tenant/administration/ransomware/activity.py +0 -2
  4571. office365/sharepoint/tenant/administration/ransomware/event.py +0 -2
  4572. office365/sharepoint/tenant/administration/ransomware/eventsoverview.py +0 -3
  4573. office365/sharepoint/tenant/administration/ransomware/properties.py +0 -2
  4574. office365/sharepoint/tenant/administration/recent_action.py +0 -2
  4575. office365/sharepoint/tenant/administration/recentactionpayload.py +0 -2
  4576. office365/sharepoint/tenant/administration/reports/recent_admin_action.py +0 -2
  4577. office365/sharepoint/tenant/administration/reports/recent_admin_action_payload.py +0 -2
  4578. office365/sharepoint/tenant/administration/reports/sitepermissionsdetails.py +0 -3
  4579. office365/sharepoint/tenant/administration/requiresecondarycontact.py +0 -3
  4580. office365/sharepoint/tenant/administration/secondary_administrators_fields_data.py +0 -3
  4581. office365/sharepoint/tenant/administration/secondary_administrators_info.py +0 -3
  4582. office365/sharepoint/tenant/administration/serviceprioritizationappregistration.py +0 -3
  4583. office365/sharepoint/tenant/administration/settings/dataproperty.py +0 -3
  4584. office365/sharepoint/tenant/administration/settings/default_time_zone_id.py +0 -3
  4585. office365/sharepoint/tenant/administration/settings/service.py +192 -7
  4586. office365/sharepoint/tenant/administration/sharepointembeddedclientlogproperties.py +0 -3
  4587. office365/sharepoint/tenant/administration/shownextgenerationsyncclientonteamsite.py +0 -3
  4588. office365/sharepoint/tenant/administration/showselfservicesitecreation.py +0 -3
  4589. office365/sharepoint/tenant/administration/site_user_group_info.py +1 -2
  4590. office365/sharepoint/tenant/administration/siteadministratorsfieldsdata.py +2 -3
  4591. office365/sharepoint/tenant/administration/sitecohortssummary.py +0 -3
  4592. office365/sharepoint/tenant/administration/sitecreationnewux.py +0 -3
  4593. office365/sharepoint/tenant/administration/siteinfo_for_site_picker.py +0 -3
  4594. office365/sharepoint/tenant/administration/siteownerdata.py +0 -3
  4595. office365/sharepoint/tenant/administration/sitepage.py +0 -2
  4596. office365/sharepoint/tenant/administration/sitepagesenabled.py +0 -3
  4597. office365/sharepoint/tenant/administration/sites/administrators_info.py +0 -3
  4598. office365/sharepoint/tenant/administration/sites/collection_management_service.py +4 -0
  4599. office365/sharepoint/tenant/administration/sites/creation_data.py +0 -3
  4600. office365/sharepoint/tenant/administration/sites/creation_default_storage_quota.py +0 -3
  4601. office365/sharepoint/tenant/administration/sites/creation_properties.py +0 -3
  4602. office365/sharepoint/tenant/administration/sites/creation_source.py +1 -2
  4603. office365/sharepoint/tenant/administration/sites/properties.py +170 -7
  4604. office365/sharepoint/tenant/administration/sites/properties_collection.py +7 -0
  4605. office365/sharepoint/tenant/administration/sites/properties_enumerable_filter.py +0 -3
  4606. office365/sharepoint/tenant/administration/sites/state_properties.py +0 -3
  4607. office365/sharepoint/tenant/administration/siteusergroupsdata.py +1 -2
  4608. office365/sharepoint/tenant/administration/smtp_server.py +0 -3
  4609. office365/sharepoint/tenant/administration/spcontenteventscustomemailproperty.py +2 -3
  4610. office365/sharepoint/tenant/administration/spdatagovernanceinsightexportedreport.py +0 -3
  4611. office365/sharepoint/tenant/administration/spdatagovernanceinsightresponse.py +10 -8
  4612. office365/sharepoint/tenant/administration/spdatagovernancesarrestapiclient.py +4 -0
  4613. office365/sharepoint/tenant/administration/spdatagovernancesarstartsitereviewresponse.py +1 -2
  4614. office365/sharepoint/tenant/administration/spdatagovernancesitereviewsresponse.py +0 -2
  4615. office365/sharepoint/tenant/administration/spdeletedcontainerproperties.py +0 -2
  4616. office365/sharepoint/tenant/administration/spdeletedcontainertypeproperties.py +0 -2
  4617. office365/sharepoint/tenant/administration/splistmodernuxoff.py +0 -3
  4618. office365/sharepoint/tenant/administration/spocontainerqueryparams.py +1 -2
  4619. office365/sharepoint/tenant/administration/spocontentsecuritypolicyentry.py +0 -2
  4620. office365/sharepoint/tenant/administration/spofileversionexpirationreportjobprogress.py +0 -3
  4621. office365/sharepoint/tenant/administration/spofileversionfiletypepolicysettings.py +2 -3
  4622. office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +4 -3
  4623. office365/sharepoint/tenant/administration/spom365agentinsightsreportmetadata.py +0 -2
  4624. office365/sharepoint/tenant/administration/spom365agentinsightssitedistributiondetails.py +0 -3
  4625. office365/sharepoint/tenant/administration/sporestrictedcontentdiscoverabilitysitedetails.py +0 -2
  4626. office365/sharepoint/tenant/administration/sposerviceprioritizationappregistrations.py +1 -2
  4627. office365/sharepoint/tenant/administration/sposerviceprioritizationbillingpayload.py +0 -3
  4628. office365/sharepoint/tenant/administration/sposerviceprioritizationpolicyfromtenantstore.py +0 -2
  4629. office365/sharepoint/tenant/administration/spositecreationsource.py +0 -3
  4630. office365/sharepoint/tenant/administration/spositepropertiesenumerablefilter.py +0 -2
  4631. office365/sharepoint/tenant/administration/spsitepagecopyjobprogress.py +0 -2
  4632. office365/sharepoint/tenant/administration/storage_usage_metrics_snapshot.py +8 -0
  4633. office365/sharepoint/tenant/administration/syntex/applicationproperties.py +20 -5
  4634. office365/sharepoint/tenant/administration/syntex/billing_context.py +0 -2
  4635. office365/sharepoint/tenant/administration/syntex/checkmanagementallowedresponse.py +0 -3
  4636. office365/sharepoint/tenant/administration/syntex/featurescopesettingsvalues.py +0 -3
  4637. office365/sharepoint/tenant/administration/syntex/getmodifiedlistresponse.py +2 -3
  4638. office365/sharepoint/tenant/administration/syntex/power_apps.py +1 -2
  4639. office365/sharepoint/tenant/administration/syntex/premiumfeaturesettings.py +1 -2
  4640. office365/sharepoint/tenant/administration/teamssitesactivitydetail.py +0 -2
  4641. office365/sharepoint/tenant/administration/tenant.py +6753 -36
  4642. office365/sharepoint/tenant/administration/tenant_data_loss_prevention_quarantine_settings.py +3 -0
  4643. office365/sharepoint/tenant/administration/theme_properties.py +29 -0
  4644. office365/sharepoint/tenant/administration/transpilerresponse.py +1 -2
  4645. office365/sharepoint/tenant/administration/types.py +0 -6
  4646. office365/sharepoint/tenant/administration/unlicensed_onedrives_summary_metrics.py +19 -0
  4647. office365/sharepoint/tenant/administration/updategroupsitepropertiesparameters.py +0 -3
  4648. office365/sharepoint/tenant/administration/webs/templates/collection.py +3 -1
  4649. office365/sharepoint/tenant/administration/webs/templates/template.py +0 -3
  4650. office365/sharepoint/tenant/apps/information.py +1 -2
  4651. office365/sharepoint/tenant/apps/instance.py +24 -0
  4652. office365/sharepoint/tenant/apps/user_experience_state.py +30 -0
  4653. office365/sharepoint/tenant/cdn_api.py +4 -0
  4654. office365/sharepoint/tenant/cdn_url.py +0 -2
  4655. office365/sharepoint/tenant/insights/reports/manager.py +4 -0
  4656. office365/sharepoint/tenant/insights/reports/metadata.py +14 -0
  4657. office365/sharepoint/tenant/insights/reports/onedrive.py +2 -0
  4658. office365/sharepoint/tenant/insights/reports/report.py +28 -0
  4659. office365/sharepoint/tenant/insights/reports/sharepoint.py +2 -0
  4660. office365/sharepoint/tenant/management/externalusers/external_user.py +10 -0
  4661. office365/sharepoint/tenant/management/externalusers/results/get.py +4 -0
  4662. office365/sharepoint/tenant/management/externalusers/results/remove.py +16 -0
  4663. office365/sharepoint/tenant/management/externalusers/results/session_revocation.py +11 -0
  4664. office365/sharepoint/tenant/management/importprofilepropertiesjobinfo.py +7 -0
  4665. office365/sharepoint/tenant/management/office365_tenant.py +354 -8
  4666. office365/sharepoint/tenant/settings.py +7 -0
  4667. office365/sharepoint/tenantadministration/catalog_management_collection.py +9 -0
  4668. office365/sharepoint/tenantadministration/catalog_management_custom_properties_collection.py +18 -0
  4669. office365/sharepoint/tenantadministration/catalog_management_restricted_content_discovery_collection.py +6 -0
  4670. office365/sharepoint/tenantadministration/container_auto_quota_enabled.py +12 -0
  4671. office365/sharepoint/tenantadministration/sp_data_governance_insight_rest_api_client.py +493 -0
  4672. office365/sharepoint/tenantadministration/sp_data_governance_sar_rest_api_client.py +92 -0
  4673. office365/sharepoint/tenantadministration/spo_copilot_agent_insights_rest_api_client.py +178 -0
  4674. office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +2 -0
  4675. office365/sharepoint/tenantadministration/spo_file_archive_policy_report_info.py +1 -0
  4676. office365/sharepoint/tenantadministration/spo_restricted_app_access_control_site_policy.py +19 -0
  4677. office365/sharepoint/tenantadministration/spo_restricted_app_access_control_tenant_policy.py +16 -0
  4678. office365/sharepoint/tenantadministration/spo_restricted_content_discoverability_client.py +96 -0
  4679. office365/sharepoint/tenantadministration/spom365_agent_insights_rest_api_client.py +174 -0
  4680. office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +8 -0
  4681. office365/sharepoint/tenantmanagement/group_creation_params.py +37 -0
  4682. office365/sharepoint/thresholds.py +8 -4
  4683. office365/sharepoint/token.py +7 -0
  4684. office365/sharepoint/translation/item_info.py +0 -3
  4685. office365/sharepoint/translation/jobs/info.py +0 -2
  4686. office365/sharepoint/translation/jobs/job.py +9 -0
  4687. office365/sharepoint/translation/jobs/status.py +11 -0
  4688. office365/sharepoint/translation/notifications/recipient.py +0 -2
  4689. office365/sharepoint/translation/notifications/recipient_col.py +1 -2
  4690. office365/sharepoint/translation/notifications/recipient_set_request.py +1 -2
  4691. office365/sharepoint/translation/notifications/recipient_users.py +8 -1
  4692. office365/sharepoint/translation/requested_translation.py +1 -2
  4693. office365/sharepoint/translation/resource_entry.py +0 -3
  4694. office365/sharepoint/translation/status.py +1 -2
  4695. office365/sharepoint/translation/status_collection.py +8 -2
  4696. office365/sharepoint/translation/status_creation_request.py +1 -2
  4697. office365/sharepoint/translation/status_set_request.py +1 -2
  4698. office365/sharepoint/translation/sync_translator.py +5 -0
  4699. office365/sharepoint/translation/user_resource.py +4 -0
  4700. office365/sharepoint/translation/variations_timer_job.py +2 -0
  4701. office365/sharepoint/types/resource_path.py +0 -2
  4702. office365/sharepoint/ui/applicationpages/peoplepicker/entity_information.py +3 -0
  4703. office365/sharepoint/ui/applicationpages/peoplepicker/entity_information_request.py +0 -2
  4704. office365/sharepoint/ui/applicationpages/peoplepicker/query_parameters.py +1 -2
  4705. office365/sharepoint/ui/applicationpages/peoplepicker/query_settings.py +0 -2
  4706. office365/sharepoint/ui/applicationpages/peoplepicker/web_service_interface.py +6 -0
  4707. office365/sharepoint/user_ai_tokens.py +59 -0
  4708. office365/sharepoint/user_photos.py +36 -0
  4709. office365/sharepoint/usercustomactions/action.py +130 -1
  4710. office365/sharepoint/usercustomactions/collection.py +3 -0
  4711. office365/sharepoint/userprofiles/cross_geo_sync.py +3 -0
  4712. office365/sharepoint/userprofiles/cross_geo_sync_user_data_batch.py +1 -2
  4713. office365/sharepoint/userprofiles/follow_result.py +1 -2
  4714. office365/sharepoint/userprofiles/followed_content.py +181 -0
  4715. office365/sharepoint/userprofiles/followed_item.py +0 -2
  4716. office365/sharepoint/userprofiles/followeditemdata.py +2 -0
  4717. office365/sharepoint/userprofiles/hash_tag.py +0 -2
  4718. office365/sharepoint/userprofiles/hash_tag_col.py +3 -1
  4719. office365/sharepoint/userprofiles/hashtag.py +1 -2
  4720. office365/sharepoint/userprofiles/my_site_links.py +31 -0
  4721. office365/sharepoint/userprofiles/mysite/dismiss_status_text.py +2 -0
  4722. office365/sharepoint/userprofiles/people_manager.py +110 -0
  4723. office365/sharepoint/userprofiles/peoplecollection.py +43 -1
  4724. office365/sharepoint/userprofiles/person_properties.py +39 -4
  4725. office365/sharepoint/userprofiles/personal_cache.py +262 -1
  4726. office365/sharepoint/userprofiles/personal_cache_item.py +0 -2
  4727. office365/sharepoint/userprofiles/personallistsproxy.py +35 -1
  4728. office365/sharepoint/userprofiles/profile_image_store.py +2 -0
  4729. office365/sharepoint/userprofiles/profile_loader.py +22 -0
  4730. office365/sharepoint/userprofiles/promoted_sites.py +4 -0
  4731. office365/sharepoint/userprofiles/properties_for_user.py +13 -1
  4732. office365/sharepoint/userprofiles/user_profile.py +74 -0
  4733. office365/sharepoint/utilities/autofillcolumninfo.py +0 -2
  4734. office365/sharepoint/utilities/email_properties.py +0 -2
  4735. office365/sharepoint/utilities/file_handler_wopi_properties.py +29 -0
  4736. office365/sharepoint/utilities/jsontheme.py +0 -2
  4737. office365/sharepoint/utilities/llmcolumninfo.py +0 -2
  4738. office365/sharepoint/utilities/move_copy_options.py +0 -3
  4739. office365/sharepoint/utilities/move_copy_util.py +57 -4
  4740. office365/sharepoint/utilities/newsitem.py +0 -2
  4741. office365/sharepoint/utilities/newsitemmetadata.py +0 -2
  4742. office365/sharepoint/utilities/principal_info.py +1 -2
  4743. office365/sharepoint/utilities/shortcuttargetinfo.py +5 -0
  4744. office365/sharepoint/utilities/spotlightresult.py +3 -0
  4745. office365/sharepoint/utilities/themingoptions.py +1 -2
  4746. office365/sharepoint/utilities/upload_status.py +13 -0
  4747. office365/sharepoint/utilities/utility.py +25 -7
  4748. office365/sharepoint/utilities/webappexturlpair.py +0 -2
  4749. office365/sharepoint/utilities/webappurlsbyaction.py +1 -2
  4750. office365/sharepoint/utilities/wopi_host.py +3 -0
  4751. office365/sharepoint/utilities/wopi_properties.py +7 -0
  4752. office365/sharepoint/utilities/wopi_web_app_properties.py +1 -2
  4753. office365/sharepoint/views/collection.py +137 -14
  4754. office365/sharepoint/views/create_information.py +0 -2
  4755. office365/sharepoint/views/field_collection.py +11 -0
  4756. office365/sharepoint/views/view.py +153 -3
  4757. office365/sharepoint/views/visualization/field.py +0 -2
  4758. office365/sharepoint/views/visualization/style_set.py +1 -2
  4759. office365/sharepoint/views/visualization/visualization.py +1 -2
  4760. office365/sharepoint/viva/announcementaction.py +0 -2
  4761. office365/sharepoint/viva/announcementstate.py +1 -2
  4762. office365/sharepoint/viva/app_configuration.py +24 -1
  4763. office365/sharepoint/viva/appsitecontext.py +0 -3
  4764. office365/sharepoint/viva/configurationdata.py +1 -2
  4765. office365/sharepoint/viva/connections/configurationanddata.py +1 -2
  4766. office365/sharepoint/viva/connections/license.py +0 -3
  4767. office365/sharepoint/viva/connections/page.py +3 -0
  4768. office365/sharepoint/viva/connections/url_configuration.py +0 -2
  4769. office365/sharepoint/viva/dashboard/carddetails.py +0 -2
  4770. office365/sharepoint/viva/dashboard/configuration.py +1 -2
  4771. office365/sharepoint/viva/dashboard/content.py +1 -2
  4772. office365/sharepoint/viva/dashboard/item.py +1 -2
  4773. office365/sharepoint/viva/dashboard/iteminfo.py +0 -2
  4774. office365/sharepoint/viva/dashboard/personalizationdata.py +1 -2
  4775. office365/sharepoint/viva/destinationv2.py +0 -2
  4776. office365/sharepoint/viva/employee_engagement.py +167 -3
  4777. office365/sharepoint/viva/employee_experience_controller.py +102 -1
  4778. office365/sharepoint/viva/engagepublishingstatus.py +1 -2
  4779. office365/sharepoint/viva/home.py +3 -0
  4780. office365/sharepoint/viva/home_title_region.py +0 -2
  4781. office365/sharepoint/viva/knowledgehub.py +40 -1
  4782. office365/sharepoint/viva/knowledgehubsitereference.py +0 -2
  4783. office365/sharepoint/viva/learningmanager.py +2 -0
  4784. office365/sharepoint/viva/newssite.py +1 -2
  4785. office365/sharepoint/viva/pivotitem.py +1 -2
  4786. office365/sharepoint/viva/resource_get_endpoint.py +11 -0
  4787. office365/sharepoint/viva/resource_link.py +1 -2
  4788. office365/sharepoint/viva/resourcevisualization.py +0 -3
  4789. office365/sharepoint/viva/site_manager.py +3 -0
  4790. office365/sharepoint/viva/site_request_info.py +0 -2
  4791. office365/sharepoint/viva/spotlightconfiguration.py +1 -2
  4792. office365/sharepoint/viva/spotlightnews.py +0 -2
  4793. office365/sharepoint/viva/syntexcontext.py +4 -0
  4794. office365/sharepoint/viva/syntexcustommodeldeploymentmodelinfo.py +0 -3
  4795. office365/sharepoint/viva/syntexcustommodeldeploymentproperties.py +1 -2
  4796. office365/sharepoint/viva/syntexcustommodelsetting.py +1 -2
  4797. office365/sharepoint/viva/targetedsitedetails.py +1 -2
  4798. office365/sharepoint/viva/vcconfiguration.py +1 -2
  4799. office365/sharepoint/viva/visualizationappinfo.py +0 -2
  4800. office365/sharepoint/viva/visualizationappsynchronizationresult.py +22 -1
  4801. office365/sharepoint/viva/vivaresources.py +6 -0
  4802. office365/sharepoint/webhooks/subscription.py +12 -1
  4803. office365/sharepoint/webhooks/subscription_collection.py +3 -0
  4804. office365/sharepoint/webhooks/subscription_information.py +5 -5
  4805. office365/sharepoint/webparts/client/webpart.py +20 -0
  4806. office365/sharepoint/webparts/definitions/definition.py +9 -1
  4807. office365/sharepoint/webparts/limited_manager.py +8 -1
  4808. office365/sharepoint/webparts/tile_data.py +0 -2
  4809. office365/sharepoint/webparts/webpart.py +20 -0
  4810. office365/sharepoint/webs/apptile.py +34 -0
  4811. office365/sharepoint/webs/collection.py +3 -2
  4812. office365/sharepoint/webs/context_web_information.py +1 -2
  4813. office365/sharepoint/webs/creation_information.py +0 -2
  4814. office365/sharepoint/webs/dataleakage_prevention_status_info.py +29 -0
  4815. office365/sharepoint/webs/info_creation_information.py +0 -2
  4816. office365/sharepoint/webs/information.py +19 -0
  4817. office365/sharepoint/webs/modernize_homepage_result.py +10 -0
  4818. office365/sharepoint/webs/multilingual_settings.py +25 -1
  4819. office365/sharepoint/webs/outofboxsitetemplatesettings.py +0 -2
  4820. office365/sharepoint/webs/regional_settings.py +58 -3
  4821. office365/sharepoint/webs/remote_web.py +27 -0
  4822. office365/sharepoint/webs/spimageitem.py +0 -2
  4823. office365/sharepoint/webs/subweb_query.py +0 -3
  4824. office365/sharepoint/webs/teamappinfo.py +1 -2
  4825. office365/sharepoint/webs/templates/template.py +18 -0
  4826. office365/sharepoint/webs/theme_info.py +20 -0
  4827. office365/sharepoint/webs/time_zone.py +23 -0
  4828. office365/sharepoint/webs/time_zone_information.py +0 -2
  4829. office365/sharepoint/webs/web.py +1463 -49
  4830. office365/sharepoint/workflow/associations/association.py +25 -0
  4831. office365/sharepoint/workflow/associations/creationinformation.py +0 -2
  4832. office365/sharepoint/workflow/configurationresponse.py +1 -2
  4833. office365/sharepoint/workflow/configureduserinfo.py +0 -3
  4834. office365/sharepoint/workflow/definition.py +14 -0
  4835. office365/sharepoint/workflow/deployment_service.py +13 -0
  4836. office365/sharepoint/workflow/deviationanalysisrule.py +1 -2
  4837. office365/sharepoint/workflow/exceptiondetails.py +0 -3
  4838. office365/sharepoint/workflow/instances/instance.py +49 -0
  4839. office365/sharepoint/workflow/instances/service.py +5 -0
  4840. office365/sharepoint/workflow/interopservice.py +7 -0
  4841. office365/sharepoint/workflow/labelaccesscontroldata.py +1 -2
  4842. office365/sharepoint/workflow/messagingservice.py +2 -0
  4843. office365/sharepoint/workflow/servicesmanager.py +10 -0
  4844. office365/sharepoint/workflow/sp_workflow_task.py +650 -0
  4845. office365/sharepoint/workflow/subscriptions/service.py +8 -0
  4846. office365/sharepoint/workflow/subscriptions/subscription.py +14 -0
  4847. office365/sharepoint/workflow/template.py +18 -0
  4848. office365/sharepoint/yammer/wactoken.py +0 -2
  4849. office365/subscriptions/change_notification.py +18 -2
  4850. office365/subscriptions/change_notification_collection.py +5 -2
  4851. office365/subscriptions/change_notification_encrypted_content.py +0 -3
  4852. office365/subscriptions/changetype.py +4 -0
  4853. office365/subscriptions/collection.py +18 -6
  4854. office365/subscriptions/encrypted_content.py +0 -3
  4855. office365/subscriptions/quotas.py +129 -0
  4856. office365/subscriptions/subscription.py +81 -1
  4857. office365/teams/admin_root.py +39 -0
  4858. office365/teams/administration/assigned_telephone_number.py +2 -3
  4859. office365/teams/administration/effective_policy_assignment.py +2 -3
  4860. office365/teams/administration/number_assignment.py +69 -0
  4861. office365/teams/administration/policy_user_assignment.py +4 -0
  4862. office365/teams/administration/telephone_number_long_running_operation.py +21 -2
  4863. office365/teams/administration/telephone_number_management_root.py +23 -1
  4864. office365/teams/administration/user_configuration.py +23 -2
  4865. office365/teams/app_settings.py +24 -0
  4866. office365/teams/apps/app.py +15 -1
  4867. office365/teams/apps/authorization.py +1 -2
  4868. office365/teams/apps/catalog.py +1 -1
  4869. office365/teams/apps/definition.py +40 -0
  4870. office365/teams/apps/installation.py +15 -2
  4871. office365/teams/apps/installed_event_message_detail.py +1 -2
  4872. office365/teams/apps/permission_set.py +1 -2
  4873. office365/teams/apps/removed_event_message_detail.py +1 -2
  4874. office365/teams/apps/upgraded_event_message_detail.py +1 -2
  4875. office365/teams/apps/user_scope_installation.py +2 -0
  4876. office365/teams/archived_event_message_detail.py +1 -2
  4877. office365/teams/assignment_type.py +13 -0
  4878. office365/teams/channels/added_event_message_detail.py +1 -2
  4879. office365/teams/channels/channel.py +94 -3
  4880. office365/teams/channels/collection.py +72 -2
  4881. office365/teams/channels/deleted_event_message_detail.py +1 -2
  4882. office365/teams/channels/description_updated_event_message_detail.py +1 -2
  4883. office365/teams/channels/iIdentity.py +0 -3
  4884. office365/teams/channels/layout_type.py +13 -0
  4885. office365/teams/channels/members_notification_recipient.py +0 -3
  4886. office365/teams/channels/provision_email_result.py +0 -3
  4887. office365/teams/channels/renamed_event_message_detail.py +1 -2
  4888. office365/teams/channels/set_as_favorite_by_default_event_message_detail.py +1 -2
  4889. office365/teams/channels/shared_team_info.py +9 -0
  4890. office365/teams/channels/summary.py +0 -3
  4891. office365/teams/channels/unset_as_favorite_by_default_event_message_detail.py +1 -2
  4892. office365/teams/chats/chat.py +59 -4
  4893. office365/teams/chats/collection.py +20 -3
  4894. office365/teams/chats/deleted.py +6 -0
  4895. office365/teams/chats/messages/attachment.py +0 -3
  4896. office365/teams/chats/messages/body.py +2 -4
  4897. office365/teams/chats/messages/collection.py +6 -0
  4898. office365/teams/chats/messages/from_identity_set.py +0 -3
  4899. office365/teams/chats/messages/history_item.py +1 -2
  4900. office365/teams/chats/messages/hosted_content.py +8 -0
  4901. office365/teams/chats/messages/info.py +37 -0
  4902. office365/teams/chats/messages/mention.py +1 -2
  4903. office365/teams/chats/messages/mentioned_identity_set.py +1 -2
  4904. office365/teams/chats/messages/message.py +49 -0
  4905. office365/teams/chats/messages/policy_violation.py +1 -2
  4906. office365/teams/chats/messages/policy_violation_policy_tip.py +1 -2
  4907. office365/teams/chats/messages/reaction.py +1 -2
  4908. office365/teams/chats/messages/reaction_identity_set.py +0 -3
  4909. office365/teams/chats/pinned_chat_message_info.py +24 -0
  4910. office365/teams/chats/targeted_chat_message.py +17 -0
  4911. office365/teams/class_settings.py +0 -3
  4912. office365/teams/collection.py +100 -19
  4913. office365/teams/community_privacy.py +13 -0
  4914. office365/teams/created_event_message_detail.py +1 -2
  4915. office365/teams/deleted.py +2 -0
  4916. office365/teams/description_updated_event_message_detail.py +1 -2
  4917. office365/teams/fun_settings.py +0 -3
  4918. office365/teams/guest_settings.py +0 -3
  4919. office365/teams/info.py +15 -0
  4920. office365/teams/joining_disabled_event_message_detail.py +1 -2
  4921. office365/teams/joining_enabled_event_message_detail.py +1 -2
  4922. office365/teams/licensing_details.py +0 -3
  4923. office365/teams/members/aad_user_conversation.py +23 -2
  4924. office365/teams/members/conversation.py +21 -0
  4925. office365/teams/members/conversation_collection.py +25 -7
  4926. office365/teams/members/members_added_event_message_detail.py +1 -2
  4927. office365/teams/members/members_deleted_event_message_detail.py +1 -2
  4928. office365/teams/members/members_joined_event_message_detail.py +1 -2
  4929. office365/teams/members/members_left_event_message_detail.py +1 -2
  4930. office365/teams/members/open_complex_dictionary_type.py +0 -3
  4931. office365/teams/members/settings.py +0 -3
  4932. office365/teams/members_notification_recipient.py +0 -3
  4933. office365/teams/messaging_settings.py +0 -3
  4934. office365/teams/migration_mode.py +13 -0
  4935. office365/teams/operations/async_operation.py +119 -49
  4936. office365/teams/operations/asyncoperationtype.py +10 -15
  4937. office365/teams/policy_assignment.py +25 -0
  4938. office365/teams/policy_identifier_detail.py +3 -0
  4939. office365/teams/quotas.py +110 -0
  4940. office365/teams/renamed_event_message_detail.py +1 -2
  4941. office365/teams/schedule/change_request.py +58 -0
  4942. office365/teams/schedule/change_tracked_entity.py +7 -0
  4943. office365/teams/schedule/day_note.py +32 -0
  4944. office365/teams/schedule/entity.py +1 -2
  4945. office365/teams/schedule/groups/group.py +21 -0
  4946. office365/teams/schedule/open_shift.py +37 -0
  4947. office365/teams/schedule/schedule.py +181 -3
  4948. office365/teams/schedule/shifts/availability.py +1 -2
  4949. office365/teams/schedule/shifts/item.py +1 -2
  4950. office365/teams/schedule/shifts/offer/request.py +5 -2
  4951. office365/teams/schedule/shifts/open/change_request.py +15 -0
  4952. office365/teams/schedule/shifts/preferences.py +2 -0
  4953. office365/teams/schedule/shifts/shift.py +26 -0
  4954. office365/teams/schedule/swap_shifts_change_request.py +18 -0
  4955. office365/teams/schedule/time_card.py +67 -0
  4956. office365/teams/schedule/time_card_break.py +1 -2
  4957. office365/teams/schedule/time_card_entry.py +1 -2
  4958. office365/teams/schedule/time_card_event.py +1 -2
  4959. office365/teams/schedule/time_clock_settings.py +1 -2
  4960. office365/teams/schedule/time_off.py +37 -0
  4961. office365/teams/schedule/time_off_details.py +0 -3
  4962. office365/teams/schedule/time_off_item.py +0 -3
  4963. office365/teams/schedule/time_off_reason.py +34 -0
  4964. office365/teams/schedule/time_off_request.py +31 -0
  4965. office365/teams/summary.py +0 -3
  4966. office365/teams/tabs/configuration.py +0 -3
  4967. office365/teams/tabs/tab.py +22 -1
  4968. office365/teams/tabs/updated_event_message_detail.py +1 -2
  4969. office365/teams/team.py +68 -17
  4970. office365/teams/teamwork/activity_topic.py +0 -3
  4971. office365/teams/teamwork/application_identity.py +0 -3
  4972. office365/teams/teamwork/conversation_identity.py +0 -3
  4973. office365/teams/teamwork/meeting_note.py +1 -2
  4974. office365/teams/teamwork/meeting_note_subpoint.py +0 -3
  4975. office365/teams/teamwork/meeting_policy_updated_event_message_detail.py +1 -2
  4976. office365/teams/teamwork/online_meeting_info.py +1 -2
  4977. office365/teams/teamwork/shiftmanagement/user_solution_root.py +24 -0
  4978. office365/teams/teamwork/shiftmanagement/working_time_schedule.py +9 -0
  4979. office365/teams/teamwork/tags/member.py +20 -0
  4980. office365/teams/teamwork/tags/tag.py +2 -0
  4981. office365/teams/teamwork/user.py +10 -2
  4982. office365/teams/telephone_number_long_running_operation_details.py +16 -0
  4983. office365/teams/unarchived_event_message_detail.py +1 -2
  4984. office365/teams/viva/community.py +47 -1
  4985. office365/teams/viva/employee_experience.py +39 -2
  4986. office365/teams/viva/employee_experience_user.py +22 -0
  4987. office365/teams/viva/engagement/conversation.py +38 -1
  4988. office365/teams/viva/engagement/conversation_message.py +115 -0
  4989. office365/teams/viva/engagement/conversation_message_reaction.py +33 -0
  4990. office365/teams/viva/learning/content.py +127 -0
  4991. office365/teams/viva/learning/courses/activity.py +53 -0
  4992. office365/teams/viva/learning/courses/self_initiated.py +16 -0
  4993. office365/teams/viva/learning/provider.py +69 -1
  4994. office365/teams/work.py +50 -1
  4995. office365/teams/workforce_integration.py +57 -0
  4996. office365/teams/workforce_integration_encryption.py +15 -0
  4997. office365/todo/attachments/base.py +16 -0
  4998. office365/todo/attachments/collection.py +1 -1
  4999. office365/todo/attachments/info.py +0 -2
  5000. office365/todo/attachments/session.py +19 -5
  5001. office365/todo/attachments/task_file.py +2 -5
  5002. office365/todo/attachments/type.py +7 -10
  5003. office365/todo/checklist_item.py +1 -0
  5004. office365/todo/linked_resource.py +11 -0
  5005. office365/todo/tasks/collection.py +54 -0
  5006. office365/todo/tasks/lists/collection.py +6 -0
  5007. office365/todo/tasks/lists/list.py +27 -2
  5008. office365/todo/tasks/task.py +32 -10
  5009. office365/todo/todo.py +2 -0
  5010. office365_rest_python_client-3.3.1.dist-info/METADATA +635 -0
  5011. office365_rest_python_client-3.3.1.dist-info/RECORD +6959 -0
  5012. office365/directory/identitygovernance/workflow.py +0 -106
  5013. office365/directory/identitygovernance/workflow_setting.py +0 -15
  5014. office365/directory/identitygovernance/workflow_subject.py +0 -10
  5015. office365/directory/identitygovernance/workflow_version.py +0 -16
  5016. office365/directory/permissions/require_permission.py +0 -75
  5017. office365/directory/permissions/resource_name.py +0 -33
  5018. office365/directory/security/a365_ai_inference_call.py +0 -10
  5019. office365/directory/security/a365_ai_invoke_agent.py +0 -10
  5020. office365/directory/security/a365_ai_run_summary.py +0 -10
  5021. office365/directory/security/a365_span_outputs.py +0 -10
  5022. office365/directory/security/account.py +0 -14
  5023. office365/directory/security/aed_audit_record.py +0 -10
  5024. office365/directory/security/agent_admin_activity_record.py +0 -10
  5025. office365/directory/security/agent_setting_admin_activity.py +0 -10
  5026. office365/directory/security/ai_agent_evidence.py +0 -16
  5027. office365/directory/security/aip_discover.py +0 -10
  5028. office365/directory/security/aip_file_deleted.py +0 -10
  5029. office365/directory/security/aip_heart_beat.py +0 -10
  5030. office365/directory/security/aip_protection_action_log_request.py +0 -10
  5031. office365/directory/security/aip_scanner_discover_event.py +0 -10
  5032. office365/directory/security/aip_sensitivity_label_action_log_request.py +0 -10
  5033. office365/directory/security/air_admin_action_investigation_data.py +0 -10
  5034. office365/directory/security/air_investigation_data.py +0 -10
  5035. office365/directory/security/alerts/active_directory_domain_evidence.py +0 -18
  5036. office365/directory/security/alerts/alert.py +0 -205
  5037. office365/directory/security/alerts/azure_resource_evidence.py +0 -16
  5038. office365/directory/security/alerts/blob_container_evidence.py +0 -17
  5039. office365/directory/security/alerts/blob_evidence.py +0 -21
  5040. office365/directory/security/alerts/collection.py +0 -49
  5041. office365/directory/security/alerts/comment.py +0 -19
  5042. office365/directory/security/alerts/evidence.py +0 -28
  5043. office365/directory/security/alerts/file_security_state.py +0 -5
  5044. office365/directory/security/alerts/history_state.py +0 -16
  5045. office365/directory/security/alerts/malware_evidence.py +0 -22
  5046. office365/directory/security/alerts/process_evidence.py +0 -27
  5047. office365/directory/security/alerts/sas_token_evidence.py +0 -26
  5048. office365/directory/security/amazon_resource_evidence.py +0 -17
  5049. office365/directory/security/analyzed_message_evidence.py +0 -34
  5050. office365/directory/security/article.py +0 -56
  5051. office365/directory/security/attacksimulations/automation.py +0 -30
  5052. office365/directory/security/attacksimulations/automation_run.py +0 -12
  5053. office365/directory/security/attacksimulations/event.py +0 -5
  5054. office365/directory/security/attacksimulations/landing_page.py +0 -5
  5055. office365/directory/security/attacksimulations/operations/operation.py +0 -5
  5056. office365/directory/security/attacksimulations/repeat_offender.py +0 -17
  5057. office365/directory/security/attacksimulations/reports/overview.py +0 -5
  5058. office365/directory/security/attacksimulations/reports/report.py +0 -25
  5059. office365/directory/security/attacksimulations/root.py +0 -67
  5060. office365/directory/security/attacksimulations/simulation.py +0 -23
  5061. office365/directory/security/attacksimulations/user.py +0 -16
  5062. office365/directory/security/attacksimulations/user_coverage.py +0 -10
  5063. office365/directory/security/attacksimulations/users/details.py +0 -20
  5064. office365/directory/security/attribute_definition.py +0 -37
  5065. office365/directory/security/attribute_definition_metadata_entry.py +0 -16
  5066. office365/directory/security/attribute_mapping.py +0 -23
  5067. office365/directory/security/attribute_mapping_parameter_schema.py +0 -18
  5068. office365/directory/security/attribute_mapping_source.py +0 -24
  5069. office365/directory/security/audit/a365_ai_execute_tool.py +0 -10
  5070. office365/directory/security/audit/aad_risk_detection_audit_record.py +0 -10
  5071. office365/directory/security/audit/ai_app_interaction_audit_record.py +0 -10
  5072. office365/directory/security/audit/ai_execute_tool_audit_record.py +0 -10
  5073. office365/directory/security/audit/ai_interactions_change_notification_audit_record.py +0 -10
  5074. office365/directory/security/audit/ai_interactions_export_audit_record.py +0 -10
  5075. office365/directory/security/audit/ai_interactions_subscription_audit_record.py +0 -10
  5076. office365/directory/security/audit/ai_invoke_agent_audit_record.py +0 -10
  5077. office365/directory/security/audit/ai_span_outputs_audit_record.py +0 -10
  5078. office365/directory/security/audit/air_manual_investigation_data.py +0 -10
  5079. office365/directory/security/audit/alert_submission_audit_record.py +0 -10
  5080. office365/directory/security/audit/alert_submission_result_detail_audit_record.py +0 -10
  5081. office365/directory/security/audit/attack_sim_admin_audit_record.py +0 -10
  5082. office365/directory/security/audit/attack_sim_audit_record.py +0 -10
  5083. office365/directory/security/audit/audit_config_audit_record.py +0 -10
  5084. office365/directory/security/audit/audit_data.py +0 -15
  5085. office365/directory/security/audit/audit_record_type_dictionary.py +0 -10
  5086. office365/directory/security/audit/audit_search_audit_record.py +0 -10
  5087. office365/directory/security/audit/azfw_application_rule_aggregation_event_record.py +0 -10
  5088. office365/directory/security/audit/azfw_dns_query_event_record.py +0 -10
  5089. office365/directory/security/audit/azfw_network_rule_event_record.py +0 -10
  5090. office365/directory/security/audit/azure_active_directory_account_logon_audit_record.py +0 -10
  5091. office365/directory/security/audit/azure_active_directory_audit_record.py +0 -10
  5092. office365/directory/security/audit/azure_active_directory_sts_logon_audit_record.py +0 -10
  5093. office365/directory/security/audit/azure_ai_search_audit_record.py +0 -10
  5094. office365/directory/security/audit/campaign_audit_record.py +0 -10
  5095. office365/directory/security/audit/ccrai_policy_violation_record.py +0 -10
  5096. office365/directory/security/audit/cdp_classifier_health_record.py +0 -10
  5097. office365/directory/security/audit/cdp_cold_crawl_status_record.py +0 -10
  5098. office365/directory/security/audit/cdp_consumption_resource_record.py +0 -10
  5099. office365/directory/security/audit/cdp_content_explorer_aggregate_record.py +0 -10
  5100. office365/directory/security/audit/cdp_dlp_sensitive_endpoint_audit_record.py +0 -10
  5101. office365/directory/security/audit/cdp_log_record.py +0 -10
  5102. office365/directory/security/audit/cdp_ocr_billing_record.py +0 -10
  5103. office365/directory/security/audit/cdp_resource_scope_change_event_record.py +0 -10
  5104. office365/directory/security/audit/cdpdlmai_interaction_insights_record.py +0 -10
  5105. office365/directory/security/audit/cloud_update_device_config_audit_record.py +0 -10
  5106. office365/directory/security/audit/cloud_update_profile_config_audit_record.py +0 -10
  5107. office365/directory/security/audit/cloud_update_tenant_config_audit_record.py +0 -10
  5108. office365/directory/security/audit/compliance_connector_audit_record.py +0 -10
  5109. office365/directory/security/audit/compliance_dlm_exchange_audit_record.py +0 -10
  5110. office365/directory/security/audit/compliance_dlm_share_point_audit_record.py +0 -10
  5111. office365/directory/security/audit/compliance_dlp_applications_audit_record.py +0 -10
  5112. office365/directory/security/audit/compliance_dlp_applications_classification_audit_record.py +0 -10
  5113. office365/directory/security/audit/compliance_dlp_endpoint_audit_record.py +0 -10
  5114. office365/directory/security/audit/compliance_dlp_endpoint_discovery_audit_record.py +0 -10
  5115. office365/directory/security/audit/compliance_dlp_enforcement_audit_record.py +0 -10
  5116. office365/directory/security/audit/compliance_dlp_exchange_audit_record.py +0 -10
  5117. office365/directory/security/audit/compliance_dlp_exchange_classification_audit_record.py +0 -10
  5118. office365/directory/security/audit/compliance_dlp_exchange_classification_cdp_record.py +0 -10
  5119. office365/directory/security/audit/compliance_dlp_exchange_discovery_audit_record.py +0 -10
  5120. office365/directory/security/audit/compliance_dlp_share_point_audit_record.py +0 -10
  5121. office365/directory/security/audit/compliance_dlp_share_point_classification_audit_record.py +0 -10
  5122. office365/directory/security/audit/compliance_dlp_share_point_classification_cdp_record.py +0 -10
  5123. office365/directory/security/audit/compliance_dlp_share_point_classification_extended_audit_record.py +0 -10
  5124. office365/directory/security/audit/compliance_exchange_ocr_audit_record.py +0 -10
  5125. office365/directory/security/audit/compliance_manager_action_record.py +0 -10
  5126. office365/directory/security/audit/compliance_policy_grading_share_point_audit_record.py +0 -10
  5127. office365/directory/security/audit/compliance_settings_change_audit_record.py +0 -10
  5128. office365/directory/security/audit/compliance_sit_grading_share_point_audit_record.py +0 -10
  5129. office365/directory/security/audit/compliance_supervision_exchange_audit_record.py +0 -10
  5130. office365/directory/security/audit/connected_ai_app_interaction_audit_record.py +0 -10
  5131. office365/directory/security/audit/consumption_resource_audit_record.py +0 -10
  5132. office365/directory/security/audit/content_store_metadata_record.py +0 -10
  5133. office365/directory/security/audit/copilot_agent_management_audit_record.py +0 -10
  5134. office365/directory/security/audit/copilot_for_security_logging_audit_record.py +0 -10
  5135. office365/directory/security/audit/copilot_for_security_trigger_audit_record.py +0 -10
  5136. office365/directory/security/audit/copilot_interaction_audit_record.py +0 -10
  5137. office365/directory/security/audit/copilot_plugin_setting_audit_record.py +0 -10
  5138. office365/directory/security/audit/copilot_prompt_book_setting_audit_record.py +0 -10
  5139. office365/directory/security/audit/copilot_session_sharing_audit_record.py +0 -10
  5140. office365/directory/security/audit/copilot_setting_audit_record.py +0 -10
  5141. office365/directory/security/audit/copilot_workspace_setting_audit_record.py +0 -10
  5142. office365/directory/security/audit/core_reporting_settings_audit_record.py +0 -10
  5143. office365/directory/security/audit/critical_asset_management_classification_record.py +0 -10
  5144. office365/directory/security/audit/crm_entity_operation_audit_record.py +0 -10
  5145. office365/directory/security/audit/cross_tenant_access_policy_audit_record.py +0 -10
  5146. office365/directory/security/audit/device_discovery_settings_authenticated_scans_record.py +0 -10
  5147. office365/directory/security/audit/device_discovery_settings_exclusion_record.py +0 -10
  5148. office365/directory/security/audit/device_discovery_settings_record.py +0 -10
  5149. office365/directory/security/audit/discovery_audit_record.py +0 -10
  5150. office365/directory/security/audit/dlp_endpoint_audit_record.py +0 -10
  5151. office365/directory/security/audit/dlp_import_result_audit_record.py +0 -10
  5152. office365/directory/security/audit/dragon_copilot_access_record.py +0 -10
  5153. office365/directory/security/audit/dragon_copilot_admin_record.py +0 -10
  5154. office365/directory/security/audit/dragon_copilot_clinical_data_record.py +0 -10
  5155. office365/directory/security/audit/dragon_copilot_session_record.py +0 -10
  5156. office365/directory/security/audit/dynamics365_business_central_audit_record.py +0 -10
  5157. office365/directory/security/audit/ehr_connector_audit_base_record.py +0 -10
  5158. office365/directory/security/audit/eop_submission_feed_entity_audit_record.py +0 -10
  5159. office365/directory/security/audit/exchange_admin_audit_record.py +0 -10
  5160. office365/directory/security/audit/exchange_aggregated_mailbox_audit_record.py +0 -10
  5161. office365/directory/security/audit/exchange_aggregated_operation_record.py +0 -10
  5162. office365/directory/security/audit/exchange_mailbox_audit_group_record.py +0 -10
  5163. office365/directory/security/audit/exchange_mailbox_audit_record.py +0 -10
  5164. office365/directory/security/audit/hosted_rpa_audit_record.py +0 -10
  5165. office365/directory/security/audit/hr_signal_audit_record.py +0 -10
  5166. office365/directory/security/audit/hygiene_event_record.py +0 -10
  5167. office365/directory/security/audit/information_barrier_policy_application_audit_record.py +0 -10
  5168. office365/directory/security/audit/information_worker_protection_audit_record.py +0 -10
  5169. office365/directory/security/audit/insider_risk_scoped_user_insights_record.py +0 -10
  5170. office365/directory/security/audit/insider_risk_scoped_users_record.py +0 -10
  5171. office365/directory/security/audit/microsoft_stream_audit_record.py +0 -10
  5172. office365/directory/security/audit/microsoft_teams_admin_audit_record.py +0 -10
  5173. office365/directory/security/audit/microsoft_teams_analytics_audit_record.py +0 -10
  5174. office365/directory/security/audit/microsoft_teams_audit_record.py +0 -10
  5175. office365/directory/security/audit/microsoft_teams_device_audit_record.py +0 -10
  5176. office365/directory/security/audit/microsoft_teams_retention_label_action_audit_record.py +0 -10
  5177. office365/directory/security/audit/microsoft_teams_sensitivity_label_action_audit_record.py +0 -10
  5178. office365/directory/security/audit/microsoft_teams_shifts_audit_record.py +0 -10
  5179. office365/directory/security/audit/microsoft_teams_user_concern_audit_record.py +0 -10
  5180. office365/directory/security/audit/multi_tenant_organization_join_request_transition_details.py +0 -20
  5181. office365/directory/security/audit/multi_tenant_organization_member_transition_details.py +0 -22
  5182. office365/directory/security/audit/whois_record.py +0 -22
  5183. office365/directory/security/auto_auditing_configuration.py +0 -16
  5184. office365/directory/security/autonomous_system.py +0 -17
  5185. office365/directory/security/cases/case.py +0 -48
  5186. office365/directory/security/cases/ediscovery.py +0 -99
  5187. office365/directory/security/cases/operation.py +0 -10
  5188. office365/directory/security/cases/root.py +0 -21
  5189. office365/directory/security/category_template.py +0 -9
  5190. office365/directory/security/citation_template.py +0 -21
  5191. office365/directory/security/cloud_application_evidence.py +0 -20
  5192. office365/directory/security/cloud_logon_request_evidence.py +0 -14
  5193. office365/directory/security/cloud_logon_session_evidence.py +0 -24
  5194. office365/directory/security/collaboration/analyzed_email.py +0 -133
  5195. office365/directory/security/collaboration/analyzed_email_attachment.py +0 -22
  5196. office365/directory/security/collaboration/analyzed_email_authentication_detail.py +0 -17
  5197. office365/directory/security/collaboration/analyzed_email_delivery_detail.py +0 -15
  5198. office365/directory/security/collaboration/analyzed_email_dlp_rule_info.py +0 -15
  5199. office365/directory/security/collaboration/analyzed_email_exchange_transport_rule_info.py +0 -15
  5200. office365/directory/security/collaboration/analyzed_email_recipient_detail.py +0 -16
  5201. office365/directory/security/collaboration/analyzed_email_sender_detail.py +0 -23
  5202. office365/directory/security/collaboration/analyzed_email_url.py +0 -18
  5203. office365/directory/security/collaboration/collaboration_root.py +0 -22
  5204. office365/directory/security/compromise_indicator.py +0 -14
  5205. office365/directory/security/container_evidence.py +0 -23
  5206. office365/directory/security/container_filter.py +0 -15
  5207. office365/directory/security/container_image_evidence.py +0 -17
  5208. office365/directory/security/container_registry_evidence.py +0 -14
  5209. office365/directory/security/cortana_briefing_audit_record.py +0 -10
  5210. office365/directory/security/customer_key_service_encryption_audit_record.py +0 -10
  5211. office365/directory/security/cvss_summary.py +0 -15
  5212. office365/directory/security/data_center_security_cmdlet_audit_record.py +0 -10
  5213. office365/directory/security/data_governance_audit_record.py +0 -10
  5214. office365/directory/security/data_insights_rest_api_audit_record.py +0 -10
  5215. office365/directory/security/data_lake_export_operation_audit_record.py +0 -10
  5216. office365/directory/security/data_security_investigation_audit_record.py +0 -10
  5217. office365/directory/security/data_set.py +0 -33
  5218. office365/directory/security/data_share_operation_audit_record.py +0 -10
  5219. office365/directory/security/data_source_container.py +0 -44
  5220. office365/directory/security/datasecurity/classifcation_error_base.py +0 -18
  5221. office365/directory/security/datasecurity/classification_error.py +0 -12
  5222. office365/directory/security/datasecurity/classification_inner_error.py +0 -18
  5223. office365/directory/security/datasecurity/compute_rights_and_inheritance_result.py +0 -17
  5224. office365/directory/security/datasecurity/custom_metadata_dictionary.py +0 -10
  5225. office365/directory/security/datasecurity/dlp_action_info.py +0 -15
  5226. office365/directory/security/datasecurity/governance.py +0 -17
  5227. office365/directory/security/datasecurity/integrated_application_metadata.py +0 -15
  5228. office365/directory/security/datasecurity/policy_binding.py +0 -17
  5229. office365/directory/security/datasecurity/policy_location.py +0 -14
  5230. office365/directory/security/datasecurity/policy_location_application.py +0 -10
  5231. office365/directory/security/datasecurity/policy_location_domain.py +0 -10
  5232. office365/directory/security/datasecurity/policy_location_url.py +0 -10
  5233. office365/directory/security/datasecurity/policy_scope_base.py +0 -26
  5234. office365/directory/security/datasecurity/policy_tenant_scope.py +0 -15
  5235. office365/directory/security/datasecurity/policy_tip_action.py +0 -16
  5236. office365/directory/security/datasecurity/policy_user_scope.py +0 -10
  5237. office365/directory/security/datasecurity/process_content_batch_request.py +0 -17
  5238. office365/directory/security/datasecurity/process_content_request.py +0 -24
  5239. office365/directory/security/datasecurity/process_content_response.py +0 -24
  5240. office365/directory/security/datasecurity/process_content_responses.py +0 -16
  5241. office365/directory/security/datasecurity/process_conversation_metadata.py +0 -27
  5242. office365/directory/security/datasecurity/process_file_metadata.py +0 -16
  5243. office365/directory/security/datasecurity/protected_content.py +0 -16
  5244. office365/directory/security/datasecurity/sensitivity_label.py +0 -31
  5245. office365/directory/security/default_audit_data.py +0 -10
  5246. office365/directory/security/defender_case_management_audit_record.py +0 -10
  5247. office365/directory/security/defender_preview_features_record.py +0 -10
  5248. office365/directory/security/defender_security_for_ai_configuration_audit_record.py +0 -10
  5249. office365/directory/security/deploy_feature_activity_record.py +0 -10
  5250. office365/directory/security/deployment_access_key_type.py +0 -14
  5251. office365/directory/security/detonation_behaviour_details.py +0 -23
  5252. office365/directory/security/detonation_chain.py +0 -18
  5253. office365/directory/security/detonation_details.py +0 -34
  5254. office365/directory/security/detonation_observables.py +0 -17
  5255. office365/directory/security/device_evidence.py +0 -47
  5256. office365/directory/security/dictionary.py +0 -10
  5257. office365/directory/security/dlp_sensitive_information_type_rule_package_cmdlet_record.py +0 -10
  5258. office365/directory/security/dns_evidence.py +0 -19
  5259. office365/directory/security/dynamic_column_value.py +0 -10
  5260. office365/directory/security/ediscovery/case_member.py +0 -21
  5261. office365/directory/security/ediscovery/custodian.py +0 -22
  5262. office365/directory/security/ediscovery/ediscovery_case_settings.py +0 -21
  5263. office365/directory/security/ediscovery/ediscovery_estimate_operation.py +0 -54
  5264. office365/directory/security/ediscovery/ediscovery_export_operation.py +0 -50
  5265. office365/directory/security/ediscovery/ediscovery_index_operation.py +0 -7
  5266. office365/directory/security/ediscovery/ediscovery_review_tag.py +0 -34
  5267. office365/directory/security/ediscovery/noncustodial_data_source.py +0 -18
  5268. office365/directory/security/ediscovery/operations/add_to_review_set.py +0 -52
  5269. office365/directory/security/ediscovery/operations/hold.py +0 -7
  5270. office365/directory/security/ediscovery/operations/hold_policy_sync.py +0 -9
  5271. office365/directory/security/ediscovery/operations/purge_data.py +0 -9
  5272. office365/directory/security/ediscovery/operations/search_export.py +0 -62
  5273. office365/directory/security/ediscovery/operations/tag.py +0 -7
  5274. office365/directory/security/ediscovery/review_set.py +0 -22
  5275. office365/directory/security/ediscovery/review_set_query.py +0 -7
  5276. office365/directory/security/ediscovery/search.py +0 -56
  5277. office365/directory/security/email_sender.py +0 -16
  5278. office365/directory/security/event_propagation_result.py +0 -18
  5279. office365/directory/security/event_query.py +0 -14
  5280. office365/directory/security/export_file_metadata.py +0 -16
  5281. office365/directory/security/expression_input_object.py +0 -20
  5282. office365/directory/security/fabric_audit_record.py +0 -10
  5283. office365/directory/security/fabric_policy_record.py +0 -10
  5284. office365/directory/security/file_details.py +0 -23
  5285. office365/directory/security/file_evidence.py +0 -18
  5286. office365/directory/security/file_hash.py +0 -16
  5287. office365/directory/security/file_hash_evidence.py +0 -16
  5288. office365/directory/security/file_plan_applied_category.py +0 -15
  5289. office365/directory/security/file_plan_authority.py +0 -10
  5290. office365/directory/security/file_plan_citation.py +0 -15
  5291. office365/directory/security/file_plan_department.py +0 -10
  5292. office365/directory/security/file_plan_descriptor_base.py +0 -14
  5293. office365/directory/security/file_plan_descriptor_template.py +0 -28
  5294. office365/directory/security/file_plan_reference.py +0 -10
  5295. office365/directory/security/file_plan_subcategory.py +0 -10
  5296. office365/directory/security/filter.py +0 -22
  5297. office365/directory/security/filter_clause.py +0 -17
  5298. office365/directory/security/filter_group.py +0 -17
  5299. office365/directory/security/filter_operand.py +0 -15
  5300. office365/directory/security/formatted_content.py +0 -16
  5301. office365/directory/security/geo_location.py +0 -18
  5302. office365/directory/security/git_hub_organization_evidence.py +0 -19
  5303. office365/directory/security/git_hub_repo_evidence.py +0 -18
  5304. office365/directory/security/git_hub_user_evidence.py +0 -18
  5305. office365/directory/security/google_cloud_resource_evidence.py +0 -21
  5306. office365/directory/security/group_filter.py +0 -15
  5307. office365/directory/security/health_issue.py +0 -81
  5308. office365/directory/security/healthcare_signal_record.py +0 -10
  5309. office365/directory/security/hunting_query_results.py +0 -24
  5310. office365/directory/security/identity_accounts.py +0 -36
  5311. office365/directory/security/incidents/incident.py +0 -59
  5312. office365/directory/security/indicator.py +0 -16
  5313. office365/directory/security/integrated_apps_app_admin_activity_audit_record.py +0 -10
  5314. office365/directory/security/integrated_apps_app_settings_admin_activity_audit_record.py +0 -10
  5315. office365/directory/security/intelligence_profile_indicator.py +0 -21
  5316. office365/directory/security/invoke_action_result.py +0 -15
  5317. office365/directory/security/io_t_device_evidence.py +0 -46
  5318. office365/directory/security/ip_address.py +0 -26
  5319. office365/directory/security/ip_evidence.py +0 -19
  5320. office365/directory/security/irm_activity_audit_trail_record.py +0 -10
  5321. office365/directory/security/irm_user_defined_detection_record.py +0 -10
  5322. office365/directory/security/kaizala_audit_record.py +0 -10
  5323. office365/directory/security/kubernetes_cluster_evidence.py +0 -20
  5324. office365/directory/security/kubernetes_controller_evidence.py +0 -19
  5325. office365/directory/security/kubernetes_namespace_evidence.py +0 -18
  5326. office365/directory/security/kubernetes_pod_evidence.py +0 -35
  5327. office365/directory/security/kubernetes_secret_evidence.py +0 -17
  5328. office365/directory/security/kubernetes_service_account_evidence.py +0 -16
  5329. office365/directory/security/kubernetes_service_evidence.py +0 -29
  5330. office365/directory/security/kubernetes_service_port.py +0 -20
  5331. office365/directory/security/label_analytics_aggregate_audit_record.py +0 -10
  5332. office365/directory/security/label_content_explorer_audit_record.py +0 -10
  5333. office365/directory/security/labels/retention/collection.py +0 -68
  5334. office365/directory/security/labels/retention/disposition_review_stage.py +0 -27
  5335. office365/directory/security/labels/retention/duration_in_days.py +0 -16
  5336. office365/directory/security/labels/retention/fileplan_descriptor.py +0 -52
  5337. office365/directory/security/labels/retention/label.py +0 -158
  5338. office365/directory/security/labels/root.py +0 -83
  5339. office365/directory/security/large_content_metadata_audit_record.py +0 -10
  5340. office365/directory/security/logged_on_user.py +0 -15
  5341. office365/directory/security/m365_compliance_connector_audit_record.py +0 -10
  5342. office365/directory/security/m365_search_sections_record.py +0 -10
  5343. office365/directory/security/m365daad_audit_record.py +0 -10
  5344. office365/directory/security/m365odsp_asset_metadata_record.py +0 -10
  5345. office365/directory/security/mail_cluster_evidence.py +0 -20
  5346. office365/directory/security/mail_submission_data.py +0 -10
  5347. office365/directory/security/mailbox_configuration_evidence.py +0 -19
  5348. office365/directory/security/mailbox_evidence.py +0 -18
  5349. office365/directory/security/managed_services_audit_record.py +0 -10
  5350. office365/directory/security/managed_tenants_audit_record.py +0 -10
  5351. office365/directory/security/mapg_alerts_audit_record.py +0 -10
  5352. office365/directory/security/mapg_onboard_audit_record.py +0 -10
  5353. office365/directory/security/mapg_policy_audit_record.py +0 -10
  5354. office365/directory/security/mapg_remediation_audit_record.py +0 -10
  5355. office365/directory/security/mcas_alerts_audit_record.py +0 -10
  5356. office365/directory/security/mda_audit_record.py +0 -10
  5357. office365/directory/security/mda_data_security_signal_record.py +0 -10
  5358. office365/directory/security/mdash_audit_record.py +0 -10
  5359. office365/directory/security/mdatp_audit_record.py +0 -10
  5360. office365/directory/security/mdc_events_record.py +0 -10
  5361. office365/directory/security/mdi_audit_record.py +0 -10
  5362. office365/directory/security/merge_response.py +0 -14
  5363. office365/directory/security/mesh_worlds_audit_record.py +0 -10
  5364. office365/directory/security/microsoft365_backup_backup_item_audit_record.py +0 -10
  5365. office365/directory/security/microsoft365_backup_backup_policy_audit_record.py +0 -10
  5366. office365/directory/security/microsoft365_backup_granular_browse_task_audit_record.py +0 -10
  5367. office365/directory/security/microsoft365_backup_restore_item_audit_record.py +0 -10
  5368. office365/directory/security/microsoft365_backup_restore_task_audit_record.py +0 -10
  5369. office365/directory/security/microsoft365_copilot_scheduled_prompt_audit_record.py +0 -10
  5370. office365/directory/security/microsoft_defender_experts_xdr_audit_record.py +0 -10
  5371. office365/directory/security/microsoft_flow_audit_record.py +0 -10
  5372. office365/directory/security/microsoft_forms_audit_record.py +0 -10
  5373. office365/directory/security/microsoft_graph_data_connect_consent.py +0 -10
  5374. office365/directory/security/microsoft_graph_data_connect_operation.py +0 -10
  5375. office365/directory/security/microsoft_purview_data_catalog_operation_record.py +0 -10
  5376. office365/directory/security/microsoft_purview_data_map_operation_record.py +0 -10
  5377. office365/directory/security/microsoft_purview_metadata_policy_operation_record.py +0 -10
  5378. office365/directory/security/microsoft_purview_policy_operation_record.py +0 -10
  5379. office365/directory/security/microsoft_purview_privacy_audit_event.py +0 -10
  5380. office365/directory/security/microsoft_purview_unified_catalog_operation_record.py +0 -10
  5381. office365/directory/security/mip_auto_label_exchange_item_audit_record.py +0 -10
  5382. office365/directory/security/mip_auto_label_progress_feedback_audit_record.py +0 -10
  5383. office365/directory/security/mip_auto_label_share_point_item_audit_record.py +0 -10
  5384. office365/directory/security/mip_auto_label_share_point_policy_location_audit_record.py +0 -10
  5385. office365/directory/security/mip_auto_label_simulation_share_point_completion_record.py +0 -10
  5386. office365/directory/security/mip_auto_label_simulation_share_point_progress_record.py +0 -10
  5387. office365/directory/security/mip_auto_label_simulation_statistics_record.py +0 -10
  5388. office365/directory/security/mip_exact_data_match_audit_record.py +0 -10
  5389. office365/directory/security/mip_label_analytics_audit_record.py +0 -10
  5390. office365/directory/security/mip_label_audit_record.py +0 -10
  5391. office365/directory/security/mos_agent_info_record.py +0 -10
  5392. office365/directory/security/mos_agent_info_record_v2.py +0 -10
  5393. office365/directory/security/ms365d_custom_detection_audit_record.py +0 -10
  5394. office365/directory/security/ms365d_incident_audit_record.py +0 -10
  5395. office365/directory/security/ms365d_suppression_rule_audit_record.py +0 -10
  5396. office365/directory/security/msde_custom_collection_audit_record.py +0 -10
  5397. office365/directory/security/msde_general_settings_audit_record.py +0 -10
  5398. office365/directory/security/msde_indicators_settings_audit_record.py +0 -10
  5399. office365/directory/security/msde_response_actions_audit_record.py +0 -10
  5400. office365/directory/security/msde_roles_settings_audit_record.py +0 -10
  5401. office365/directory/security/msp_vector_search_content_metadata_audit_record.py +0 -10
  5402. office365/directory/security/mstic_nation_state_notification_record.py +0 -10
  5403. office365/directory/security/multi_stage_disposition_audit_record.py +0 -10
  5404. office365/directory/security/my_analytics_settings_audit_record.py +0 -10
  5405. office365/directory/security/network_adapter.py +0 -21
  5406. office365/directory/security/network_connection_evidence.py +0 -18
  5407. office365/directory/security/nic_evidence.py +0 -18
  5408. office365/directory/security/noisy_alert_policy_audit_record.py +0 -10
  5409. office365/directory/security/oauth_application_evidence.py +0 -17
  5410. office365/directory/security/object_definition.py +0 -25
  5411. office365/directory/security/object_definition_metadata_entry.py +0 -16
  5412. office365/directory/security/object_mapping.py +0 -26
  5413. office365/directory/security/object_mapping_metadata_entry.py +0 -16
  5414. office365/directory/security/ocr_settings.py +0 -17
  5415. office365/directory/security/office_native_audit_record.py +0 -10
  5416. office365/directory/security/ome_portal_audit_record.py +0 -10
  5417. office365/directory/security/on_demand_share_point_classification_audit_record.py +0 -10
  5418. office365/directory/security/on_premises_file_share_scanner_dlp_audit_record.py +0 -10
  5419. office365/directory/security/on_premises_share_point_scanner_dlp_audit_record.py +0 -10
  5420. office365/directory/security/one_drive_audit_record.py +0 -10
  5421. office365/directory/security/organizational_data_in_m365_audit_record.py +0 -10
  5422. office365/directory/security/outlook_copilot_automation_audit_record.py +0 -10
  5423. office365/directory/security/owa_get_access_token_for_resource_audit_record.py +0 -10
  5424. office365/directory/security/p4_ai_risk_score_record.py +0 -10
  5425. office365/directory/security/p4ai_assessment_category_record.py +0 -10
  5426. office365/directory/security/p4ai_assessment_fabric_scanner_record.py +0 -10
  5427. office365/directory/security/p4ai_assessment_location_result_record.py +0 -10
  5428. office365/directory/security/p4ai_assessment_record.py +0 -10
  5429. office365/directory/security/parse_expression_response.py +0 -19
  5430. office365/directory/security/passive_dns_record.py +0 -47
  5431. office365/directory/security/people_admin_settings_audit_record.py +0 -10
  5432. office365/directory/security/physical_badging_signal_audit_record.py +0 -10
  5433. office365/directory/security/places_directory_audit_record.py +0 -10
  5434. office365/directory/security/planner_chat_message_audit_record.py +0 -10
  5435. office365/directory/security/planner_chat_message_list_audit_record.py +0 -10
  5436. office365/directory/security/planner_copy_plan_audit_record.py +0 -10
  5437. office365/directory/security/planner_goal_audit_record.py +0 -10
  5438. office365/directory/security/planner_goal_list_audit_record.py +0 -10
  5439. office365/directory/security/planner_plan_audit_record.py +0 -10
  5440. office365/directory/security/planner_plan_list_audit_record.py +0 -10
  5441. office365/directory/security/planner_plan_sensitivity_label_audit_record.py +0 -10
  5442. office365/directory/security/planner_roster_audit_record.py +0 -10
  5443. office365/directory/security/planner_roster_sensitivity_label_audit_record.py +0 -10
  5444. office365/directory/security/planner_task_audit_record.py +0 -10
  5445. office365/directory/security/planner_task_list_audit_record.py +0 -10
  5446. office365/directory/security/planner_tenant_settings_audit_record.py +0 -10
  5447. office365/directory/security/policy_config_change_audit_record.py +0 -10
  5448. office365/directory/security/power_apps_audit_app_record.py +0 -10
  5449. office365/directory/security/power_apps_audit_plan_record.py +0 -10
  5450. office365/directory/security/power_apps_audit_resource_record.py +0 -10
  5451. office365/directory/security/power_bi_audit_record.py +0 -10
  5452. office365/directory/security/power_bi_dlp_audit_record.py +0 -10
  5453. office365/directory/security/power_pages_site_audit_record.py +0 -10
  5454. office365/directory/security/power_platform_admin_dlp_audit_record.py +0 -10
  5455. office365/directory/security/power_platform_admin_environment_audit_record.py +0 -10
  5456. office365/directory/security/power_platform_administrator_activity_record.py +0 -10
  5457. office365/directory/security/power_platform_lockbox_resource_access_request_audit_record.py +0 -10
  5458. office365/directory/security/power_platform_lockbox_resource_command_audit_record.py +0 -10
  5459. office365/directory/security/power_platform_service_activity_audit_record.py +0 -10
  5460. office365/directory/security/power_platform_tenant_isolation_record.py +0 -10
  5461. office365/directory/security/priva_privacy_assessment_operation_record.py +0 -10
  5462. office365/directory/security/priva_privacy_consent_operation_record.py +0 -10
  5463. office365/directory/security/privacy_data_match_audit_record.py +0 -10
  5464. office365/directory/security/privacy_data_minimization_record.py +0 -10
  5465. office365/directory/security/privacy_digest_email_record.py +0 -10
  5466. office365/directory/security/privacy_open_access_audit_record.py +0 -10
  5467. office365/directory/security/privacy_portal_audit_record.py +0 -10
  5468. office365/directory/security/privacy_remediation_action_record.py +0 -10
  5469. office365/directory/security/privacy_remediation_record.py +0 -10
  5470. office365/directory/security/processing_error.py +0 -15
  5471. office365/directory/security/project_audit_record.py +0 -10
  5472. office365/directory/security/project_for_the_web_assigned_to_me_settings_audit_record.py +0 -10
  5473. office365/directory/security/project_for_the_web_project_audit_record.py +0 -10
  5474. office365/directory/security/project_for_the_web_project_settings_audit_record.py +0 -10
  5475. office365/directory/security/project_for_the_web_roadmap_audit_record.py +0 -10
  5476. office365/directory/security/project_for_the_web_roadmap_item_audit_record.py +0 -10
  5477. office365/directory/security/project_for_the_web_roadmap_settings_audit_record.py +0 -10
  5478. office365/directory/security/project_for_the_web_task_audit_record.py +0 -10
  5479. office365/directory/security/public_error_response.py +0 -15
  5480. office365/directory/security/public_folder_audit_record.py +0 -10
  5481. office365/directory/security/purview_insider_risk_alerts_record.py +0 -10
  5482. office365/directory/security/purview_insider_risk_cases_record.py +0 -10
  5483. office365/directory/security/purview_mc_recommendation_record.py +0 -10
  5484. office365/directory/security/purview_posture_agent_audit_record.py +0 -10
  5485. office365/directory/security/quarantine_audit_record.py +0 -10
  5486. office365/directory/security/recipient_type.py +0 -13
  5487. office365/directory/security/records_management_audit_record.py +0 -10
  5488. office365/directory/security/redundancy_detection_settings.py +0 -17
  5489. office365/directory/security/referenced_object.py +0 -15
  5490. office365/directory/security/registry_key_evidence.py +0 -15
  5491. office365/directory/security/registry_value_evidence.py +0 -19
  5492. office365/directory/security/report_file_metadata.py +0 -16
  5493. office365/directory/security/report_submission.py +0 -10
  5494. office365/directory/security/report_submission_result_detail.py +0 -10
  5495. office365/directory/security/resource_access_event.py +0 -18
  5496. office365/directory/security/restricted_mode_audit_record.py +0 -10
  5497. office365/directory/security/retention_duration_forever.py +0 -10
  5498. office365/directory/security/retention_event.py +0 -63
  5499. office365/directory/security/retention_event_status.py +0 -15
  5500. office365/directory/security/retention_policy_audit_record.py +0 -10
  5501. office365/directory/security/rti_operations_agent_audit_record.py +0 -10
  5502. office365/directory/security/sbp_configuration_event_record.py +0 -10
  5503. office365/directory/security/sbp_usage_event_record.py +0 -10
  5504. office365/directory/security/score_evidence.py +0 -10
  5505. office365/directory/security/score_platform_generic_audit_record.py +0 -10
  5506. office365/directory/security/scorecontrol/profile.py +0 -23
  5507. office365/directory/security/script_run_audit_record.py +0 -10
  5508. office365/directory/security/search/data_source.py +0 -34
  5509. office365/directory/security/search.py +0 -48
  5510. office365/directory/security/search_audit_record.py +0 -10
  5511. office365/directory/security/security.py +0 -157
  5512. office365/directory/security/security_compliance_alert_record.py +0 -10
  5513. office365/directory/security/security_compliance_center_eop_cmdlet_audit_record.py +0 -10
  5514. office365/directory/security/security_compliance_insights_audit_record.py +0 -10
  5515. office365/directory/security/security_compliance_rbac_audit_record.py +0 -10
  5516. office365/directory/security/security_compliance_user_change_audit_record.py +0 -10
  5517. office365/directory/security/security_copilot_identity_management_audit_record.py +0 -10
  5518. office365/directory/security/security_development_lifecycle_ai_log_audit_record.py +0 -10
  5519. office365/directory/security/security_group_evidence.py +0 -20
  5520. office365/directory/security/sensitive_info_remediation_agent_data_record.py +0 -10
  5521. office365/directory/security/sensitivity_label_action_audit_record.py +0 -10
  5522. office365/directory/security/sensitivity_label_policy_match_audit_record.py +0 -10
  5523. office365/directory/security/sensitivity_labeled_file_action_audit_record.py +0 -10
  5524. office365/directory/security/sensor.py +0 -72
  5525. office365/directory/security/sensor_candidate.py +0 -32
  5526. office365/directory/security/sensor_candidate_activation_configuration.py +0 -9
  5527. office365/directory/security/sensor_deployment_package.py +0 -15
  5528. office365/directory/security/sensor_settings.py +0 -20
  5529. office365/directory/security/sentinel_ai_tool_audit_record.py +0 -10
  5530. office365/directory/security/sentinel_graph_audit_record.py +0 -10
  5531. office365/directory/security/sentinel_job_audit_record.py +0 -10
  5532. office365/directory/security/sentinel_kql_on_lake_audit_record.py +0 -10
  5533. office365/directory/security/sentinel_lake_data_onboarding_audit_record.py +0 -10
  5534. office365/directory/security/sentinel_lake_encryption_audit_record.py +0 -10
  5535. office365/directory/security/sentinel_lake_onboarding_audit_record.py +0 -10
  5536. office365/directory/security/sentinel_notebook_on_lake_audit_record.py +0 -10
  5537. office365/directory/security/sentinel_package_audit_record.py +0 -10
  5538. office365/directory/security/service_principal_evidence.py +0 -18
  5539. office365/directory/security/settings_container.py +0 -19
  5540. office365/directory/security/share_point_app_permission_operation_audit_record.py +0 -10
  5541. office365/directory/security/share_point_audit_record.py +0 -10
  5542. office365/directory/security/share_point_comment_operation_audit_record.py +0 -10
  5543. office365/directory/security/share_point_content_security_policy_audit_record.py +0 -10
  5544. office365/directory/security/share_point_content_type_operation_audit_record.py +0 -10
  5545. office365/directory/security/share_point_e_signature_audit_record.py +0 -10
  5546. office365/directory/security/share_point_field_operation_audit_record.py +0 -10
  5547. office365/directory/security/share_point_file_operation_audit_record.py +0 -10
  5548. office365/directory/security/share_point_list_item_operation_audit_record.py +0 -10
  5549. office365/directory/security/share_point_list_operation_audit_record.py +0 -10
  5550. office365/directory/security/share_point_sharing_operation_audit_record.py +0 -10
  5551. office365/directory/security/single_property_schema.py +0 -15
  5552. office365/directory/security/site_source.py +0 -16
  5553. office365/directory/security/skype_for_business_cmdlets_audit_record.py +0 -10
  5554. office365/directory/security/skype_for_business_pstn_usage_audit_record.py +0 -10
  5555. office365/directory/security/skype_for_business_users_blocked_audit_record.py +0 -10
  5556. office365/directory/security/sonar_detonation_content_metadata.py +0 -10
  5557. office365/directory/security/sonar_detonation_entity_audit_record.py +0 -10
  5558. office365/directory/security/sonar_file_detonation_entity_audit_record.py +0 -10
  5559. office365/directory/security/sonar_submission_entity_audit_record.py +0 -10
  5560. office365/directory/security/sonar_url_detonation_entity_audit_record.py +0 -10
  5561. office365/directory/security/spark_core_custom_live_pool_record.py +0 -10
  5562. office365/directory/security/ssl_certificate.py +0 -59
  5563. office365/directory/security/stream.py +0 -14
  5564. office365/directory/security/string_key_attribute_mapping_source_value_pair.py +0 -16
  5565. office365/directory/security/string_key_long_value_pair.py +0 -15
  5566. office365/directory/security/string_key_object_value_pair.py +0 -14
  5567. office365/directory/security/string_key_string_value_pair.py +0 -15
  5568. office365/directory/security/string_value_dictionary.py +0 -10
  5569. office365/directory/security/subdomain.py +0 -26
  5570. office365/directory/security/subjectrightsrequests/all_mailbox_location.py +0 -10
  5571. office365/directory/security/subjectrightsrequests/all_site_location.py +0 -10
  5572. office365/directory/security/subjectrightsrequests/data_subject.py +0 -17
  5573. office365/directory/security/subjectrightsrequests/detail.py +0 -26
  5574. office365/directory/security/subjectrightsrequests/enumerated_mailbox_location.py +0 -15
  5575. office365/directory/security/subjectrightsrequests/enumerated_site_location.py +0 -15
  5576. office365/directory/security/subjectrightsrequests/history.py +0 -22
  5577. office365/directory/security/subjectrightsrequests/identity.py +0 -21
  5578. office365/directory/security/subjectrightsrequests/mailbox_location.py +0 -10
  5579. office365/directory/security/subjectrightsrequests/request.py +0 -6
  5580. office365/directory/security/subjectrightsrequests/site_location.py +0 -10
  5581. office365/directory/security/subjectrightsrequests/stage_detail.py +0 -19
  5582. office365/directory/security/submission_entity_audit_record.py +0 -10
  5583. office365/directory/security/submission_mail_evidence.py +0 -23
  5584. office365/directory/security/supervisory_review_day_x_insights_audit_record.py +0 -10
  5585. office365/directory/security/synthetic_probe_audit_record.py +0 -10
  5586. office365/directory/security/tag.py +0 -33
  5587. office365/directory/security/team_copilot_interaction_audit_record.py +0 -10
  5588. office365/directory/security/teams_easy_approvals_audit_record.py +0 -10
  5589. office365/directory/security/teams_eval_data_hub_admin_operation_audit_record.py +0 -10
  5590. office365/directory/security/teams_eval_data_hub_data_access_audit_record.py +0 -10
  5591. office365/directory/security/teams_eval_data_hub_permission_change_audit_record.py +0 -10
  5592. office365/directory/security/teams_healthcare_audit_record.py +0 -10
  5593. office365/directory/security/teams_message_evidence.py +0 -42
  5594. office365/directory/security/teams_updates_audit_record.py +0 -10
  5595. office365/directory/security/tenant_allow_block_list_audit_record.py +0 -10
  5596. office365/directory/security/threat_detection_detail.py +0 -16
  5597. office365/directory/security/threat_finder_audit_record.py +0 -10
  5598. office365/directory/security/threat_intelligence_atp_content_data.py +0 -10
  5599. office365/directory/security/threat_intelligence_export_audit_record.py +0 -10
  5600. office365/directory/security/threat_intelligence_mail_data.py +0 -10
  5601. office365/directory/security/threat_intelligence_object_audit_record.py +0 -10
  5602. office365/directory/security/threat_intelligence_url_click_data.py +0 -10
  5603. office365/directory/security/threatintelligence/host.py +0 -138
  5604. office365/directory/security/threatintelligence/host_component.py +0 -46
  5605. office365/directory/security/threatintelligence/host_cookie.py +0 -41
  5606. office365/directory/security/threatintelligence/host_logon_session_evidence.py +0 -21
  5607. office365/directory/security/threatintelligence/host_pair.py +0 -41
  5608. office365/directory/security/threatintelligence/host_port.py +0 -57
  5609. office365/directory/security/threatintelligence/host_port_banner.py +0 -19
  5610. office365/directory/security/threatintelligence/host_port_component.py +0 -19
  5611. office365/directory/security/threatintelligence/host_reputation.py +0 -16
  5612. office365/directory/security/threatintelligence/host_reputation_rule.py +0 -16
  5613. office365/directory/security/threatintelligence/host_ssl_certificate.py +0 -43
  5614. office365/directory/security/threatintelligence/host_tracker.py +0 -41
  5615. office365/directory/security/threatintelligence/hostname.py +0 -21
  5616. office365/directory/security/threatintelligence/profile.py +0 -56
  5617. office365/directory/security/threatintelligence/threat_intelligence.py +0 -193
  5618. office365/directory/security/timeline_event.py +0 -19
  5619. office365/directory/security/todo_audit_record.py +0 -10
  5620. office365/directory/security/topic_modeling_settings.py +0 -17
  5621. office365/directory/security/trainable_classifier_audit_record.py +0 -10
  5622. office365/directory/security/triggers/root.py +0 -9
  5623. office365/directory/security/triggertypes/collection.py +0 -9
  5624. office365/directory/security/triggertypes/event_type.py +0 -47
  5625. office365/directory/security/triggertypes/root.py +0 -24
  5626. office365/directory/security/uam_operation_audit_record.py +0 -10
  5627. office365/directory/security/unclassified_artifact.py +0 -21
  5628. office365/directory/security/unified_group_audit_record.py +0 -10
  5629. office365/directory/security/unified_group_source.py +0 -22
  5630. office365/directory/security/unified_simulation_matched_item_audit_record.py +0 -10
  5631. office365/directory/security/unified_simulation_summary_audit_record.py +0 -10
  5632. office365/directory/security/universal_print_management_audit_record.py +0 -10
  5633. office365/directory/security/universal_print_print_job_audit_record.py +0 -10
  5634. office365/directory/security/urbac_assignment_audit_record.py +0 -10
  5635. office365/directory/security/urbac_enable_state_audit_record.py +0 -10
  5636. office365/directory/security/urbac_role_audit_record.py +0 -10
  5637. office365/directory/security/url_evidence.py +0 -14
  5638. office365/directory/security/user_account.py +0 -27
  5639. office365/directory/security/user_evidence.py +0 -17
  5640. office365/directory/security/user_source.py +0 -27
  5641. office365/directory/security/user_training_audit_record.py +0 -10
  5642. office365/directory/security/usx_workspace_onboarding_audit_record.py +0 -10
  5643. office365/directory/security/vfam_create_policy_audit_record.py +0 -10
  5644. office365/directory/security/vfam_delete_policy_audit_record.py +0 -10
  5645. office365/directory/security/vfam_update_policy_audit_record.py +0 -10
  5646. office365/directory/security/viva_amplify_audit_record.py +0 -10
  5647. office365/directory/security/viva_engage_events_audit_record.py +0 -10
  5648. office365/directory/security/viva_engage_network_association_audit_record.py +0 -10
  5649. office365/directory/security/viva_engage_segment_audit_record.py +0 -10
  5650. office365/directory/security/viva_glint_advanced_configuration_audit_record.py +0 -10
  5651. office365/directory/security/viva_glint_agentic_campaign_audit_record.py +0 -10
  5652. office365/directory/security/viva_glint_feedback_program_audit_record.py +0 -10
  5653. office365/directory/security/viva_glint_organizational_data_audit_record.py +0 -10
  5654. office365/directory/security/viva_glint_pulse_program_audit_record.py +0 -10
  5655. office365/directory/security/viva_glint_pulse_program_respondent_rate_audit_record.py +0 -10
  5656. office365/directory/security/viva_glint_question_audit_record.py +0 -10
  5657. office365/directory/security/viva_glint_role_audit_record.py +0 -10
  5658. office365/directory/security/viva_glint_rubicon_audit_record.py +0 -10
  5659. office365/directory/security/viva_glint_support_access_audit_record.py +0 -10
  5660. office365/directory/security/viva_glint_system_audit_record.py +0 -10
  5661. office365/directory/security/viva_glint_user_audit_record.py +0 -10
  5662. office365/directory/security/viva_glint_user_group_audit_record.py +0 -10
  5663. office365/directory/security/viva_goals_audit_record.py +0 -10
  5664. office365/directory/security/viva_learning_admin_audit_record.py +0 -10
  5665. office365/directory/security/viva_learning_audit_record.py +0 -10
  5666. office365/directory/security/viva_pulse_admin_audit_record.py +0 -10
  5667. office365/directory/security/viva_pulse_organizer_audit_record.py +0 -10
  5668. office365/directory/security/viva_pulse_report_audit_record.py +0 -10
  5669. office365/directory/security/viva_pulse_response_audit_record.py +0 -10
  5670. office365/directory/security/vm_metadata.py +0 -16
  5671. office365/directory/security/vulnerability.py +0 -74
  5672. office365/directory/security/vulnerability_component.py +0 -16
  5673. office365/directory/security/wdatp_alerts_audit_record.py +0 -10
  5674. office365/directory/security/web_content_filtering_audit_record.py +0 -10
  5675. office365/directory/security/whois_base_record.py +0 -59
  5676. office365/directory/security/windows365_customer_lockbox_audit_record.py +0 -10
  5677. office365/directory/security/workplace_analytics_audit_record.py +0 -10
  5678. office365/directory/security/yammer_audit_record.py +0 -10
  5679. office365/directory/security/yammer_user_hiding_audit_record.py +0 -10
  5680. office365/externalconnectors/binary_operator.py +0 -12
  5681. office365/externalconnectors/connection_operation_status.py +0 -15
  5682. office365/externalconnectors/connection_state.py +0 -15
  5683. office365/externalconnectors/external_activity_type.py +0 -15
  5684. office365/externalconnectors/external_item_content_type.py +0 -13
  5685. office365/intune/brand.py +0 -21
  5686. office365/intune/instance_resource_access.py +0 -19
  5687. office365/intune/provisioned_plan.py +0 -27
  5688. office365/intune/resource_permission.py +0 -15
  5689. office365/migration/teams/_extract.py +0 -108
  5690. office365/migration/teams/models.py +0 -73
  5691. office365/onenote/operations/operation.py +0 -35
  5692. office365/partners/billing/billing_period.py +0 -13
  5693. office365/partners/billing/billing_reconciliation.py +0 -26
  5694. office365/runtime/odata/type.py +0 -111
  5695. office365/sharepoint/contentcenter/machinelearning/publications/result.py +0 -9
  5696. office365/sharepoint/customactions/action.py +0 -36
  5697. office365/sharepoint/internal/paths/web.py +0 -24
  5698. office365/sharepoint/publishing/pages/3d/page.py +0 -319
  5699. office365/sharepoint/workflow/task.py +0 -430
  5700. office365_rest_python_client-3.2.0.dist-info/METADATA +0 -605
  5701. office365_rest_python_client-3.2.0.dist-info/RECORD +0 -5743
  5702. /office365/{directory/security → common}/__init__.py +0 -0
  5703. /office365/{directory/security/alerts → intune/devices/configurations/macos}/__init__.py +0 -0
  5704. /office365/{directory/security/attacksimulations → intune/devices/configurations/windows/_10}/__init__.py +0 -0
  5705. /office365/intune/devices/configurations/windows/{10 → _10}/editiontype.py +0 -0
  5706. /office365/intune/{enrollment_state.py → devices/management/enrollment_state.py} +0 -0
  5707. /office365/{directory/security/attacksimulations/operations → intune/devices/management/mobileapps/macos}/__init__.py +0 -0
  5708. /office365/intune/{package_status.py → devices/management/package_status.py} +0 -0
  5709. /office365/intune/{process_integrity_level.py → devices/management/process_integrity_level.py} +0 -0
  5710. /office365/{directory/security/attacksimulations/reports → planner/internal}/__init__.py +0 -0
  5711. /office365/{directory/security/attacksimulations/users → planner/internal/paths}/__init__.py +0 -0
  5712. /office365/runtime/{decorators.py → deprecated.py} +0 -0
  5713. /office365/{directory/security/audit → security}/__init__.py +0 -0
  5714. /office365/{directory/security → security}/action.py +0 -0
  5715. /office365/{directory/security → security}/ai_agent_platform.py +0 -0
  5716. /office365/{directory/security/cases → security/alerts}/__init__.py +0 -0
  5717. /office365/{directory/security → security}/alerts/antispamteamsdirection.py +0 -0
  5718. /office365/{directory/security → security}/alerts/classification.py +0 -0
  5719. /office365/{directory/security → security}/alerts/connection_direction.py +0 -0
  5720. /office365/{directory/security → security}/alerts/connectionstatus.py +0 -0
  5721. /office365/{directory/security → security}/alerts/defenderavstatus.py +0 -0
  5722. /office365/{directory/security → security}/alerts/detectionsource.py +0 -0
  5723. /office365/{directory/security → security}/alerts/detectionstatus.py +0 -0
  5724. /office365/{directory/security → security}/alerts/determination.py +0 -0
  5725. /office365/{directory/security → security}/alerts/emailrole.py +0 -0
  5726. /office365/{directory/security → security}/alerts/evidenceremediationstatus.py +0 -0
  5727. /office365/{directory/security → security}/alerts/evidencerole.py +0 -0
  5728. /office365/{directory/security → security}/alerts/evidenceverdict.py +0 -0
  5729. /office365/{directory/security → security}/alerts/feedback.py +0 -0
  5730. /office365/{directory/security → security}/alerts/googlecloudlocationtype.py +0 -0
  5731. /office365/{directory/security → security}/alerts/iotdeviceimportancetype.py +0 -0
  5732. /office365/{directory/security → security}/alerts/kubernetesplatform.py +0 -0
  5733. /office365/{directory/security → security}/alerts/kubernetesservicetype.py +0 -0
  5734. /office365/{directory/security → security}/alerts/logontype.py +0 -0
  5735. /office365/{directory/security → security}/alerts/registryhive.py +0 -0
  5736. /office365/{directory/security → security}/alerts/registryoperation.py +0 -0
  5737. /office365/{directory/security → security}/alerts/registryvaluetype.py +0 -0
  5738. /office365/{directory/security → security}/alerts/securitynetworkprotocol.py +0 -0
  5739. /office365/{directory/security → security}/alerts/securityresourcetype.py +0 -0
  5740. /office365/{directory/security → security}/alerts/severity.py +0 -0
  5741. /office365/{directory/security → security}/alerts/status.py +0 -0
  5742. /office365/{directory/security → security}/alerts/useraccountsecuritytype.py +0 -0
  5743. /office365/{directory/security → security}/antispam_directionality.py +0 -0
  5744. /office365/{directory/security → security}/artifact.py +0 -0
  5745. /office365/{directory/security/collaboration → security/attacksimulations}/__init__.py +0 -0
  5746. /office365/{directory/security → security}/attacksimulations/account_target_content_type.py +0 -0
  5747. /office365/{directory/security → security}/attacksimulations/clicksource.py +0 -0
  5748. /office365/{directory/security → security}/attacksimulations/endusernotificationpreference.py +0 -0
  5749. /office365/{directory/security → security}/attacksimulations/endusernotificationsettingtype.py +0 -0
  5750. /office365/{directory/security → security}/attacksimulations/endusernotificationtype.py +0 -0
  5751. /office365/{directory/security → security}/attacksimulations/notificationdeliveryfrequency.py +0 -0
  5752. /office365/{directory/security → security}/attacksimulations/notificationdeliverypreference.py +0 -0
  5753. /office365/{directory/security → security}/attacksimulations/oauthappscope.py +0 -0
  5754. /office365/{directory/security/datasecurity → security/attacksimulations/operations}/__init__.py +0 -0
  5755. /office365/{directory/security → security}/attacksimulations/operations/type.py +0 -0
  5756. /office365/{directory/security → security}/attacksimulations/payloadbrand.py +0 -0
  5757. /office365/{directory/security → security}/attacksimulations/payloadcomplexity.py +0 -0
  5758. /office365/{directory/security → security}/attacksimulations/payloaddeliveryplatform.py +0 -0
  5759. /office365/{directory/security → security}/attacksimulations/payloadindustry.py +0 -0
  5760. /office365/{directory/security → security}/attacksimulations/payloadtheme.py +0 -0
  5761. /office365/{directory/security/ediscovery → security/attacksimulations/reports}/__init__.py +0 -0
  5762. /office365/{directory/security → security}/attacksimulations/simulationattacktechnique.py +0 -0
  5763. /office365/{directory/security → security}/attacksimulations/simulationattacktype.py +0 -0
  5764. /office365/{directory/security → security}/attacksimulations/simulationautomationrunstatus.py +0 -0
  5765. /office365/{directory/security → security}/attacksimulations/simulationautomationstatus.py +0 -0
  5766. /office365/{directory/security → security}/attacksimulations/simulationcontentsource.py +0 -0
  5767. /office365/{directory/security → security}/attacksimulations/simulationcontentstatus.py +0 -0
  5768. /office365/{directory/security → security}/attacksimulations/simulationstatus.py +0 -0
  5769. /office365/{directory/security → security}/attacksimulations/targettedusertype.py +0 -0
  5770. /office365/{directory/security → security}/attacksimulations/trainingassignedto.py +0 -0
  5771. /office365/{directory/security → security}/attacksimulations/trainingavailabilitystatus.py +0 -0
  5772. /office365/{directory/security → security}/attacksimulations/trainingcompletionduration.py +0 -0
  5773. /office365/{directory/security → security}/attacksimulations/trainingsettingtype.py +0 -0
  5774. /office365/{directory/security → security}/attacksimulations/trainingstatus.py +0 -0
  5775. /office365/{directory/security → security}/attacksimulations/trainingtype.py +0 -0
  5776. /office365/{directory/security/ediscovery/operations → security/attacksimulations/users}/__init__.py +0 -0
  5777. /office365/{directory/security/healthissues → security/audit}/__init__.py +0 -0
  5778. /office365/{directory/security → security}/audit/audit_log_query_status.py +0 -0
  5779. /office365/{directory/security → security}/audit/whois_domain_status.py +0 -0
  5780. /office365/{directory/security → security}/audit/whois_history_record.py +0 -0
  5781. /office365/{directory/security → security}/authority_template.py +0 -0
  5782. /office365/{directory/security/incidents → security/cases}/__init__.py +0 -0
  5783. /office365/{directory/security → security}/cases/action.py +0 -0
  5784. /office365/{directory/security → security}/cases/additionaldataoptions.py +0 -0
  5785. /office365/{directory/security → security}/cases/additionaloptions.py +0 -0
  5786. /office365/{directory/security → security}/cases/exportcriteria.py +0 -0
  5787. /office365/{directory/security → security}/cases/exportfilestructure.py +0 -0
  5788. /office365/{directory/security → security}/cases/exportformat.py +0 -0
  5789. /office365/{directory/security → security}/cases/exportlocation.py +0 -0
  5790. /office365/{directory/security → security}/cases/exportoptions.py +0 -0
  5791. /office365/{directory/security → security}/cases/itemstoinclude.py +0 -0
  5792. /office365/{directory/security → security}/cases/operationstatus.py +0 -0
  5793. /office365/{directory/security → security}/cases/reviewsetsettings.py +0 -0
  5794. /office365/{directory/security → security}/cases/statisticsoptions.py +0 -0
  5795. /office365/{directory/security → security}/cases/status.py +0 -0
  5796. /office365/{directory/security → security}/cases/type.py +0 -0
  5797. /office365/{directory/security → security}/childselectability.py +0 -0
  5798. /office365/{directory/security → security}/cloudattachmentversion.py +0 -0
  5799. /office365/{directory/security/labels → security/collaboration}/__init__.py +0 -0
  5800. /office365/{directory/security → security}/containerportprotocol.py +0 -0
  5801. /office365/{directory/security → security}/contentformat.py +0 -0
  5802. /office365/{directory/security → security}/contentprocessingerrortype.py +0 -0
  5803. /office365/{directory/security → security}/correlation_reason.py +0 -0
  5804. /office365/{directory/security → security}/custom_security_attribute_comparison_operator.py +0 -0
  5805. /office365/{directory/security/labels/retention → security/datasecurity}/__init__.py +0 -0
  5806. /office365/{directory/security → security}/delivery_action.py +0 -0
  5807. /office365/{directory/security → security}/delivery_location.py +0 -0
  5808. /office365/{directory/security → security}/department_template.py +0 -0
  5809. /office365/{directory/security/scorecontrol → security/ediscovery}/__init__.py +0 -0
  5810. /office365/{directory/security/search → security/ediscovery/operations}/__init__.py +0 -0
  5811. /office365/{directory/security → security}/event_source.py +0 -0
  5812. /office365/{directory/security → security}/file_plan_reference_template.py +0 -0
  5813. /office365/{directory/security → security}/filehashalgorithm.py +0 -0
  5814. /office365/{directory/security/securescores → security/healthissues}/__init__.py +0 -0
  5815. /office365/{directory/security → security}/healthissues/deploymentstatus.py +0 -0
  5816. /office365/{directory/security → security}/healthissues/sensorhealthstatus.py +0 -0
  5817. /office365/{directory/security → security}/healthissues/sensortype.py +0 -0
  5818. /office365/{directory/security → security}/healthissues/severity.py +0 -0
  5819. /office365/{directory/security → security}/healthissues/sourcetype.py +0 -0
  5820. /office365/{directory/security → security}/healthissues/status.py +0 -0
  5821. /office365/{directory/security → security}/healthissues/type.py +0 -0
  5822. /office365/{directory/security → security}/hunting_row_result.py +0 -0
  5823. /office365/{directory/security/subjectrightsrequests → security/incidents}/__init__.py +0 -0
  5824. /office365/{directory/security → security}/incidents/status.py +0 -0
  5825. /office365/{directory/security → security}/indicator_source.py +0 -0
  5826. /office365/{directory/security → security}/intelligence_profile_kind.py +0 -0
  5827. /office365/{directory/security → security}/investigation_state.py +0 -0
  5828. /office365/{directory/security/threatintelligence → security/labels}/__init__.py +0 -0
  5829. /office365/{directory/security/threatintelligence/hosts → security/labels/retention}/__init__.py +0 -0
  5830. /office365/{directory/security → security}/labels/retention/actionafterretentionperiod.py +0 -0
  5831. /office365/{directory/security → security}/labels/retention/behaviorduringretentionperiod.py +0 -0
  5832. /office365/{directory/security → security}/labels/retention/defaultrecordbehavior.py +0 -0
  5833. /office365/{directory/security → security}/labels/retention/duration.py +0 -0
  5834. /office365/{directory/security → security}/labels/retention/trigger.py +0 -0
  5835. /office365/{directory/security → security}/mailbox_configuration_type.py +0 -0
  5836. /office365/{directory/security → security}/onboarding_status.py +0 -0
  5837. /office365/{directory/security → security}/policypivotproperty.py +0 -0
  5838. /office365/{directory/security → security}/protectionscopestate.py +0 -0
  5839. /office365/{directory/security → security}/protocol_type.py +0 -0
  5840. /office365/{directory/security → security}/purgeareas.py +0 -0
  5841. /office365/{directory/security → security}/purgetype.py +0 -0
  5842. /office365/{directory/security → security}/query_type.py +0 -0
  5843. /office365/{directory/security → security}/remediation_action.py +0 -0
  5844. /office365/{directory/security → security}/remediation_severity.py +0 -0
  5845. /office365/{directory/security → security}/restrictionaction.py +0 -0
  5846. /office365/{directory/security → security}/riskscore.py +0 -0
  5847. /office365/{directory/security/threatintelligence/whoisrecords → security/scorecontrol}/__init__.py +0 -0
  5848. /office365/{directory/security/triggers → security/search}/__init__.py +0 -0
  5849. /office365/{directory/security → security}/search/datasourcecontainerstatus.py +0 -0
  5850. /office365/{directory/security → security}/search/datasourceholdstatus.py +0 -0
  5851. /office365/{directory/security → security}/search/datasourcescopes.py +0 -0
  5852. /office365/{directory/security → security}/search/documentversion.py +0 -0
  5853. /office365/{directory/security/triggertypes → security/securescores}/__init__.py +0 -0
  5854. /office365/{directory/security → security}/sensor_candidate_activation_mode.py +0 -0
  5855. /office365/{directory/security → security}/service_principal_type.py +0 -0
  5856. /office365/{directory/security → security}/service_source.py +0 -0
  5857. /office365/{directory/security → security}/subcategory_template.py +0 -0
  5858. /office365/{intune/devices/configurations/windows/10 → security/subjectrightsrequests}/__init__.py +0 -0
  5859. /office365/{directory/security → security}/teams_delivery_location.py +0 -0
  5860. /office365/{directory/security → security}/teams_message_delivery_action.py +0 -0
  5861. /office365/{directory/security → security}/threat_type.py +0 -0
  5862. /office365/{sharepoint/publishing/pages/3d → security/threatintelligence}/__init__.py +0 -0
  5863. /office365/{directory/security → security}/threatintelligence/article_indicator.py +0 -0
  5864. /office365/{directory/security → security}/threatintelligence/host_port_protocol.py +0 -0
  5865. /office365/{directory/security → security}/threatintelligence/host_port_status.py +0 -0
  5866. /office365/{directory/security → security}/threatintelligence/host_reputation_classification.py +0 -0
  5867. /office365/{directory/security → security}/threatintelligence/host_reputation_rule_severity.py +0 -0
  5868. /office365/{directory/security → security}/timeline_event_type.py +0 -0
  5869. /office365/{directory/security → security}/triggers/eventpropagationstatus.py +0 -0
  5870. /office365/{directory/security → security}/triggers/eventstatustype.py +0 -0
  5871. /office365/{directory/security → security}/useractivitytype.py +0 -0
  5872. /office365/{directory/security → security}/useractivitytypes.py +0 -0
  5873. /office365/{directory/security → security}/userscopetype.py +0 -0
  5874. /office365/{directory/security → security}/verdict_category.py +0 -0
  5875. /office365/{directory/security → security}/vm_cloud_provider.py +0 -0
  5876. /office365/{directory/security → security}/vulnerability_severity.py +0 -0
  5877. /office365/sharepoint/publishing/pages/{3d → _3d}/types.py +0 -0
  5878. /office365/{intune/print → todo/tasks}/taskstatus.py +0 -0
  5879. {office365_rest_python_client-3.2.0.dist-info → office365_rest_python_client-3.3.1.dist-info}/WHEEL +0 -0
@@ -10,81 +10,726 @@ 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
- from collections.abc import Callable
16
- from datetime import timezone
17
- from typing import TYPE_CHECKING, cast
18
-
19
- from office365.migration.adapters import MigrationProgress
20
- from office365.migration.base import MigrationItem, PermissionEntry
14
+ from collections.abc import Callable, Iterable
15
+ from enum import Enum
16
+ from typing import TYPE_CHECKING, Any, cast
17
+
18
+ from typing_extensions import TypeAlias
19
+
20
+ from office365.migration.adapters import MigrationProgress, checksum
21
+ from office365.migration.base import (
22
+ MigrationItem,
23
+ PermissionEntry,
24
+ Principal,
25
+ conflict_to_on_conflict,
26
+ normalize_puid,
27
+ )
28
+ from office365.migration.sharepoint.structure import ListStructure, provision_list_structure
21
29
  from office365.migration.sharepoint.transfer import Failure
22
- from office365.runtime.converters.json_file import record_to_json
23
- from office365.runtime.converters.scalars import iso_or_none, parse_datetime, parse_int
30
+ from office365.runtime.converters.records import records_from_items
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
24
40
  from office365.runtime.limits import DEFAULT_BATCH_SIZE
41
+ from office365.runtime.odata.comparable import digest
25
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
26
46
  from office365.sharepoint.fields.builtin_field_name import SYSTEM_FIELD_NAMES
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
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
27
56
 
28
57
  if TYPE_CHECKING:
58
+ from office365.migration.map import ContentTypeMap
59
+ from office365.sharepoint.fields.field import Field
29
60
  from office365.sharepoint.files.file import File
30
61
  from office365.sharepoint.folders.folder import Folder
31
62
  from office365.sharepoint.lists.list import List as SPList
32
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
66
+
67
+ _LIST_ITEM = TypeSchema.of(ListItem)
68
+ _SECURABLE = TypeSchema.of(SecurableObject)
69
+
70
+
71
+ def _cloned_context(obj):
72
+ """A fresh ``ClientContext`` clone for ``obj`` (same auth + transport, own queue)."""
73
+ ctx = obj.context
74
+ return ctx.clone(ctx.base_url)
75
+
76
+
77
+ def _cloned_list(sp_list: "SPList", context=None) -> "SPList":
78
+ """The same list, addressed by id and loaded on ``context`` (or a clone of it)."""
79
+ list_id = sp_list.id
80
+ if not list_id:
81
+ raise ValueError("cannot rebind a list that was never loaded")
82
+ ctx = context if context is not None else _cloned_context(sp_list)
83
+ return ctx.web.lists.get_by_id(list_id).get().execute_query()
84
+
85
+
86
+ def _cloned_folder(folder: "Folder", context=None) -> "Folder":
87
+ """The same folder, addressed by server-relative path and loaded on ``context``."""
88
+ server_relative_url = folder.server_relative_url
89
+ if not server_relative_url:
90
+ raise ValueError("cannot rebind a folder that was never loaded")
91
+ ctx = context if context is not None else _cloned_context(folder)
92
+ return ctx.web.get_folder_by_server_relative_path(server_relative_url).get().execute_query()
93
+
94
+
95
+ #: The target's typed columns: ``(lookup: name -> referenced list id, user names,
96
+ #: multi-lookup: name -> referenced list id, multi-user names, taxonomy:
97
+ #: name -> (allows many, hidden note field internal name), multi-choice names)``.
98
+ _TypedColumns: TypeAlias = (
99
+ "tuple[dict[str, str], set[str], dict[str, str], set[str], dict[str, tuple[bool, str | None]], set[str]]"
100
+ )
101
+
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)]
105
+
106
+ #: Marker column added to a migrated list recording each item's source id. It makes
107
+ #: a re-run idempotent and lets post-run verification pair source and target items.
108
+ DEFAULT_LIST_IDENTITY_FIELD = "MigrationSourceId"
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
+ )
115
+
116
+ #: Moderation columns of a list item. They only exist on a list whose
117
+ #: ``EnableModeration`` is on, so selecting them unconditionally fails outright.
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
+
126
+ #: How many paths a per-run warning names before it summarizes the rest.
127
+ _WARNING_SAMPLE = 5
128
+
129
+
130
+ def _scalar_mapping(value: Any) -> dict | None:
131
+ """A value object as a plain mapping with scalar members, or ``None``.
132
+
133
+ Only a shallow mapping of scalars is accepted, so a navigation property (a
134
+ ``ClientObject``) or a typed payload carrying a nested ``__metadata`` is never
135
+ mistaken for a column value.
136
+ """
137
+ if not isinstance(value, dict) or not value:
138
+ return None
139
+ if any(item is not None and not isinstance(item, (str, int, float, bool)) for item in value.values()):
140
+ return None
141
+ return dict(value)
142
+
143
+
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)
152
+
153
+
154
+ def _folder_value_columns(fields: list[Any]) -> set[str]:
155
+ """The columns a folder's own metadata can live in (writable, non-system).
156
+
157
+ A read of a folder also returns computed and read-only columns (link filenames,
158
+ compliance flags, version labels); writing those is rejected and comparing them
159
+ would only echo the folder's own name back.
160
+ """
161
+ return {
162
+ field.internal_name
163
+ for field in fields
164
+ if field.internal_name
165
+ # An underscore-prefixed internal name is SharePoint's own storage column; it
166
+ # is not reliably projectable (the same rule the safe fallback projection uses).
167
+ and not field.internal_name.startswith("_")
168
+ and not field.hidden
169
+ and not field.read_only_field
170
+ and not field.field_type_kind.is_server_assigned
171
+ and field.internal_name not in _FOLDER_RECORD_EXCLUDED
172
+ }
173
+
174
+
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"}
182
+
183
+
184
+ def _content_checksum(record: dict, extra_excluded: "frozenset[str]" = frozenset()) -> str:
185
+ """MD5 of an item's content columns in a stable, order-independent form.
186
+
187
+ The list source and target both use this so record content can be reconciled:
188
+ only scalar, multi-value and value-object columns are hashed (navigation
189
+ properties and excluded keys are dropped) and keys are sorted, so the two sides
190
+ agree regardless of property iteration order. A null column is treated as
191
+ absent: the source drops an empty multi-value column while the target reads it
192
+ back as ``None``, and both mean "no value".
193
+ """
194
+ content = {}
195
+ for key, value in record.items():
196
+ if key in _CONTENT_EXCLUDED or key in extra_excluded or value is None:
197
+ continue
198
+ if isinstance(value, (str, int, float, bool, list, tuple)):
199
+ content[key] = value
200
+ continue
201
+ mapping = _scalar_mapping(value)
202
+ if mapping is not None:
203
+ content[key] = mapping
204
+ return digest(content)
205
+
206
+
207
+ def _folder_record_values(record: dict) -> dict:
208
+ """The column values of a folder item that travel to (or compare with) the target.
209
+
210
+ The projection already narrows the read to the folder's own writable columns; here
211
+ only the identity/system columns are dropped, and an empty value is treated as
212
+ absent on both sides — a source read reports ``""`` where a target read reports
213
+ ``None``, and both mean "no value".
214
+ """
215
+ return {
216
+ key: value for key, value in record.items() if key not in _FOLDER_RECORD_EXCLUDED and value not in (None, "")
217
+ }
33
218
 
34
- _TAXONOMY_FIELD_TYPES = {"TaxonomyFieldType", "TaxonomyFieldTypeMulti"}
35
219
 
36
- # Always-projected system metadata (reliable author/editor identity).
37
- _METADATA_SELECT = ["AuthorId", "EditorId"]
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))}
38
223
 
39
224
 
40
- def _sp_timestamp(value: str | None) -> str | None:
41
- """Normalize an ISO-8601 timestamp to the ``...Z`` UTC form SharePoint expects.
225
+ def _taxonomy_terms(value: Any) -> list[dict[str, str]]:
226
+ """A taxonomy cell as portable ``{"TermGuid": ...}`` terms.
42
227
 
43
- ``ValidateUpdateListItem`` (``datesInUTC=True``) rejects the ``+00:00`` offset
44
- form the migration items carry, so convert to a naive UTC ``Z`` string.
228
+ Only ``TermGuid`` is carried: a per-site ``WssId`` is meaningless elsewhere and
229
+ ``Label`` is not authoritative (a read may return the WssId string, and the
230
+ server resolves a write by term id regardless of the label).
45
231
  """
46
- if not value:
232
+ terms: list[dict[str, str]] = []
233
+ for item in values_of(value) or []:
234
+ guid = item.get("TermGuid") if isinstance(item, dict) else getattr(item, "TermGuid", None)
235
+ if guid:
236
+ terms.append({"TermGuid": str(guid)})
237
+ return terms
238
+
239
+
240
+ def _is_taxonomy_value(value: Any) -> bool:
241
+ """Whether a projected value is a taxonomy term (single value or a collection)."""
242
+ return bool(_taxonomy_terms(value))
243
+
244
+
245
+ def _taxonomy_guids(value: Any) -> list[str]:
246
+ return [term["TermGuid"] for term in _taxonomy_terms(value)]
247
+
248
+
249
+ def _canonicalize_taxonomy_record(record: dict) -> dict:
250
+ """Replace taxonomy values with a sorted list of term ids for comparison.
251
+
252
+ ``Label`` is cosmetic and ``WssId`` is site-local, so neither belongs in the
253
+ content checksum; the term id is the portable identity. Sorting also keeps the
254
+ checksum independent of the order a read happens to return the terms in.
255
+ """
256
+ if not any(_is_taxonomy_value(value) for value in record.values()):
257
+ return record
258
+ canonical = dict(record)
259
+ for key, value in record.items():
260
+ if _is_taxonomy_value(value):
261
+ canonical[key] = sorted(_taxonomy_guids(value))
262
+ return canonical
263
+
264
+
265
+ def _collection_payload(values: list) -> dict:
266
+ """The JSON shape SharePoint accepts for a multi-value column.
267
+
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.
272
+ """
273
+ return {"results": values}
274
+
275
+
276
+ def _report_rejected_fields(result, warnings: list[str], label: str) -> None:
277
+ """Warn about ``ValidateUpdateListItem`` fields the server rejected.
278
+
279
+ A rejected field does not raise over HTTP — the response carries a per-field
280
+ ``HasException``/``ErrorMessage`` — and worse, SharePoint rolls the whole batch
281
+ back, so a sibling ``Created``/``Modified`` write is discarded too. Surfacing it
282
+ keeps that invisible loss honest (and testable).
283
+ """
284
+ values = getattr(result, "value", None) or []
285
+ for value in values:
286
+ if getattr(value, "HasException", False):
287
+ warnings.append(f"{label}: {value.FieldName} rejected ({value.ErrorMessage})")
288
+
289
+
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.
297
+
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.
304
+ """
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
+
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, "")}
323
+
324
+
325
+ #: SiteAssets is the one library that also holds per-site infrastructure — the
326
+ #: site icon and the auto-provisioned OneNote folder.
327
+ _SITE_ASSETS_URL_SUFFIX = "/SiteAssets"
328
+
329
+
330
+ def _site_assets_scaffolding(folder) -> tuple[str, ...]:
331
+ """SiteAssets-only SharePoint-owned entries for this web (empty otherwise).
332
+
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.
335
+ """
336
+ url = (folder.server_relative_url or "").rstrip("/")
337
+ if not url.endswith(_SITE_ASSETS_URL_SUFFIX):
338
+ return ()
339
+ web = folder.context.web
340
+ if not web.properties.get("Title"):
341
+ web.ensure_properties(["Title"]).execute_query()
342
+ title = web.title
343
+ names = ["__siteIcon__.png"]
344
+ if title:
345
+ names.append(f"{title} Notebook")
346
+ return tuple(names)
347
+
348
+
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
352
+
353
+
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``."""
358
+ ptype = getattr(member, "principal_type", None)
359
+ if ptype == PrincipalType.User:
360
+ return "user"
361
+ if ptype == PrincipalType.SharePointGroup:
362
+ return "group"
363
+ return None
364
+
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")
368
+
369
+
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.
375
+ """
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
+ )
383
+
384
+
385
+ def _has_unique_role_assignments(securable, *, refresh: bool = False) -> bool:
386
+ """Whether a securable has unique (broken-inheritance) role assignments.
387
+
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.
399
+ """
400
+ unique = getattr(securable, "has_unique_role_assignments", None)
401
+ if unique is not None and not refresh:
402
+ return bool(unique)
403
+ try:
404
+ securable.ensure_properties([_UNIQUE_PERMISSIONS], refresh=refresh).execute_query()
405
+ except Exception: # an unreadable flag is treated as "not unique"
406
+ return False
407
+ return bool(securable.properties.get(_UNIQUE_PERMISSIONS))
408
+
409
+
410
+ def _replay_role_assignments(
411
+ securable,
412
+ principals: "_TargetPrincipals",
413
+ permissions: list[PermissionEntry],
414
+ warnings: list[str],
415
+ label: str,
416
+ ) -> None:
417
+ """Replay an item's unique ACLs onto a target item: additive, never destructive.
418
+
419
+ Every principal is resolved on the target first (users via ``EnsureUser``,
420
+ groups by name, default groups by role kind). Inheritance is broken only when
421
+ the target item still inherits *and* at least one assignment resolved: an item
422
+ whose every principal is unresolvable (a cross-tenant account, an app
423
+ principal) would otherwise end up with an **empty** ACL — inheritance broken,
424
+ nobody granted — which is worse than leaving it inheriting, so that case is
425
+ reported and the item is left alone.
426
+
427
+ A re-run therefore adds only what is missing and never removes an assignment
428
+ the source does not grant. The caller executes the queued requests.
429
+ """
430
+ resolved: list[tuple[Any, Any]] = []
431
+ for entry in permissions:
432
+ principal = principals.principal(entry.principal_name)
433
+ if principal is None:
434
+ continue
435
+ for role_name in entry.roles:
436
+ role = principals.role(role_name)
437
+ if role is None:
438
+ warnings.append(f"permissions {label}: could not resolve role {role_name!r}")
439
+ continue
440
+ resolved.append((principal, role))
441
+ if not resolved:
442
+ warnings.append(
443
+ f"permissions for {label!r} were not restored: no assignment could be resolved on the "
444
+ "target, and breaking inheritance would leave the item with an empty ACL — it still inherits"
445
+ )
446
+ return
447
+ if not _has_unique_role_assignments(securable, refresh=True):
448
+ securable.break_role_inheritance(copy_role_assignments=False, clear_sub_scopes=False)
449
+ for principal, role in resolved:
450
+ securable.add_role_assignment(principal, role)
451
+
452
+
453
+ def _user_login(web, user_id: Any, cache: dict[int, str | None]) -> str | None:
454
+ """Resolve a target user id to its login name, cached."""
455
+ key = parse_int(user_id)
456
+ if key is None:
47
457
  return None
48
- parsed = parse_datetime(value)
49
- if parsed is None:
50
- return value
51
- if parsed.tzinfo is not None:
52
- parsed = parsed.astimezone(timezone.utc).replace(tzinfo=None)
53
- return parsed.strftime("%Y-%m-%dT%H:%M:%SZ")
458
+ if key in cache:
459
+ return cache[key]
460
+ login: str | None = None
461
+ try:
462
+ user = web.site_users.get_by_id(key).get().execute_query()
463
+ login = user.login_name or None
464
+ except Exception: # noqa: BLE001 — an unresolvable id yields no login
465
+ login = None
466
+ cache[key] = login
467
+ return login
468
+
469
+
470
+ class _DefaultGroups:
471
+ """Maps a web's associated default groups (Owners/Members/Visitors).
472
+
473
+ Default groups are titled after the site (``team Owners``), so a source and
474
+ target in the same tenant rarely share the exact name. These groups are used
475
+ both to resolve a source name onto the target *and* to normalize the name to a
476
+ canonical ``default:<Kind>`` token so the permission diff compares like with
477
+ like (a renamed site still verifies as preserved). Loaded once, lazily.
478
+ """
54
479
 
480
+ ATTRS = (
481
+ ("Owners", "associated_owner_group"),
482
+ ("Members", "associated_member_group"),
483
+ ("Visitors", "associated_visitor_group"),
484
+ )
55
485
 
56
- def is_taxonomy_validation(exc: Exception) -> bool:
57
- """True when a request failed because a Managed Metadata (taxonomy) column
58
- references a term set / term that no longer exists.
486
+ def __init__(self, web) -> None:
487
+ self._web = web
488
+ self._by_kind: dict[str, Any] | None = None
489
+ self._by_title: dict[str, str] = {}
59
490
 
60
- SharePoint raises ``SPFieldValidationException`` ("the given guid does not
61
- exist in the term store") while composing the item payload — the exact case
62
- that makes a plain list-items read fail.
491
+ def _load(self) -> None:
492
+ if self._by_kind is not None:
493
+ return
494
+ self._by_kind = {}
495
+ for kind, attr in self.ATTRS:
496
+ group = getattr(self._web, attr, None)
497
+ if group is None:
498
+ continue
499
+ try:
500
+ group.get().execute_query()
501
+ except Exception: # noqa: BLE001 — an unreadable group is skipped
502
+ continue
503
+ self._by_kind[kind] = group
504
+ title = getattr(group, "title", None) or getattr(group, "login_name", None)
505
+ if title:
506
+ self._by_title[title] = kind
507
+
508
+ def group(self, kind: str):
509
+ self._load()
510
+ return self._by_kind.get(kind) if self._by_kind else None
511
+
512
+ def normalize(self, name: str) -> str:
513
+ self._load()
514
+ kind = self._by_title.get(name)
515
+ return f"default:{kind}" if kind else name
516
+
517
+
518
+ class _TargetPrincipals:
519
+ """Resolve source principals and role definitions on a target web (cached).
520
+
521
+ Users are ensured on the site (``EnsureUser``) so their numeric id can be used
522
+ for authorship and role assignments; groups are matched by name, and the
523
+ default SharePoint groups (Owners/Members/Visitors) fall back to the target
524
+ web's associated groups so a renamed site (``team`` -> ``team_out``) still
525
+ maps its role assignments. Anything that cannot be resolved is skipped with a
526
+ warning (same-tenant, best-effort).
63
527
  """
64
- text = f"{getattr(exc, 'code', '') or ''} {getattr(exc, 'message', '') or ''} {exc}".lower()
65
- return "spfieldvalidationexception" in text and "term store" in text
66
528
 
529
+ def __init__(self, web, warnings: list[str]) -> None:
530
+ self._web = web
531
+ self._warnings = warnings
532
+ self._users: dict[str, Any] = {}
533
+ self._roles: "dict[str, RoleDefinition] | None" = None
534
+ self._defaults = _DefaultGroups(web)
535
+
536
+ @staticmethod
537
+ def _strip_claims(name: str) -> str:
538
+ return name.rsplit("|", 1)[-1] if name.startswith("i:0#") else name
539
+
540
+ def normalize(self, name: str) -> str:
541
+ """Canonical principal name (default groups collapse to ``default:<Kind>``)."""
542
+ return self._defaults.normalize(name)
543
+
544
+ @site_access(SiteLevel.MANAGE)
545
+ def user(self, login: str | None):
546
+ """Ensure a user login on the target site and return its ``User`` object."""
547
+ if not login:
548
+ return None
549
+ login = self._strip_claims(login)
550
+ if login in self._users:
551
+ return self._users[login]
552
+ obj = None
553
+ try:
554
+ obj = self._web.ensure_user(login).execute_query()
555
+ except Exception as e: # noqa: BLE001 — an unresolvable principal is skipped
556
+ self._warnings.append(f"could not ensure target user {login!r}: {e}")
557
+ self._users[login] = obj
558
+ return obj
559
+
560
+ @site_access(SiteLevel.MANAGE)
561
+ def principal(self, name: str):
562
+ """Resolve a source principal (user or group) to a target principal object."""
563
+ if not name:
564
+ return None
565
+ login = self._strip_claims(name)
566
+ if login.startswith("default:"):
567
+ return self._defaults.group(login.split(":", 1)[1])
568
+ if "@" in login:
569
+ return self.user(login)
570
+ group = None
571
+ try:
572
+ group = self._web.site_groups.get_by_name(login).get().execute_query()
573
+ except Exception: # noqa: BLE001 — fall back to the default groups below
574
+ group = None
575
+ if group is None:
576
+ kind = login.rsplit(" ", 1)[-1]
577
+ if kind in {"Owners", "Members", "Visitors"}:
578
+ group = self._defaults.group(kind)
579
+ if group is not None:
580
+ return group
581
+ self._warnings.append(f"could not resolve principal {name!r} on the target")
582
+ return None
67
583
 
68
- def taxonomy_internal_names(fields) -> list[str]:
69
- """Internal names of Managed Metadata columns in a loaded field set."""
70
- names: list[str] = []
71
- for field in fields:
72
- type_name = getattr(field, "type_as_string", None) or ""
73
- schema = getattr(field, "schema_xml", None) or ""
74
- if type_name in _TAXONOMY_FIELD_TYPES or "TermSetId=" in schema:
75
- internal_name = getattr(field, "internal_name", None)
76
- if internal_name:
77
- names.append(internal_name)
78
- return list(dict.fromkeys(names))
584
+ @site_access(SiteLevel.MANAGE)
585
+ def role(self, name: str) -> "RoleDefinition | None":
586
+ """Resolve (and cache) a target role definition by name."""
587
+ if self._roles is None:
588
+ loaded = self._web.role_definitions.get().execute_query()
589
+ self._roles = {rd.name: rd for rd in loaded if rd.name}
590
+ return self._roles.get(name)
591
+
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
+
648
+ def _read_role_assignments(
649
+ securable,
650
+ resolve: Callable[[Any], "Principal | None"] | None = None,
651
+ normalize: Callable[[str], str] | None = None,
652
+ ) -> list[PermissionEntry]:
653
+ """Read a securable object's role assignments into ``PermissionEntry``s.
654
+
655
+ One entry per principal (user or group), keyed by login name; the target uses
656
+ the same shape so the permission diff compares like with like. ``normalize``
657
+ (when supplied) canonicalizes a principal name — default groups collapse to
658
+ ``default:<Kind>`` so a renamed site still compares as preserved. Role names are
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).
665
+ """
666
+ assignments = securable.get_role_assignments().execute_query()
667
+ result: list[PermissionEntry] = []
668
+ for assignment in assignments:
669
+ member = assignment.member
670
+ name = member.login_name or member.user_principal_name
671
+ if not name:
672
+ continue
673
+ roles: list[str] = []
674
+ role_masks: dict[str, str] = {}
675
+ for role in assignment.role_definition_bindings:
676
+ if not role.name:
677
+ continue
678
+ roles.append(role.name)
679
+ mask = role.perm_mask
680
+ if mask is not None:
681
+ role_masks[role.name] = mask
682
+ entry = PermissionEntry(
683
+ principal_name=normalize(name) if normalize is not None else name,
684
+ roles=roles,
685
+ role_masks=role_masks,
686
+ principal_type=_principal_kind(member),
687
+ )
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":
691
+ principal = resolve(getattr(member, "id", None))
692
+ if principal is not None:
693
+ entry.system_id = principal.system_id
694
+ entry.display_name = principal.display_name
695
+ entry.email = principal.email
696
+ result.append(entry)
697
+ return result
79
698
 
80
699
 
81
700
  class SharePointListSource:
82
701
  """Enumerates a SharePoint list's items into record migration items."""
83
702
 
703
+ # Marks this source as emitting list-item attachments as extra items (see DataSource).
704
+ supports_attachments = True
705
+
706
+ # Marks this source as annotating Person columns with a portable login name so the
707
+ # target can resolve them (see ``_annotate_person_logins``).
708
+ supports_typed_values = True
709
+
710
+ def rebind(self) -> "SharePointListSource":
711
+ """This source on its own cloned context, so another thread can drive it.
712
+
713
+ A context owns one pending-query queue: two adapters sharing it interleave
714
+ their deferred queries. Re-addressing the same list (by id) on a ``clone``
715
+ — which shares the authenticated transport — lets a session run several
716
+ list jobs in parallel over one connection pool. Read caches are per-run and
717
+ deliberately not carried over.
718
+ """
719
+ return SharePointListSource(_cloned_list(self._list), self._select)
720
+
84
721
  def __init__(self, source_list: "SPList", select: list[str] | None = None) -> None:
85
722
  self._list = source_list
86
723
  self._select = select
87
724
  self._records: dict[str, dict] = {}
725
+ self._items: dict[str, Any] = {}
726
+ self._attachments: dict[str, Any] = {}
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]]] = {}
730
+ self._default_groups: _DefaultGroups | None = None
731
+ self._source_fields_cache: list[Field] | None = None
732
+ self._folder_records_cache: dict[str, dict] | None = None
88
733
  self.warnings: list[str] = []
89
734
 
90
735
  def label(self) -> str:
@@ -93,11 +738,11 @@ class SharePointListSource:
93
738
  def list_items(self, progress: MigrationProgress = None) -> list[MigrationItem]:
94
739
  try:
95
740
  loaded = self._load_items(self._select)
96
- except Exception as e: # noqa: BLE001 — see the taxonomy fallback below
97
- # A full read of a list with an orphaned Managed Metadata column
98
- # fails server-side; re-enumerate excluding those columns instead
99
- # of aborting the export. An explicit --select is honored as-is.
100
- 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:
101
746
  raise
102
747
  self.warnings.append(
103
748
  "Full item read failed — a Managed Metadata column references a missing term set; "
@@ -112,12 +757,29 @@ class SharePointListSource:
112
757
  loaded = self._load_items(["Id", "Title"])
113
758
  return self._project(loaded, progress)
114
759
 
115
- def _load_items(self, select: list[str] | None):
760
+ def _load_items(self, select: list[str] | None, folder_only: bool = False):
116
761
  items = self._list.items
117
762
  # A full read projects ``*`` plus the system metadata so author/editor ids
118
- # are captured reliably; an explicit/safe projection is honored as-is.
119
- columns = ["*", *_METADATA_SELECT] if select is None else select
120
- return items.select(columns).get_all().execute_query()
763
+ # and the unique-ACL flag are captured in one query (``*`` omits them);
764
+ # an explicit/safe projection is honored as-is.
765
+ if select is None:
766
+ columns = ["*", *_METADATA_SELECT]
767
+ # A ``*`` projection also omits multi-value Lookup ids (and returns
768
+ # multi-person ids only inconsistently); select each ``<name>Id``
769
+ # explicitly so the values are not silently lost.
770
+ for name in self._multi_columns():
771
+ key = ListItem.value_column(name)
772
+ if key not in columns:
773
+ columns.append(key)
774
+ # Expand attachments so they can be migrated alongside their item.
775
+ query = items.select(columns).expand(["AttachmentFiles"])
776
+ if folder_only:
777
+ query = query.filter("FSObjType eq 1")
778
+ return query.get_all().execute_query()
779
+ query = items.select(select)
780
+ if folder_only:
781
+ query = query.filter("FSObjType eq 1")
782
+ return query.get_all().execute_query()
121
783
 
122
784
  def _safe_select(self) -> list[str]:
123
785
  """Fallback projection: visible, non-system columns minus Managed Metadata.
@@ -127,7 +789,7 @@ class SharePointListSource:
127
789
  stays on the list's user columns only.
128
790
  """
129
791
  fields = self._list.fields.get().execute_query()
130
- 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))
131
793
  self.warnings.append(f"excluded Managed Metadata column(s): {', '.join(sorted(taxonomy)) or 'none'}")
132
794
  columns = ["Id"]
133
795
  for field in fields:
@@ -142,34 +804,450 @@ class SharePointListSource:
142
804
  return columns
143
805
 
144
806
  def _project(self, loaded, progress: MigrationProgress) -> list[MigrationItem]:
145
- from office365.runtime.converters.records import iter_records
146
-
147
- # Reuse the shared record projection (raw values, no JSON coercion) so the
148
- # migration payload matches the data pipeline's.
149
- records = iter_records(loaded, raw=True)
807
+ records = self._project_records(loaded)
150
808
  result: list[MigrationItem] = []
809
+ pending_attachments: list[tuple[str, Any]] = []
151
810
  for item, record in zip(loaded, records):
152
- self._records[str(item.id)] = record
811
+ item_id = str(item.id)
812
+ self._records[item_id] = record
813
+ self._items[item_id] = item
814
+ author_id = parse_int(record.get("AuthorId"))
815
+ editor_id = parse_int(record.get("EditorId"))
816
+ planned = MigrationItem(
817
+ source_path=f"{self._list.title}/{item_id}",
818
+ dest_path=item_id,
819
+ item_type="record",
820
+ modified=iso_or_none(record.get("Modified")),
821
+ created=iso_or_none(record.get("Created")),
822
+ )
823
+ # Resolve the source author/editor once so an authorship-preserving
824
+ # target can restore them by login name (ids are tenant-local).
825
+ planned.author = self._principal_for(author_id)
826
+ planned.editor = self._principal_for(editor_id)
827
+ result.append(planned)
828
+ for attachment in item.properties.get("AttachmentFiles") or []:
829
+ pending_attachments.append((item_id, attachment))
830
+ emit_progress(progress, done=len(result), stage="planning", items=[item])
831
+ # Attachments come after every record so the target can create all parent
832
+ # items before it resolves and uploads their attachments.
833
+ for item_id, attachment in pending_attachments:
834
+ name = getattr(attachment, "file_name", None)
835
+ if not name:
836
+ self.warnings.append(f"skipped an attachment without a file name on item {item_id}")
837
+ continue
838
+ dest_path = f"{item_id}/{name}"
839
+ self._attachments[dest_path] = attachment
153
840
  result.append(
154
841
  MigrationItem(
155
- source_path=f"{self._list.title}/{item.id}",
156
- dest_path=str(item.id),
157
- item_type="record",
158
- modified=iso_or_none(record.get("Modified")),
159
- created=iso_or_none(record.get("Created")),
160
- author_id=parse_int(record.get("AuthorId")),
161
- editor_id=parse_int(record.get("EditorId")),
842
+ source_path=f"{self._list.title}/{dest_path}",
843
+ dest_path=dest_path,
844
+ item_type="attachment",
162
845
  )
163
846
  )
164
- emit_progress(progress, done=len(result), stage="planning", items=[item])
847
+ emit_progress(progress, done=len(result), stage="planning", items=[attachment])
165
848
  return result
166
849
 
167
- def read(self, item: MigrationItem) -> dict:
850
+ def _project_records(self, loaded, report_skipped: bool = True) -> list[dict]:
851
+ # Project every loaded property — not the collection's literal ``select``.
852
+ # Passing ``["*", ...]`` straight through emitted ``{"*": None, ...}``, so
853
+ # migrated records carried no field values at all. ``AttachmentFiles`` is a
854
+ # navigation property (objects, not a scalar column) and is excluded; the
855
+ # target writes attachments separately.
856
+ select = sorted(
857
+ {key for item in loaded for key in item.properties if key != "AttachmentFiles"} - ListItem._schema.readonly
858
+ )
859
+ records = records_from_items(list(loaded), select, set(), raw=True)
860
+ # A REST item create accepts scalar column values only. A full read also
861
+ # returns navigation properties (``ParentList``) and typed values
862
+ # (lookups/persons, e.g. ``PredecessorsId`` / ``AssignedTo``) whose JSON
863
+ # objects carry no ``__metadata.type`` here, so the create batch is
864
+ # rejected with ``InvalidClientQueryException``. Typed-value remapping is
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.
868
+ dropped: set[str] = set()
869
+ navigations: set[str] = {name for item in loaded for name in type(item)._schema.navigations}
870
+ multi = self._multi_columns()
871
+ multi_keys = _typed_keys(multi)
872
+ choices = self._multi_choice_columns()
873
+ taxonomy = self._taxonomy_columns()
874
+ value_objects = self._value_object_columns()
875
+ for record in records:
876
+ for key, value in list(record.items()):
877
+ if key in multi_keys:
878
+ continue # handled by ``_normalize_multi_values``
879
+ if key in choices:
880
+ continue # handled by ``_normalize_multi_choice_values``
881
+ if key in taxonomy:
882
+ continue # handled by ``_project_taxonomy_values``
883
+ if key in value_objects and _scalar_mapping(value) is not None:
884
+ record[key] = _scalar_mapping(value)
885
+ continue # a value object (``{"Url", "Description"}``) is writable as-is
886
+ if value is not None and not isinstance(value, (str, int, float, bool)):
887
+ record.pop(key)
888
+ if key not in navigations:
889
+ dropped.add(key)
890
+ if dropped:
891
+ self.warnings.append(
892
+ f"skipped non-scalar column(s) with no typed-value mapping: {', '.join(sorted(dropped))}"
893
+ )
894
+ # Structure provisioning skips hidden columns, so their typed values (and
895
+ # the text companion) have nowhere to land on the target; drop both rather
896
+ # than fail the create on an unknown column.
897
+ skipped = self._skipped_columns()
898
+ if skipped:
899
+ skipped_keys = _typed_keys(skipped)
900
+ for record in records:
901
+ for key in skipped_keys:
902
+ record.pop(key, None)
903
+ if report_skipped:
904
+ self.warnings.append(
905
+ f"skipped hidden typed column(s) not replicated by structure provisioning: "
906
+ f"{', '.join(sorted(skipped))}"
907
+ )
908
+ self._project_taxonomy_values(records)
909
+ self._normalize_multi_values(records)
910
+ self._normalize_multi_choice_values(records)
911
+ self._annotate_person_logins(records)
912
+ return records
913
+
914
+ def folder_records(self) -> dict[str, dict]:
915
+ """Column values of this list's folders, keyed by their server-relative URL.
916
+
917
+ A document library's folders are list items too: a document set or a managed
918
+ folder carries its own column values, so a target that only created the empty
919
+ folder would silently lose them. The values go through the same projection as
920
+ an item's (typed values normalized, system and navigation columns dropped), so
921
+ the target can write them onto the folder's underlying item. The read is
922
+ narrowed to the folder's writable columns (see :meth:`folder_projection`): a
923
+ ``*`` read also returns system and computed columns (compliance flags, link
924
+ filenames, version labels) that an update would reject and that carry no
925
+ portable value.
926
+ """
927
+ if self._folder_records_cache is None:
928
+ records: dict[str, dict] = {}
929
+ try:
930
+ loaded = self._load_items(self.folder_projection(), folder_only=True)
931
+ except Exception as e: # noqa: BLE001 — folder values are best-effort
932
+ self.warnings.append(f"folder column values could not be read: {e}")
933
+ loaded = []
934
+ # The folder projection already excluded the columns an item record would
935
+ # report as unmigratable, so those messages would describe nothing.
936
+ for record in self._project_records(loaded, report_skipped=False) if loaded else []:
937
+ url = record.get("FileRef")
938
+ if not isinstance(url, str) or not url:
939
+ continue
940
+ values = _folder_record_values(record)
941
+ if values:
942
+ records[url.rstrip("/")] = values
943
+ self._folder_records_cache = records
944
+ return self._folder_records_cache
945
+
946
+ def folder_projection(self) -> list[str]:
947
+ """The columns that carry a folder's own metadata, plus what typed values need.
948
+
949
+ A folder has no separate create payload: its values are read back as a record,
950
+ written onto the folder's item and compared the same way — so the projection
951
+ must include the companions the typed-value normalization reads (``<name>Id``
952
+ for Lookup/Person values, the hidden note of a Managed Metadata column).
953
+ """
954
+ writable = _folder_value_columns(self._source_fields())
955
+ # ``FileRef`` keys the record (it is the folder's identity, not a value).
956
+ columns = ["ContentTypeId", "FileRef", *sorted(writable)]
957
+ # Lookup and Person values are carried as item ids / logins under
958
+ # ``<name>Id``; the column itself is carried in the record too.
959
+ single_lookups = {
960
+ field.internal_name
961
+ for field in self._source_fields()
962
+ if field.internal_name and field.is_lookup and not field.is_multi_valued
963
+ }
964
+ for name in sorted((single_lookups | self._user_columns() | set(self._multi_columns())) & writable):
965
+ key = ListItem.value_column(name)
966
+ if key not in columns:
967
+ columns.append(key)
968
+ for note in self._taxonomy_note_columns():
969
+ if note not in columns:
970
+ columns.append(note)
971
+ return columns
972
+
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
+ """
981
+ if self._source_fields_cache is None:
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 = []
987
+ return self._source_fields_cache
988
+
989
+ def _taxonomy_columns(self) -> dict[str, bool]:
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
+ }
996
+
997
+ def _taxonomy_note_columns(self) -> set[str]:
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
1011
+
1012
+ def _project_taxonomy_values(self, records: list[dict]) -> None:
1013
+ """Project taxonomy columns as bare ``[{"TermGuid": ...}]`` term lists.
1014
+
1015
+ The target recreates the column against the same term set and rebuilds the
1016
+ write payload, so only the portable term id travels. The hidden note
1017
+ companion (if a projection happens to include it) is dropped.
1018
+ """
1019
+ columns = self._taxonomy_columns()
1020
+ if not columns:
1021
+ return
1022
+ notes = self._taxonomy_note_columns()
1023
+ for record in records:
1024
+ for note in notes:
1025
+ record.pop(note, None)
1026
+ for name in columns:
1027
+ terms = _taxonomy_terms(record.get(name))
1028
+ if terms:
1029
+ record[name] = terms
1030
+ else:
1031
+ record.pop(name, None)
1032
+
1033
+ def _typed_columns(self) -> tuple[set[str], dict[str, str], set[str]]:
1034
+ """The source's Person and multi-value columns.
1035
+
1036
+ Returns ``(single-value User columns, {multi-value column: field type},
1037
+ hidden typed columns)``. The field type tells a multi-lookup (remapped by
1038
+ item id) from a multi-person (remapped by login). Hidden typed columns are
1039
+ reported separately because structure provisioning does not replicate them.
1040
+ """
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
1062
+
1063
+ def _user_columns(self) -> set[str]:
1064
+ """The source's single-value Person columns (internal names)."""
1065
+ return self._typed_columns()[0]
1066
+
1067
+ def _multi_columns(self) -> dict[str, str]:
1068
+ """The source's multi-value Lookup/Person columns (internal name -> field type)."""
1069
+ return self._typed_columns()[1]
1070
+
1071
+ def _skipped_columns(self) -> set[str]:
1072
+ """The source's hidden Person/multi-value columns (not replicated on the target)."""
1073
+ return self._typed_columns()[2]
1074
+
1075
+ def _multi_choice_columns(self) -> set[str]:
1076
+ """The source's multi-choice columns (internal names)."""
1077
+ return {field.internal_name for field in self._source_fields() if field.internal_name and field.is_multi_choice}
1078
+
1079
+ def _value_object_columns(self) -> set[str]:
1080
+ """The source's columns that hold a REST value object (e.g. a hyperlink)."""
1081
+ return {field.internal_name for field in self._source_fields() if field.internal_name and field.is_value_object}
1082
+
1083
+ def _annotate_person_logins(self, records: list[dict]) -> None:
1084
+ """Replace each Person column's site-user id with the user's login name.
1085
+
1086
+ A site-user id is only meaningful inside its own site collection, so it is
1087
+ meaningless on the target. The login *is* portable, and the target resolves
1088
+ it back to (a possibly different) target site-user id with ``EnsureUser``.
1089
+ A person the source cannot resolve is dropped and reported rather than
1090
+ copied as a wrong id.
1091
+ """
1092
+ columns = self._user_columns()
1093
+ if not columns:
1094
+ return
1095
+ for record in records:
1096
+ for name in columns:
1097
+ # ``<name>StringId`` is a read-only text companion holding the user
1098
+ # id; leaving it in the payload makes REST ignore the remapped
1099
+ # ``<name>Id`` and keep the source id.
1100
+ record.pop(ListItem.string_value_column(name), None)
1101
+ key = ListItem.value_column(name)
1102
+ user_id = parse_int(record.get(key))
1103
+ if user_id is None:
1104
+ continue
1105
+ principal = self._principal_for(user_id)
1106
+ login = principal.login_name if principal else None
1107
+ if login:
1108
+ record[key] = login
1109
+ else:
1110
+ record.pop(key, None)
1111
+ self.warnings.append(
1112
+ f"person column '{name}' value {user_id} could not be resolved to a login; left empty"
1113
+ )
1114
+
1115
+ def _normalize_multi_values(self, records: list[dict]) -> None:
1116
+ """Project each multi-value column's ids as a plain list the target can remap.
1117
+
1118
+ A multi-person column additionally carries the portable login names instead
1119
+ of the site-local ids, matching the single-value Person handling.
1120
+ """
1121
+ multi = self._multi_columns()
1122
+ if not multi:
1123
+ return
1124
+ for record in records:
1125
+ for name, field_type in multi.items():
1126
+ record.pop(ListItem.string_value_column(name), None)
1127
+ key = ListItem.value_column(name)
1128
+ ids = values_of(record.get(key))
1129
+ parsed: list[int] = []
1130
+ for value in ids or []:
1131
+ user_id = parse_int(value)
1132
+ if user_id is None:
1133
+ parsed = []
1134
+ break
1135
+ parsed.append(user_id)
1136
+ if not parsed:
1137
+ record.pop(key, None)
1138
+ continue
1139
+ if field_type == "UserMulti":
1140
+ logins: list[str] = []
1141
+ for user_id in parsed:
1142
+ principal = self._principal_for(user_id)
1143
+ login = principal.login_name if principal else None
1144
+ if login:
1145
+ logins.append(login)
1146
+ else:
1147
+ self.warnings.append(
1148
+ f"multi-person column '{name}' value {user_id} could not be resolved "
1149
+ "to a login; the value was left out"
1150
+ )
1151
+ if logins:
1152
+ record[key] = logins
1153
+ else:
1154
+ record.pop(key, None)
1155
+ else:
1156
+ record[key] = parsed
1157
+
1158
+ def _normalize_multi_choice_values(self, records: list[dict]) -> None:
1159
+ """Project each multi-choice column as a plain list of its selected values.
1160
+
1161
+ A live read returns the collection as a positional mapping
1162
+ (``{0: "red", 1: "green"}``); the source records it as a bare list, which is
1163
+ what the checksum compares and what the target wraps for a create. An empty
1164
+ selection is dropped so the column reads back empty rather than as an empty
1165
+ collection.
1166
+ """
1167
+ names = self._multi_choice_columns()
1168
+ if not names:
1169
+ return
1170
+ for record in records:
1171
+ for name in names:
1172
+ if name not in record:
1173
+ continue
1174
+ values = values_of(record.get(name))
1175
+ if values:
1176
+ record[name] = values
1177
+ else:
1178
+ record.pop(name, None)
1179
+
1180
+ def read(self, item: MigrationItem) -> object:
1181
+ if item.item_type == "attachment":
1182
+ return self._attachment_content(item)
168
1183
  return self._records.get(item.dest_path, {})
169
1184
 
1185
+ def _attachment_content(self, item: MigrationItem) -> bytes:
1186
+ attachment = self._attachments.get(item.dest_path)
1187
+ if attachment is None:
1188
+ raise FileNotFoundError(item.source_path)
1189
+ return cast(bytes, attachment.get_content().execute_query().value)
1190
+
170
1191
  def checksum(self, item: MigrationItem) -> str:
171
- payload = record_to_json(self._records.get(item.dest_path, {}))
172
- return hashlib.md5(payload.encode("utf-8")).hexdigest()
1192
+ if item.item_type == "attachment":
1193
+ return checksum(self._attachment_content(item))
1194
+ return _content_checksum(_canonicalize_taxonomy_record(self._records.get(item.dest_path, {})))
1195
+
1196
+ def read_metadata(self, item: MigrationItem) -> dict | None:
1197
+ """Comparable attributes of the source item (for the post-run metadata diff)."""
1198
+ source_item = self._items.get(item.dest_path)
1199
+ if source_item is None:
1200
+ return None
1201
+ return {
1202
+ "created": iso_or_none(source_item.created),
1203
+ "modified": iso_or_none(source_item.modified),
1204
+ }
1205
+
1206
+ def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
1207
+ """The source author/editor login names (for the authorship diff)."""
1208
+ return (
1209
+ item.author.login_name if item.author else None,
1210
+ item.editor.login_name if item.editor else None,
1211
+ )
1212
+
1213
+ def _normalize_name(self, name: str) -> str:
1214
+ """Canonicalize a principal name (default groups -> ``default:<Kind>``)."""
1215
+ context = getattr(self._list, "context", None)
1216
+ web = getattr(context, "web", None) if context is not None else None
1217
+ if web is None:
1218
+ return name
1219
+ if self._default_groups is None:
1220
+ self._default_groups = _DefaultGroups(web)
1221
+ return self._default_groups.normalize(name)
1222
+
1223
+ def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
1224
+ """Read the item's *unique* role assignments (best-effort ACL preservation).
1225
+
1226
+ Inherited items return ``[]`` — REST would otherwise report the parent's
1227
+ ACL, and copying it would break inheritance on every item.
1228
+ """
1229
+ source_item = self._items.get(item.dest_path)
1230
+ if source_item is None or not _has_unique_role_assignments(source_item):
1231
+ return []
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
1235
+
1236
+ def _principal_for(self, user_id: Any) -> "Principal | None":
1237
+ """Resolve a site-user id to a :class:`Principal` (login + PUID), cached."""
1238
+ key = parse_int(user_id)
1239
+ if key is None:
1240
+ return None
1241
+ if key in self._users:
1242
+ return self._users[key]
1243
+ principal: "Principal | None" = None
1244
+ try:
1245
+ user = self._list.context.web.site_users.get_by_id(cast("str", key)).get().execute_query()
1246
+ principal = _principal_of(user, key)
1247
+ except Exception as e: # noqa: BLE001 — a missing user degrades to no authorship
1248
+ self.warnings.append(f"user {key} could not be resolved: {e}")
1249
+ self._users[key] = principal
1250
+ return principal
173
1251
 
174
1252
  def close(self) -> None:
175
1253
  pass
@@ -180,34 +1258,171 @@ class SharePointListTarget:
180
1258
 
181
1259
  Pass ``key`` (one or more natural-key columns) to make the target idempotent:
182
1260
  a hash of those columns is stored in ``key_field`` and each payload is created
183
- or (``on_conflict="upsert"``) updated, so re-runs never duplicate. Without a
1261
+ or (``on_conflict="update"``) updated, so re-runs never duplicate. Without a
184
1262
  key, records are appended and idempotency relies on the checkpoint/manifest.
1263
+
1264
+ ``on_conflict`` may be passed explicitly; otherwise it is derived from
1265
+ ``MigrationOptions.conflict_resolution`` by :meth:`configure` (the runner calls
1266
+ it before writes): ``OVERWRITE`` → ``"update"``, anything else → ``"skip"``.
1267
+
1268
+ Every migrated item also gets a source-id marker (``identity_field``, default
1269
+ ``MigrationSourceId``): the default ``SKIP`` policy then recognizes items already
1270
+ on the target (so re-runs do not duplicate) and :meth:`list_paths` pairs source
1271
+ and target items for verification. Pass ``identity_field=None`` to opt out.
1272
+ List-item attachments are written after their parent records are flushed.
1273
+
1274
+ Pass ``content_type_map`` (a :class:`~office365.migration.map.ContentTypeMap`)
1275
+ when the target list's content types were recreated with fresh identifiers:
1276
+ every record's ``ContentTypeId`` is rewritten to the target id so items land
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.
185
1284
  """
186
1285
 
1286
+ # Marks this target as accepting list-item attachments as extra items (see DataTarget).
1287
+ supports_attachments = True
1288
+
1289
+ # Marks this target as remapping Lookup values across migrated lists and Person
1290
+ # values by login (see ``_remap_typed_values``).
1291
+ supports_typed_values = True
1292
+
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.
1296
+ supports_item_state = True
1297
+
1298
+ #: The single-item :meth:`write` only queues a create; a chunk must be flushed
1299
+ #: before it is durable. The runner therefore routes this target through the
1300
+ #: chunked path even at ``concurrency == 1``, so checkpoints never record
1301
+ #: ``DONE`` ahead of the actual write.
1302
+ deferred_writes = True
1303
+
1304
+ def rebind(self) -> "SharePointListTarget":
1305
+ """This target on its own cloned context (see :meth:`SharePointListSource.rebind`)."""
1306
+ return SharePointListTarget(
1307
+ _cloned_list(self._list),
1308
+ key=list(self._key_columns) or None,
1309
+ key_field=self._key_field,
1310
+ on_conflict=self._on_conflict_override,
1311
+ identity_field=self._identity_field,
1312
+ content_type_map=self._content_type_map,
1313
+ structure=self._structure,
1314
+ )
1315
+
187
1316
  def __init__(
188
1317
  self,
189
1318
  target_list: "SPList",
190
1319
  key: str | list[str] | None = None,
191
1320
  key_field: str = "MigrationKey",
192
- on_conflict: str = "skip",
1321
+ on_conflict: str | None = None,
1322
+ identity_field: str | None = DEFAULT_LIST_IDENTITY_FIELD,
1323
+ content_type_map: "ContentTypeMap | None" = None,
1324
+ structure: "ListStructure | None" = None,
193
1325
  ) -> None:
194
1326
  self._list = target_list
1327
+ self._structure = structure
1328
+ self._structure_applied = False
195
1329
  self._key_columns = [key] if isinstance(key, str) else (list(key) if key else [])
196
1330
  self._key_field = key_field
197
- self._on_conflict = on_conflict
1331
+ self._on_conflict_override = on_conflict
1332
+ self._on_conflict = on_conflict or "skip"
198
1333
  self._target = None
199
1334
  self._existing: dict = {}
1335
+ self._identity_field = identity_field
1336
+ self._identity_ensured = False
1337
+ self._identity_index: dict | None = None
1338
+ self._identity_index_stale = False
1339
+ self._identity_index_max_id = 0
1340
+ self._attachment_path_cache: set[str] | None = None
1341
+ self._content_type_map = content_type_map
1342
+ self._login_cache: dict[int, str | None] = {}
1343
+ # Author/Editor values already written by ``apply_authorship`` but pending a
1344
+ # shared final write (see ``apply_timestamps``); avoids the ValidateUpdateListItem
1345
+ # call that restores timestamps silently resetting ``Editor`` to the caller.
1346
+ self._pending_authorship: dict[str, dict] = {}
1347
+ # Approval state read from the payload, replayed in the metadata write (a
1348
+ # system update approves the item); same pending-then-pop lifecycle as above.
1349
+ self._pending_approval: dict[str, dict[str, str]] = {}
1350
+ self.warnings: list[str] = []
1351
+ self._principals_cache: _TargetPrincipals | None = None
1352
+ # Lookup and Person columns carry an id that is only meaningful on the
1353
+ # source (list-local item id / site-user id). The target remaps each to its
1354
+ # own value on write and back to the source value on verification.
1355
+ self._columns_cache: _TypedColumns | None = None
1356
+ self._lookup_indexes: dict[str, tuple[dict[int, int], dict[int, int]]] = {}
1357
+ self._unresolved_lookups: set[tuple[str, int]] = set()
1358
+ self._unresolved_users: set[tuple[str, str]] = set()
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"] = {}
1364
+
1365
+ @property
1366
+ def on_conflict(self) -> str:
1367
+ """The active record conflict policy (``"skip"`` or ``"update"``)."""
1368
+ return self._on_conflict
1369
+
1370
+ def configure(self, options) -> None:
1371
+ """Derive ``on_conflict`` from ``MigrationOptions.conflict_resolution``.
1372
+
1373
+ Called by :class:`MigrationRunner` before the run, so a single
1374
+ ``conflict_resolution`` drives both file and record targets. An
1375
+ ``on_conflict`` passed to the constructor is honored as-is.
1376
+ """
1377
+ if self._on_conflict_override is None:
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
200
1404
 
201
1405
  def label(self) -> str:
202
1406
  return f"list:{self._list.title}"
203
1407
 
204
1408
  def exists(self, item: MigrationItem) -> bool:
205
- # Keyed dedup happens in _queue (the key is derived from the payload, which
206
- # exists() doesn't receive); without a key, records are appended.
207
- return False
1409
+ # With the identity marker, both records and attachments are recognized on a
1410
+ # re-run, so the default ``SKIP`` policy is genuinely idempotent. Without it
1411
+ # (``identity_field=None``) nothing is recognized and records append.
1412
+ if not self._identity_field:
1413
+ return False
1414
+ self._ensure_identity()
1415
+ if not self._identity_field:
1416
+ return False
1417
+ if item.item_type == "attachment":
1418
+ return str(item.dest_path) in set(self._attachment_paths())
1419
+ return self._find_by_identity(item.dest_path) is not None
208
1420
 
209
1421
  def write(self, item: MigrationItem, payload: object) -> None:
210
- self._queue([cast(dict, payload)])
1422
+ if item.item_type == "attachment":
1423
+ self._write_attachment(item, payload)
1424
+ return
1425
+ self._queue([self._record_for(item, payload)])
211
1426
 
212
1427
  def write_many(
213
1428
  self,
@@ -219,16 +1434,68 @@ class SharePointListTarget:
219
1434
 
220
1435
  Flushing per chunk (instead of only at :meth:`commit`) keeps a large list
221
1436
  migration memory-bounded — the queued creates never accumulate for the
222
- whole run.
1437
+ whole run. Attachments in the chunk are written after its records are
1438
+ flushed, so their parent items already exist.
223
1439
 
224
1440
  Returns:
225
1441
  No failures (a batch failure raises; there are no partial successes).
226
1442
  """
227
- self._queue([cast(dict, payload) for payload in payloads])
228
- self._flush(len(payloads), concurrency)
1443
+ records: list[dict] = []
1444
+ attachments: list[tuple[MigrationItem, object]] = []
1445
+ for item, payload in zip(items, payloads):
1446
+ if item.item_type == "attachment":
1447
+ attachments.append((item, payload))
1448
+ else:
1449
+ records.append(self._record_for(item, payload))
1450
+ if records:
1451
+ self._queue(records)
1452
+ self._flush(len(records), concurrency)
1453
+ for item, payload in attachments:
1454
+ self._write_attachment(item, payload)
229
1455
  return []
230
1456
 
1457
+ def _record_for(self, item: MigrationItem, payload: object) -> dict:
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
+ )
1466
+ record = dict(cast(dict, payload))
1467
+ if self._content_type_map:
1468
+ content_type_id = record.get("ContentTypeId")
1469
+ record["ContentTypeId"] = self._content_type_map.resolve(content_type_id)
1470
+ if self._identity_field:
1471
+ record[self._identity_field] = item.dest_path
1472
+ approval = {name: record[name] for name in _MODERATION_FIELDS if record.get(name) is not None}
1473
+ if approval:
1474
+ self._pending_approval[item.dest_path] = approval
1475
+ return record
1476
+
1477
+ def translate_record(self, record: dict) -> dict:
1478
+ """A source record mapped onto this list without writing it.
1479
+
1480
+ A document library folder is a list item that already exists on the target,
1481
+ so its column values cannot go through the create queue: the record is mapped
1482
+ here (target content-type id, Lookup ids, Person logins, multi-value shapes)
1483
+ and applied with an update instead.
1484
+ """
1485
+ mapped = dict(record)
1486
+ if self._content_type_map:
1487
+ resolved = self._content_type_map.resolve(mapped.get("ContentTypeId"))
1488
+ if resolved:
1489
+ mapped["ContentTypeId"] = resolved
1490
+ else:
1491
+ mapped.pop("ContentTypeId", None)
1492
+ self._remap_typed_values([mapped])
1493
+ return self._multi_value_payload(mapped)
1494
+
231
1495
  def _queue(self, records: list[dict]) -> None:
1496
+ self._ensure_identity()
1497
+ self._remap_typed_values(records)
1498
+ records = [self._multi_value_payload(record) for record in records]
232
1499
  if not self._key_columns:
233
1500
  for record in records:
234
1501
  self._list.items.queue_records([record])
@@ -252,23 +1519,682 @@ class SharePointListTarget:
252
1519
  on_conflict=self._on_conflict,
253
1520
  )
254
1521
 
1522
+ def _multi_id_keys(self) -> set[str]:
1523
+ """The ``...Id`` record keys of the multi-value Lookup/Person columns."""
1524
+ names = (*self._multi_lookup_columns(), *self._multi_user_columns())
1525
+ return {ListItem.value_column(name) for name in names}
1526
+
1527
+ def _multi_value_payload(self, record: dict) -> dict:
1528
+ """Reshape multi-value columns for the wire (``{"results": [...]}``).
1529
+
1530
+ A bare list is the semantic value the source records and the checksum work
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.
1534
+ """
1535
+ keys = self._multi_id_keys() | self._multi_choice_columns()
1536
+ if not keys:
1537
+ return record
1538
+ wrapped = dict(record)
1539
+ for key in keys:
1540
+ values = values_of(wrapped.get(key))
1541
+ if values is not None:
1542
+ wrapped[key] = _collection_payload(values)
1543
+ return wrapped
1544
+
1545
+ def _ensure_identity(self) -> None:
1546
+ """Create the source-id marker column (once), best-effort."""
1547
+ if self._identity_ensured or not self._identity_field:
1548
+ return
1549
+ self._identity_ensured = True
1550
+ name = self._identity_field
1551
+ from office365.sharepoint.fields.creation_information import FieldCreationInformation
1552
+ from office365.sharepoint.fields.type import FieldType
1553
+
1554
+ try:
1555
+ self._list.fields.ensure(FieldCreationInformation(name, FieldType.Text)).execute_query()
1556
+ except Exception as e: # noqa: BLE001 — identity is best-effort; content still migrates
1557
+ self._identity_field = None
1558
+ self.warnings.append(f"could not create the {name!r} identity column: {e}")
1559
+
1560
+ def _columns(self) -> _TypedColumns:
1561
+ """The target's typed columns.
1562
+
1563
+ Returns ``(lookup: name -> referenced list id, user names, multi-lookup:
1564
+ name -> referenced list id, multi-user names, taxonomy: name -> (allows
1565
+ many, hidden note field internal name), multi-choice names)``.
1566
+ """
1567
+ if self._columns_cache is None:
1568
+ self._columns_cache = self._load_columns()
1569
+ return self._columns_cache
1570
+
1571
+ def _lookup_columns(self) -> dict[str, str]:
1572
+ return self._columns()[0]
1573
+
1574
+ def _user_columns(self) -> set[str]:
1575
+ return self._columns()[1]
1576
+
1577
+ def _multi_lookup_columns(self) -> dict[str, str]:
1578
+ return self._columns()[2]
1579
+
1580
+ def _multi_user_columns(self) -> set[str]:
1581
+ return self._columns()[3]
1582
+
1583
+ def _taxonomy_columns(self) -> dict[str, tuple[bool, str | None]]:
1584
+ return self._columns()[4]
1585
+
1586
+ def _multi_choice_columns(self) -> set[str]:
1587
+ return self._columns()[5]
1588
+
1589
+ def _load_columns(self) -> _TypedColumns:
1590
+ lookups: dict[str, str] = {}
1591
+ users: set[str] = set()
1592
+ multi_lookups: dict[str, str] = {}
1593
+ multi_users: set[str] = set()
1594
+ taxonomy: dict[str, tuple[bool, str | None]] = {}
1595
+ multi_choices: set[str] = set()
1596
+ try:
1597
+ fields = self._list.fields.select(Field.scan_columns()).get().execute_query()
1598
+ except Exception as e: # noqa: BLE001 — without columns we cannot remap; content still migrates
1599
+ self.warnings.append(f"could not read target columns for typed-value remapping: {e}")
1600
+ return lookups, users, multi_lookups, multi_users, taxonomy, multi_choices
1601
+ for field in fields:
1602
+ internal_name = field.internal_name
1603
+ if not internal_name or internal_name in _PERSON_EXCLUDED:
1604
+ continue
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:
1612
+ if multiple:
1613
+ multi_users.add(internal_name)
1614
+ else:
1615
+ users.add(internal_name)
1616
+ else:
1617
+ list_id = normalize_guid(cast(FieldLookup, field).lookup_list)
1618
+ if not list_id:
1619
+ continue
1620
+ if multiple:
1621
+ multi_lookups[internal_name] = list_id
1622
+ else:
1623
+ lookups[internal_name] = list_id
1624
+ elif field.is_multi_choice:
1625
+ multi_choices.add(internal_name)
1626
+ return lookups, users, multi_lookups, multi_users, taxonomy, multi_choices
1627
+
1628
+ def _lookup_index(self, target_list_id: str) -> tuple[dict[int, int], dict[int, int]]:
1629
+ """``(source id -> target id, target id -> source id)`` for a referenced list."""
1630
+ cached = self._lookup_indexes.get(target_list_id)
1631
+ if cached is not None:
1632
+ return cached
1633
+ forward: dict[int, int] = {}
1634
+ backward: dict[int, int] = {}
1635
+ self._flush_pending()
1636
+ try:
1637
+ referenced = self._list.context.web.lists.get_by_id(target_list_id)
1638
+ items = referenced.items.select(["Id", DEFAULT_LIST_IDENTITY_FIELD]).get_all().execute_query()
1639
+ except Exception as e: # noqa: BLE001 — an unreadable referenced list is reported, not fatal
1640
+ self.warnings.append(f"lookup target list {target_list_id} could not be read: {e}")
1641
+ items = []
1642
+ for referenced_item in items:
1643
+ source_id = parse_int(referenced_item.properties.get(DEFAULT_LIST_IDENTITY_FIELD))
1644
+ target_id = parse_int(referenced_item.id)
1645
+ if source_id is None or target_id is None:
1646
+ continue
1647
+ forward[source_id] = target_id
1648
+ backward[target_id] = source_id
1649
+ self._lookup_indexes[target_list_id] = (forward, backward)
1650
+ return forward, backward
1651
+
1652
+ def _remap_typed_values(self, records: list[dict]) -> None:
1653
+ """Translate each record's source lookup/person ids into target values.
1654
+
1655
+ A lookup references another migrated list (matched on its items' source-id
1656
+ marker); a person carries the *login name* the source annotated, resolved
1657
+ here with ``EnsureUser``. Either value with no match is dropped and reported
1658
+ once rather than written as a wrong id.
1659
+ """
1660
+ self._remap_lookups(records)
1661
+ self._remap_users(records)
1662
+ self._remap_multi_lookups(records)
1663
+ self._remap_multi_users(records)
1664
+ self._remap_taxonomies(records)
1665
+
1666
+ def _remap_lookups(self, records: list[dict]) -> None:
1667
+ columns = self._lookup_columns()
1668
+ if not columns:
1669
+ return
1670
+ for record in records:
1671
+ for internal_name, target_list_id in columns.items():
1672
+ key = ListItem.value_column(internal_name)
1673
+ source_id = parse_int(record.get(key))
1674
+ if source_id is None:
1675
+ continue
1676
+ forward, _ = self._lookup_index(target_list_id)
1677
+ target_id = forward.get(source_id)
1678
+ if target_id is None:
1679
+ record.pop(key, None)
1680
+ self._report_unresolved_lookup(internal_name, source_id)
1681
+ continue
1682
+ record[key] = target_id
1683
+
1684
+ def _remap_users(self, records: list[dict]) -> None:
1685
+ columns = self._user_columns()
1686
+ if not columns:
1687
+ return
1688
+ for record in records:
1689
+ for internal_name in columns:
1690
+ key = ListItem.value_column(internal_name)
1691
+ login = record.get(key)
1692
+ if not isinstance(login, str) or not login:
1693
+ continue
1694
+ user = self._principals().user(login)
1695
+ if user is None or getattr(user, "id", None) is None:
1696
+ record.pop(key, None)
1697
+ self._report_unresolved_user(internal_name, login)
1698
+ continue
1699
+ record[key] = user.id
1700
+
1701
+ def _remap_multi_lookups(self, records: list[dict]) -> None:
1702
+ columns = self._multi_lookup_columns()
1703
+ if not columns:
1704
+ return
1705
+ for record in records:
1706
+ for internal_name, target_list_id in columns.items():
1707
+ key = ListItem.value_column(internal_name)
1708
+ source_ids = values_of(record.get(key))
1709
+ if not source_ids:
1710
+ continue
1711
+ forward, _ = self._lookup_index(target_list_id)
1712
+ target_ids: list[int] = []
1713
+ for value in source_ids:
1714
+ source_id = parse_int(value)
1715
+ target_id = forward.get(source_id) if source_id is not None else None
1716
+ if target_id is None:
1717
+ if source_id is not None:
1718
+ self._report_unresolved_lookup(internal_name, source_id)
1719
+ continue
1720
+ target_ids.append(target_id)
1721
+ if target_ids:
1722
+ record[key] = target_ids
1723
+ else:
1724
+ record.pop(key, None)
1725
+
1726
+ def _remap_multi_users(self, records: list[dict]) -> None:
1727
+ columns = self._multi_user_columns()
1728
+ if not columns:
1729
+ return
1730
+ for record in records:
1731
+ for internal_name in columns:
1732
+ key = ListItem.value_column(internal_name)
1733
+ logins = record.get(key)
1734
+ if not isinstance(logins, (list, tuple)) or not logins:
1735
+ continue
1736
+ target_ids: list[int] = []
1737
+ for login in logins:
1738
+ user = self._principals().user(login) if isinstance(login, str) and login else None
1739
+ user_id = getattr(user, "id", None)
1740
+ if user is None or user_id is None:
1741
+ self._report_unresolved_user(internal_name, str(login))
1742
+ continue
1743
+ target_ids.append(user_id)
1744
+ if target_ids:
1745
+ record[key] = target_ids
1746
+ else:
1747
+ record.pop(key, None)
1748
+
1749
+ def _remap_taxonomies(self, records: list[dict]) -> None:
1750
+ """Write taxonomy terms in the form SharePoint accepts on the target.
1751
+
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.
1759
+ """
1760
+ columns = self._taxonomy_columns()
1761
+ unresolved: set[str] = set()
1762
+ for record in records:
1763
+ for internal_name, value in list(record.items()):
1764
+ if not _is_taxonomy_value(value):
1765
+ continue
1766
+ guids = _taxonomy_guids(value)
1767
+ column = columns.get(internal_name)
1768
+ if column is None:
1769
+ record.pop(internal_name, None)
1770
+ unresolved.add(internal_name)
1771
+ continue
1772
+ allow_many, note_name = column
1773
+ if not guids:
1774
+ record.pop(internal_name, None)
1775
+ continue
1776
+ if allow_many and note_name:
1777
+ record.pop(internal_name, None)
1778
+ values = [TaxonomyFieldValue(TermGuid=g) for g in guids]
1779
+ record[note_name] = str(TaxonomyFieldValueCollection(values))
1780
+ elif allow_many:
1781
+ record.pop(internal_name, None)
1782
+ unresolved.add(internal_name)
1783
+ else:
1784
+ record[internal_name] = TaxonomyFieldValue(TermGuid=guids[0])
1785
+ if unresolved:
1786
+ self.warnings.append(
1787
+ f"taxonomy column(s) not available on the target, values left empty: {', '.join(sorted(unresolved))}"
1788
+ )
1789
+
1790
+ def _report_unresolved_user(self, internal_name: str, login: str) -> None:
1791
+ marker = (internal_name, login)
1792
+ if marker in self._unresolved_users:
1793
+ return
1794
+ self._unresolved_users.add(marker)
1795
+ self.warnings.append(
1796
+ f"person column '{internal_name}' login {login!r} could not be resolved on the target; "
1797
+ "the value was left empty"
1798
+ )
1799
+
1800
+ def _target_user_logins(self) -> dict[int, str]:
1801
+ """The target web's ``{site-user id: login name}`` map (cached)."""
1802
+ if self._user_logins is None:
1803
+ mapping: dict[int, str] = {}
1804
+ try:
1805
+ for site_user in self._list.context.web.site_users.get().execute_query():
1806
+ user_id = parse_int(site_user.id)
1807
+ if user_id is not None and site_user.login_name:
1808
+ mapping[user_id] = site_user.login_name
1809
+ except Exception as e: # noqa: BLE001 — without the map persons are left as ids
1810
+ self.warnings.append(f"could not read target site users for person verification: {e}")
1811
+ self._user_logins = mapping
1812
+ return self._user_logins
1813
+
1814
+ def _report_unresolved_lookup(self, internal_name: str, source_id: int) -> None:
1815
+ marker = (internal_name, source_id)
1816
+ if marker in self._unresolved_lookups:
1817
+ return
1818
+ self._unresolved_lookups.add(marker)
1819
+ self.warnings.append(
1820
+ f"lookup column '{internal_name}' value {source_id} could not be mapped to a target item "
1821
+ "(the referenced list's items were not migrated first); the value was left empty"
1822
+ )
1823
+
1824
+ def _canonicalize_lookups(self, properties: dict) -> None:
1825
+ """Rewrite target lookup ids back to the source ids (symmetric to the write).
1826
+
1827
+ The source checksum holds the source item id; the target's fresh item holds
1828
+ the target id. Mapping the latter back lets the content spot-check compare
1829
+ the two like for like instead of reporting a false mismatch.
1830
+ """
1831
+ for internal_name, target_list_id in self._lookup_columns().items():
1832
+ key = ListItem.value_column(internal_name)
1833
+ target_id = parse_int(properties.get(key))
1834
+ if target_id is None:
1835
+ continue
1836
+ _, backward = self._lookup_index(target_list_id)
1837
+ source_id = backward.get(target_id)
1838
+ if source_id is not None:
1839
+ properties[key] = source_id
1840
+ for internal_name, target_list_id in self._multi_lookup_columns().items():
1841
+ key = ListItem.value_column(internal_name)
1842
+ target_ids = values_of(properties.get(key))
1843
+ if not target_ids:
1844
+ continue
1845
+ _, backward = self._lookup_index(target_list_id)
1846
+ mapped: list[Any] = []
1847
+ for value in target_ids:
1848
+ target_id = parse_int(value)
1849
+ mapped.append(backward.get(target_id, value) if target_id is not None else value)
1850
+ properties[key] = mapped
1851
+
1852
+ def _canonicalize_users(self, properties: dict) -> None:
1853
+ """Rewrite target person ids back to the login names the source recorded."""
1854
+ columns = self._user_columns()
1855
+ logins = self._target_user_logins() if columns or self._multi_user_columns() else {}
1856
+ for internal_name in columns:
1857
+ key = ListItem.value_column(internal_name)
1858
+ user_id = parse_int(properties.get(key))
1859
+ if user_id is None:
1860
+ continue
1861
+ login = logins.get(user_id)
1862
+ if login is not None:
1863
+ properties[key] = login
1864
+ for internal_name in self._multi_user_columns():
1865
+ key = ListItem.value_column(internal_name)
1866
+ user_ids = values_of(properties.get(key))
1867
+ if not user_ids:
1868
+ continue
1869
+ mapped_logins: list[Any] = []
1870
+ for value in user_ids:
1871
+ user_id = parse_int(value)
1872
+ mapped_logins.append(logins.get(user_id, value) if user_id is not None else value)
1873
+ properties[key] = mapped_logins
1874
+
1875
+ def _canonicalize_multi_choices(self, properties: dict) -> None:
1876
+ """Reduce a read-back multi-choice cell to the bare list the source records.
1877
+
1878
+ A live read returns the selected values as a positional mapping
1879
+ (``{0: "red", 1: "green"}``); the source checksum holds a bare list, so the
1880
+ two are only comparable after the same projection.
1881
+ """
1882
+ for internal_name in self._multi_choice_columns():
1883
+ if internal_name not in properties:
1884
+ continue
1885
+ values = values_of(properties.get(internal_name))
1886
+ if values:
1887
+ properties[internal_name] = values
1888
+ else:
1889
+ properties.pop(internal_name, None)
1890
+
1891
+ def _write_attachment(self, item: MigrationItem, payload: object) -> None:
1892
+ if not self._identity_field:
1893
+ raise NotImplementedError("attachments need the identity column, which could not be created")
1894
+ parent_id, _, filename = str(item.dest_path).partition("/")
1895
+ if not filename:
1896
+ raise ValueError(f"invalid attachment destination {item.dest_path!r}")
1897
+ self._flush_pending()
1898
+ parent = self._find_by_identity(parent_id)
1899
+ if parent is None:
1900
+ raise ValueError(f"no target item for source id {parent_id!r}; cannot attach {filename!r}")
1901
+ content = payload if isinstance(payload, bytes) else str(payload).encode("utf-8")
1902
+ parent.attachment_files.add({"filename": filename, "content": content}).execute_query()
1903
+ if self._attachment_path_cache is not None:
1904
+ self._attachment_path_cache.add(str(item.dest_path))
1905
+
1906
+ def _flush_pending(self) -> None:
1907
+ if self._list.context.has_pending_request:
1908
+ self._flush(DEFAULT_BATCH_SIZE, 1)
1909
+
1910
+ def _find_by_identity(self, source_id: str):
1911
+ if self._identity_index is None or self._identity_index_stale:
1912
+ self._refresh_identity_index()
1913
+ return self._identity_index.get(str(source_id)) if self._identity_index else None
1914
+
1915
+ def _refresh_identity_index(self) -> None:
1916
+ """Load, or incrementally extend, the source-id -> target item map.
1917
+
1918
+ After a chunk is flushed only the newly created items are re-read
1919
+ (``Id gt <max>``) instead of re-scanning the whole list, so refreshing the
1920
+ index per chunk stays linear rather than O(n²).
1921
+ """
1922
+ if not self._identity_field:
1923
+ self._identity_index = {}
1924
+ return
1925
+ if self._identity_index is not None and self._identity_index_max_id > 0:
1926
+ self._index_identity_items(self._query_identity_items(f"Id gt {self._identity_index_max_id}"))
1927
+ return
1928
+ self._identity_index = {}
1929
+ self._identity_index_max_id = 0
1930
+ self._index_identity_items(self._query_identity_items())
1931
+
1932
+ def _query_identity_items(self, filter_expr: str | None = None):
1933
+ # A read query would implicitly flush any queued writes on this context;
1934
+ # flush them explicitly first so the cached index stays consistent.
1935
+ self._flush_pending()
1936
+ columns = ["Id", self._identity_field, "Created", "Modified", *_LIST_ITEM.columns_of_facet(AUTHORSHIP)]
1937
+ query = self._list.items.select(columns)
1938
+ if filter_expr:
1939
+ query = query.filter(filter_expr)
1940
+ return query.get_all().execute_query()
1941
+
1942
+ def _index_identity_items(self, items) -> None:
1943
+ if self._identity_index is None:
1944
+ self._identity_index = {}
1945
+ for target_item in items:
1946
+ value = target_item.properties.get(self._identity_field)
1947
+ if value is None:
1948
+ continue
1949
+ self._identity_index[str(value)] = target_item
1950
+ item_id = parse_int(getattr(target_item, "id", None))
1951
+ if item_id is not None and item_id > self._identity_index_max_id:
1952
+ self._identity_index_max_id = item_id
1953
+ self._identity_index_stale = False
1954
+
1955
+ def _attachment_paths(self) -> list[str]:
1956
+ if not self._identity_field:
1957
+ return []
1958
+ if self._attachment_path_cache is None:
1959
+ self._attachment_path_cache = set(self._query_attachment_paths())
1960
+ return list(self._attachment_path_cache)
1961
+
1962
+ def _query_attachment_paths(self) -> list[str]:
1963
+ if not self._identity_field:
1964
+ return []
1965
+ self._flush_pending()
1966
+ items = (
1967
+ self._list.items.select(["Id", self._identity_field]).expand(["AttachmentFiles"]).get_all().execute_query()
1968
+ )
1969
+ paths: list[str] = []
1970
+ for target_item in items:
1971
+ value = target_item.properties.get(self._identity_field)
1972
+ if value is None:
1973
+ continue
1974
+ for attachment in target_item.properties.get("AttachmentFiles") or []:
1975
+ name = getattr(attachment, "file_name", None)
1976
+ if name:
1977
+ paths.append(f"{value}/{name}")
1978
+ return paths
1979
+
1980
+ @site_access(SiteLevel.READ)
255
1981
  def list_paths(self) -> list[str]:
256
- return [str(i.id) for i in self._list.items.get().execute_query()]
1982
+ if not self._identity_field:
1983
+ return [str(i.id) for i in self._list.items.get().execute_query()]
1984
+ # An empty source list never queues a write, so the marker column was not
1985
+ # created during migration; ensure it before verification queries it.
1986
+ self._ensure_identity()
1987
+ if not self._identity_field:
1988
+ return [str(i.id) for i in self._list.items.get().execute_query()]
1989
+ if self._identity_index is None or self._identity_index_stale:
1990
+ self._refresh_identity_index()
1991
+ index = self._identity_index or {}
1992
+ return list(index.keys()) + self._attachment_paths()
257
1993
 
258
1994
  def checksum(self, item: MigrationItem) -> str:
259
- return ""
1995
+ if item.item_type == "attachment":
1996
+ return self._attachment_checksum(item)
1997
+ target_item = self._fresh_target_item(item)
1998
+ if target_item is None:
1999
+ return ""
2000
+ return self.content_checksum(dict(target_item.properties))
2001
+
2002
+ def content_checksum(self, properties: dict) -> str:
2003
+ """The comparable content hash of an item's read-back properties.
2004
+
2005
+ Used for both a written record and a folder's item, so a library folder's
2006
+ column values can be reconciled against the source record that produced them.
2007
+ """
2008
+ properties = _canonicalize_taxonomy_record(dict(properties))
2009
+ self._canonicalize_lookups(properties)
2010
+ self._canonicalize_users(properties)
2011
+ self._canonicalize_multi_choices(properties)
2012
+ extra = {self._identity_field} if self._identity_field else set()
2013
+ # The hidden taxonomy note companion is not part of the source's portable
2014
+ # content; it is verified through the term ids on the column itself.
2015
+ extra.update(note for _, note in self._taxonomy_columns().values() if note)
2016
+ # The target derives its own ``<name>StringId`` companion; it is not part of
2017
+ # the source's canonical content.
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())
2020
+ return _content_checksum(properties, frozenset(extra))
2021
+
2022
+ def _attachment_checksum(self, item: MigrationItem) -> str:
2023
+ parent_id, _, filename = str(item.dest_path).partition("/")
2024
+ parent = self._find_by_identity(parent_id)
2025
+ if parent is None:
2026
+ return ""
2027
+ try:
2028
+ data = parent.attachment_files.get_by_filename(filename).get_content().execute_query().value
2029
+ except Exception: # noqa: BLE001 — a missing/unreadable attachment is unverifiable
2030
+ return ""
2031
+ return checksum(data) if data else ""
260
2032
 
261
2033
  def commit(self, options=None) -> None:
262
2034
  """Flush any remaining queued record writes through an OData batch."""
263
2035
  batch_size = getattr(options, "batch_size", None) or DEFAULT_BATCH_SIZE
264
2036
  concurrency = getattr(options, "concurrency", None) or 1
265
2037
  self._flush(batch_size, concurrency)
2038
+ self._pending_authorship.clear()
2039
+ self._pending_approval.clear()
266
2040
 
267
2041
  def _flush(self, batch_size: int, concurrency: int) -> None:
268
2042
  if not self._list.context.has_pending_request:
269
2043
  return
270
2044
  self._list.context.execute_batch(items_per_batch=batch_size, concurrency=concurrency)
2045
+ self._fresh_reads.clear()
271
2046
  self._list.items.clear()
2047
+ # Records were just created/updated, so the cached source-id index needs an
2048
+ # incremental refresh (new items only) before the next lookup.
2049
+ if self._identity_index is not None:
2050
+ self._identity_index_stale = True
2051
+
2052
+ def _principals(self) -> _TargetPrincipals:
2053
+ """The (lazily built) target principal/role resolver."""
2054
+ if self._principals_cache is None:
2055
+ self._principals_cache = _TargetPrincipals(self._list.context.web, self.warnings)
2056
+ return self._principals_cache
2057
+
2058
+ def _target_item(self, item: MigrationItem):
2059
+ """The written target item for a record (``None`` for attachments/folders)."""
2060
+ if item.item_type == "attachment":
2061
+ return None
2062
+ return self._find_by_identity(item.dest_path)
2063
+
2064
+ @site_access(SiteLevel.WRITE)
2065
+ def apply_timestamps(self, item: MigrationItem) -> None:
2066
+ """Best-effort: restore ``Created``/``Modified`` on the written item.
2067
+
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.
2079
+ """
2080
+ target_item = self._target_item(item)
2081
+ if target_item is None:
2082
+ return
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}")
2099
+
2100
+ def apply_authorship(self, item: MigrationItem) -> None:
2101
+ """Best-effort: resolve ``Author``/``Editor`` and cache them for one write.
2102
+
2103
+ A principal is applied only when its login name resolves to a target user
2104
+ (``EnsureUser``); unresolved principals are skipped (same-tenant only).
2105
+
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.
2111
+ """
2112
+ target_item = self._target_item(item)
2113
+ if target_item is None:
2114
+ return
2115
+ author = self._principals().user(item.author.login_name if item.author else None)
2116
+ editor = self._principals().user(item.editor.login_name if item.editor else None)
2117
+ if author is not None and author.is_service_account:
2118
+ author = None
2119
+ if editor is not None and editor.is_service_account:
2120
+ editor = None
2121
+ if author is None and editor is None:
2122
+ return
2123
+ self._pending_authorship[item.dest_path] = {
2124
+ "Author": author,
2125
+ "Editor": editor,
2126
+ }
2127
+
2128
+ @site_access(SiteLevel.WRITE)
2129
+ def finalize_fidelity(self, item: MigrationItem) -> None:
2130
+ """Write the fidelity values that were only cached for this item.
2131
+
2132
+ The last hook wins the write: with timestamps preserved that is
2133
+ :meth:`apply_timestamps`; without them it is this method, so the item still
2134
+ gets one system update instead of one per property group.
2135
+ """
2136
+ self._restore_fidelity(item, timestamps=False)
2137
+
2138
+ @site_access(SiteLevel.MANAGE)
2139
+ def apply_permissions(self, item: MigrationItem, permissions: list[PermissionEntry]) -> None:
2140
+ """Best-effort: replay the source item's unique ACLs onto the target item.
2141
+
2142
+ Same-tenant only — cross-tenant identity mapping is out of scope. See
2143
+ :func:`_replay_role_assignments` for what happens to principals, roles and
2144
+ inheritance that cannot be resolved.
2145
+ """
2146
+ target_item = self._target_item(item)
2147
+ if target_item is None:
2148
+ return
2149
+ self._fresh_reads.pop(str(item.dest_path), None)
2150
+ _replay_role_assignments(target_item, self._principals(), permissions, self.warnings, item.dest_path)
2151
+ self._list.context.execute_query()
2152
+
2153
+ def _fresh_target_item(self, item: MigrationItem):
2154
+ """The written target item with freshly-read properties (verification hooks).
2155
+
2156
+ The cached identity-index object predates the fidelity writes
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.
2162
+ """
2163
+ key = str(item.dest_path)
2164
+ if key in self._fresh_reads:
2165
+ return self._fresh_reads[key]
2166
+ target_item = self._target_item(item)
2167
+ if target_item is not None:
2168
+ target_item.get().execute_query()
2169
+ self._fresh_reads[key] = target_item
2170
+ return target_item
2171
+
2172
+ def read_metadata(self, item: MigrationItem) -> dict | None:
2173
+ """Comparable attributes of the written item (for the metadata diff)."""
2174
+ target_item = self._fresh_target_item(item)
2175
+ if target_item is None:
2176
+ return None
2177
+ return {
2178
+ "created": iso_or_none(target_item.created),
2179
+ "modified": iso_or_none(target_item.modified),
2180
+ }
2181
+
2182
+ def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
2183
+ """The written item's author/editor login names (for the authorship diff)."""
2184
+ target_item = self._fresh_target_item(item)
2185
+ if target_item is None:
2186
+ return (None, None)
2187
+ return (
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),
2190
+ )
2191
+
2192
+ def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
2193
+ """Read the written item's *unique* role assignments (for the permission diff)."""
2194
+ target_item = self._fresh_target_item(item)
2195
+ if target_item is None or not _has_unique_role_assignments(target_item, refresh=True):
2196
+ return []
2197
+ return _read_role_assignments(target_item, normalize=self._principals().normalize)
272
2198
 
273
2199
  def close(self) -> None:
274
2200
  pass
@@ -278,22 +2204,55 @@ class SharePointLibrarySource:
278
2204
  """Enumerates a document library's files and folders (recursively) for migration.
279
2205
 
280
2206
  Folder entries (``item_type="folder"``, trailing ``/`` on the destination)
281
- preserve the folder structure — including **empty** folders — on the target.
2207
+ preserve the folder structure — including **empty** folders — on the target, and
2208
+ carry the folder's own column values (a document set's metadata, a managed
2209
+ folder's department) as their payload when the parent list is known.
282
2210
  """
283
2211
 
2212
+ def rebind(self) -> "SharePointLibrarySource":
2213
+ """This source on its own cloned context (see :meth:`SharePointListSource.rebind`)."""
2214
+ context = _cloned_context(self._folder)
2215
+ sp_list = _cloned_list(self._sp_list, context) if self._sp_list is not None else None
2216
+ return SharePointLibrarySource(_cloned_folder(self._folder, context), self.on_bytes, sp_list=sp_list)
2217
+
284
2218
  def __init__(
285
2219
  self,
286
2220
  library_folder: "Folder",
287
2221
  on_bytes: Callable[[int, int | None], None] | None = None,
2222
+ sp_list: "SPList | None" = None,
288
2223
  ) -> None:
289
2224
  self._folder = library_folder
2225
+ # The parent list, when known — author/editor ids (``AuthorId``/``EditorId``)
2226
+ # are not exposed on the ``File`` resource and must be read from its items.
2227
+ self._sp_list = sp_list
2228
+ # Folder column values come from the list's items and are projected exactly
2229
+ # like a record's (typed values normalized), so that code is reused here.
2230
+ self._list_source = SharePointListSource(sp_list) if sp_list is not None else None
2231
+ self._folder_payloads: dict[str, dict] | None = None
290
2232
  self._files: dict[str, "File"] = {}
2233
+ # Folder resources by library-relative path, so their own system metadata
2234
+ # (``TimeCreated``/``TimeLastModified``) can be diffed after the run.
2235
+ self._folders: dict[str, "Folder"] = {}
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]]] = {}
2239
+ self._default_groups: _DefaultGroups | None = None
2240
+ self._item_authors: dict[str, tuple[int | None, int | None]] | None = None
2241
+ self._item_unique: dict[str, bool] | None = None
2242
+ # Content-approval state by file URL, read alongside the author ids (only
2243
+ # when the library moderates).
2244
+ self._item_moderation: dict[str, dict] | None = None
2245
+ # Server-relative URLs of checked-out files, read alongside the author ids.
2246
+ self._item_checkout: set[str] | None = None
2247
+ self._moderation_on: bool | None = None
2248
+ self.warnings: list[str] = []
291
2249
  # Optional hook invoked while a file downloads: (bytes_read, file_size)
292
2250
  self.on_bytes = on_bytes
293
2251
 
294
2252
  def label(self) -> str:
295
2253
  return f"library:{self._folder.server_relative_url}"
296
2254
 
2255
+ @site_access(SiteLevel.READ)
297
2256
  def list_items(self, progress: MigrationProgress = None) -> list[MigrationItem]:
298
2257
  # The root folder's URL may not be loaded yet (e.g. via
299
2258
  # ``list.root_folder``); fetch it so destinations stay library-relative
@@ -303,8 +2262,10 @@ class SharePointLibrarySource:
303
2262
  self._folder.ensure_properties(["ServerRelativeUrl"]).execute_query()
304
2263
  root = self._folder.server_relative_url or ""
305
2264
  root = root.rstrip("/")
2265
+ extra = _site_assets_scaffolding(self._folder)
306
2266
  loaded_folders = self._folder.get_folders(recursive=True).execute_query()
307
2267
  loaded = self._folder.get_files(recursive=True).execute_query()
2268
+ authors = self._file_authors()
308
2269
 
309
2270
  def _rel(url: str) -> str:
310
2271
  return url[len(root) :].lstrip("/") if root else url.lstrip("/")
@@ -314,33 +2275,107 @@ class SharePointLibrarySource:
314
2275
  for folder in loaded_folders:
315
2276
  url = folder.server_relative_url or ""
316
2277
  rel = _rel(url)
317
- if not rel or rel in seen:
2278
+ if not rel or rel in seen or self._folder.is_system_path(rel, extra):
318
2279
  continue
319
2280
  seen.add(rel)
320
- result.append(MigrationItem(source_path=url, dest_path=f"{rel}/", item_type="folder"))
2281
+ self._folders[rel] = folder
2282
+ author_id, editor_id = authors.get(url, (None, None))
2283
+ folder_item = MigrationItem(
2284
+ source_path=url,
2285
+ dest_path=f"{rel}/",
2286
+ item_type="folder",
2287
+ modified=iso_or_none(folder.time_last_modified),
2288
+ created=iso_or_none(folder.time_created),
2289
+ )
2290
+ folder_item.author = self._principal_for(author_id)
2291
+ folder_item.editor = self._principal_for(editor_id)
2292
+ result.append(folder_item)
321
2293
  emit_progress(progress, done=len(result), stage="planning", items=[folder])
322
2294
  for file in loaded:
323
2295
  url = file.server_relative_url or ""
324
2296
  rel = _rel(url)
2297
+ if self._folder.is_system_path(rel, extra):
2298
+ continue
325
2299
  self._files[rel] = file
326
- result.append(
327
- MigrationItem(
328
- source_path=url,
329
- dest_path=rel,
330
- size_bytes=file.length or 0,
331
- item_type="file",
332
- modified=iso_or_none(file.time_last_modified),
333
- created=iso_or_none(file.time_created),
334
- author_id=parse_int(file.author.id),
335
- editor_id=parse_int(file.modified_by.id),
336
- )
2300
+ author_id = parse_int(file.author.id)
2301
+ editor_id = parse_int(file.modified_by.id)
2302
+ if author_id is None and editor_id is None:
2303
+ author_id, editor_id = authors.get(url, (None, None))
2304
+ item = MigrationItem(
2305
+ source_path=url,
2306
+ dest_path=rel,
2307
+ size_bytes=file.length or 0,
2308
+ item_type="file",
2309
+ modified=iso_or_none(file.time_last_modified),
2310
+ created=iso_or_none(file.time_created),
2311
+ source_id=str(file.unique_id) if file.unique_id else None,
2312
+ version_label=file.ui_version_label,
337
2313
  )
2314
+ item.author = self._principal_for(author_id)
2315
+ item.editor = self._principal_for(editor_id)
2316
+ result.append(item)
338
2317
  emit_progress(progress, done=len(result), stage="planning", items=[file])
2318
+ self._report_checkouts(result)
2319
+ self._report_drafts(result)
339
2320
  return result
340
2321
 
341
- def read(self, item: MigrationItem) -> bytes:
2322
+ def _report_checkouts(self, items: list[MigrationItem]) -> None:
2323
+ """Warn about files whose in-progress edits REST cannot see.
2324
+
2325
+ A checked-out file exposes its last **checked-in** content, so the copy is
2326
+ faithful to what the source returns while the author's pending edits stay
2327
+ behind. Verification cannot catch that — it compares the same read — so the
2328
+ loss is reported here instead of passing silently.
2329
+ """
2330
+ checkout = self._item_checkout or set()
2331
+ checked = sorted(item.dest_path for item in items if item.item_type != "folder" and item.source_path in checkout)
2332
+ if not checked:
2333
+ return
2334
+ shown = ", ".join(checked[:_WARNING_SAMPLE])
2335
+ if len(checked) > _WARNING_SAMPLE:
2336
+ shown = f"{shown} and {len(checked) - _WARNING_SAMPLE} more"
2337
+ self.warnings.append(
2338
+ f"{len(checked)} checked-out file(s) were copied from their last checked-in version "
2339
+ f"(in-progress edits are not visible over REST): {shown}"
2340
+ )
2341
+
2342
+ def _report_drafts(self, items: list[MigrationItem]) -> None:
2343
+ """Warn about files whose current version is an un-published (minor) draft.
2344
+
2345
+ REST returns the *draft* content, so the copy is faithful to the version the
2346
+ source reports — but version history is not preserved, so the published
2347
+ version a draft supersedes never reaches the target and the copy keeps the
2348
+ draft alone. Verification compares the same read and cannot see the
2349
+ difference, so the loss is reported here instead of passing silently.
2350
+
2351
+ The signal rides the file listing (``MinorVersion``), so this costs no extra
2352
+ request: a published file is ``x.0``, a draft ``x.n`` with ``n > 0``.
2353
+ """
2354
+ drafts: list[str] = []
2355
+ for item in items:
2356
+ if item.item_type == "folder":
2357
+ continue
2358
+ file = self._files.get(item.dest_path)
2359
+ if file is None or not file.minor_version:
2360
+ continue
2361
+ drafts.append(item.dest_path)
2362
+ if not drafts:
2363
+ return
2364
+ drafts.sort()
2365
+ shown = ", ".join(drafts[:_WARNING_SAMPLE])
2366
+ if len(drafts) > _WARNING_SAMPLE:
2367
+ shown = f"{shown} and {len(drafts) - _WARNING_SAMPLE} more"
2368
+ self.warnings.append(
2369
+ f"{len(drafts)} file(s) are on an un-published (minor) version: the draft content "
2370
+ f"is copied, the published version it supersedes is not (version history is not "
2371
+ f"preserved): {shown}"
2372
+ )
2373
+
2374
+ @site_access(SiteLevel.READ)
2375
+ def read(self, item: MigrationItem) -> object:
342
2376
  if item.item_type == "folder":
343
- return b""
2377
+ # A folder's payload is its column values (empty when it carries none).
2378
+ return self._folder_values(item) or b""
344
2379
  file = self._files.get(item.dest_path)
345
2380
  if file is None:
346
2381
  raise FileNotFoundError(item.source_path)
@@ -354,10 +2389,53 @@ class SharePointLibrarySource:
354
2389
  file.download_session(buffer, chunk_downloaded=_chunk_downloaded).execute_query()
355
2390
  return buffer.getvalue()
356
2391
 
2392
+ @site_access(SiteLevel.READ)
2393
+ def read_version_history(self, item: MigrationItem) -> tuple[str | None, list[tuple[str, bytes]]]:
2394
+ """Read the file's current version label and its older versions.
2395
+
2396
+ Returns ``(current_label, older)`` where ``older`` is oldest-first and
2397
+ excludes the current version (which :meth:`read` already supplies). The
2398
+ current label comes from ``UIVersionLabel``; older content is streamed
2399
+ from each ``File.Versions`` entry. Folders have no version history.
2400
+ """
2401
+ if item.item_type == "folder":
2402
+ return None, []
2403
+ file = self._files.get(item.dest_path)
2404
+ if file is None:
2405
+ raise FileNotFoundError(item.source_path)
2406
+ if file.ui_version_label is None:
2407
+ file.ensure_property("UIVersionLabel").execute_query()
2408
+ older: list[tuple[str, bytes]] = []
2409
+ for version in sorted(file.versions.get().execute_query(), key=lambda v: v.sort_key):
2410
+ label = version.version_label
2411
+ if label and not version.is_current_version:
2412
+ older.append((label, version.open_binary_stream().execute_query().value or b""))
2413
+ return file.ui_version_label, older
2414
+
2415
+ @property
2416
+ def supports_folder_records(self) -> bool:
2417
+ """Whether a folder's column values are migrated *and* comparable."""
2418
+ return self._list_source is not None
2419
+
357
2420
  def checksum(self, item: MigrationItem) -> str:
358
2421
  if item.item_type == "folder":
359
- return hashlib.md5(b"").hexdigest()
360
- return hashlib.md5(self.read(item)).hexdigest()
2422
+ return _content_checksum(_canonicalize_taxonomy_record(self._folder_values(item)))
2423
+ return checksum(cast(bytes, self.read(item)))
2424
+
2425
+ def _folder_values(self, item: MigrationItem) -> dict:
2426
+ """The source folder's column values (empty when it carries none)."""
2427
+ if self._folder_payloads is None:
2428
+ payloads: dict[str, dict] = {}
2429
+ if self._sp_list is None or self._list_source is None:
2430
+ self.warnings.append(
2431
+ "folder column values were not read: the parent library is unknown "
2432
+ "(pass sp_list to SharePointLibrarySource)"
2433
+ )
2434
+ else:
2435
+ payloads.update(self._list_source.folder_records())
2436
+ self.warnings.extend(self._list_source.warnings)
2437
+ self._folder_payloads = payloads
2438
+ return self._folder_payloads.get(str(item.source_path).rstrip("/"), {})
361
2439
 
362
2440
  def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
363
2441
  """Read the item's role assignments (for best-effort ACL preservation).
@@ -368,16 +2446,59 @@ class SharePointLibrarySource:
368
2446
  securable = self._securable(item)
369
2447
  if securable is None:
370
2448
  return []
371
- assignments = securable.role_assignments.expand(["Member", "RoleDefinitionBindings"]).get().execute_query()
372
- result: list[PermissionEntry] = []
373
- for assignment in assignments:
374
- member = assignment.member
375
- name = member.login_name or member.user_principal_name
376
- if not name:
377
- continue
378
- roles = [r.name for r in assignment.role_definition_bindings if r.name]
379
- result.append(PermissionEntry(principal_name=name, roles=roles))
380
- return result
2449
+ # Files: reuse the unique-ACL flag read with the authorship pass (the
2450
+ # ``File``/``ListItem`` resources do not expose it without an extra GET).
2451
+ if item.item_type != "folder" and self._item_unique is not None:
2452
+ unique = self._item_unique.get(item.source_path)
2453
+ if unique is not None:
2454
+ securable.properties["HasUniqueRoleAssignments"] = unique
2455
+ if not _has_unique_role_assignments(securable):
2456
+ return []
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
2460
+
2461
+ def _normalize_name(self, name: str) -> str:
2462
+ """Canonicalize a principal name (default groups -> ``default:<Kind>``)."""
2463
+ context = getattr(self._folder, "context", None)
2464
+ web = getattr(context, "web", None) if context is not None else None
2465
+ if web is None:
2466
+ return name
2467
+ if self._default_groups is None:
2468
+ self._default_groups = _DefaultGroups(web)
2469
+ return self._default_groups.normalize(name)
2470
+
2471
+ def read_metadata(self, item: MigrationItem) -> dict | None:
2472
+ """Comparable attributes of the source item (for the post-run metadata diff)."""
2473
+ if item.item_type == "folder":
2474
+ folder = self._folders.get(str(item.dest_path).rstrip("/"))
2475
+ if folder is None:
2476
+ return None
2477
+ return {
2478
+ "created": iso_or_none(folder.time_created),
2479
+ "modified": iso_or_none(folder.time_last_modified),
2480
+ }
2481
+ file = self._files.get(item.dest_path)
2482
+ if file is None:
2483
+ return None
2484
+ metadata = {
2485
+ "created": iso_or_none(file.time_created),
2486
+ "modified": iso_or_none(file.time_last_modified),
2487
+ "size_bytes": file.length or 0,
2488
+ }
2489
+ self._file_authors()
2490
+ state = (self._item_moderation or {}).get(item.source_path)
2491
+ if state:
2492
+ status = state.get(_MODERATION_STATUS)
2493
+ metadata["moderation_status"] = None if status is None else str(status)
2494
+ return metadata
2495
+
2496
+ def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
2497
+ """The source author/editor login names (for the authorship diff)."""
2498
+ return (
2499
+ item.author.login_name if item.author else None,
2500
+ item.editor.login_name if item.editor else None,
2501
+ )
381
2502
 
382
2503
  def _securable(self, item: MigrationItem):
383
2504
  if item.item_type == "folder":
@@ -385,6 +2506,105 @@ class SharePointLibrarySource:
385
2506
  file = self._files.get(item.dest_path)
386
2507
  return file.listItemAllFields if file is not None else None
387
2508
 
2509
+ def _principal_for(self, user_id: Any) -> "Principal | None":
2510
+ """Resolve a site-user id to a :class:`Principal` (login + PUID), cached."""
2511
+ key = parse_int(user_id)
2512
+ if key is None:
2513
+ return None
2514
+ if key in self._users:
2515
+ return self._users[key]
2516
+ principal: "Principal | None" = None
2517
+ try:
2518
+ user = self._folder.context.web.site_users.get_by_id(cast("str", key)).get().execute_query()
2519
+ principal = _principal_of(user, key)
2520
+ if user.user_id.name_id and principal.system_id is None:
2521
+ # e.g. the app principal, whose ``UserId.NameId`` is not a PUID.
2522
+ # Emitting it would fail the whole ingestion job, so drop it.
2523
+ self.warnings.append(
2524
+ f"user {key} ({user.login_name!r}) has no usable PUID ({user.user_id.name_id!r}); "
2525
+ "it is omitted from the server-side user map"
2526
+ )
2527
+ except Exception as e: # noqa: BLE001 — a missing user degrades to no authorship
2528
+ self.warnings.append(f"user {key} could not be resolved: {e}")
2529
+ self._users[key] = principal
2530
+ return principal
2531
+
2532
+ def _file_authors(self) -> dict[str, tuple[int | None, int | None]]:
2533
+ """Author/editor ids by server-relative file URL (one list-items read).
2534
+
2535
+ ``File.Author``/``ModifiedBy`` is a non-expandable navigation on the File
2536
+ resource, so the ids come from the parent library's list items.
2537
+ """
2538
+ if self._item_authors is not None:
2539
+ return self._item_authors
2540
+ authors: dict[str, tuple[int | None, int | None]] = {}
2541
+ unique: dict[str, bool] = {}
2542
+ moderation: dict[str, dict] = {}
2543
+ checkout: set[str] = set()
2544
+ moderates = self._moderation_enabled()
2545
+ if self._sp_list is not None:
2546
+ try:
2547
+ # ``CheckoutUser`` is a user field: it only projects when its
2548
+ # sub-properties are selected *and* the field is expanded — a bare
2549
+ # ``$select=CheckoutUser`` is rejected by the server.
2550
+ select = ["FileRef", *_METADATA_SELECT, "CheckoutUser/Id", "CheckoutUser/Title"]
2551
+ if moderates:
2552
+ select.extend(_MODERATION_FIELDS)
2553
+ items = self._sp_list.items.select(select).expand(["CheckoutUser"]).get_all().execute_query()
2554
+ for item in items:
2555
+ ref = item.file_ref
2556
+ if ref:
2557
+ authors[ref] = (item.author_id, item.editor_id)
2558
+ unique[ref] = bool(item.has_unique_role_assignments)
2559
+ if item.properties.get("CheckoutUser"):
2560
+ checkout.add(ref)
2561
+ if moderates:
2562
+ state = _moderation_state(item.properties)
2563
+ if state:
2564
+ moderation[ref] = state
2565
+ except Exception as e: # noqa: BLE001 — authorship is best-effort
2566
+ self.warnings.append(f"author/editor read failed: {e}")
2567
+ self._item_authors = authors
2568
+ self._item_unique = unique
2569
+ self._item_moderation = moderation
2570
+ self._item_checkout = checkout
2571
+ return authors
2572
+
2573
+ def _moderation_enabled(self) -> bool:
2574
+ """Whether the parent library enables content approval (read once)."""
2575
+ if self._moderation_on is None:
2576
+ self._moderation_on = False
2577
+ if self._sp_list is not None:
2578
+ try:
2579
+ self._sp_list.ensure_properties(["EnableModeration"]).get().execute_query()
2580
+ self._moderation_on = bool(self._sp_list.properties.get("EnableModeration"))
2581
+ except Exception as e: # noqa: BLE001 — approval state is best-effort
2582
+ self.warnings.append(f"moderation setting read failed: {e}")
2583
+ return self._moderation_on
2584
+
2585
+ @property
2586
+ def supports_item_state(self) -> bool:
2587
+ """Whether approval state can be read (needs the parent library)."""
2588
+ return self._list_source is not None
2589
+
2590
+ def read_item_state(self, item: MigrationItem) -> dict | None:
2591
+ """Approval state that a fresh upload would not reproduce.
2592
+
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.
2596
+ """
2597
+ if item.item_type == "folder" or self._list_source is None:
2598
+ return None
2599
+ self._file_authors()
2600
+ state = (self._item_moderation or {}).get(item.source_path)
2601
+ if not state:
2602
+ return None
2603
+ status = state.get(_MODERATION_STATUS)
2604
+ if status is None or status == SPModerationStatusType.Pending.value:
2605
+ return None
2606
+ return state
2607
+
388
2608
  def close(self) -> None:
389
2609
  pass
390
2610
 
@@ -394,30 +2614,170 @@ class SharePointLibraryTarget:
394
2614
 
395
2615
  Uses the simple upload for files up to ~4MB; ``write_many`` (parallel,
396
2616
  ``concurrency > 1``) uses ``create_upload_session`` for larger files.
2617
+
2618
+ Pass ``sp_list`` (the target library) to also replay a folder's column values: a
2619
+ folder is a list item, so a document set's metadata or a managed folder's
2620
+ department is written onto the created folder's item. ``content_type_map``
2621
+ rewrites the folder's content type id to its target counterpart, exactly as it
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.
397
2629
  """
398
2630
 
399
- def __init__(self, library_folder: "Folder", concurrency: int = 1) -> None:
2631
+ #: Files carry content-approval state (``apply_item_state``). Documents refuse a
2632
+ #: moderation change combined with other property writes, so it is a write of its
2633
+ #: own, applied after the timestamps that would otherwise re-approve the file.
2634
+ supports_item_state = True
2635
+
2636
+ def rebind(self) -> "SharePointLibraryTarget":
2637
+ """This target on its own cloned context (see :meth:`SharePointListSource.rebind`)."""
2638
+ context = _cloned_context(self._folder)
2639
+ sp_list = _cloned_list(self._sp_list, context) if self._sp_list is not None else None
2640
+ return SharePointLibraryTarget(
2641
+ _cloned_folder(self._folder, context),
2642
+ concurrency=self._concurrency,
2643
+ sp_list=sp_list,
2644
+ content_type_map=self._content_type_map,
2645
+ structure=self._structure,
2646
+ )
2647
+
2648
+ def __init__(
2649
+ self,
2650
+ library_folder: "Folder",
2651
+ concurrency: int = 1,
2652
+ sp_list: "SPList | None" = None,
2653
+ content_type_map: "ContentTypeMap | None" = None,
2654
+ structure: "ListStructure | None" = None,
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
400
2660
  self._folder = library_folder
401
2661
  self._concurrency = concurrency
402
- self._role_definitions: dict[str, RoleDefinition] | None = None
2662
+ # The folder-record mapping is the record mapping: reuse the list target so a
2663
+ # folder's Lookup/Person/taxonomy/choice values resolve the same way.
2664
+ self._sp_list = sp_list
2665
+ self._list_target = (
2666
+ SharePointListTarget(sp_list, content_type_map=content_type_map) if sp_list is not None else None
2667
+ )
2668
+ self._content_type_map = content_type_map
2669
+ self.warnings: list[str] = []
2670
+ self._login_cache: dict[int, str | None] = {}
2671
+ self._principals_cache: _TargetPrincipals | None = None
2672
+ # Author/Editor values resolved by ``apply_authorship`` and folded into the
2673
+ # final timestamp write so ``Editor`` isn't reset by the latter.
2674
+ self._pending_authorship: dict[str, dict] = {}
2675
+ self._field_scan: SharePointListSource | None = None
2676
+
2677
+ def _principals(self) -> _TargetPrincipals:
2678
+ """The (lazily built) target principal/role resolver."""
2679
+ if self._principals_cache is None:
2680
+ self._principals_cache = _TargetPrincipals(self._folder.context.web, self.warnings)
2681
+ return self._principals_cache
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
403
2702
 
404
2703
  def label(self) -> str:
405
2704
  return f"library:{self._folder.server_relative_url}"
406
2705
 
407
2706
  def _url(self, item: MigrationItem) -> str:
408
- return f"{(self._folder.server_relative_url or '').rstrip('/')}/{item.dest_path}"
2707
+ return f"{(self._folder.server_relative_url or '').rstrip('/')}/{str(item.dest_path).strip('/')}"
409
2708
 
2709
+ @site_access(SiteLevel.READ)
410
2710
  def exists(self, item: MigrationItem) -> bool:
2711
+ url = self._url(item)
411
2712
  try:
412
- self._folder.context.web.get_file_by_server_relative_url(self._url(item)).get().execute_query()
2713
+ if item.item_type == "folder":
2714
+ self._folder.context.web.get_folder_by_server_relative_url(url).get().execute_query()
2715
+ else:
2716
+ self._folder.context.web.get_file_by_server_relative_url(url).get().execute_query()
413
2717
  return True
414
- except Exception: # noqa: BLE001 — a missing file surfaces as a request error
2718
+ except Exception: # noqa: BLE001 — a missing item surfaces as a request error
415
2719
  return False
416
2720
 
2721
+ def _ensure_folders(self, items: list[MigrationItem]) -> None:
2722
+ """Create folder items (deduplicated to deepest paths) in one round-trip."""
2723
+ paths = [str(item.dest_path).strip("/") for item in items]
2724
+ paths = [path for path in paths if path]
2725
+ if not paths:
2726
+ return
2727
+ self._folder.ensure_folders(paths)
2728
+ self._folder.context.execute_query()
2729
+
2730
+ @site_access(SiteLevel.WRITE)
417
2731
  def write(self, item: MigrationItem, payload: object) -> None:
2732
+ if item.item_type == "folder":
2733
+ self._ensure_folders([item])
2734
+ if isinstance(payload, dict):
2735
+ self._apply_folder_values(item, payload)
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
+ )
418
2744
  content = payload if isinstance(payload, bytes) else str(payload).encode("utf-8")
419
2745
  self._folder.upload_file(item.dest_path, content).execute_query()
420
2746
 
2747
+ @property
2748
+ def supports_folder_records(self) -> bool:
2749
+ """Whether a folder's column values are migrated *and* comparable."""
2750
+ return self._list_target is not None
2751
+
2752
+ def _apply_folder_values(self, item: MigrationItem, record: dict) -> None:
2753
+ """Write a folder's column values onto the folder's underlying list item."""
2754
+ assert self._list_target is not None
2755
+ values = _folder_record_values(record)
2756
+ if not values:
2757
+ return
2758
+ values = self._list_target.translate_record(values)
2759
+ folder_item = self._securable(item)
2760
+ for key, value in values.items():
2761
+ folder_item.set_property(key, value)
2762
+ try:
2763
+ folder_item.update().execute_query()
2764
+ except Exception as e: # noqa: BLE001 — a folder's structure is worth more than its values
2765
+ self.warnings.append(f"folder column values for {item.dest_path!r} could not be written: {e}")
2766
+
2767
+ def _folder_projection(self) -> list[str]:
2768
+ """The target's folder columns (read once) — the set the source projected."""
2769
+ if self._sp_list is None:
2770
+ return []
2771
+ if self._field_scan is None:
2772
+ # Field definitions are read by the same code on both sides: structure
2773
+ # provisioning keeps the internal names, so the projections line up.
2774
+ self._field_scan = SharePointListSource(self._sp_list)
2775
+ try:
2776
+ return self._field_scan.folder_projection()
2777
+ except Exception as e: # noqa: BLE001 — without a projection no folder values move
2778
+ self.warnings.append(f"could not read the target columns for folder values: {e}")
2779
+ return []
2780
+
421
2781
  def write_many(
422
2782
  self,
423
2783
  items: list[MigrationItem],
@@ -431,90 +2791,270 @@ class SharePointLibraryTarget:
431
2791
  """
432
2792
  from office365.migration.sharepoint.transfer import _transfer_files_parallel
433
2793
 
2794
+ failures: list[Failure] = []
2795
+ folders = [item for item in items if item.item_type == "folder"]
2796
+ if folders:
2797
+ try:
2798
+ self._ensure_folders(folders)
2799
+ except Exception: # noqa: BLE001 — fall back to per-folder to attribute errors
2800
+ for folder in folders:
2801
+ try:
2802
+ self._ensure_folders([folder])
2803
+ except Exception as e: # noqa: BLE001
2804
+ failures.append((folder.dest_path, str(e)))
2805
+ # A folder's column values can only be written once its item exists, so they
2806
+ # follow the (batched) folder creation.
2807
+ for item, payload in zip(items, payloads):
2808
+ if item.item_type == "folder" and isinstance(payload, dict):
2809
+ self._apply_folder_values(item, payload)
434
2810
  files = [
435
2811
  (item.dest_path, payload if isinstance(payload, bytes) else str(payload).encode("utf-8"))
436
2812
  for item, payload in zip(items, payloads)
2813
+ if item.item_type != "folder"
437
2814
  ]
438
- return _transfer_files_parallel(
439
- self._folder,
440
- files,
441
- concurrency=concurrency or self._concurrency or 1,
442
- )
2815
+ if files:
2816
+ failures.extend(
2817
+ _transfer_files_parallel(
2818
+ self._folder,
2819
+ files,
2820
+ concurrency=concurrency or self._concurrency or 1,
2821
+ )
2822
+ )
2823
+ return failures
443
2824
 
2825
+ @site_access(SiteLevel.READ)
444
2826
  def list_paths(self) -> list[str]:
445
2827
  root = (self._folder.server_relative_url or "").rstrip("/")
446
- loaded = self._folder.get_files(recursive=True).execute_query()
447
- return [(f.server_relative_url or "")[len(root) :].lstrip("/") for f in loaded]
448
-
449
- def checksum(self, item: MigrationItem) -> str:
2828
+ extra = _site_assets_scaffolding(self._folder)
2829
+ loaded_files = self._folder.get_files(recursive=True).execute_query()
2830
+ loaded_folders = self._folder.get_folders(recursive=True).execute_query()
2831
+ paths = [(f.server_relative_url or "")[len(root) :].lstrip("/") for f in loaded_files]
2832
+ paths += [f"{(f.server_relative_url or '')[len(root) :].lstrip('/')}/" for f in loaded_folders]
2833
+ # Mirror the source projection: SharePoint-owned scaffolding (``Forms/``,
2834
+ # ``desktop.ini``, and on SiteAssets the site icon + auto-provisioned
2835
+ # notebook) is recreated server-side, never migrated, so it must not be
2836
+ # reported as target-only content during verification. Source folder paths
2837
+ # carry a trailing slash; target folder paths mirror that.
2838
+ return [p for p in paths if p != "/" and not self._folder.is_system_path(p, extra)]
2839
+
2840
+ @site_access(SiteLevel.READ)
2841
+ def read(self, item: MigrationItem) -> bytes:
2842
+ """Download the written item's bytes (used by verification for Office files)."""
2843
+ if item.item_type == "folder":
2844
+ return b""
450
2845
  file = self._folder.context.web.get_file_by_server_relative_url(self._url(item)).get().execute_query()
451
2846
  buffer = io.BytesIO()
452
2847
  file.download(buffer).execute_query()
453
- return hashlib.md5(buffer.getvalue()).hexdigest()
2848
+ return buffer.getvalue()
454
2849
 
2850
+ def checksum(self, item: MigrationItem) -> str:
2851
+ if item.item_type == "folder":
2852
+ values = self._target_folder_values(item)
2853
+ if values is None or self._list_target is None:
2854
+ return ""
2855
+ return self._list_target.content_checksum(values)
2856
+ return checksum(self.read(item))
2857
+
2858
+ def _target_folder_values(self, item: MigrationItem) -> dict | None:
2859
+ """The target folder's column values as they read back (``None`` if unknown)."""
2860
+ columns = self._folder_projection()
2861
+ if not columns:
2862
+ return None
2863
+ list_item = self._securable(item).select(columns).get().execute_query()
2864
+ return _folder_record_values(dict(list_item.properties))
2865
+
2866
+ @site_access(SiteLevel.READ)
455
2867
  def modified(self, item: MigrationItem) -> str:
456
2868
  """Last-modified of the target file (for incremental migration)."""
2869
+ if item.item_type == "folder":
2870
+ return ""
457
2871
  file = self._folder.context.web.get_file_by_server_relative_url(self._url(item)).get().execute_query()
458
2872
  return iso_or_none(file.time_last_modified) or ""
459
2873
 
2874
+ @site_access(SiteLevel.WRITE)
460
2875
  def apply_timestamps(self, item: MigrationItem) -> None:
461
2876
  """Best-effort: restore ``Created``/``Modified`` on the written item.
462
2877
 
463
- Uses ``ValidateUpdateListItem`` (the same mechanism as
464
- ``ListItem.system_update``), which is the only REST path that can set these
465
- system fields. ``preserve_versions`` still needs the server-side API.
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`.
466
2894
  """
467
- form_values: dict[str, str] = {}
468
- created = _sp_timestamp(item.created)
469
- modified = _sp_timestamp(item.modified)
470
- if created:
471
- form_values["Created"] = created
472
- if modified:
473
- form_values["Modified"] = modified
474
- if not form_values:
475
- return
476
2895
  securable = self._securable(item)
477
2896
  if securable is None:
478
2897
  return
479
- securable.validate_update_list_item(
480
- form_values,
481
- 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"),
482
2909
  new_document_update=item.item_type != "folder",
2910
+ web_local_dates=True,
483
2911
  ).execute_query()
2912
+ _report_rejected_fields(result, self.warnings, f"timestamps {item.dest_path}")
2913
+
2914
+ def apply_authorship(self, item: MigrationItem) -> None:
2915
+ """Best-effort: resolve ``Author``/``Editor`` and cache them for one write.
2916
+
2917
+ A principal is applied only when its login name resolves to a target user
2918
+ (``EnsureUser``); unresolved principals are skipped (same-tenant only).
2919
+
2920
+ Nothing is sent here: a separate write per item doubled the cost of a
2921
+ preserved run, and a system update re-approves a document, so the cached
2922
+ values are better folded into the timestamps write (or in
2923
+ :meth:`finalize_fidelity` when timestamps are not preserved).
2924
+ """
2925
+ securable = self._securable(item)
2926
+ if securable is None:
2927
+ return
2928
+ author = self._principals().user(item.author.login_name if item.author else None)
2929
+ editor = self._principals().user(item.editor.login_name if item.editor else None)
2930
+ if author is not None and author.is_service_account:
2931
+ author = None
2932
+ if editor is not None and editor.is_service_account:
2933
+ editor = None
2934
+ if author is None and editor is None:
2935
+ return
2936
+ self._pending_authorship[item.dest_path] = {"Author": author, "Editor": editor}
2937
+
2938
+ @site_access(SiteLevel.WRITE)
2939
+ def finalize_fidelity(self, item: MigrationItem) -> None:
2940
+ """Write the fidelity values that were only cached for this item.
484
2941
 
2942
+ The last hook wins the write: with timestamps preserved that is
2943
+ :meth:`apply_timestamps`; without them it is this method, so an item costs
2944
+ one system update instead of one per property group. Runs before the
2945
+ approval write, which must stay last.
2946
+ """
2947
+ self._restore_fidelity(item, timestamps=False)
2948
+
2949
+ @site_access(SiteLevel.MANAGE)
485
2950
  def apply_permissions(self, item: MigrationItem, permissions: list[PermissionEntry]) -> None:
486
- """Best-effort: break inheritance and recreate the source role assignments.
2951
+ """Best-effort: replay a file's or folder's unique ACLs onto the target item.
487
2952
 
488
- Principals are resolved by login name on the target; roles that don't exist
489
- there are skipped. This is a same-tenant copy — cross-tenant identity
490
- mapping is out of scope.
2953
+ Same-tenant only — cross-tenant identity mapping is out of scope. See
2954
+ :func:`_replay_role_assignments` for what happens to principals, roles and
2955
+ inheritance that cannot be resolved.
491
2956
  """
492
2957
  securable = self._securable(item)
493
2958
  if securable is None:
494
2959
  return
495
- securable.break_role_inheritance(copy_role_assignments=False, clear_sub_scopes=False)
496
- for entry in permissions:
497
- for role_name in entry.roles:
498
- role = self._role_definition(role_name)
499
- if role is not None:
500
- securable.add_role_assignment(entry.principal_name, role)
2960
+ _replay_role_assignments(securable, self._principals(), permissions, self.warnings, item.dest_path)
501
2961
  securable.context.execute_query()
502
2962
 
2963
+ @site_access(SiteLevel.WRITE)
2964
+ def apply_item_state(self, item: MigrationItem, state: dict) -> None:
2965
+ """Best-effort: restore a migrated file's content-approval state.
2966
+
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.
2975
+ """
2976
+ if item.item_type == "folder" or not state:
2977
+ return
2978
+ securable = self._securable(item)
2979
+ if securable is None:
2980
+ return
2981
+ try:
2982
+ result = securable.restore_fidelity(approval=dict(state), new_document_update=True).execute_query()
2983
+ except Exception as e: # noqa: BLE001 — approval state is best-effort
2984
+ self.warnings.append(f"approval state for {item.dest_path!r} could not be restored: {e}")
2985
+ return
2986
+ _report_rejected_fields(result, self.warnings, f"approval state {item.dest_path}")
2987
+
2988
+ @site_access(SiteLevel.READ)
2989
+ def read_metadata(self, item: MigrationItem) -> dict | None:
2990
+ """Comparable attributes of the written item (for the metadata diff)."""
2991
+ if item.item_type == "folder":
2992
+ # A folder is an item too: the timestamp system update lands on its list
2993
+ # item, and the folder resource reflects it (same read as for a file).
2994
+ folder = (
2995
+ self._folder.context.web.get_folder_by_server_relative_path(self._url(item).rstrip("/"))
2996
+ .get()
2997
+ .execute_query()
2998
+ )
2999
+ return {
3000
+ "created": iso_or_none(folder.time_created),
3001
+ "modified": iso_or_none(folder.time_last_modified),
3002
+ }
3003
+ file = self._folder.context.web.get_file_by_server_relative_url(self._url(item)).get().execute_query()
3004
+ metadata = {
3005
+ "created": iso_or_none(file.time_created),
3006
+ "modified": iso_or_none(file.time_last_modified),
3007
+ "size_bytes": file.length or 0,
3008
+ }
3009
+ status = self._target_moderation_status(item)
3010
+ if status is not None:
3011
+ metadata["moderation_status"] = status
3012
+ return metadata
3013
+
3014
+ def _target_moderation_status(self, item: MigrationItem) -> str | None:
3015
+ """The written file's approval status, or ``None`` when not readable."""
3016
+ securable = self._securable(item)
3017
+ if securable is None:
3018
+ return None
3019
+ try:
3020
+ securable.select([_MODERATION_STATUS]).get().execute_query()
3021
+ except Exception: # noqa: BLE001 — a library without moderation has no such column
3022
+ return None
3023
+ status = securable.moderation_status
3024
+ return None if status is None else str(status.value)
3025
+
3026
+ def read_permissions(self, item: MigrationItem) -> list[PermissionEntry]:
3027
+ """Read the written item's *unique* role assignments (for the permission diff)."""
3028
+ securable = self._securable(item)
3029
+ if securable is None or not _has_unique_role_assignments(securable, refresh=True):
3030
+ return []
3031
+ return _read_role_assignments(securable, normalize=self._principals().normalize)
3032
+
3033
+ def _fresh_securable(self, item: MigrationItem):
3034
+ """Re-read the written item so its properties reflect what was applied."""
3035
+ securable = self._securable(item)
3036
+ if securable is not None:
3037
+ securable.get().execute_query()
3038
+ return securable
3039
+
3040
+ def read_authorship(self, item: MigrationItem) -> tuple[str | None, str | None]:
3041
+ """The written item's author/editor login names (for the authorship diff)."""
3042
+ securable = self._fresh_securable(item)
3043
+ if securable is None:
3044
+ return (None, None)
3045
+ return (
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),
3048
+ )
3049
+
503
3050
  def _securable(self, item: MigrationItem):
504
3051
  url = self._url(item).rstrip("/")
505
3052
  if item.item_type == "folder":
506
3053
  return self._folder.context.web.get_folder_by_server_relative_path(url).list_item_all_fields
507
3054
  return self._folder.context.web.get_file_by_server_relative_url(url).listItemAllFields
508
3055
 
509
- def _role_definition(self, name: str) -> "RoleDefinition | None":
510
- """Resolve (and cache) a target role definition by name."""
511
- if self._role_definitions is None:
512
- loaded = self._folder.context.web.role_definitions.get().execute_query()
513
- self._role_definitions = {rd.name: rd for rd in loaded if rd.name}
514
- return self._role_definitions.get(name)
515
-
516
3056
  def commit(self, options=None) -> None:
517
- pass
3057
+ self._pending_authorship.clear()
518
3058
 
519
3059
  def close(self) -> None:
520
3060
  pass