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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1199) hide show
  1. office365/admin/baseline_parameter.py +15 -0
  2. office365/admin/baseline_resource.py +17 -0
  3. office365/admin/drift_status.py +13 -0
  4. office365/admin/exchange/exchange_message_trace_status.py +18 -0
  5. office365/admin/snapshot_job_status.py +16 -0
  6. office365/backuprestore/artifact_query.py +16 -0
  7. office365/backuprestore/notification_events_type.py +13 -0
  8. office365/backuprestore/restorejobtype.py +1 -0
  9. office365/backuprestore/restorepoints/search_response.py +21 -0
  10. office365/backuprestore/restorepoints/search_result.py +14 -0
  11. office365/backuprestore/restoresessions/artifact_count.py +17 -0
  12. office365/backuprestore/restoresessions/browsable_resource_type.py +15 -0
  13. office365/backuprestore/restoresessions/browse_query_order.py +15 -0
  14. office365/backuprestore/restoresessions/browse_query_response_item.py +20 -0
  15. office365/backuprestore/restoresessions/browse_query_response_item_type.py +16 -0
  16. office365/backuprestore/restoresessions/browse_session_status.py +14 -0
  17. office365/backuprestore/restoresessions/browser_shared_cookie_history.py +24 -0
  18. office365/backuprestore/service_status.py +28 -1
  19. office365/backuprestore/time_period.py +16 -0
  20. office365/booking/assigned_place_mode.py +15 -0
  21. office365/booking/business/import_building_map_setting.py +14 -0
  22. office365/booking/chedulingpolicy.py +4 -2
  23. office365/booking/customers/information.py +4 -2
  24. office365/booking/drop_in_place_mode.py +10 -0
  25. office365/booking/mailbox_details.py +15 -0
  26. office365/booking/place_mode.py +10 -0
  27. office365/booking/place_service_plan_info.py +14 -0
  28. office365/booking/reservable_place_mode.py +10 -0
  29. office365/booking/unavailable_place_mode.py +14 -0
  30. office365/communications/adhoc_call.py +31 -0
  31. office365/communications/broadcastmeetingaudience.py +9 -1
  32. office365/communications/callrecords/audio_codec.py +33 -0
  33. office365/communications/callrecords/media_stream_direction.py +12 -0
  34. office365/communications/callrecords/modality.py +0 -1
  35. office365/communications/callrecords/network_connection_type.py +16 -0
  36. office365/communications/callrecords/network_transport_protocol.py +14 -0
  37. office365/communications/callrecords/product_family.py +16 -0
  38. office365/communications/callrecords/pstn_call_duration_source.py +12 -0
  39. office365/communications/callrecords/service_role.py +32 -0
  40. office365/communications/callrecords/user_feedback_rating.py +17 -0
  41. office365/communications/callrecords/video_codec.py +22 -0
  42. office365/communications/cloud_communications.py +3 -6
  43. office365/communications/onlinemeetings/attendee_notification_info.py +15 -0
  44. office365/communications/onlinemeetings/base.py +152 -1
  45. office365/communications/onlinemeetings/broadcast_settings.py +4 -0
  46. office365/communications/onlinemeetings/lobby_bypass_settings.py +16 -0
  47. office365/communications/onlinemeetings/online_meeting.py +48 -23
  48. office365/communications/onlinemeetings/online_meeting_info.py +22 -0
  49. office365/communications/onlinemeetings/online_meeting_type.py +16 -0
  50. office365/communications/onlinemeetings/participants.py +5 -3
  51. office365/communications/onlinemeetings/watermark_protection_values.py +15 -0
  52. office365/communications/presences/presence.py +15 -5
  53. office365/communications/presences/work_location_source.py +15 -0
  54. office365/communications/presences/work_location_type.py +15 -0
  55. office365/communications/virtualevents/communications_identity_set.py +23 -0
  56. office365/copilot/ai_agent_info.py +14 -0
  57. office365/copilot/ai_interaction_entity.py +16 -0
  58. office365/copilot/ai_interaction_plugin.py +10 -0
  59. office365/copilot/package_access_entity.py +14 -0
  60. office365/copilot/package_element.py +16 -0
  61. office365/copilot/package_element_detail.py +19 -0
  62. office365/copilot/retrieval_data_source.py +14 -0
  63. office365/copilot/retrieval_entity_type.py +17 -0
  64. office365/count_collection.py +1 -1
  65. office365/delta_collection.py +41 -2
  66. office365/directory/applications/all_allowed_scopes.py +10 -0
  67. office365/directory/applications/custom_security_attribute_exemption.py +18 -0
  68. office365/directory/applications/custom_security_attribute_string_value_exemption.py +14 -0
  69. office365/directory/applications/enumerated_scopes.py +15 -0
  70. office365/directory/applications/identifier_uri_restriction.py +22 -0
  71. office365/directory/applications/implicitgrantsettings.py +8 -1
  72. office365/directory/applications/inheritable_scopes.py +15 -0
  73. office365/directory/applications/key_credential_configuration.py +22 -0
  74. office365/directory/applications/no_scopes.py +10 -0
  75. office365/directory/applications/optional_claim.py +14 -1
  76. office365/directory/applications/password_credential_configuration.py +22 -0
  77. office365/directory/applications/preauthorized.py +11 -1
  78. office365/directory/applications/redirecturisettings.py +8 -1
  79. office365/directory/applications/resource_access.py +4 -0
  80. office365/directory/applications/template.py +63 -3
  81. office365/directory/attribute_rule_members.py +15 -0
  82. office365/directory/audit/directory.py +9 -0
  83. office365/directory/audit/log_root.py +15 -15
  84. office365/directory/audit/logs/recordtype.py +476 -1
  85. office365/directory/audit/logs/usertype.py +16 -1
  86. office365/directory/audit/provisioning/object_summary.py +67 -3
  87. office365/directory/audit/signins/authentication_app_device_details.py +17 -0
  88. office365/directory/audit/signins/governance_insight.py +17 -0
  89. office365/directory/audit/signins/membership_outlier_insight.py +55 -0
  90. office365/directory/audit/signins/signin.py +78 -8
  91. office365/directory/authentication/attributecollection/external_users_self_service_sign_up.py +20 -0
  92. office365/directory/authentication/attributecollection/handler.py +10 -0
  93. office365/directory/authentication/attributecollection/method_load_start_handler.py +10 -0
  94. office365/directory/authentication/attributecollection/start_custom_extension_handler.py +17 -0
  95. office365/directory/authentication/attributecollection/start_handler.py +10 -0
  96. office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +17 -0
  97. office365/directory/authentication/attributecollection/submit_handler.py +10 -0
  98. office365/directory/authentication/authentication.py +13 -36
  99. office365/directory/authentication/error_correction_level.py +14 -0
  100. office365/directory/authentication/fraud_protection_configuration.py +10 -0
  101. office365/directory/authentication/fraud_protection_provider_configuration.py +12 -0
  102. office365/directory/authentication/generic_error.py +8 -1
  103. office365/directory/authentication/methods/configuration.py +17 -0
  104. office365/directory/authentication/methods/details.py +36 -0
  105. office365/directory/authentication/methods/mode_detail.py +17 -0
  106. office365/directory/authentication/methods/passkey_type.py +13 -0
  107. office365/directory/authentication/methods/root.py +8 -12
  108. office365/directory/authentication/methods/target.py +17 -0
  109. office365/directory/authentication/oidc_address_inbound_claims.py +18 -0
  110. office365/directory/authentication/oidc_client_authentication.py +10 -0
  111. office365/directory/authentication/oidc_client_secret_authentication.py +14 -0
  112. office365/directory/authentication/oidc_inbound_claim_mapping_override.py +23 -0
  113. office365/directory/authentication/oidc_private_jwt_key_client_authentication.py +10 -0
  114. office365/directory/authentication/signing_certificate_update_status.py +16 -0
  115. office365/directory/authentication/strength/root.py +39 -0
  116. office365/directory/authentication/strength/usage.py +4 -0
  117. office365/directory/certificates/authority.py +5 -0
  118. office365/directory/certificates/pkcs12_certificate.py +15 -0
  119. office365/directory/certificates/self_signed.py +4 -0
  120. office365/directory/certificates/x509/issuer_hints_configuration.py +2 -1
  121. office365/directory/connected_organization_members.py +15 -0
  122. office365/directory/connection_info.py +14 -0
  123. office365/directory/domains/state.py +13 -1
  124. office365/directory/domains/verified.py +14 -4
  125. office365/directory/extensions/custom/http_request_endpoint.py +16 -0
  126. office365/directory/groups/access_type.py +15 -0
  127. office365/directory/groups/group_members.py +15 -0
  128. office365/directory/groups/setting_template_value.py +17 -0
  129. office365/directory/identities/application_context.py +15 -0
  130. office365/directory/identities/application_enforced_restrictions_session_control.py +10 -0
  131. office365/directory/identities/auth_context.py +14 -0
  132. office365/directory/identities/authentication_flow.py +15 -0
  133. office365/directory/identities/conditional_access_root.py +35 -3
  134. office365/directory/identities/conditional_access_session_control.py +14 -0
  135. office365/directory/identities/ip_range.py +10 -0
  136. office365/directory/identities/on_fraud_protection_load_start_external_users_auth_handler.py +15 -0
  137. office365/directory/identities/on_interactive_auth_flow_start_external_users_self_service_sign_up.py +14 -0
  138. office365/directory/identities/on_interactive_auth_flow_start_handler.py +10 -0
  139. office365/directory/identities/on_otp_send_custom_extension_handler.py +17 -0
  140. office365/directory/identities/on_otp_send_handler.py +10 -0
  141. office365/directory/identities/on_password_submit_handler.py +10 -0
  142. office365/directory/identities/providers/on_authentication_method_load_start_external_users_self_service_sign_up.py +16 -0
  143. office365/directory/identities/providers/on_fraud_protection_load_start_handler.py +10 -0
  144. office365/directory/identities/providers/verified_id_profile_state.py +13 -0
  145. office365/directory/identities/providers/verified_id_usage_configuration_purpose.py +14 -0
  146. office365/directory/identities/riskPrevention/web_application_firewall_dns_configuration.py +21 -0
  147. office365/directory/identities/riskPrevention/web_application_firewall_verification_result.py +23 -0
  148. office365/directory/identities/riskPrevention/web_application_firewall_verified_details.py +8 -1
  149. office365/directory/identities/sign_in_context.py +10 -0
  150. office365/directory/identities/userflows/user_attribute_values_item.py +16 -0
  151. office365/directory/identities/userflows/user_flow_api_connector_configuration.py +16 -0
  152. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +12 -0
  153. office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_stats.py +15 -0
  154. office365/directory/identitygovernance/accessreview/disable_and_delete_user_apply_action.py +10 -0
  155. office365/directory/identitygovernance/accessreview/error.py +10 -0
  156. office365/directory/identitygovernance/accessreview/history/definition.py +3 -3
  157. office365/directory/identitygovernance/accessreview/history_schedule_settings.py +16 -0
  158. office365/directory/identitygovernance/accessreview/inactive_users_query_scope.py +15 -0
  159. office365/directory/identitygovernance/accessreview/instance.py +2 -2
  160. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_assignment_policy_resource.py +15 -0
  161. office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_resource.py +15 -0
  162. office365/directory/identitygovernance/accessreview/instance_decision_item_azure_role_resource.py +17 -0
  163. office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +16 -0
  164. office365/directory/identitygovernance/accessreview/instance_decision_item_service_principal_resource.py +16 -0
  165. office365/directory/identitygovernance/accessreview/notification_recipient_item.py +20 -0
  166. office365/directory/identitygovernance/accessreview/notification_recipient_query_scope.py +16 -0
  167. office365/directory/identitygovernance/accessreview/notification_recipients_type.py +16 -0
  168. office365/directory/identitygovernance/accessreview/notify_members.py +14 -0
  169. office365/directory/identitygovernance/accessreview/principal_resource_memberships_scope.py +20 -0
  170. office365/directory/identitygovernance/accessreview/principal_scope.py +12 -0
  171. office365/directory/identitygovernance/accessreview/query_scope.py +16 -0
  172. office365/directory/identitygovernance/accessreview/recommendation_insight_setting.py +10 -0
  173. office365/directory/identitygovernance/accessreview/remove_access_apply_action.py +10 -0
  174. office365/directory/identitygovernance/accessreview/resource_scope.py +15 -0
  175. office365/directory/identitygovernance/accessreview/reviewer_scope.py +17 -0
  176. office365/directory/identitygovernance/accessreview/schedule/settings.py +33 -1
  177. office365/directory/identitygovernance/accessreview/stage.py +1 -1
  178. office365/directory/identitygovernance/accessreview/stage_settings.py +33 -0
  179. office365/directory/identitygovernance/accessreview/target_owners.py +17 -0
  180. office365/directory/identitygovernance/activate_processing_result_scope.py +3 -0
  181. office365/directory/identitygovernance/activate_run_scope.py +2 -0
  182. office365/directory/identitygovernance/appconsent/request_scope.py +8 -1
  183. office365/directory/identitygovernance/attribute_set_entry.py +15 -0
  184. office365/directory/identitygovernance/awaited_workflow_processing_result.py +17 -0
  185. office365/directory/identitygovernance/cancel_runs_scope.py +16 -0
  186. office365/directory/identitygovernance/cancel_scope.py +10 -0
  187. office365/directory/identitygovernance/content_base.py +10 -0
  188. office365/directory/identitygovernance/content_category.py +24 -0
  189. office365/directory/identitygovernance/count_based_quarantine_condition.py +14 -0
  190. office365/directory/identitygovernance/custom_task_extension_callout_data.py +4 -0
  191. office365/directory/identitygovernance/custom_task_extension_response_data.py +21 -0
  192. office365/directory/identitygovernance/directory_object_workflow_subject.py +15 -0
  193. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer.py +16 -0
  194. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_choice.py +22 -0
  195. office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_string.py +14 -0
  196. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approval_stage.py +36 -0
  197. office365/directory/identitygovernance/entitlementmanagement/accesspackage/approver_information_visibility.py +14 -0
  198. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_approval_settings.py +23 -0
  199. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy_scope.py +17 -0
  200. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_callback_data.py +20 -0
  201. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_parameters.py +14 -0
  202. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_requirements.py +25 -0
  203. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_requestor_settings.py +25 -0
  204. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_review_settings.py +29 -0
  205. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentfilterbycurrentuseroptions.py +2 -0
  206. office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentrequestfilterbycurrentuseroptions.py +4 -0
  207. office365/directory/identitygovernance/entitlementmanagement/accesspackage/automatic_request_settings.py +17 -0
  208. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_status.py +14 -0
  209. office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_extension_callout_instance.py +21 -0
  210. office365/directory/identitygovernance/entitlementmanagement/accesspackage/dynamic_approval_stage.py +10 -0
  211. office365/directory/identitygovernance/entitlementmanagement/accesspackage/expiration_pattern.py +20 -0
  212. office365/directory/identitygovernance/entitlementmanagement/accesspackage/localized_text.py +15 -0
  213. office365/directory/identitygovernance/entitlementmanagement/accesspackage/notification_settings.py +14 -0
  214. office365/directory/identitygovernance/entitlementmanagement/accesspackage/request_approval_stage_callback_configuration.py +10 -0
  215. office365/directory/identitygovernance/entitlementmanagement/accesspackage/requesttype.py +1 -0
  216. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute.py +26 -0
  217. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_destination.py +10 -0
  218. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_question.py +15 -0
  219. office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_source.py +10 -0
  220. office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject_lifecycle.py +14 -0
  221. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_filter_by_current_user_options.py +14 -0
  222. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_reason.py +10 -0
  223. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_based.py +17 -0
  224. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_insight_level.py +14 -0
  225. office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_self_assignment_history_based.py +16 -0
  226. office365/directory/identitygovernance/entitlementmanagement/accesspackage/user_directory_attribute_store.py +10 -0
  227. office365/directory/identitygovernance/entitlementmanagement/assignment_request_approval_stage_callback_data.py +17 -0
  228. office365/directory/identitygovernance/entitlementmanagement/azure_active_directory_tenant.py +15 -0
  229. office365/directory/identitygovernance/entitlementmanagement/domain_identity_source.py +15 -0
  230. office365/directory/identitygovernance/entitlementmanagement/fallback_to_microsoft_provider_on_error.py +12 -0
  231. office365/directory/identitygovernance/entitlementmanagement/identity_source.py +10 -0
  232. office365/directory/identitygovernance/entitlementmanagement/schedule.py +21 -0
  233. office365/directory/identitygovernance/entitlementmanagement/social_identity_source.py +18 -0
  234. office365/directory/identitygovernance/guest_sponsor_trigger.py +14 -0
  235. office365/directory/identitygovernance/percentage_based_quarantine_condition.py +14 -0
  236. office365/directory/identitygovernance/preview_failed_task.py +17 -0
  237. office365/directory/identitygovernance/process_content_metadata_base.py +26 -0
  238. office365/directory/identitygovernance/provisioning_attribute_mapping.py +10 -0
  239. office365/directory/identitygovernance/provisioning_object_workflow_subject.py +19 -0
  240. office365/directory/identitygovernance/quarantine_condition.py +10 -0
  241. office365/directory/identitygovernance/quarantine_configuration.py +20 -0
  242. office365/directory/identitygovernance/quarantine_details.py +18 -0
  243. office365/directory/identitygovernance/resource_access_detail.py +23 -0
  244. office365/directory/identitygovernance/subject_summary.py +18 -0
  245. office365/directory/identitygovernance/termsofuse/agreement_file_data.py +14 -0
  246. office365/directory/identitygovernance/termsofuse/terms_expiration.py +16 -0
  247. office365/directory/identitygovernance/text_content.py +14 -0
  248. office365/directory/identitygovernance/workflow.py +23 -0
  249. office365/directory/identitygovernance/workflow_setting.py +15 -0
  250. office365/directory/identitygovernance/workflow_subject.py +10 -0
  251. office365/directory/insights/office_graph.py +7 -6
  252. office365/directory/invitations/invitation.py +45 -2
  253. office365/directory/licenses/service_plan_info.py +4 -0
  254. office365/directory/licenses/units_detail.py +4 -0
  255. office365/directory/objects/collection.py +34 -8
  256. office365/directory/objects/service_provisioning_xml_error.py +14 -0
  257. office365/directory/permissions/comment_action.py +18 -0
  258. office365/directory/permissions/create_action.py +10 -0
  259. office365/directory/permissions/default_user_role.py +16 -1
  260. office365/directory/permissions/delete_action.py +15 -0
  261. office365/directory/permissions/email_identity.py +7 -9
  262. office365/directory/policies/all_devices_assignment_target.py +12 -0
  263. office365/directory/policies/all_domains.py +10 -0
  264. office365/directory/policies/all_licensed_users_assignment_target.py +10 -0
  265. office365/directory/policies/allowedtargetscope.py +1 -0
  266. office365/directory/policies/app_management_application_configuration.py +15 -0
  267. office365/directory/policies/app_management_configuration.py +22 -0
  268. office365/directory/policies/app_management_policy_actor_exemptions.py +18 -0
  269. office365/directory/policies/app_management_service_principal_configuration.py +10 -0
  270. office365/directory/policies/authentication_combination_configuration.py +18 -0
  271. office365/directory/policies/authentication_context_class_reference.py +26 -0
  272. office365/directory/policies/authentication_methods.py +59 -0
  273. office365/directory/policies/authentication_strength.py +65 -8
  274. office365/directory/policies/azure_ad_registration_policy.py +16 -0
  275. office365/directory/policies/ca_policies_deletable_root.py +33 -0
  276. office365/directory/policies/claims_mapping_policy.py +7 -0
  277. office365/directory/policies/cloud_app_security_session_control.py +15 -0
  278. office365/directory/policies/conditionalaccess/all_external_tenants.py +10 -0
  279. office365/directory/policies/conditionalaccess/applications.py +20 -0
  280. office365/directory/policies/conditionalaccess/authentication_flows.py +15 -0
  281. office365/directory/policies/conditionalaccess/client_applications.py +18 -0
  282. office365/directory/policies/conditionalaccess/condition_set.py +42 -0
  283. office365/directory/policies/conditionalaccess/device_and_app_management_assignment_target.py +10 -0
  284. office365/directory/policies/conditionalaccess/device_info.py +43 -0
  285. office365/directory/policies/conditionalaccess/devices.py +15 -0
  286. office365/directory/policies/conditionalaccess/enumerated_external_tenants.py +15 -0
  287. office365/directory/policies/conditionalaccess/external_tenants.py +17 -0
  288. office365/directory/policies/conditionalaccess/filter.py +16 -0
  289. office365/directory/policies/conditionalaccess/grant_controls.py +24 -0
  290. office365/directory/policies/conditionalaccess/grantcontrol.py +1 -0
  291. office365/directory/policies/conditionalaccess/guests_or_external_users.py +19 -0
  292. office365/directory/policies/conditionalaccess/locations.py +16 -0
  293. office365/directory/policies/conditionalaccess/persistent_browser_session_control.py +15 -0
  294. office365/directory/policies/conditionalaccess/platforms.py +21 -0
  295. office365/directory/policies/conditionalaccess/policy_deletable_item.py +17 -0
  296. office365/directory/policies/conditionalaccess/policy_detail.py +19 -0
  297. office365/directory/policies/conditionalaccess/secure_sign_in_session_control.py +10 -0
  298. office365/directory/policies/conditionalaccess/service_principal_sign_in.py +14 -0
  299. office365/directory/policies/conditionalaccess/session_controls.py +32 -0
  300. office365/directory/policies/conditionalaccess/sign_in_conditions.py +29 -0
  301. office365/directory/policies/conditionalaccess/sign_in_frequency_session_control.py +24 -0
  302. office365/directory/policies/conditionalaccess/sign_in_identity.py +10 -0
  303. office365/directory/policies/conditionalaccess/user_action_context.py +15 -0
  304. office365/directory/policies/conditionalaccess/user_sign_in.py +19 -0
  305. office365/directory/policies/conditionalaccess/users.py +29 -0
  306. office365/directory/policies/crosstenant/app_service_connect_setting.py +19 -0
  307. office365/directory/policies/crosstenant/b2_b_setting.py +22 -0
  308. office365/directory/policies/crosstenant/inbound_trust.py +16 -0
  309. office365/directory/policies/crosstenant/m365_collaboration_inbound_setting.py +17 -0
  310. office365/directory/policies/crosstenant/m365_collaboration_outbound_setting.py +19 -0
  311. office365/directory/policies/crosstenant/target.py +16 -0
  312. office365/directory/policies/crosstenant/target_configuration.py +24 -0
  313. office365/directory/policies/crosstenant/tenant_restrictions.py +15 -0
  314. office365/directory/policies/crosstenant/user_sync_inbound.py +14 -0
  315. office365/directory/policies/custom_app_management_application_configuration.py +15 -0
  316. office365/directory/policies/custom_app_management_configuration.py +19 -0
  317. office365/directory/policies/default_invitation_redemption_identity_provider_configuration.py +10 -0
  318. office365/directory/policies/devices_filter.py +20 -0
  319. office365/directory/policies/enumerated_domains.py +15 -0
  320. office365/directory/policies/face_check_configuration.py +15 -0
  321. office365/directory/policies/group_scope.py +10 -0
  322. office365/directory/policies/identifier_uri_configuration.py +16 -0
  323. office365/directory/policies/inbound_outbound_policy_configuration.py +15 -0
  324. office365/directory/policies/invitation_redemption_identity_provider_configuration.py +19 -0
  325. office365/directory/policies/match_confidence_level.py +13 -0
  326. office365/directory/policies/protected_application_metadata.py +15 -0
  327. office365/directory/policies/protection_policy_artifact_count.py +17 -0
  328. office365/directory/policies/restrict_access_action.py +10 -0
  329. office365/directory/policies/restrict_access_action_base.py +15 -0
  330. office365/directory/policies/retention_setting.py +16 -0
  331. office365/directory/policies/root.py +14 -1
  332. office365/directory/policies/scope_base.py +14 -0
  333. office365/directory/policies/security_defaults.py +16 -0
  334. office365/directory/policies/self_service_sign_up_authentication_flow_configuration.py +14 -0
  335. office365/directory/policies/tenant_scope.py +10 -0
  336. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_filter_by_current_user_options.py +12 -0
  337. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_instance_filter_by_current_user_options.py +12 -0
  338. office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_request_filter_by_current_user_options.py +14 -0
  339. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_filter_by_current_user_options.py +12 -0
  340. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_instance_filter_by_current_user_options.py +12 -0
  341. office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_request_filter_by_current_user_options.py +14 -0
  342. office365/directory/policies/user_scope.py +10 -0
  343. office365/directory/policies/validating_domains.py +15 -0
  344. office365/directory/policies/verified_id_profile_configuration.py +15 -0
  345. office365/directory/policies/verified_id_usage_configuration.py +14 -0
  346. office365/directory/protection/riskyusers/activity.py +7 -1
  347. office365/directory/protection/riskyusers/risk_service_principal_activity.py +17 -0
  348. office365/directory/recovery/recovery_action.py +14 -0
  349. office365/directory/recovery/recovery_status.py +18 -0
  350. office365/directory/recovery/resource_type_name.py +23 -0
  351. office365/directory/requestor_manager.py +14 -0
  352. office365/directory/rolemanagement/unifiedrole/notification_recipients.py +20 -0
  353. office365/directory/rolemanagement/unifiedrole/permission.py +4 -0
  354. office365/directory/security/account.py +0 -1
  355. office365/directory/security/action.py +17 -0
  356. office365/directory/security/ai_agent_platform.py +15 -0
  357. office365/directory/security/alerts/alert.py +17 -0
  358. office365/directory/security/{blob_container_evidence.py → alerts/blob_container_evidence.py} +1 -1
  359. office365/directory/security/{blob_evidence.py → alerts/blob_evidence.py} +1 -1
  360. office365/directory/security/alerts/connection_direction.py +14 -0
  361. office365/directory/security/{sas_token_evidence.py → alerts/sas_token_evidence.py} +1 -1
  362. office365/directory/security/alerts/status.py +1 -2
  363. office365/directory/security/analyzed_message_evidence.py +3 -0
  364. office365/directory/security/antispam_directionality.py +15 -0
  365. office365/directory/security/attacksimulations/account_target_content_type.py +14 -0
  366. office365/directory/security/audit/audit_data.py +15 -0
  367. office365/directory/security/audit/audit_log_query_status.py +16 -0
  368. office365/directory/security/audit/multi_tenant_organization_join_request_transition_details.py +20 -0
  369. office365/directory/security/audit/multi_tenant_organization_member_transition_details.py +22 -0
  370. office365/directory/security/audit/whois_domain_status.py +16 -0
  371. office365/directory/security/{whois_record.py → audit/whois_record.py} +1 -1
  372. office365/directory/security/cases/additionaldataoptions.py +1 -0
  373. office365/directory/security/cases/ediscovery.py +3 -0
  374. office365/directory/security/cloud_application_evidence.py +3 -1
  375. office365/directory/security/cloud_logon_session_evidence.py +2 -0
  376. office365/directory/security/{analyzed_email_attachment.py → collaboration/analyzed_email_attachment.py} +3 -1
  377. office365/directory/security/{collaboration_root.py → collaboration/collaboration_root.py} +1 -1
  378. office365/directory/security/container_evidence.py +4 -0
  379. office365/directory/security/container_image_evidence.py +4 -1
  380. office365/directory/security/correlation_reason.py +28 -0
  381. office365/directory/security/datasecurity/classifcation_error_base.py +18 -0
  382. office365/directory/security/{audit_data.py → datasecurity/classification_error.py} +2 -2
  383. office365/directory/security/datasecurity/classification_inner_error.py +18 -0
  384. office365/directory/security/datasecurity/compute_rights_and_inheritance_result.py +17 -0
  385. office365/directory/security/datasecurity/custom_metadata_dictionary.py +10 -0
  386. office365/directory/security/datasecurity/dlp_action_info.py +15 -0
  387. office365/directory/security/{data_security → datasecurity}/governance.py +1 -1
  388. office365/directory/security/datasecurity/integrated_application_metadata.py +15 -0
  389. office365/directory/security/datasecurity/policy_binding.py +17 -0
  390. office365/directory/security/datasecurity/policy_location.py +14 -0
  391. office365/directory/security/datasecurity/policy_location_application.py +10 -0
  392. office365/directory/security/datasecurity/policy_location_domain.py +10 -0
  393. office365/directory/security/datasecurity/policy_location_url.py +10 -0
  394. office365/directory/security/datasecurity/policy_scope_base.py +26 -0
  395. office365/directory/security/datasecurity/policy_tenant_scope.py +15 -0
  396. office365/directory/security/datasecurity/policy_tip_action.py +16 -0
  397. office365/directory/security/datasecurity/policy_user_scope.py +10 -0
  398. office365/directory/security/datasecurity/process_content_batch_request.py +17 -0
  399. office365/directory/security/datasecurity/process_content_request.py +24 -0
  400. office365/directory/security/datasecurity/process_content_response.py +24 -0
  401. office365/directory/security/datasecurity/process_content_responses.py +16 -0
  402. office365/directory/security/datasecurity/process_conversation_metadata.py +27 -0
  403. office365/directory/security/datasecurity/process_file_metadata.py +16 -0
  404. office365/directory/security/datasecurity/protected_content.py +16 -0
  405. office365/directory/security/delivery_action.py +16 -0
  406. office365/directory/security/delivery_location.py +20 -0
  407. office365/directory/security/detonation_details.py +11 -0
  408. office365/directory/security/device_evidence.py +11 -0
  409. office365/directory/security/dns_evidence.py +6 -1
  410. office365/directory/security/event_source.py +14 -0
  411. office365/directory/security/file_plan_applied_category.py +4 -1
  412. office365/directory/security/formatted_content.py +16 -0
  413. office365/directory/security/indicator_source.py +14 -0
  414. office365/directory/security/intelligence_profile_kind.py +13 -0
  415. office365/directory/security/investigation_state.py +29 -0
  416. office365/directory/security/invoke_action_result.py +0 -1
  417. office365/directory/security/io_t_device_evidence.py +6 -1
  418. office365/directory/security/ip_evidence.py +2 -0
  419. office365/directory/security/kubernetes_controller_evidence.py +2 -0
  420. office365/directory/security/kubernetes_pod_evidence.py +10 -0
  421. office365/directory/security/labels/retention/duration_in_days.py +3 -0
  422. office365/directory/security/mailbox_configuration_type.py +16 -0
  423. office365/directory/security/mailbox_evidence.py +3 -1
  424. office365/directory/security/onboarding_status.py +15 -0
  425. office365/directory/security/passive_dns_record.py +1 -1
  426. office365/directory/security/processing_error.py +15 -0
  427. office365/directory/security/protocol_type.py +13 -0
  428. office365/directory/security/public_error_response.py +4 -1
  429. office365/directory/security/query_type.py +13 -0
  430. office365/directory/security/recipient_type.py +13 -0
  431. office365/directory/security/remediation_action.py +17 -0
  432. office365/directory/security/remediation_severity.py +14 -0
  433. office365/directory/security/security.py +1 -1
  434. office365/directory/security/sensor_candidate_activation_mode.py +13 -0
  435. office365/directory/security/service_principal_type.py +15 -0
  436. office365/directory/security/service_source.py +25 -0
  437. office365/directory/security/ssl_certificate.py +1 -1
  438. office365/directory/security/subdomain.py +1 -1
  439. office365/directory/security/subjectrightsrequests/all_mailbox_location.py +10 -0
  440. office365/directory/security/subjectrightsrequests/all_site_location.py +10 -0
  441. office365/directory/security/subjectrightsrequests/data_subject.py +17 -0
  442. office365/directory/security/subjectrightsrequests/detail.py +26 -0
  443. office365/directory/security/subjectrightsrequests/enumerated_mailbox_location.py +15 -0
  444. office365/directory/security/subjectrightsrequests/enumerated_site_location.py +15 -0
  445. office365/directory/security/subjectrightsrequests/history.py +22 -0
  446. office365/directory/security/subjectrightsrequests/mailbox_location.py +10 -0
  447. office365/directory/security/subjectrightsrequests/site_location.py +10 -0
  448. office365/directory/security/subjectrightsrequests/stage_detail.py +19 -0
  449. office365/directory/security/teams_delivery_location.py +15 -0
  450. office365/directory/security/teams_message_delivery_action.py +16 -0
  451. office365/directory/security/threat_type.py +16 -0
  452. office365/directory/security/{host.py → threatintelligence/host.py} +8 -8
  453. office365/directory/security/{host_component.py → threatintelligence/host_component.py} +1 -1
  454. office365/directory/security/{host_cookie.py → threatintelligence/host_cookie.py} +1 -1
  455. office365/directory/security/{host_pair.py → threatintelligence/host_pair.py} +1 -1
  456. office365/directory/security/{host_port.py → threatintelligence/host_port.py} +1 -1
  457. office365/directory/security/threatintelligence/host_port_banner.py +19 -0
  458. office365/directory/security/threatintelligence/host_port_component.py +19 -0
  459. office365/directory/security/threatintelligence/host_port_protocol.py +13 -0
  460. office365/directory/security/threatintelligence/host_port_status.py +14 -0
  461. office365/directory/security/threatintelligence/host_reputation_classification.py +15 -0
  462. office365/directory/security/threatintelligence/host_reputation_rule.py +16 -0
  463. office365/directory/security/threatintelligence/host_reputation_rule_severity.py +15 -0
  464. office365/directory/security/{host_ssl_certificate.py → threatintelligence/host_ssl_certificate.py} +1 -1
  465. office365/directory/security/{host_tracker.py → threatintelligence/host_tracker.py} +1 -1
  466. office365/directory/security/threatintelligence/hosts/__init__.py +0 -0
  467. office365/directory/security/threatintelligence/threat_intelligence.py +9 -9
  468. office365/directory/security/threatintelligence/whoisrecords/__init__.py +0 -0
  469. office365/directory/security/timeline_event_type.py +20 -0
  470. office365/directory/security/user_evidence.py +2 -0
  471. office365/directory/security/verdict_category.py +20 -0
  472. office365/directory/security/vm_cloud_provider.py +13 -0
  473. office365/directory/security/vulnerability_severity.py +16 -0
  474. office365/directory/security/whois_base_record.py +1 -1
  475. office365/directory/serviceprincipals/delegated_permission_classification.py +27 -0
  476. office365/directory/serviceprincipals/remote_desktop_security_configuration.py +16 -0
  477. office365/directory/single_service_principal.py +15 -0
  478. office365/directory/single_user.py +15 -0
  479. office365/directory/synchronization/attribute_mapping.py +23 -0
  480. office365/directory/synchronization/error.py +10 -1
  481. office365/directory/synchronization/job_application_parameters.py +19 -0
  482. office365/directory/synchronization/job_restart_criteria.py +7 -1
  483. office365/directory/synchronization/job_subject.py +17 -0
  484. office365/directory/synchronization/linked_objects.py +22 -0
  485. office365/directory/synchronization/metadata_entry.py +16 -0
  486. office365/directory/synchronization/on_premises_accidental_deletion_prevention.py +20 -0
  487. office365/directory/synchronization/on_premises_directory_synchronization_configuration.py +19 -0
  488. office365/directory/synchronization/on_premises_directory_synchronization_feature.py +33 -0
  489. office365/directory/synchronization/progress.py +4 -0
  490. office365/directory/synchronization/quarantine.py +11 -0
  491. office365/directory/synchronization/rule.py +32 -0
  492. office365/directory/synchronization/schedule.py +18 -0
  493. office365/directory/synchronization/secret_key_string_value_pair.py +16 -0
  494. office365/directory/synchronization/status.py +17 -3
  495. office365/directory/synchronization/task_execution.py +26 -1
  496. office365/directory/target_agent_identity_sponsors_or_owners.py +10 -0
  497. office365/directory/target_application_owners.py +10 -0
  498. office365/directory/target_manager.py +14 -0
  499. office365/directory/target_user_sponsors.py +10 -0
  500. office365/directory/tenantinformation/information.py +4 -0
  501. office365/directory/users/activities/activity.py +42 -8
  502. office365/directory/users/settings.py +5 -13
  503. office365/directory/users/user.py +4 -3
  504. office365/directory/users/work_location_update_scope.py +13 -0
  505. office365/education/related_contact.py +19 -0
  506. office365/entity_collection.py +0 -20
  507. office365/externalconnectors/acl_type.py +16 -0
  508. office365/externalconnectors/binary_operator.py +12 -0
  509. office365/externalconnectors/connection_operation_status.py +15 -0
  510. office365/externalconnectors/connection_state.py +15 -0
  511. office365/externalconnectors/external_activity_type.py +15 -0
  512. office365/externalconnectors/external_item_content_type.py +13 -0
  513. office365/externalconnectors/identity_type.py +14 -0
  514. office365/externalconnectors/label.py +65 -0
  515. office365/externalconnectors/property_type.py +22 -0
  516. office365/externalconnectors/rule_operation.py +19 -0
  517. office365/graph_client.py +120 -16
  518. office365/graph_request.py +3 -1
  519. office365/intune/browser/browser_site_history.py +25 -0
  520. office365/intune/devices/alternative_security_id.py +5 -0
  521. office365/intune/devices/cloud_pc_launch_detail.py +22 -0
  522. office365/intune/devices/cloud_pc_windows_setting.py +14 -0
  523. office365/intune/devices/device_metadata.py +17 -0
  524. office365/intune/devices/enumerated_device_registration_membership.py +16 -0
  525. office365/intune/devices/imported_windows_autopilot_device_identity_import_status.py +15 -0
  526. office365/intune/devices/imported_windows_autopilot_device_identity_upload_status.py +14 -0
  527. office365/intune/devices/management/all_device_registration_membership.py +10 -0
  528. office365/intune/devices/management/device_protection_overview.py +24 -0
  529. office365/intune/devices/management/managed/managed.py +79 -0
  530. office365/intune/devices/management/managed/windows/autopilot_device_type.py +13 -0
  531. office365/intune/devices/management/managed/windows/defender_product_status.py +36 -0
  532. office365/intune/devices/management/managed/windows/information_protection_enforcement_level.py +14 -0
  533. office365/intune/devices/management/mobileapps/file_encryption_info.py +20 -0
  534. office365/intune/devices/management/mobileapps/ios/ios_device_type.py +15 -0
  535. office365/intune/devices/management/user_experience_analytics_settings.py +14 -0
  536. office365/intune/devices/management/user_experience_analytics_summarized_by.py +17 -0
  537. office365/intune/devices/management/virtualendpoint/cloudpcs/exclusion_group_assignment_target.py +10 -0
  538. office365/intune/devices/management/virtualendpoint/cloudpcs/group_assignment_target.py +16 -0
  539. office365/intune/devices/management/virtualendpoint/provisioningpolicies/microsoft_managed_desktop.py +18 -0
  540. office365/intune/devices/management/windows_malware_overview.py +16 -0
  541. office365/intune/devices/no_device_registration_membership.py +10 -0
  542. office365/intune/devices/operating_system_specifications.py +15 -0
  543. office365/intune/enrollment_state.py +15 -0
  544. office365/intune/instance_resource_access.py +19 -0
  545. office365/intune/organizations/content_customization.py +15 -0
  546. office365/intune/organizations/login_page_layout_configuration.py +17 -0
  547. office365/intune/organizations/login_page_text_visibility_settings.py +19 -0
  548. office365/intune/organizations/physical_office_address.py +19 -0
  549. office365/intune/organizations/privacy_profile.py +15 -0
  550. office365/intune/policies/azure_ad_join_policy.py +18 -0
  551. office365/intune/policies/local_admin_password_settings.py +14 -0
  552. office365/intune/policies/local_admin_settings.py +16 -0
  553. office365/intune/print/printers/incompatible_printer_settings.py +13 -0
  554. office365/intune/print/user_print.py +0 -2
  555. office365/intune/process_integrity_level.py +17 -0
  556. office365/intune/resource_permission.py +15 -0
  557. office365/migration/__init__.py +122 -7
  558. office365/migration/_util.py +73 -0
  559. office365/migration/adapters/__init__.py +94 -0
  560. office365/migration/adapters/filesystem.py +174 -0
  561. office365/migration/assessment/__init__.py +27 -0
  562. office365/migration/assessment/containers.py +24 -0
  563. office365/migration/assessment/export.py +51 -0
  564. office365/migration/assessment/registry.py +60 -0
  565. office365/migration/assessment/report.py +142 -31
  566. office365/migration/assessment/runner.py +57 -0
  567. office365/migration/assessment/scanners/__init__.py +13 -0
  568. office365/migration/assessment/scanners/base.py +135 -0
  569. office365/migration/base.py +53 -4
  570. office365/migration/checkpoint.py +76 -0
  571. office365/migration/job.py +209 -0
  572. office365/migration/manifest.py +71 -0
  573. office365/migration/outlook/__init__.py +20 -0
  574. office365/migration/outlook/assessor.py +73 -0
  575. office365/migration/outlook/registry.py +27 -0
  576. office365/migration/outlook/scanner.py +82 -0
  577. office365/migration/report.py +111 -0
  578. office365/migration/runner.py +208 -0
  579. office365/migration/server_job.py +90 -0
  580. office365/migration/session.py +105 -0
  581. office365/migration/sharepoint/__init__.py +53 -0
  582. office365/migration/sharepoint/adapters.py +354 -0
  583. office365/migration/sharepoint/assessor.py +312 -0
  584. office365/migration/sharepoint/registry.py +48 -0
  585. office365/migration/sharepoint/scanners/__init__.py +27 -0
  586. office365/migration/sharepoint/scanners/fields.py +52 -0
  587. office365/migration/sharepoint/scanners/files.py +25 -0
  588. office365/migration/sharepoint/scanners/large_sites.py +124 -0
  589. office365/migration/sharepoint/scanners/locked_sites.py +38 -0
  590. office365/migration/sharepoint/scanners/paths.py +45 -0
  591. office365/migration/sharepoint/scanners/permissions.py +24 -0
  592. office365/migration/sharepoint/scanners/summary.py +37 -0
  593. office365/migration/sharepoint/tenant_assessor.py +93 -0
  594. office365/migration/sharepoint/transfer.py +92 -0
  595. office365/migration/teams/__init__.py +29 -0
  596. office365/migration/teams/_extract.py +108 -0
  597. office365/migration/teams/adapters.py +190 -0
  598. office365/migration/teams/models.py +73 -0
  599. office365/migration/validators.py +65 -0
  600. office365/onedrive/base_item.py +10 -15
  601. office365/onedrive/contenttypes/content_type.py +8 -13
  602. office365/onedrive/documentsets/version.py +3 -6
  603. office365/onedrive/driveitems/audio.py +16 -0
  604. office365/onedrive/driveitems/bundle.py +4 -0
  605. office365/onedrive/driveitems/driveItem.py +126 -24
  606. office365/onedrive/driveitems/image.py +4 -0
  607. office365/onedrive/driveitems/malware.py +14 -0
  608. office365/onedrive/driveitems/package.py +14 -0
  609. office365/onedrive/driveitems/photo.py +13 -1
  610. office365/onedrive/driveitems/publication_facet.py +4 -0
  611. office365/onedrive/driveitems/remote_item.py +18 -0
  612. office365/onedrive/driveitems/special_folder.py +4 -0
  613. office365/onedrive/driveitems/uploadable_properties.py +2 -2
  614. office365/onedrive/driveitems/video.py +15 -1
  615. office365/onedrive/drives/drive.py +9 -0
  616. office365/onedrive/drives/quota.py +9 -1
  617. office365/onedrive/files/file.py +4 -0
  618. office365/onedrive/files/system_info.py +4 -0
  619. office365/onedrive/filestorage/containertypes/app_permission.py +20 -1
  620. office365/onedrive/filestorage/containertypes/billing_classification.py +8 -0
  621. office365/onedrive/filestorage/containertypes/billing_status.py +7 -0
  622. office365/onedrive/filestorage/containertypes/settings_override.py +17 -0
  623. office365/onedrive/folders/folder.py +4 -0
  624. office365/onedrive/internal/paths/shared.py +1 -3
  625. office365/onedrive/internal/paths/site.py +2 -1
  626. office365/onedrive/listitems/collection.py +2 -2
  627. office365/onedrive/lists/info.py +4 -0
  628. office365/onedrive/operations/pending.py +4 -0
  629. office365/onedrive/operations/public_inner_error.py +21 -0
  630. office365/onedrive/sensitivitylabels/usagerights.py +1 -1
  631. office365/onedrive/share_point_migration_job_error_level.py +15 -0
  632. office365/onedrive/share_point_migration_object_type.py +20 -0
  633. office365/onedrive/shares/shared.py +4 -0
  634. office365/onedrive/sites/collection.py +4 -0
  635. office365/onedrive/sites/sites_with_root.py +3 -3
  636. office365/onedrive/sites/website.py +17 -0
  637. office365/onedrive/sites/website_type.py +15 -0
  638. office365/onedrive/termstore/groups/collection.py +6 -6
  639. office365/onedrive/termstore/groups/group.py +6 -1
  640. office365/onedrive/termstore/relation_type.py +13 -0
  641. office365/onedrive/termstore/sets/collection.py +6 -6
  642. office365/onedrive/termstore/store.py +14 -29
  643. office365/onedrive/termstore/store_manager.py +128 -0
  644. office365/onedrive/termstore/terms/collection.py +6 -6
  645. office365/onedrive/workbooks/charts/axes.py +4 -10
  646. office365/onedrive/workbooks/filter_criteria.py +9 -0
  647. office365/onedrive/workbooks/filter_datetime.py +15 -0
  648. office365/onedrive/workbooks/icon.py +7 -1
  649. office365/onedrive/workbooks/operations/error.py +4 -0
  650. office365/onedrive/workbooks/ranges/reference.py +4 -0
  651. office365/onedrive/workbooks/session_info.py +4 -0
  652. office365/onedrive/workbooks/sort_field.py +5 -0
  653. office365/onedrive/workbooks/worksheets/protection_options.py +4 -0
  654. office365/onedrive/workbooks/worksheets/worksheet.py +5 -3
  655. office365/onenote/pages/collection.py +1 -1
  656. office365/onenote/pages/page.py +5 -11
  657. office365/outlook/calendar/attendees/attendee.py +4 -0
  658. office365/outlook/calendar/attendees/availability.py +4 -0
  659. office365/outlook/calendar/attendees/base.py +4 -0
  660. office365/outlook/calendar/collection.py +7 -0
  661. office365/outlook/calendar/events/event.py +8 -14
  662. office365/outlook/calendar/events/reminder.py +4 -0
  663. office365/outlook/calendar/location_constraint.py +4 -0
  664. office365/outlook/calendar/meetingtimes/suggestion.py +8 -0
  665. office365/outlook/calendar/meetingtimes/suggestions_result.py +4 -0
  666. office365/outlook/calendar/meetingtimes/time_constraint.py +4 -0
  667. office365/outlook/calendar/response_status.py +7 -1
  668. office365/outlook/calendar/schedule/free_busy_error.py +15 -0
  669. office365/outlook/calendar/schedule/information.py +4 -0
  670. office365/outlook/calendar/schedule/item.py +4 -0
  671. office365/outlook/calendar/sharing/message_action.py +11 -1
  672. office365/outlook/calendar/timezones/base.py +4 -0
  673. office365/outlook/calendar/timezones/custom.py +9 -1
  674. office365/outlook/calendar/timezones/daylight_time_zone_offset.py +14 -0
  675. office365/outlook/calendar/working_hours.py +4 -0
  676. office365/outlook/check_in_method.py +15 -0
  677. office365/outlook/contacts/folders/collection.py +1 -1
  678. office365/outlook/convert_id_result.py +7 -1
  679. office365/outlook/item.py +3 -11
  680. office365/outlook/locale_info.py +4 -0
  681. office365/outlook/mail/attachments/attachment_item.py +7 -0
  682. office365/outlook/mail/attachments/collection.py +33 -18
  683. office365/outlook/mail/automaticreplies/mailtips.py +4 -0
  684. office365/outlook/mail/automaticreplies/setting.py +4 -0
  685. office365/outlook/mail/email_details.py +16 -0
  686. office365/outlook/mail/export_item_response.py +19 -0
  687. office365/outlook/mail/folders/folder.py +5 -11
  688. office365/outlook/mail/location.py +1 -1
  689. office365/outlook/mail/location_constraint_item.py +8 -1
  690. office365/outlook/mail/mailbox_item_import_session.py +16 -0
  691. office365/outlook/mail/messages/collection.py +1 -1
  692. office365/outlook/mail/messages/followup_flag.py +4 -0
  693. office365/outlook/mail/messages/internet_header.py +4 -0
  694. office365/outlook/mail/messages/message.py +21 -7
  695. office365/outlook/mail/messages/rules/actions.py +4 -0
  696. office365/outlook/mail/messages/rules/predicates.py +29 -0
  697. office365/outlook/mail/messages/rules/rule.py +1 -1
  698. office365/outlook/mail/messages/rules/size_range.py +15 -0
  699. office365/outlook/mail/patterned_recurrence.py +4 -0
  700. office365/outlook/mail/recurrence_pattern.py +4 -0
  701. office365/outlook/mail/recurrence_range.py +4 -0
  702. office365/outlook/mail/tips/error.py +7 -1
  703. office365/outlook/people/person_type.py +14 -0
  704. office365/outlook/place_feature_enablement.py +14 -0
  705. office365/outlook/resource_link.py +17 -0
  706. office365/outlook/resource_link_type.py +12 -0
  707. office365/outlook/scored_email_address.py +18 -0
  708. office365/outlook/timezones/information.py +4 -0
  709. office365/outlook/timezones/standard_time_zone_offset.py +20 -0
  710. office365/partners/billing/attribute_set.py +13 -0
  711. office365/partners/billing/billing_period.py +13 -0
  712. office365/partners/partners.py +5 -4
  713. office365/planner/buckets/collection.py +2 -2
  714. office365/planner/plans/details.py +3 -9
  715. office365/planner/user.py +6 -4
  716. office365/reports/internal/queries/create_report_query.py +26 -12
  717. office365/reports/print_usage.py +67 -0
  718. office365/reports/print_usage_by_printer.py +21 -0
  719. office365/reports/print_usage_by_user.py +16 -0
  720. office365/reports/relying_party_detailed_summary.py +70 -0
  721. office365/reports/root.py +77 -95
  722. office365/runtime/auth/authentication_context.py +41 -15
  723. office365/runtime/auth/entra/authentication_context.py +22 -2
  724. office365/runtime/auth/providers/acs_token_provider.py +6 -2
  725. office365/runtime/auth/providers/cookie_provider.py +7 -3
  726. office365/runtime/auth/providers/saml_token_provider.py +6 -2
  727. office365/runtime/auth/sts_profile.py +1 -1
  728. office365/runtime/client_object.py +50 -67
  729. office365/runtime/client_object_collection.py +297 -14
  730. office365/runtime/client_request_exception.py +63 -4
  731. office365/runtime/client_result.py +26 -18
  732. office365/runtime/client_runtime_context.py +232 -25
  733. office365/runtime/client_value.py +14 -40
  734. office365/runtime/client_value_collection.py +4 -8
  735. office365/runtime/converters/__init__.py +1 -0
  736. office365/runtime/converters/csv_reader.py +94 -0
  737. office365/runtime/converters/csv_writer.py +60 -0
  738. office365/runtime/converters/dataframe.py +122 -0
  739. office365/runtime/converters/excel.py +44 -0
  740. office365/runtime/converters/json_file.py +21 -0
  741. office365/runtime/converters/keyvalue.py +95 -0
  742. office365/runtime/converters/ndjson.py +17 -0
  743. office365/runtime/converters/records.py +82 -0
  744. office365/runtime/converters/scalars.py +128 -0
  745. office365/runtime/converters/value.py +186 -0
  746. office365/runtime/decorators.py +27 -0
  747. office365/runtime/http/mime.py +12 -0
  748. office365/runtime/http/throttling.py +205 -0
  749. office365/runtime/http/url.py +36 -0
  750. office365/runtime/odata/batch_util.py +92 -0
  751. office365/runtime/odata/query_options.py +26 -1
  752. office365/runtime/odata/request.py +27 -16
  753. office365/runtime/odata/type.py +47 -105
  754. office365/runtime/odata/v3/batch_request.py +88 -1
  755. office365/runtime/odata/v4/batch_request.py +88 -0
  756. office365/runtime/odata/v4/upload_session.py +4 -0
  757. office365/runtime/odata/v4/upload_session_request.py +26 -10
  758. office365/runtime/operations.py +135 -0
  759. office365/runtime/parallel.py +96 -0
  760. office365/runtime/paths/builder.py +4 -2
  761. office365/runtime/queries/batch.py +23 -14
  762. office365/runtime/queries/client_query.py +8 -10
  763. office365/runtime/queries/deferred.py +72 -0
  764. office365/runtime/queries/delete_entity.py +2 -2
  765. office365/runtime/queries/function.py +35 -1
  766. office365/runtime/queries/read_entity.py +23 -4
  767. office365/runtime/queries/update_entity.py +2 -2
  768. office365/runtime/queries/upload_session.py +1 -1
  769. office365/runtime/retry.py +137 -0
  770. office365/runtime/types/binary_content.py +14 -0
  771. office365/runtime/types/ipv4_cidr_range.py +14 -0
  772. office365/runtime/types/ipv6_cidr_range.py +14 -0
  773. office365/runtime/types/json.py +10 -0
  774. office365/runtime/types/odata_property.py +7 -0
  775. office365/runtime/types/public_error.py +23 -0
  776. office365/runtime/types/public_inner_error.py +21 -0
  777. office365/runtime/types/setting_value.py +15 -0
  778. office365/search/request.py +2 -2
  779. office365/sharepoint/agreements/summarydata.py +15 -5
  780. office365/sharepoint/authentication/auth_file_detonation_request_response.py +48 -0
  781. office365/sharepoint/authentication/spo_auth_file_detonation_request.py +7 -0
  782. office365/sharepoint/brandcenter/brand_font_file_delete_result.py +9 -0
  783. office365/sharepoint/changes/change.py +6 -0
  784. office365/sharepoint/changes/collection.py +1 -1
  785. office365/sharepoint/changes/item.py +4 -10
  786. office365/sharepoint/client_context.py +78 -33
  787. office365/sharepoint/clientsidecomponent/agreementssolutionfilecontext.py +1 -0
  788. office365/sharepoint/clientsidecomponent/spteamsappcomponent.py +3 -0
  789. office365/sharepoint/comments/comment.py +2 -10
  790. office365/sharepoint/comments/contentanchor.py +6 -0
  791. office365/sharepoint/compliance/store_proxy.py +306 -68
  792. office365/sharepoint/compliance/tags/tag.py +3 -0
  793. office365/sharepoint/containers/active/properties.py +3 -0
  794. office365/sharepoint/contentcenter/machinelearning/column_autofill_choice_settings.py +15 -0
  795. office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_data.py +25 -0
  796. office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_result.py +12 -0
  797. office365/sharepoint/contentcenter/machinelearning/hub.py +231 -29
  798. office365/sharepoint/contentcenter/machinelearning/list_autofill_entity_data.py +15 -0
  799. office365/sharepoint/contentcenter/machinelearning/list_autofill_item_results.py +18 -0
  800. office365/sharepoint/contentcenter/machinelearning/modeldependencies.py +4 -3
  801. office365/sharepoint/contentcenter/machinelearning/models/model.py +254 -0
  802. office365/sharepoint/contentcenter/machinelearning/publications/publication.py +177 -0
  803. office365/sharepoint/contentcenter/machinelearning/samples/sample.py +134 -0
  804. office365/sharepoint/contentcenter/machinelearning/sp_machine_learning_doc_lib_autofill_item_results.py +19 -0
  805. office365/sharepoint/contentcenter/machinelearning/workitems/item.py +149 -0
  806. office365/sharepoint/contenttypes/collection.py +9 -10
  807. office365/sharepoint/contenttypes/content_type.py +4 -10
  808. office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -7
  809. office365/sharepoint/directory/helper.py +5 -5
  810. office365/sharepoint/directory/multi_conditional_access_policy.py +37 -0
  811. office365/sharepoint/directory/named_location_policy.py +62 -0
  812. office365/sharepoint/directory/provider/provider.py +1 -1
  813. office365/sharepoint/entity.py +8 -4
  814. office365/sharepoint/eventreceivers/definition_collection.py +32 -0
  815. office365/sharepoint/fields/collection.py +165 -67
  816. office365/sharepoint/fields/field.py +4 -2
  817. office365/sharepoint/fields/name.py +11 -0
  818. office365/sharepoint/files/checked_out_file.py +2 -6
  819. office365/sharepoint/files/collection.py +75 -8
  820. office365/sharepoint/files/file.py +68 -6
  821. office365/sharepoint/files/file_url_virus_status_update.py +22 -0
  822. office365/sharepoint/files/versionbatchdeleteparameters.py +1 -0
  823. office365/sharepoint/files/versions/version.py +2 -8
  824. office365/sharepoint/folders/collection.py +5 -2
  825. office365/sharepoint/folders/folder.py +198 -26
  826. office365/sharepoint/internal/image_content_part.py +5 -0
  827. office365/sharepoint/internal/paths/web.py +3 -1
  828. office365/sharepoint/internal/sticky_routing_options.py +13 -0
  829. office365/sharepoint/likes/liked_by_information.py +2 -6
  830. office365/sharepoint/listitems/collection.py +28 -0
  831. office365/sharepoint/listitems/compliance_info.py +1 -0
  832. office365/sharepoint/listitems/form_update_value.py +2 -1
  833. office365/sharepoint/listitems/listdata_validation_exception_value.py +3 -1
  834. office365/sharepoint/listitems/listitem.py +5 -5
  835. office365/sharepoint/listitems/versions/version.py +3 -15
  836. office365/sharepoint/lists/batch_convert_item_result.py +19 -0
  837. office365/sharepoint/lists/batch_convert_result.py +17 -0
  838. office365/sharepoint/lists/collection.py +36 -0
  839. office365/sharepoint/lists/conversion_loss_item.py +13 -0
  840. office365/sharepoint/lists/conversion_loss_report.py +18 -0
  841. office365/sharepoint/lists/extended_share_point_permission_settings.py +17 -0
  842. office365/sharepoint/lists/list.py +95 -20
  843. office365/sharepoint/lists/list_forms_api.py +7 -0
  844. office365/sharepoint/logger/activityrequest.py +3 -0
  845. office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +7 -3
  846. office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +3 -1
  847. office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +4 -10
  848. office365/sharepoint/microfeed/attachment_store.py +69 -0
  849. office365/sharepoint/microfeed/data.py +64 -0
  850. office365/sharepoint/microfeed/manager.py +259 -0
  851. office365/sharepoint/microfeed/microfeedstore.py +69 -0
  852. office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +4 -2
  853. office365/sharepoint/multigeo/service/dfdeprecationjob.py +8 -1
  854. office365/sharepoint/multigeo/service/geoexperience.py +15 -0
  855. office365/sharepoint/multigeo/service/groupmovejob.py +9 -0
  856. office365/sharepoint/multigeo/service/move_job_report.py +23 -0
  857. office365/sharepoint/multigeo/service/movesiterostate.py +8 -1
  858. office365/sharepoint/multigeo/service/partner_company_id_lookup.py +22 -0
  859. office365/sharepoint/multigeo/service/services.py +3 -6
  860. office365/sharepoint/multigeo/service/sitemovejob.py +9 -0
  861. office365/sharepoint/navigation/menu/node.py +5 -3
  862. office365/sharepoint/navigation/menu/state.py +1 -1
  863. office365/sharepoint/navigation/nodes/collection.py +36 -1
  864. office365/sharepoint/navigation/service.py +2 -8
  865. office365/sharepoint/permissions/roles/assignments/assignment.py +2 -8
  866. office365/sharepoint/permissions/roles/definitions/definition.py +3 -9
  867. office365/sharepoint/portal/groups/service.py +12 -0
  868. office365/sharepoint/portal/groups/site_manager.py +283 -32
  869. office365/sharepoint/portal/linkedsites/manager.py +25 -3
  870. office365/sharepoint/portal/sites/manager.py +197 -0
  871. office365/sharepoint/principal/principal.py +3 -8
  872. office365/sharepoint/principal/users/user.py +5 -6
  873. office365/sharepoint/publishing/announcements/controller.py +31 -0
  874. office365/sharepoint/publishing/content_distribution_controller.py +23 -0
  875. office365/sharepoint/publishing/copytoparams.py +3 -0
  876. office365/sharepoint/publishing/diagnostics/controller.py +12 -0
  877. office365/sharepoint/publishing/emailpublishingstatus.py +4 -2
  878. office365/sharepoint/publishing/engage_distribution_info.py +2 -0
  879. office365/sharepoint/publishing/feedvideopage.py +358 -0
  880. office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +40 -0
  881. office365/sharepoint/publishing/pages/3d/page.py +314 -0
  882. office365/sharepoint/publishing/pages/campaign/publication.py +549 -7
  883. office365/sharepoint/publishing/pages/metadata.py +6 -11
  884. office365/sharepoint/publishing/pages/page.py +469 -0
  885. office365/sharepoint/publishing/pages/reposts/repost.py +334 -0
  886. office365/sharepoint/publishing/pages/service.py +95 -43
  887. office365/sharepoint/publishing/pages/topics/topic.py +314 -0
  888. office365/sharepoint/publishing/point/post.py +28 -0
  889. office365/sharepoint/publishing/point/postservicemanager.py +31 -0
  890. office365/sharepoint/publishing/point/tenantmanager.py +9 -0
  891. office365/sharepoint/publishing/point/user.py +9 -0
  892. office365/sharepoint/publishing/portallaunchwavesmanager.py +36 -0
  893. office365/sharepoint/publishing/portalnavigationcachewrapper.py +21 -0
  894. office365/sharepoint/publishing/rich_sharing.py +12 -0
  895. office365/sharepoint/publishing/sites/communication/site.py +14 -6
  896. office365/sharepoint/publishing/subtitlefile.py +40 -0
  897. office365/sharepoint/publishing/video/channel.py +112 -0
  898. office365/sharepoint/publishing/video/item.py +231 -0
  899. office365/sharepoint/publishing/videopermissiongroup.py +16 -0
  900. office365/sharepoint/request.py +35 -7
  901. office365/sharepoint/search/analytics/signal_store.py +15 -0
  902. office365/sharepoint/search/promoted_result_query_rule.py +6 -2
  903. office365/sharepoint/search/ranking_labeling.py +11 -0
  904. office365/sharepoint/search/relevant_results.py +1 -1
  905. office365/sharepoint/search/reordering_rule_collection.py +30 -0
  906. office365/sharepoint/search/result.py +1 -1
  907. office365/sharepoint/search/service.py +61 -0
  908. office365/sharepoint/search/setting.py +75 -15
  909. office365/sharepoint/search/simple_data_row.py +1 -1
  910. office365/sharepoint/sharing/direct_abilities.py +1 -0
  911. office365/sharepoint/sharing/main_link_audience_role_abilities.py +17 -0
  912. office365/sharepoint/sharing/mainlinkabilities.py +3 -3
  913. office365/sharepoint/sharing/mainlinkaudienceabilities.py +4 -0
  914. office365/sharepoint/sharing/mainlinkinfo.py +4 -0
  915. office365/sharepoint/sharing/object_sharing_settings.py +4 -10
  916. office365/sharepoint/sitedesigns/app_settings_in_teams.py +6 -1
  917. office365/sharepoint/sitedesigns/creation_info.py +1 -1
  918. office365/sharepoint/sitedesigns/insert_field_response.py +10 -1
  919. office365/sharepoint/sitedesigns/main_link_details.py +2 -0
  920. office365/sharepoint/sitedesigns/sectiondesignideasapi.py +26 -0
  921. office365/sharepoint/sitedesigns/thread_engagement_data.py +2 -0
  922. office365/sharepoint/sites/home/sharepointhomeservicemanager.py +18 -0
  923. office365/sharepoint/sites/manager/baaa_request.py +2 -0
  924. office365/sharepoint/sites/manager/service.py +192 -5
  925. office365/sharepoint/sites/site.py +12 -0
  926. office365/sharepoint/sites/version_policy_manager.py +6 -10
  927. office365/sharepoint/sitescripts/utility.py +1 -1
  928. office365/sharepoint/social/rest_thread.py +2 -6
  929. office365/sharepoint/taxonomy/field.py +1 -0
  930. office365/sharepoint/taxonomy/groups/group.py +2 -6
  931. office365/sharepoint/taxonomy/item.py +12 -6
  932. office365/sharepoint/taxonomy/service.py +18 -2
  933. office365/sharepoint/teams/manage_channel_capabilities_request.py +3 -0
  934. office365/sharepoint/tenant/administration/bulk_insert_operation_result.py +5 -0
  935. office365/sharepoint/tenant/administration/catalog_management_category.py +23 -0
  936. office365/sharepoint/tenant/administration/catalog_management_custom_property_map.py +3 -0
  937. office365/sharepoint/tenant/administration/catalog_management_group.py +16 -0
  938. office365/sharepoint/tenant/administration/catalog_management_schema.py +18 -0
  939. office365/sharepoint/tenant/administration/catalog_management_status.py +23 -0
  940. office365/sharepoint/tenant/administration/container/properties.py +6 -0
  941. office365/sharepoint/tenant/administration/dataset_metadata_response.py +6 -0
  942. office365/sharepoint/tenant/administration/ransomware/activitiesoverview.py +2 -1
  943. office365/sharepoint/tenant/administration/rcd_categories_map.py +19 -0
  944. office365/sharepoint/tenant/administration/rcd_category_detail_result.py +17 -0
  945. office365/sharepoint/tenant/administration/rcd_group_definition.py +19 -0
  946. office365/sharepoint/tenant/administration/rcd_group_metadata.py +20 -0
  947. office365/sharepoint/tenant/administration/rcd_save_result.py +12 -0
  948. office365/sharepoint/tenant/administration/rcd_site_status_detail.py +18 -0
  949. office365/sharepoint/tenant/administration/secondary_administrators_info.py +0 -7
  950. office365/sharepoint/tenant/administration/site_property_scope_config.py +1 -0
  951. office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +3 -1
  952. office365/sharepoint/tenant/administration/tenant.py +94 -227
  953. office365/sharepoint/tenant/administration/tenant_admin_ransomware_event_site_restore_point.py +1 -0
  954. office365/sharepoint/tenant/administration/tenant_data_loss_prevention_quarantine_settings.py +17 -0
  955. office365/sharepoint/tenant/cdn_api.py +18 -4
  956. office365/sharepoint/tenant/management/office365_tenant.py +15 -10
  957. office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +28 -0
  958. office365/sharepoint/tenantadministration/spo_file_archive_policy_report_info.py +20 -0
  959. office365/sharepoint/tenantadministration/spo_file_archive_policy_site_info.py +15 -0
  960. office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +14 -0
  961. office365/sharepoint/types/resource_path.py +2 -1
  962. office365/sharepoint/usercustomactions/collection.py +41 -0
  963. office365/sharepoint/userprofiles/person_properties.py +4 -10
  964. office365/sharepoint/utilities/autofillcolumninfo.py +2 -0
  965. office365/sharepoint/utilities/llmcolumninfo.py +2 -0
  966. office365/sharepoint/utilities/move_copy_util.py +284 -10
  967. office365/sharepoint/viva/site_manager.py +10 -0
  968. office365/sharepoint/webhooks/subscription.py +41 -1
  969. office365/sharepoint/webhooks/subscription_information.py +2 -2
  970. office365/sharepoint/webparts/definitions/definition.py +8 -10
  971. office365/sharepoint/webparts/limited_manager.py +2 -6
  972. office365/sharepoint/webs/regional_settings.py +11 -15
  973. office365/sharepoint/webs/time_zone.py +9 -6
  974. office365/sharepoint/webs/web.py +57 -10
  975. office365/sharepoint/webs/web_fetch_result.py +13 -0
  976. office365/subscriptions/subscription.py +2 -8
  977. office365/teams/administration/account_type.py +17 -0
  978. office365/teams/administration/activation_state.py +16 -0
  979. office365/teams/administration/assignment_category.py +8 -1
  980. office365/teams/administration/assignment_status.py +18 -0
  981. office365/teams/administration/customer_action.py +13 -0
  982. office365/teams/administration/number_capability.py +15 -0
  983. office365/teams/administration/number_source.py +13 -0
  984. office365/teams/administration/number_type.py +15 -0
  985. office365/teams/administration/port_in_status.py +13 -0
  986. office365/teams/administration/reverse_number_lookup_option.py +12 -0
  987. office365/teams/apps/app.py +5 -5
  988. office365/teams/apps/installed_event_message_detail.py +17 -0
  989. office365/teams/apps/removed_event_message_detail.py +17 -0
  990. office365/teams/apps/upgraded_event_message_detail.py +17 -0
  991. office365/teams/archived_event_message_detail.py +16 -0
  992. office365/teams/channels/channel.py +23 -22
  993. office365/teams/channels/collection.py +10 -5
  994. office365/teams/chats/chat.py +36 -27
  995. office365/teams/chats/collection.py +19 -0
  996. office365/teams/chats/messages/body.py +32 -0
  997. office365/teams/chats/messages/collection.py +43 -0
  998. office365/teams/chats/messages/hosted_content.py +27 -0
  999. office365/teams/chats/messages/message.py +68 -3
  1000. office365/teams/class_settings.py +14 -0
  1001. office365/teams/collection.py +89 -14
  1002. office365/teams/created_event_message_detail.py +18 -0
  1003. office365/teams/description_updated_event_message_detail.py +17 -0
  1004. office365/teams/joining_disabled_event_message_detail.py +16 -0
  1005. office365/teams/joining_enabled_event_message_detail.py +16 -0
  1006. office365/teams/licensing_details.py +14 -0
  1007. office365/teams/members/aad_user_conversation.py +4 -4
  1008. office365/teams/members/conversation.py +3 -3
  1009. office365/teams/members/conversation_collection.py +7 -9
  1010. office365/teams/members_notification_recipient.py +14 -0
  1011. office365/teams/operations/async_operation.py +59 -8
  1012. office365/teams/operations/type.py +4 -1
  1013. office365/teams/renamed_event_message_detail.py +17 -0
  1014. office365/teams/schedule/entitytheme.py +23 -0
  1015. office365/teams/schedule/time_card_break.py +19 -0
  1016. office365/teams/schedule/time_card_entry.py +19 -0
  1017. office365/teams/schedule/time_card_event.py +18 -0
  1018. office365/teams/schedule/time_card_state.py +14 -0
  1019. office365/teams/schedule/time_clock_settings.py +15 -0
  1020. office365/teams/schedule/time_off_details.py +15 -0
  1021. office365/teams/schedule/time_off_item.py +14 -0
  1022. office365/teams/schedule/time_off_reason_icon_type.py +32 -0
  1023. office365/teams/tabs/updated_event_message_detail.py +16 -0
  1024. office365/teams/team.py +88 -46
  1025. office365/teams/teamwork/application_identity.py +15 -0
  1026. office365/teams/teamwork/shiftmanagement/user_solution_root.py +4 -0
  1027. office365/teams/teamwork/user.py +6 -8
  1028. office365/teams/teamwork/workforce_integration_encryption_protocol.py +12 -0
  1029. office365/teams/teamwork/workforce_integration_supported_entities.py +22 -0
  1030. office365/teams/unarchived_event_message_detail.py +16 -0
  1031. office365/teams/viva/employee_experience_user.py +5 -3
  1032. office365/todo/attachments/collection.py +78 -3
  1033. office365/todo/attachments/info.py +17 -1
  1034. office365/todo/attachments/session.py +74 -0
  1035. office365/todo/attachments/type.py +14 -2
  1036. office365/todo/linked_resource.py +10 -0
  1037. office365/todo/tasks/collection.py +5 -3
  1038. office365/todo/tasks/lists/collection.py +4 -4
  1039. office365/todo/tasks/lists/list.py +36 -0
  1040. office365/todo/tasks/task.py +95 -8
  1041. office365/todo/todo.py +5 -2
  1042. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/METADATA +13 -3
  1043. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/RECORD +1179 -598
  1044. office365/migration/assessor.py +0 -243
  1045. office365/onedrive/termstore/store_exporter.py +0 -40
  1046. office365/onedrive/termstore/store_importer.py +0 -34
  1047. office365/runtime/csv_writer.py +0 -77
  1048. office365/runtime/odata/member.py +0 -14
  1049. office365/runtime/odata/method.py +0 -19
  1050. office365/runtime/odata/model.py +0 -54
  1051. office365/runtime/odata/parameter.py +0 -19
  1052. office365/runtime/odata/property.py +0 -19
  1053. office365/runtime/odata/query_options_builder.py +0 -38
  1054. office365/runtime/odata/reader.py +0 -99
  1055. office365/runtime/odata/type_information.py +0 -32
  1056. office365/runtime/odata/v3/metadata_reader.py +0 -52
  1057. office365/runtime/odata/v4/metadata_reader.py +0 -28
  1058. office365/runtime/queries/noop.py +0 -17
  1059. office365/runtime/utilities.py +0 -226
  1060. office365/sharepoint/migration/assessment/scanners/base.py +0 -57
  1061. office365/sharepoint/migration/assessment/scanners/list.py +0 -68
  1062. office365/sharepoint/migration/assessment/scanners/site.py +0 -25
  1063. office365/todo/wellknown_list_name.py +0 -2
  1064. /office365/directory/identitygovernance/accessreview/{access_review_history_instance.py → history_instance.py} +0 -0
  1065. /office365/directory/identitygovernance/accessreview/{access_review_instance_decision_item.py → instance_decision_item.py} +0 -0
  1066. /office365/directory/identitygovernance/accessreview/{access_review_reviewer.py → reviewer.py} +0 -0
  1067. /office365/directory/identitygovernance/accessreview/{access_review_schedule_definition.py → schedule_definition.py} +0 -0
  1068. /office365/directory/identitygovernance/{accessreview/access_package_text_input_question.py → entitlementmanagement/accesspackage/text_input_question.py} +0 -0
  1069. /office365/directory/{security/data_security → recovery}/__init__.py +0 -0
  1070. /office365/directory/security/{active_directory_domain_evidence.py → alerts/active_directory_domain_evidence.py} +0 -0
  1071. /office365/directory/security/{azure_resource_evidence.py → alerts/azure_resource_evidence.py} +0 -0
  1072. /office365/{sharepoint/migration → directory/security/audit}/__init__.py +0 -0
  1073. /office365/directory/security/{a365_ai_execute_tool.py → audit/a365_ai_execute_tool.py} +0 -0
  1074. /office365/directory/security/{aad_risk_detection_audit_record.py → audit/aad_risk_detection_audit_record.py} +0 -0
  1075. /office365/directory/security/{ai_app_interaction_audit_record.py → audit/ai_app_interaction_audit_record.py} +0 -0
  1076. /office365/directory/security/{ai_execute_tool_audit_record.py → audit/ai_execute_tool_audit_record.py} +0 -0
  1077. /office365/directory/security/{ai_interactions_change_notification_audit_record.py → audit/ai_interactions_change_notification_audit_record.py} +0 -0
  1078. /office365/directory/security/{ai_interactions_export_audit_record.py → audit/ai_interactions_export_audit_record.py} +0 -0
  1079. /office365/directory/security/{ai_interactions_subscription_audit_record.py → audit/ai_interactions_subscription_audit_record.py} +0 -0
  1080. /office365/directory/security/{ai_invoke_agent_audit_record.py → audit/ai_invoke_agent_audit_record.py} +0 -0
  1081. /office365/directory/security/{ai_span_outputs_audit_record.py → audit/ai_span_outputs_audit_record.py} +0 -0
  1082. /office365/directory/security/{air_manual_investigation_data.py → audit/air_manual_investigation_data.py} +0 -0
  1083. /office365/directory/security/{alert_submission_audit_record.py → audit/alert_submission_audit_record.py} +0 -0
  1084. /office365/directory/security/{alert_submission_result_detail_audit_record.py → audit/alert_submission_result_detail_audit_record.py} +0 -0
  1085. /office365/directory/security/{attack_sim_admin_audit_record.py → audit/attack_sim_admin_audit_record.py} +0 -0
  1086. /office365/directory/security/{attack_sim_audit_record.py → audit/attack_sim_audit_record.py} +0 -0
  1087. /office365/directory/security/{audit_config_audit_record.py → audit/audit_config_audit_record.py} +0 -0
  1088. /office365/directory/security/{audit_record_type_dictionary.py → audit/audit_record_type_dictionary.py} +0 -0
  1089. /office365/directory/security/{audit_search_audit_record.py → audit/audit_search_audit_record.py} +0 -0
  1090. /office365/directory/security/{azfw_application_rule_aggregation_event_record.py → audit/azfw_application_rule_aggregation_event_record.py} +0 -0
  1091. /office365/directory/security/{azfw_dns_query_event_record.py → audit/azfw_dns_query_event_record.py} +0 -0
  1092. /office365/directory/security/{azfw_network_rule_event_record.py → audit/azfw_network_rule_event_record.py} +0 -0
  1093. /office365/directory/security/{azure_active_directory_account_logon_audit_record.py → audit/azure_active_directory_account_logon_audit_record.py} +0 -0
  1094. /office365/directory/security/{azure_active_directory_audit_record.py → audit/azure_active_directory_audit_record.py} +0 -0
  1095. /office365/directory/security/{azure_active_directory_sts_logon_audit_record.py → audit/azure_active_directory_sts_logon_audit_record.py} +0 -0
  1096. /office365/directory/security/{azure_ai_search_audit_record.py → audit/azure_ai_search_audit_record.py} +0 -0
  1097. /office365/directory/security/{campaign_audit_record.py → audit/campaign_audit_record.py} +0 -0
  1098. /office365/directory/security/{ccrai_policy_violation_record.py → audit/ccrai_policy_violation_record.py} +0 -0
  1099. /office365/directory/security/{cdp_classifier_health_record.py → audit/cdp_classifier_health_record.py} +0 -0
  1100. /office365/directory/security/{cdp_cold_crawl_status_record.py → audit/cdp_cold_crawl_status_record.py} +0 -0
  1101. /office365/directory/security/{cdp_consumption_resource_record.py → audit/cdp_consumption_resource_record.py} +0 -0
  1102. /office365/directory/security/{cdp_content_explorer_aggregate_record.py → audit/cdp_content_explorer_aggregate_record.py} +0 -0
  1103. /office365/directory/security/{cdp_dlp_sensitive_endpoint_audit_record.py → audit/cdp_dlp_sensitive_endpoint_audit_record.py} +0 -0
  1104. /office365/directory/security/{cdp_log_record.py → audit/cdp_log_record.py} +0 -0
  1105. /office365/directory/security/{cdp_ocr_billing_record.py → audit/cdp_ocr_billing_record.py} +0 -0
  1106. /office365/directory/security/{cdp_resource_scope_change_event_record.py → audit/cdp_resource_scope_change_event_record.py} +0 -0
  1107. /office365/directory/security/{cdpdlmai_interaction_insights_record.py → audit/cdpdlmai_interaction_insights_record.py} +0 -0
  1108. /office365/directory/security/{cloud_update_device_config_audit_record.py → audit/cloud_update_device_config_audit_record.py} +0 -0
  1109. /office365/directory/security/{cloud_update_profile_config_audit_record.py → audit/cloud_update_profile_config_audit_record.py} +0 -0
  1110. /office365/directory/security/{cloud_update_tenant_config_audit_record.py → audit/cloud_update_tenant_config_audit_record.py} +0 -0
  1111. /office365/directory/security/{compliance_connector_audit_record.py → audit/compliance_connector_audit_record.py} +0 -0
  1112. /office365/directory/security/{compliance_dlm_exchange_audit_record.py → audit/compliance_dlm_exchange_audit_record.py} +0 -0
  1113. /office365/directory/security/{compliance_dlm_share_point_audit_record.py → audit/compliance_dlm_share_point_audit_record.py} +0 -0
  1114. /office365/directory/security/{compliance_dlp_applications_audit_record.py → audit/compliance_dlp_applications_audit_record.py} +0 -0
  1115. /office365/directory/security/{compliance_dlp_applications_classification_audit_record.py → audit/compliance_dlp_applications_classification_audit_record.py} +0 -0
  1116. /office365/directory/security/{compliance_dlp_endpoint_audit_record.py → audit/compliance_dlp_endpoint_audit_record.py} +0 -0
  1117. /office365/directory/security/{compliance_dlp_endpoint_discovery_audit_record.py → audit/compliance_dlp_endpoint_discovery_audit_record.py} +0 -0
  1118. /office365/directory/security/{compliance_dlp_enforcement_audit_record.py → audit/compliance_dlp_enforcement_audit_record.py} +0 -0
  1119. /office365/directory/security/{compliance_dlp_exchange_audit_record.py → audit/compliance_dlp_exchange_audit_record.py} +0 -0
  1120. /office365/directory/security/{compliance_dlp_exchange_classification_audit_record.py → audit/compliance_dlp_exchange_classification_audit_record.py} +0 -0
  1121. /office365/directory/security/{compliance_dlp_exchange_classification_cdp_record.py → audit/compliance_dlp_exchange_classification_cdp_record.py} +0 -0
  1122. /office365/directory/security/{compliance_dlp_exchange_discovery_audit_record.py → audit/compliance_dlp_exchange_discovery_audit_record.py} +0 -0
  1123. /office365/directory/security/{compliance_dlp_share_point_audit_record.py → audit/compliance_dlp_share_point_audit_record.py} +0 -0
  1124. /office365/directory/security/{compliance_dlp_share_point_classification_audit_record.py → audit/compliance_dlp_share_point_classification_audit_record.py} +0 -0
  1125. /office365/directory/security/{compliance_dlp_share_point_classification_cdp_record.py → audit/compliance_dlp_share_point_classification_cdp_record.py} +0 -0
  1126. /office365/directory/security/{compliance_dlp_share_point_classification_extended_audit_record.py → audit/compliance_dlp_share_point_classification_extended_audit_record.py} +0 -0
  1127. /office365/directory/security/{compliance_exchange_ocr_audit_record.py → audit/compliance_exchange_ocr_audit_record.py} +0 -0
  1128. /office365/directory/security/{compliance_manager_action_record.py → audit/compliance_manager_action_record.py} +0 -0
  1129. /office365/directory/security/{compliance_policy_grading_share_point_audit_record.py → audit/compliance_policy_grading_share_point_audit_record.py} +0 -0
  1130. /office365/directory/security/{compliance_settings_change_audit_record.py → audit/compliance_settings_change_audit_record.py} +0 -0
  1131. /office365/directory/security/{compliance_sit_grading_share_point_audit_record.py → audit/compliance_sit_grading_share_point_audit_record.py} +0 -0
  1132. /office365/directory/security/{compliance_supervision_exchange_audit_record.py → audit/compliance_supervision_exchange_audit_record.py} +0 -0
  1133. /office365/directory/security/{connected_ai_app_interaction_audit_record.py → audit/connected_ai_app_interaction_audit_record.py} +0 -0
  1134. /office365/directory/security/{consumption_resource_audit_record.py → audit/consumption_resource_audit_record.py} +0 -0
  1135. /office365/directory/security/{content_store_metadata_record.py → audit/content_store_metadata_record.py} +0 -0
  1136. /office365/directory/security/{copilot_agent_management_audit_record.py → audit/copilot_agent_management_audit_record.py} +0 -0
  1137. /office365/directory/security/{copilot_for_security_logging_audit_record.py → audit/copilot_for_security_logging_audit_record.py} +0 -0
  1138. /office365/directory/security/{copilot_for_security_trigger_audit_record.py → audit/copilot_for_security_trigger_audit_record.py} +0 -0
  1139. /office365/directory/security/{copilot_interaction_audit_record.py → audit/copilot_interaction_audit_record.py} +0 -0
  1140. /office365/directory/security/{copilot_plugin_setting_audit_record.py → audit/copilot_plugin_setting_audit_record.py} +0 -0
  1141. /office365/directory/security/{copilot_prompt_book_setting_audit_record.py → audit/copilot_prompt_book_setting_audit_record.py} +0 -0
  1142. /office365/directory/security/{copilot_session_sharing_audit_record.py → audit/copilot_session_sharing_audit_record.py} +0 -0
  1143. /office365/directory/security/{copilot_setting_audit_record.py → audit/copilot_setting_audit_record.py} +0 -0
  1144. /office365/directory/security/{copilot_workspace_setting_audit_record.py → audit/copilot_workspace_setting_audit_record.py} +0 -0
  1145. /office365/directory/security/{core_reporting_settings_audit_record.py → audit/core_reporting_settings_audit_record.py} +0 -0
  1146. /office365/directory/security/{critical_asset_management_classification_record.py → audit/critical_asset_management_classification_record.py} +0 -0
  1147. /office365/directory/security/{crm_entity_operation_audit_record.py → audit/crm_entity_operation_audit_record.py} +0 -0
  1148. /office365/directory/security/{cross_tenant_access_policy_audit_record.py → audit/cross_tenant_access_policy_audit_record.py} +0 -0
  1149. /office365/directory/security/{device_discovery_settings_authenticated_scans_record.py → audit/device_discovery_settings_authenticated_scans_record.py} +0 -0
  1150. /office365/directory/security/{device_discovery_settings_exclusion_record.py → audit/device_discovery_settings_exclusion_record.py} +0 -0
  1151. /office365/directory/security/{device_discovery_settings_record.py → audit/device_discovery_settings_record.py} +0 -0
  1152. /office365/directory/security/{discovery_audit_record.py → audit/discovery_audit_record.py} +0 -0
  1153. /office365/directory/security/{dlp_endpoint_audit_record.py → audit/dlp_endpoint_audit_record.py} +0 -0
  1154. /office365/directory/security/{dlp_import_result_audit_record.py → audit/dlp_import_result_audit_record.py} +0 -0
  1155. /office365/directory/security/{dragon_copilot_access_record.py → audit/dragon_copilot_access_record.py} +0 -0
  1156. /office365/directory/security/{dragon_copilot_admin_record.py → audit/dragon_copilot_admin_record.py} +0 -0
  1157. /office365/directory/security/{dragon_copilot_clinical_data_record.py → audit/dragon_copilot_clinical_data_record.py} +0 -0
  1158. /office365/directory/security/{dragon_copilot_session_record.py → audit/dragon_copilot_session_record.py} +0 -0
  1159. /office365/directory/security/{dynamics365_business_central_audit_record.py → audit/dynamics365_business_central_audit_record.py} +0 -0
  1160. /office365/directory/security/{ehr_connector_audit_base_record.py → audit/ehr_connector_audit_base_record.py} +0 -0
  1161. /office365/directory/security/{eop_submission_feed_entity_audit_record.py → audit/eop_submission_feed_entity_audit_record.py} +0 -0
  1162. /office365/directory/security/{exchange_admin_audit_record.py → audit/exchange_admin_audit_record.py} +0 -0
  1163. /office365/directory/security/{exchange_aggregated_mailbox_audit_record.py → audit/exchange_aggregated_mailbox_audit_record.py} +0 -0
  1164. /office365/directory/security/{exchange_aggregated_operation_record.py → audit/exchange_aggregated_operation_record.py} +0 -0
  1165. /office365/directory/security/{exchange_mailbox_audit_group_record.py → audit/exchange_mailbox_audit_group_record.py} +0 -0
  1166. /office365/directory/security/{exchange_mailbox_audit_record.py → audit/exchange_mailbox_audit_record.py} +0 -0
  1167. /office365/directory/security/{hosted_rpa_audit_record.py → audit/hosted_rpa_audit_record.py} +0 -0
  1168. /office365/directory/security/{hr_signal_audit_record.py → audit/hr_signal_audit_record.py} +0 -0
  1169. /office365/directory/security/{hygiene_event_record.py → audit/hygiene_event_record.py} +0 -0
  1170. /office365/directory/security/{information_barrier_policy_application_audit_record.py → audit/information_barrier_policy_application_audit_record.py} +0 -0
  1171. /office365/directory/security/{information_worker_protection_audit_record.py → audit/information_worker_protection_audit_record.py} +0 -0
  1172. /office365/directory/security/{insider_risk_scoped_user_insights_record.py → audit/insider_risk_scoped_user_insights_record.py} +0 -0
  1173. /office365/directory/security/{insider_risk_scoped_users_record.py → audit/insider_risk_scoped_users_record.py} +0 -0
  1174. /office365/directory/security/{microsoft_stream_audit_record.py → audit/microsoft_stream_audit_record.py} +0 -0
  1175. /office365/directory/security/{microsoft_teams_admin_audit_record.py → audit/microsoft_teams_admin_audit_record.py} +0 -0
  1176. /office365/directory/security/{microsoft_teams_analytics_audit_record.py → audit/microsoft_teams_analytics_audit_record.py} +0 -0
  1177. /office365/directory/security/{microsoft_teams_audit_record.py → audit/microsoft_teams_audit_record.py} +0 -0
  1178. /office365/directory/security/{microsoft_teams_device_audit_record.py → audit/microsoft_teams_device_audit_record.py} +0 -0
  1179. /office365/directory/security/{microsoft_teams_retention_label_action_audit_record.py → audit/microsoft_teams_retention_label_action_audit_record.py} +0 -0
  1180. /office365/directory/security/{microsoft_teams_sensitivity_label_action_audit_record.py → audit/microsoft_teams_sensitivity_label_action_audit_record.py} +0 -0
  1181. /office365/directory/security/{microsoft_teams_shifts_audit_record.py → audit/microsoft_teams_shifts_audit_record.py} +0 -0
  1182. /office365/directory/security/{microsoft_teams_user_concern_audit_record.py → audit/microsoft_teams_user_concern_audit_record.py} +0 -0
  1183. /office365/directory/security/{whois_history_record.py → audit/whois_history_record.py} +0 -0
  1184. /office365/directory/security/{case.py → cases/case.py} +0 -0
  1185. /office365/{sharepoint/migration/assessment → directory/security/collaboration}/__init__.py +0 -0
  1186. /office365/directory/security/{analyzed_email.py → collaboration/analyzed_email.py} +0 -0
  1187. /office365/directory/security/{analyzed_email_authentication_detail.py → collaboration/analyzed_email_authentication_detail.py} +0 -0
  1188. /office365/directory/security/{analyzed_email_delivery_detail.py → collaboration/analyzed_email_delivery_detail.py} +0 -0
  1189. /office365/directory/security/{analyzed_email_dlp_rule_info.py → collaboration/analyzed_email_dlp_rule_info.py} +0 -0
  1190. /office365/directory/security/{analyzed_email_exchange_transport_rule_info.py → collaboration/analyzed_email_exchange_transport_rule_info.py} +0 -0
  1191. /office365/directory/security/{analyzed_email_recipient_detail.py → collaboration/analyzed_email_recipient_detail.py} +0 -0
  1192. /office365/directory/security/{analyzed_email_sender_detail.py → collaboration/analyzed_email_sender_detail.py} +0 -0
  1193. /office365/directory/security/{analyzed_email_url.py → collaboration/analyzed_email_url.py} +0 -0
  1194. /office365/{sharepoint/migration/assessment/scanners → directory/security/datasecurity}/__init__.py +0 -0
  1195. /office365/directory/security/{data_security → datasecurity}/sensitivity_label.py +0 -0
  1196. /office365/directory/security/{host_logon_session_evidence.py → threatintelligence/host_logon_session_evidence.py} +0 -0
  1197. /office365/directory/security/{host_reputation.py → threatintelligence/host_reputation.py} +0 -0
  1198. /office365/directory/security/{hostname.py → threatintelligence/hostname.py} +0 -0
  1199. {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/WHEEL +0 -0
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from datetime import datetime
4
- from enum import Enum
5
3
  from typing import (
6
4
  TYPE_CHECKING,
7
5
  Any,
@@ -16,14 +14,12 @@ from typing_extensions import Self
16
14
 
17
15
  from office365.runtime.client_request_exception import ClientRequestException
18
16
  from office365.runtime.client_runtime_context import ClientRuntimeContext
19
- from office365.runtime.client_value import ClientValue
17
+ from office365.runtime.converters.value import _add_type_metadata, declared_type, deserialize_value, serialize_value
20
18
  from office365.runtime.http.request_options import RequestOptions
21
19
  from office365.runtime.odata.json_format import ODataJsonFormat
22
20
  from office365.runtime.odata.query_options import QueryOptions
23
- from office365.runtime.odata.v3.json_light_format import JsonLightFormat
24
21
  from office365.runtime.paths.resource_path import ResourcePath
25
- from office365.runtime.types.odata_property import _ODATA_MARKER
26
- from office365.runtime.utilities import parse_datetime, parse_enum
22
+ from office365.runtime.types.odata_property import _ODATA_MARKER, ODataPropertyMeta
27
23
 
28
24
  if TYPE_CHECKING:
29
25
  from office365.runtime.client_object_collection import ClientObjectCollection
@@ -35,21 +31,18 @@ ClientObjectT = TypeVar("ClientObjectT", bound="ClientObject")
35
31
  class ClientObject:
36
32
  """Base client object which defines named properties and relationships of an entity."""
37
33
 
38
- _odata_meta: dict[str, str] = {}
34
+ _odata_meta: dict[str, ODataPropertyMeta] = {}
39
35
 
40
36
  def __init_subclass__(cls, **kwargs: object) -> None:
41
37
  super().__init_subclass__(**kwargs)
42
- meta: dict[str, str] = {}
43
- persist: list[str] = []
38
+ meta: dict[str, ODataPropertyMeta] = dict(getattr(cls, "_odata_meta", {}))
44
39
  for attr_name, attr in cls.__dict__.items():
45
40
  target = attr.fget if isinstance(attr, property) else attr
46
- m = getattr(target, _ODATA_MARKER, None)
41
+ m: ODataPropertyMeta | None = getattr(target, _ODATA_MARKER, None)
47
42
  if m is not None:
48
- meta[m.name] = attr_name
49
- if m.persist:
50
- persist.append(m.name)
43
+ m.attr = attr_name
44
+ meta[m.name] = m
51
45
  cls._odata_meta = meta
52
- cls._odata_persist = persist
53
46
 
54
47
  def __init__(
55
48
  self,
@@ -66,7 +59,7 @@ class ClientObject:
66
59
  parent_collection: The collection that contains this object
67
60
  """
68
61
  self._properties: dict[str, Any] = {}
69
- self._changes: set[str] = set(getattr(type(self), "_odata_persist", []))
62
+ self._changes: set[str] = {name for name, m in type(self)._odata_meta.items() if m.persist}
70
63
  self._query_options = QueryOptions()
71
64
  self._parent_collection = parent_collection
72
65
  self._context = context
@@ -106,14 +99,21 @@ class ClientObject:
106
99
  """
107
100
  Resets the client object's state, clearing any pending changes.
108
101
 
109
- Returns:
110
- The current instance for method chaining
102
+ Persist-marked properties are kept so they stay present and are sent
103
+ again on subsequent updates (``persist=True`` means "always include"),
104
+ while explicitly changed, non-persistable props are dropped.
111
105
  """
112
- self._properties = {k: v for k, v in self._properties.items() if k not in self._changes}
106
+ persistable = self._persistable_names
107
+ self._properties = {k: v for k, v in self._properties.items() if k not in self._changes or k in persistable}
113
108
  self._changes.clear()
114
109
  self._query_options = QueryOptions()
115
110
  return self
116
111
 
112
+ @property
113
+ def _persistable_names(self) -> set[str]:
114
+ """Names of properties marked ``@odata(persist=True)``."""
115
+ return {name for name, m in type(self)._odata_meta.items() if m.persist}
116
+
117
117
  def execute_query(self) -> Self:
118
118
  """
119
119
  Submits all pending requests to the server.
@@ -128,24 +128,28 @@ class ClientObject:
128
128
  self,
129
129
  max_retry: int = 5,
130
130
  timeout_secs: int = 5,
131
+ max_delay=None,
132
+ jitter: bool = True,
131
133
  success_callback=None,
132
134
  failure_callback=None,
133
135
  exceptions=(ClientRequestException,),
134
- ):
136
+ ) -> Self:
135
137
  """Executes the current set of data retrieval queries and method invocations and retries it if needed.
136
138
 
137
139
  Args:
138
140
  max_retry (int): Number of times to retry the request
139
- timeout_secs (int): Seconds to wait before retrying the request.
140
- success_callback ((office365.runtime.client_object.ClientObject)-> None): A callback to call if
141
- the request executes successfully.
142
- failure_callback ((int, requests.exceptions.RequestException)-> None): A callback to call if the request
143
- fails to execute
144
- exceptions: tuple of exceptions that we retry
141
+ timeout_secs (int): Base delay for exponential backoff (seconds)
142
+ max_delay (int): Optional cap on the exponential delay (seconds)
143
+ jitter (bool): Whether to randomize the delay
144
+ success_callback (callable): A callback to call if the request executes successfully.
145
+ failure_callback (callable): A callback to call if the request fails to execute.
146
+ exceptions (tuple): Tuple of exceptions that we retry.
145
147
  """
146
148
  self.context.execute_query_retry(
147
149
  max_retry=max_retry,
148
150
  timeout_secs=timeout_secs,
151
+ max_delay=max_delay,
152
+ jitter=jitter,
149
153
  success_callback=success_callback,
150
154
  failure_callback=failure_callback,
151
155
  exceptions=exceptions,
@@ -196,7 +200,7 @@ class ClientObject:
196
200
  def copy_from(self, other: ClientObject) -> Self:
197
201
  """Copies all properties from the other object into this one."""
198
202
  for k, v in other._properties.items():
199
- self.set_property(k, v)
203
+ self.set_property(k, v, False)
200
204
  return self
201
205
 
202
206
  def get(self) -> Self:
@@ -265,16 +269,18 @@ class ClientObject:
265
269
  The property value or default value
266
270
  """
267
271
  if default_value is None:
268
- odata_meta = type(self)._odata_meta
269
- if name in odata_meta:
270
- return getattr(self, odata_meta[name])
272
+ meta = type(self)._odata_meta.get(name)
273
+ if meta is not None:
274
+ return getattr(self, meta.attr)
271
275
  normalized_name = name[0].lower() + name[1:]
272
276
  default_value = getattr(self, normalized_name, None)
273
277
  return self._properties.get(name, default_value)
274
278
 
275
279
  def set_property(self, name: str, value: Any, persist_changes: bool = True) -> Self:
276
- """
277
- Sets the value of a property.
280
+ """Set a property, coercing the value to its declared type.
281
+
282
+ Uses the shared conversion core (``deserialize_value``/``declared_type``) so
283
+ deserialization and the CSV/JSON pipeline use the same conversions.
278
284
 
279
285
  Args:
280
286
  name: The property name
@@ -284,28 +290,13 @@ class ClientObject:
284
290
  Returns:
285
291
  The current instance for method chaining
286
292
  """
293
+ if name == "__odata_type":
294
+ return self
287
295
  if persist_changes:
288
296
  self._changes.add(name)
289
-
290
- typed_value = self.get_property(name)
291
- if isinstance(typed_value, (ClientObject, ClientValue)):
292
- if isinstance(value, list):
293
- [typed_value.set_property(str(i), v, persist_changes) for i, v in enumerate(value)]
294
- self._properties[name] = typed_value
295
- elif isinstance(value, dict):
296
- [typed_value.set_property(k, v, persist_changes) for k, v in value.items()]
297
- self._properties[name] = typed_value
298
- else:
299
- self._properties[name] = value
300
- elif isinstance(typed_value, datetime):
301
- self._properties[name] = parse_datetime(value)
302
- elif isinstance(typed_value, Enum):
303
- if value is None:
304
- self._properties[name] = typed_value
305
- else:
306
- self._properties[name] = parse_enum(type(typed_value), value)
307
- else:
308
- self._properties[name] = value
297
+ self._properties[name] = deserialize_value(
298
+ declared_type(type(self), name), value, self.get_property(name), persist_changes
299
+ )
309
300
  return self
310
301
 
311
302
  def ensure_property(self, name: str) -> Self:
@@ -323,9 +314,9 @@ class ClientObject:
323
314
 
324
315
  qry = ReadEntityQuery[ClientObject](self, names_to_include)
325
316
  else:
326
- from office365.runtime.queries.noop import NoOpQuery
317
+ from office365.runtime.queries.deferred import DeferredOperationQuery
327
318
 
328
- qry = NoOpQuery(self.context, self)
319
+ qry = DeferredOperationQuery(self.context, return_type=self)
329
320
  self.context.add_query(qry)
330
321
  return self
331
322
 
@@ -412,7 +403,7 @@ class ClientObject:
412
403
  """
413
404
  return self._parent_collection
414
405
 
415
- def to_json(self, json_format: Optional[ODataJsonFormat] = None) -> Dict[str, Any]:
406
+ def to_json(self, json_format: Optional[ODataJsonFormat] = None) -> Dict[str, Any] | List[Any]:
416
407
  """
417
408
  Serializes the client object to a JSON-compatible dictionary.
418
409
 
@@ -420,25 +411,17 @@ class ClientObject:
420
411
  json_format: The OData JSON format settings
421
412
 
422
413
  Returns:
423
- Dictionary representing the serialized object
414
+ Dictionary (or list, for collections) representing the serialized object
424
415
  """
425
416
  if json_format is None:
426
417
  include_control_info = False
427
418
  json = {k: self.get_property(k) for k in self._properties}
428
419
  else:
429
420
  include_control_info = self.entity_type_name is not None and json_format.include_control_information
430
- json = {k: self.get_property(k) for k in self._changes if k in self._properties}
431
- for k, v in json.items():
432
- if isinstance(v, (ClientObject, ClientValue)):
433
- json[k] = v.to_json(json_format)
434
- elif isinstance(v, Enum):
435
- json[k] = v.value
436
- elif isinstance(v, datetime):
437
- json[k] = v.isoformat()
421
+ persistable = self._persistable_names
422
+ json = {k: self.get_property(k) for k in self._properties if k in self._changes or k in persistable}
423
+ json = {k: serialize_value(v, json_format) for k, v in json.items()}
438
424
 
439
425
  if json and include_control_info:
440
- if isinstance(json_format, JsonLightFormat):
441
- json[json_format.metadata_type] = {"type": self.entity_type_name}
442
- elif isinstance(json_format, ODataJsonFormat):
443
- json[json_format.metadata_type] = "#" + self.entity_type_name
426
+ _add_type_metadata(json, json_format, self.entity_type_name)
444
427
  return json
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import IO, Any, Callable, Dict, Generic, Iterator, List, Optional, Type
3
+ from os import PathLike
4
+ from typing import IO, TYPE_CHECKING, Any, Callable, Dict, Generic, Iterator, List, Optional, Type, Union, cast
4
5
 
5
6
  from typing_extensions import Self
6
7
 
@@ -8,10 +9,15 @@ from office365.runtime.client_object import ClientObject, ClientObjectT
8
9
  from office365.runtime.client_runtime_context import ClientRuntimeContext
9
10
  from office365.runtime.http.request_options import RequestOptions
10
11
  from office365.runtime.odata.json_format import ODataJsonFormat
12
+ from office365.runtime.operations import Progress
11
13
  from office365.runtime.paths.resource_path import ResourcePath
12
14
  from office365.runtime.types.event_handler import EventHandler
13
15
  from office365.runtime.types.exceptions import NotFoundException
14
16
 
17
+ if TYPE_CHECKING:
18
+ from office365.runtime.converters.dataframe import DataFrameResult
19
+ from office365.runtime.operations import ProgressCallback
20
+
15
21
 
16
22
  class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
17
23
  """
@@ -45,8 +51,10 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
45
51
  self._item_type: Type[ClientObjectT] = item_type
46
52
  self._page_loaded: EventHandler = EventHandler(False)
47
53
  self._paged_mode: bool = False
54
+ self._page_size: int | None = None
48
55
  self._current_pos: int | None = None
49
56
  self._next_request_url: str | None = None
57
+ self._page_headers: dict[str, str] | None = None
50
58
  self._parent = parent
51
59
 
52
60
  def clear_state(self) -> Self:
@@ -62,6 +70,7 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
62
70
  if not self._paged_mode:
63
71
  self._data = []
64
72
  self._next_request_url = None
73
+ self._page_headers = None
65
74
  self._current_pos = len(self._data)
66
75
  return self
67
76
 
@@ -168,9 +177,13 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
168
177
  """Get an item by its index position."""
169
178
  return self._data[index]
170
179
 
171
- def to_json(self, json_format: Optional[ODataJsonFormat] = None) -> list[dict[str, Any]]: # type: ignore[override]
180
+ def to_json(self, json_format: Optional[ODataJsonFormat] = None) -> list[dict[str, Any]]:
172
181
  """
173
- Serialize the collection to JSON format.
182
+ Serialize the collection to OData JSON format.
183
+
184
+ This is **payload serialization** (for request bodies, includes type
185
+ metadata when requested) — for data export use :meth:`to_records` /
186
+ :meth:`to_csv` instead.
174
187
 
175
188
  Args:
176
189
  json_format: Serialization options
@@ -178,7 +191,7 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
178
191
  Returns:
179
192
  JSON-serializable list of item dictionaries
180
193
  """
181
- return [item.to_json(json_format) for item in self._data]
194
+ return [cast(Dict[str, Any], item.to_json(json_format)) for item in self._data]
182
195
 
183
196
  def filter(self, expression: str) -> Self:
184
197
  """
@@ -247,6 +260,7 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
247
260
  self: Supports fluent method chaining
248
261
  """
249
262
  self._paged_mode = True
263
+ self._page_size = page_size
250
264
  if callable(page_loaded):
251
265
  self._page_loaded += page_loaded
252
266
  if page_size:
@@ -264,29 +278,47 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
264
278
  def _loaded(col: Any) -> None:
265
279
  self._page_loaded(self)
266
280
 
267
- self.context.load(self).after_execute(_loaded)
281
+ def _capture_headers(resp: Any) -> None:
282
+ # remember the headers of the first page so subsequent page
283
+ # requests can re-apply them (e.g. ConsistencyLevel on Graph)
284
+ request = getattr(resp, "request", None)
285
+ if self._paged_mode and self._page_headers is None and request is not None:
286
+ self._page_headers = dict(request.headers)
287
+
288
+ self.context.load(self).after_execute(_capture_headers, include_response=True).after_execute(_loaded)
268
289
  return self
269
290
 
270
- def get_all(self, page_size: int | None = None, page_loaded: Callable[[Self], None] | None = None) -> Self:
291
+ def get_all(
292
+ self,
293
+ page_size: int | None = None,
294
+ page_loaded: Callable[[Self], None] | None = None,
295
+ progress: "ProgressCallback | None" = None,
296
+ ) -> Self:
271
297
  """
272
298
  Load all items in the collection, automatically handling paging.
273
299
 
274
300
  Args:
275
301
  page_size: Items per page (uses server default if None)
276
- page_loaded: Callback when each page loads
302
+ page_loaded: Legacy callback invoked with the loaded collection after
303
+ each page.
304
+ progress: Optional hook invoked per page with a ``Progress`` snapshot
305
+ (``done`` = items loaded so far; ``total`` unknown for server-driven
306
+ paging, so the bar is indeterminate).
277
307
 
278
308
  Returns:
279
309
  self: Supports fluent method chaining
280
310
  """
281
311
 
282
312
  def _page_loaded(col: ClientObjectCollection) -> None:
313
+ if callable(progress):
314
+ progress(Progress(done=len(self._data), stage="loading"))
283
315
  if self.has_next:
284
316
  self._get_next().after_execute(_page_loaded)
285
317
 
286
318
  self.paged(page_size, page_loaded).get().after_execute(_page_loaded)
287
319
  return self
288
320
 
289
- def to_csv(self, file: IO) -> Self:
321
+ def to_csv(self, file: IO[str]) -> Self:
290
322
  """Export collection items to CSV using ``.select()`` and ``.expand()``.
291
323
 
292
324
  Plain select fields (e.g. ``"displayName"``) produce one column.
@@ -300,19 +332,265 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
300
332
  ... .to_csv(f) \\
301
333
  ... .execute_query()
302
334
  """
303
- from office365.runtime.csv_writer import CollectionCsvWriter
335
+ from office365.runtime.converters.csv_writer import write_csv
336
+
337
+ return self.after_execute(lambda _: write_csv(self, file))
338
+
339
+ def from_csv(
340
+ self,
341
+ file: IO[str],
342
+ delimiter: str = ",",
343
+ progress: "ProgressCallback | None" = None,
344
+ ) -> Self:
345
+ """Import CSV rows by queueing a create per row (deferred).
346
+
347
+ The symmetric counterpart of ``to_csv``: parsing happens immediately and
348
+ each record becomes an entity of this collection's item type (via
349
+ ``create_typed_object`` + the shared ``set_property`` coercion), queued
350
+ for creation. The creates run on ``execute_query()``.
351
+
352
+ Args:
353
+ file: A readable CSV stream.
354
+ delimiter: CSV field delimiter.
355
+ progress: Optional hook invoked per imported row as its create
356
+ completes during ``execute_query()``.
357
+
358
+ Usage:
359
+ >>> client.users.from_csv(f).execute_query()
360
+ >>> client.users.from_csv(f, progress=my_callback).execute_query()
361
+ """
362
+ from office365.runtime.converters.csv_reader import read_csv_records
363
+
364
+ return self.from_records(read_csv_records(file, delimiter), progress=progress)
365
+
366
+ def from_json(self, records: List[dict], progress: "ProgressCallback | None" = None) -> Self:
367
+ """Import JSON records (``to_json`` output) by queueing a create per record.
368
+
369
+ Like ``from_csv`` but takes a list of dicts instead of a file. Deferred
370
+ until ``execute_query()``.
371
+
372
+ Args:
373
+ records: Plain dict records to import.
374
+ progress: Optional hook invoked per record as its create completes
375
+ during ``execute_query()``.
376
+
377
+ Usage:
378
+ >>> client.users.from_json(client.users.to_json()).execute_query()
379
+ """
380
+ return self.from_records(records, progress=progress)
381
+
382
+ def to_records(self) -> List[Dict[str, Any]]:
383
+ """Project loaded items into plain dict records — the neutral export form.
384
+
385
+ Same projection as ``to_csv``/``to_dataframe``: ``.select()``/``.expand()``
386
+ columns, one record per expanded child item, native JSON-safe values.
387
+ Every format adapter (``to_csv``, ``to_ndjson``, ``to_excel``,
388
+ ``to_dataframe``) builds on this projection.
389
+
390
+ Unlike ``to_csv`` this returns a value directly, so load first:
391
+
392
+ >>> records = client.users.get_all() \\
393
+ ... .select(["displayName", "mail"]) \\
394
+ ... .execute_query() \\
395
+ ... .to_records()
396
+
397
+ Note: this is **data export** — for OData *payload* serialization (request
398
+ bodies with type metadata) use :meth:`to_json`.
399
+ """
400
+ from office365.runtime.converters.records import iter_records
401
+
402
+ return iter_records(self)
403
+
404
+ def from_records(self, records: List[dict], progress: "ProgressCallback | None" = None) -> Self:
405
+ """Import plain dict records by queueing a create per record (deferred).
406
+
407
+ The neutral import counterpart of :meth:`to_records`. Every import
408
+ adapter (``from_csv``, ``from_ndjson``, ``from_excel``, ``from_json``,
409
+ ``from_dataframe``) routes through here: records are normalized to the
410
+ item type (dotted keys re-nested, ``"; "`` collections split, unknown
411
+ columns skipped) and each becomes an entity queued for creation, which
412
+ runs on ``execute_query()``.
413
+
414
+ Args:
415
+ records: Plain dict records to import.
416
+ progress: Optional hook invoked per queued create as it completes
417
+ during ``execute_query()`` (a ``Progress`` snapshot per record).
418
+
419
+ Usage:
420
+ >>> client.users.from_records(records).execute_query()
421
+ >>> client.users.from_records(records, progress=my_callback).execute_query()
422
+ """
423
+ from office365.runtime.converters.csv_reader import coerce_records
424
+
425
+ return self._import_records(coerce_records(self._item_type, records), progress=progress)
426
+
427
+ def to_dataframe(self) -> "DataFrameResult":
428
+ """Build a pandas DataFrame from the loaded items.
429
+
430
+ Returns a ``DataFrameResult`` whose ``.value`` holds the DataFrame after
431
+ ``execute_query()`` — fully deferred, so chain it like ``to_csv``:
432
+
433
+ >>> df = client.users.get_all() \\
434
+ ... .select(["displayName", "mail"]) \\
435
+ ... .to_dataframe() \\
436
+ ... .execute_query() \\
437
+ ... .value
438
+
439
+ Requires the optional dependency (``pip install
440
+ office365-rest-python-client[pandas]``). The projection is the same as
441
+ ``to_csv``: ``.select()``/``.expand()`` columns, one row per expanded
442
+ child item.
443
+ """
444
+ from office365.runtime.converters.dataframe import DataFrameResult, require_pandas, write_dataframe
445
+
446
+ require_pandas() # fail fast on a missing optional dependency
447
+ result = DataFrameResult(self.context)
448
+ self.after_execute(lambda _: write_dataframe(self, result))
449
+ return result
450
+
451
+ def from_dataframe(self, df, progress: "ProgressCallback | None" = None) -> Self:
452
+ """Import a pandas DataFrame by queueing a create per row (deferred).
304
453
 
305
- writer = CollectionCsvWriter(self, file)
306
- return self.after_execute(lambda _: writer.write())
454
+ The symmetric counterpart of ``to_dataframe``: each row is parsed
455
+ immediately into an entity and queued for creation, which runs on
456
+ ``execute_query()``.
457
+
458
+ Args:
459
+ df: A pandas DataFrame.
460
+ progress: Optional hook invoked per row as its create completes
461
+ during ``execute_query()``.
462
+
463
+ Usage:
464
+ >>> client.users.from_dataframe(df).execute_query()
465
+ >>> client.users.from_dataframe(df, progress=my_callback).execute_query()
466
+ """
467
+ from office365.runtime.converters.dataframe import read_dataframe
468
+
469
+ return self.from_records(read_dataframe(df), progress=progress)
470
+
471
+ def to_ndjson(self, file: IO[str]) -> Self:
472
+ """Export loaded items as NDJSON (JSON Lines) — one record per line.
473
+
474
+ Deferred like ``to_csv`` — the records are written on ``execute_query()``:
475
+
476
+ >>> client.users.get_all().select(["displayName", "mail"]).to_ndjson(f).execute_query()
477
+ """
478
+ from office365.runtime.converters.ndjson import write_ndjson
479
+ from office365.runtime.converters.records import iter_records
480
+
481
+ return self.after_execute(lambda _: write_ndjson(iter_records(self), file))
482
+
483
+ def from_ndjson(self, file: IO[str], progress: "ProgressCallback | None" = None) -> Self:
484
+ """Import NDJSON (JSON Lines) by queueing a create per line (deferred).
485
+
486
+ The symmetric counterpart of ``to_ndjson``:
487
+
488
+ >>> client.users.from_ndjson(f).execute_query()
489
+ """
490
+ from office365.runtime.converters.ndjson import read_ndjson
491
+
492
+ return self.from_records(read_ndjson(file), progress=progress)
493
+
494
+ def to_json_file(self, file: IO[str]) -> Self:
495
+ """Export loaded items as a JSON array file.
496
+
497
+ Deferred like ``to_csv`` — the records are written on ``execute_query()``.
498
+ Note this is the file format; :meth:`to_json` is OData *payload*
499
+ serialization for request bodies:
500
+
501
+ >>> client.users.get_all().select(["displayName", "mail"]).to_json_file(f).execute_query()
502
+ """
503
+ from office365.runtime.converters.json_file import write_json
504
+ from office365.runtime.converters.records import iter_records
505
+
506
+ return self.after_execute(lambda _: write_json(iter_records(self), file))
507
+
508
+ def from_json_file(self, file: IO[str], progress: "ProgressCallback | None" = None) -> Self:
509
+ """Import a JSON array file by queueing a create per record (deferred).
510
+
511
+ The symmetric counterpart of ``to_json_file``:
512
+
513
+ >>> client.users.from_json_file(f).execute_query()
514
+ """
515
+ from office365.runtime.converters.json_file import read_json
516
+
517
+ return self.from_records(read_json(file), progress=progress)
518
+
519
+ def to_excel(self, path: Union[str, PathLike]) -> Self:
520
+ """Export loaded items to an Excel (.xlsx) worksheet.
521
+
522
+ Deferred like ``to_csv`` — the workbook is written on ``execute_query()``.
523
+ Requires the optional dependency (``pip install
524
+ office365-rest-python-client[excel]``):
525
+
526
+ >>> client.users.get_all().select(["displayName", "mail"]).to_excel("users.xlsx").execute_query()
527
+ """
528
+ from office365.runtime.converters.excel import write_excel
529
+ from office365.runtime.converters.records import iter_records
530
+
531
+ return self.after_execute(lambda _: write_excel(iter_records(self), path))
532
+
533
+ def from_excel(self, path: Union[str, PathLike], progress: "ProgressCallback | None" = None) -> Self:
534
+ """Import an Excel (.xlsx) worksheet by queueing a create per row (deferred).
535
+
536
+ The symmetric counterpart of ``to_excel`` (reads the first worksheet):
537
+
538
+ >>> client.users.from_excel("users.xlsx").execute_query()
539
+ """
540
+ from office365.runtime.converters.excel import read_excel
541
+
542
+ return self.from_records(read_excel(path), progress=progress)
543
+
544
+ def _import_records(self, records: List[dict], progress: "ProgressCallback | None" = None) -> Self:
545
+ """Queue a create per record, appending the pending entities to this collection."""
546
+ from office365.runtime.operations import query_progress_hook
547
+ from office365.runtime.queries.create_entity import CreateEntityQuery
548
+
549
+ hook = query_progress_hook(len(records), progress) if callable(progress) else None
550
+ for record in records:
551
+ entity = self.create_typed_object(record)
552
+ self.add_child(entity)
553
+ qry = CreateEntityQuery(self, entity, entity)
554
+ self.context.add_query(qry)
555
+ if hook is not None:
556
+ self.context.after_execute(hook)
557
+ return self
558
+
559
+ def _can_offset_next(self) -> bool:
560
+ """Whether the next page can be fetched with a client-driven offset request.
561
+
562
+ Some SharePoint endpoints (e.g. ``SP.Publishing.SitePageService/pages``)
563
+ never emit a server-side ``__next`` link, even when more items exist.
564
+ When the client requested an explicit page size and the last page came
565
+ back full, fall back to ``$skip``/``$top`` paging. Graph is excluded:
566
+ it always reports ``@odata.nextLink`` and does not honor ``$skip``.
567
+ """
568
+ if not self._paged_mode or not self._page_size or self._next_request_url is not None:
569
+ return False
570
+ from office365.runtime.odata.v3.json_light_format import JsonLightFormat
571
+
572
+ json_format = getattr(self.context.pending_request(), "json_format", None)
573
+ if not isinstance(json_format, JsonLightFormat):
574
+ return False
575
+ return len(self.current_page) == self._page_size
307
576
 
308
577
  def _get_next(self) -> Self:
309
578
  """Submit a request to retrieve next collection of items"""
310
579
 
580
+ _PAGE_EXCLUDED_HEADERS = ("authorization", "content-length")
581
+
311
582
  def _construct_request(request: RequestOptions) -> None:
312
583
  request.url = self._next_request_url # type: ignore[assignment]
584
+ if self._page_headers:
585
+ request.headers.update(
586
+ {k: v for k, v in self._page_headers.items() if k.lower() not in _PAGE_EXCLUDED_HEADERS}
587
+ )
313
588
 
314
589
  if self._next_request_url is None:
315
- raise ValueError("Next page not available")
590
+ if not self._can_offset_next():
591
+ raise ValueError("Next page not available")
592
+ self.skip(len(self._data))
593
+ return self.get()
316
594
  return self.get().before_execute(_construct_request)
317
595
 
318
596
  def first(self, expression: str) -> ClientObjectT:
@@ -373,8 +651,13 @@ class ClientObjectCollection(ClientObject, Generic[ClientObjectT]):
373
651
 
374
652
  @property
375
653
  def has_next(self) -> bool:
376
- """Check if more pages are available in server-driven paging."""
377
- return self._next_request_url is not None
654
+ """Check if more pages are available.
655
+
656
+ True when the server signalled a next page (``__next``/``@odata.nextLink``)
657
+ or when a SharePoint collection loaded a full explicit page and the next
658
+ one can still be fetched via ``$skip``.
659
+ """
660
+ return self._next_request_url is not None or self._can_offset_next()
378
661
 
379
662
  @property
380
663
  def current_page(self) -> List[ClientObjectT]: