Office365-REST-Python-Client 3.1.0__py3-none-any.whl → 3.3.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.
- office365/admin/admin.py +45 -0
- office365/admin/baseline_parameter.py +3 -0
- office365/admin/baseline_parameter_type.py +14 -0
- office365/admin/browser_shared_cookie.py +99 -0
- office365/admin/browser_site.py +101 -0
- office365/admin/browser_site_list.py +87 -0
- office365/admin/configuration_management.py +86 -0
- office365/admin/edge/edge.py +25 -0
- office365/admin/exchange/admin.py +35 -0
- office365/admin/exchange/exchange_message_trace.py +15 -1
- office365/admin/exchange/exchange_message_trace_status.py +2 -0
- office365/admin/internet_explorer_mode.py +28 -0
- office365/admin/message_tracing_root.py +28 -0
- office365/admin/microsoft365/apps.py +26 -0
- office365/admin/microsoft365/m365_apps_installation_options.py +47 -0
- office365/admin/people/insights_settings.py +21 -0
- office365/admin/people/profile_property_setting.py +27 -0
- office365/admin/people/profile_source.py +48 -0
- office365/admin/people/pronouns_settings.py +16 -0
- office365/admin/people/settings.py +58 -0
- office365/admin/report_settings.py +13 -0
- office365/admin/sharepoint/settings.py +88 -1
- office365/backuprestore/browse_session_base.py +101 -0
- office365/backuprestore/email_notifications_setting.py +40 -0
- office365/backuprestore/onedrive_for_business_browse_session.py +16 -0
- office365/backuprestore/onedrive_for_business_restore_session.py +68 -0
- office365/backuprestore/protection_unit_base.py +92 -0
- office365/backuprestore/restorepoints/collection.py +61 -0
- office365/backuprestore/restorepoints/search_result.py +6 -0
- office365/backuprestore/root.py +354 -0
- office365/backuprestore/serviceapps/service_app.py +74 -0
- office365/backuprestore/sharepoint_browse_session.py +16 -0
- office365/backuprestore/sharepoint_protection_policy.py +60 -0
- office365/backuprestore/sharepoint_restore_session.py +66 -0
- office365/booking/appointment.py +197 -0
- office365/booking/business/business.py +75 -1
- office365/booking/business/collection.py +22 -0
- office365/booking/currency.py +13 -0
- office365/booking/custom_question.py +40 -0
- office365/booking/customer.py +51 -0
- office365/booking/service.py +145 -1
- office365/booking/staff/member.py +76 -0
- office365/common/add_large_gallery_view_operation.py +8 -0
- office365/common/agent_identity.py +45 -0
- office365/common/agent_identity_blueprint.py +41 -0
- office365/common/agent_identity_blueprint_principal.py +34 -0
- office365/common/agent_user.py +7 -0
- office365/common/ai_interaction.py +108 -0
- office365/common/akamai_web_application_firewall_provider.py +31 -0
- office365/common/anonymous_calendar_sharing_free_busy_detail.py +7 -0
- office365/common/anonymous_calendar_sharing_free_busy_reviewer.py +7 -0
- office365/common/anonymous_calendar_sharing_free_busy_simple.py +7 -0
- office365/common/anonymous_guest_conversation_member.py +16 -0
- office365/common/apple_device_features_configuration_base.py +7 -0
- office365/common/apple_managed_identity_provider.py +31 -0
- office365/common/arkose_fraud_protection_provider.py +31 -0
- office365/common/attribute_set.py +21 -0
- office365/common/azure_communication_services_user_conversation_member.py +16 -0
- office365/common/b2_b_registration_metrics_base.py +27 -0
- office365/common/b2_b_sign_in_activity_metrics_base.py +37 -0
- office365/common/base_map_feature.py +7 -0
- office365/common/building.py +39 -0
- office365/common/building_map.py +41 -0
- office365/common/complex_extension_value.py +10 -0
- office365/common/configuration_baseline.py +40 -0
- office365/common/configuration_drift.py +68 -0
- office365/common/configuration_monitor.py +103 -0
- office365/common/configuration_monitoring_result.py +56 -0
- office365/common/configuration_snapshot_job.py +71 -0
- office365/common/contract.py +32 -0
- office365/common/cross_tenant_access_policy_configuration_default.py +163 -0
- office365/common/cross_tenant_access_policy_configuration_partner.py +188 -0
- office365/common/cross_tenant_calendar_availability_basic.py +7 -0
- office365/common/cross_tenant_calendar_availability_limited_details.py +7 -0
- office365/common/cross_tenant_calendar_sharing_free_busy_detail.py +7 -0
- office365/common/cross_tenant_calendar_sharing_free_busy_reviewer.py +7 -0
- office365/common/cross_tenant_calendar_sharing_free_busy_simple.py +7 -0
- office365/common/cross_tenant_identity_sync_policy_partner.py +35 -0
- office365/common/cross_tenant_mail_tips_all.py +7 -0
- office365/common/cross_tenant_mail_tips_limited.py +7 -0
- office365/common/cross_tenant_migration.py +7 -0
- office365/common/cross_tenant_open_profile_card.py +7 -0
- office365/common/cross_tenant_places_desk_booking.py +7 -0
- office365/common/cross_tenant_places_room_booking.py +7 -0
- office365/common/custom_authentication_extension.py +25 -0
- office365/common/custom_data_provided_resource.py +25 -0
- office365/common/custom_data_provided_resource_access_review_upload_session.py +7 -0
- office365/common/data_source_configuration.py +19 -0
- office365/common/delta_participants.py +31 -0
- office365/common/desk.py +51 -0
- office365/common/dictionaries.py +10 -0
- office365/common/directory_object_partner_reference.py +32 -0
- office365/common/domain_dns_mx_record.py +21 -0
- office365/common/domain_dns_srv_record.py +41 -0
- office365/common/domain_dns_txt_record.py +16 -0
- office365/common/domain_dns_unavailable_record.py +16 -0
- office365/common/drive_protection_unit.py +26 -0
- office365/common/drive_protection_units_bulk_addition_job.py +20 -0
- office365/common/drive_restore_artifact.py +26 -0
- office365/common/drive_restore_artifacts_bulk_addition_request.py +20 -0
- office365/common/edition_upgrade_configuration.py +47 -0
- office365/common/email_authentication_method_configuration.py +44 -0
- office365/common/emergency_call_event.py +31 -0
- office365/common/end_user_settings.py +32 -0
- office365/common/endpoint.py +36 -0
- office365/common/engagement_async_operation.py +31 -0
- office365/common/engagement_conversation_discussion_message.py +7 -0
- office365/common/engagement_conversation_question_message.py +16 -0
- office365/common/engagement_conversation_system_message.py +7 -0
- office365/common/engagement_role.py +33 -0
- office365/common/engagement_role_member.py +33 -0
- office365/common/enrollment_troubleshooting_event.py +63 -0
- office365/common/enterprise_code_signing_certificate.py +57 -0
- office365/common/error_detail.py +16 -0
- office365/common/event_message_request.py +54 -0
- office365/common/event_message_response.py +29 -0
- office365/common/exchange_protection_policy.py +60 -0
- office365/common/exchange_restore_session.py +68 -0
- office365/common/exchange_settings.py +16 -0
- office365/common/external_authentication_method.py +21 -0
- office365/common/external_authentication_method_configuration.py +54 -0
- office365/common/external_domain_name.py +7 -0
- office365/common/external_users_self_service_sign_up_events_flow.py +85 -0
- office365/common/fido2_authentication_method_configuration.py +72 -0
- office365/common/fido2_combination_configuration.py +15 -0
- office365/common/fixture_map.py +16 -0
- office365/common/floor.py +16 -0
- office365/common/footprint_map.py +7 -0
- office365/common/granular_drive_restore_artifact.py +16 -0
- office365/common/granular_mailbox_restore_artifact.py +21 -0
- office365/common/granular_restore_artifact_base.py +62 -0
- office365/common/granular_site_restore_artifact.py +16 -0
- office365/common/human_security_fraud_protection_provider.py +21 -0
- office365/common/identity_built_in_user_flow_attribute.py +7 -0
- office365/common/identity_custom_user_flow_attribute.py +7 -0
- office365/common/image_info.py +17 -0
- office365/common/imported_windows_autopilot_device_identity_upload.py +52 -0
- office365/common/intune_brand.py +29 -0
- office365/common/ip_named_location.py +27 -0
- office365/common/ipv4_range.py +15 -0
- office365/common/ipv6_range.py +15 -0
- office365/common/key_value.py +15 -0
- office365/common/learning_assignment.py +48 -0
- office365/common/level_map.py +52 -0
- office365/common/mailbox.py +26 -0
- office365/common/mailbox_folder.py +104 -0
- office365/common/mailbox_item.py +61 -0
- office365/common/mailbox_protection_rule.py +16 -0
- office365/common/mailbox_protection_unit.py +26 -0
- office365/common/mailbox_protection_units_bulk_addition_job.py +20 -0
- office365/common/mailbox_restore_artifact.py +26 -0
- office365/common/mailbox_restore_artifacts_bulk_addition_request.py +20 -0
- office365/common/managed_android_lob_app.py +40 -0
- office365/common/managed_android_store_app.py +35 -0
- office365/common/managed_app_status_raw.py +21 -0
- office365/common/managed_ios_lob_app.py +56 -0
- office365/common/managed_ios_store_app.py +45 -0
- office365/common/managed_mobile_lob_app.py +45 -0
- office365/common/microsoft_account_user_conversation_member.py +16 -0
- office365/common/microsoft_authenticator_authentication_method_configuration.py +51 -0
- office365/common/microsoft_authenticator_authentication_method_target.py +25 -0
- office365/common/microsoft_store_for_business_app.py +45 -0
- office365/common/mime_content.py +15 -0
- office365/common/mute_participant_operation.py +8 -0
- office365/common/oidc_identity_provider.py +69 -0
- office365/common/on_attribute_collection_listener.py +25 -0
- office365/common/on_attribute_collection_start_custom_extension.py +7 -0
- office365/common/on_attribute_collection_start_listener.py +25 -0
- office365/common/on_attribute_collection_submit_custom_extension.py +7 -0
- office365/common/on_attribute_collection_submit_listener.py +25 -0
- office365/common/on_authentication_method_load_start_listener.py +25 -0
- office365/common/on_email_otp_send_listener.py +21 -0
- office365/common/on_fraud_protection_load_start_listener.py +25 -0
- office365/common/on_interactive_auth_flow_start_listener.py +25 -0
- office365/common/on_otp_send_custom_extension.py +7 -0
- office365/common/on_password_submit_custom_extension.py +7 -0
- office365/common/on_password_submit_listener.py +25 -0
- office365/common/on_token_issuance_start_listener.py +25 -0
- office365/common/on_user_create_start_listener.py +25 -0
- office365/common/on_verified_id_claim_validation_listener.py +25 -0
- office365/common/operation.py +35 -0
- office365/common/os_version_count.py +17 -0
- office365/common/participant_joining_notification.py +22 -0
- office365/common/participant_left_notification.py +27 -0
- office365/common/passkey_authentication_method_target.py +15 -0
- office365/common/passkey_profile.py +50 -0
- office365/common/phone_user_conversation_member.py +16 -0
- office365/common/play_prompt_operation.py +8 -0
- office365/common/privacy.py +32 -0
- office365/common/prompt.py +10 -0
- office365/common/protection_units_bulk_job_base.py +64 -0
- office365/common/provision_response.py +15 -0
- office365/common/proxied_domain.py +15 -0
- office365/common/qr_code.py +46 -0
- office365/common/qr_code_pin_authentication_method.py +41 -0
- office365/common/qr_code_pin_authentication_method_configuration.py +42 -0
- office365/common/qr_pin.py +32 -0
- office365/common/reading_assignment_submission.py +123 -0
- office365/common/reading_coach_passage.py +63 -0
- office365/common/record_operation.py +22 -0
- office365/common/reflect_check_in_response.py +70 -0
- office365/common/related_tenants_refresh_request.py +16 -0
- office365/common/reports_root.py +79 -0
- office365/common/request.py +47 -0
- office365/common/reseller_delegated_admin_relationship.py +21 -0
- office365/common/restore_artifact_base.py +59 -0
- office365/common/restore_artifacts_bulk_request_base.py +104 -0
- office365/common/restore_point.py +43 -0
- office365/common/restore_session_base.py +93 -0
- office365/common/role_assignment.py +40 -0
- office365/common/role_definition.py +52 -0
- office365/common/saml_or_ws_fed_external_domain_federation.py +28 -0
- office365/common/section.py +7 -0
- office365/common/section_map.py +16 -0
- office365/common/send_dtmf_tones_operation.py +26 -0
- office365/common/service_announcement_attachment.py +37 -0
- office365/common/setting_source.py +17 -0
- office365/common/shared_pc_configuration.py +88 -0
- office365/common/sharepoint_embedded_configuration.py +14 -0
- office365/common/site_protection_rule.py +16 -0
- office365/common/site_protection_unit.py +26 -0
- office365/common/site_protection_units_bulk_addition_job.py +20 -0
- office365/common/site_restore_artifact.py +26 -0
- office365/common/site_restore_artifacts_bulk_addition_request.py +20 -0
- office365/common/skype_for_business_user_conversation_member.py +21 -0
- office365/common/skype_user_conversation_member.py +16 -0
- office365/common/software_oath_authentication_method.py +16 -0
- office365/common/software_oath_authentication_method_configuration.py +32 -0
- office365/common/speaker_assignment_submission.py +108 -0
- office365/common/storage_quota_breakdown.py +26 -0
- office365/common/subscribe_to_tone_operation.py +8 -0
- office365/common/task_file_attachment.py +11 -0
- office365/common/teamwork_hosted_content.py +21 -0
- office365/common/temporary_access_pass_authentication_method_configuration.py +57 -0
- office365/common/unit_map.py +16 -0
- office365/common/verifiable_credential_authentication_method_target.py +15 -0
- office365/common/verifiable_credentials_authentication_method_configuration.py +34 -0
- office365/common/voice_authentication_method_configuration.py +37 -0
- office365/common/web_app.py +21 -0
- office365/common/what_if_analysis_result.py +30 -0
- office365/communications/aad_user_conversation_member_result.py +14 -0
- office365/communications/aad_user_notification_recipient.py +14 -0
- office365/communications/accept_join_response.py +10 -0
- office365/communications/app_hosted_media_config.py +14 -0
- office365/communications/application_identity.py +15 -0
- office365/communications/application_instance_identity.py +15 -0
- office365/communications/attendance_interval.py +17 -0
- office365/communications/audio_conferencing.py +20 -0
- office365/communications/azure_communication_services_user_identity.py +14 -0
- office365/communications/broadcast_meeting_caption_settings.py +17 -0
- office365/communications/call_participant_info.py +15 -0
- office365/communications/callrecords/administrative_unit_info.py +14 -0
- office365/communications/callrecords/call_record.py +31 -1
- office365/communications/callrecords/client_user_agent.py +19 -0
- office365/communications/callrecords/collection.py +8 -0
- office365/communications/callrecords/device_info.py +34 -0
- office365/communications/callrecords/direct_routing_log_row.py +47 -0
- office365/communications/callrecords/endpoint.py +8 -1
- office365/communications/callrecords/failure_info.py +16 -0
- office365/communications/callrecords/feedback_token_set.py +10 -0
- office365/communications/callrecords/media.py +23 -0
- office365/communications/callrecords/media_stream.py +65 -0
- office365/communications/callrecords/network_info.py +53 -0
- office365/communications/callrecords/organizer.py +7 -0
- office365/communications/callrecords/participant.py +7 -0
- office365/communications/callrecords/participant_base.py +31 -0
- office365/communications/callrecords/participant_endpoint.py +23 -0
- office365/communications/callrecords/pstn_call_log_row.py +40 -0
- office365/communications/callrecords/segment.py +34 -0
- office365/communications/callrecords/service_endpoint.py +10 -0
- office365/communications/callrecords/service_user_agent.py +15 -0
- office365/communications/callrecords/session.py +13 -1
- office365/communications/callrecords/trace_route_hop.py +20 -0
- office365/communications/callrecords/user_agent.py +15 -0
- office365/communications/callrecords/user_feedback.py +18 -0
- office365/communications/callrecords/user_identity.py +14 -0
- office365/communications/callrecords/wifi_band.py +15 -0
- office365/communications/callrecords/wifi_radio_type.py +18 -0
- office365/communications/calls/ai_insight.py +63 -0
- office365/communications/calls/audio_routing_group.py +32 -0
- office365/communications/calls/call.py +84 -5
- office365/communications/calls/content_sharing_session.py +7 -0
- office365/communications/calls/ended_event_message_detail.py +6 -0
- office365/communications/calls/event.py +40 -0
- office365/communications/calls/incoming_context.py +14 -1
- office365/communications/calls/invitation_participant_info.py +4 -0
- office365/communications/calls/media_state.py +15 -0
- office365/communications/calls/options.py +8 -0
- office365/communications/calls/participant.py +48 -1
- office365/communications/calls/participant_info.py +17 -1
- office365/communications/calls/route.py +13 -1
- office365/communications/calls/transcription_info.py +17 -0
- office365/communications/chat_members_notification_recipient.py +14 -0
- office365/communications/chat_renamed_event_message_detail.py +17 -0
- office365/communications/chat_restrictions.py +14 -0
- office365/communications/cloud_communications.py +35 -1
- office365/communications/comms_notification.py +15 -0
- office365/communications/comms_notifications.py +18 -0
- office365/communications/conversation_member_role_updated_event_message_detail.py +19 -0
- office365/communications/emergency_caller_info.py +19 -0
- office365/communications/encrypted_identity.py +10 -0
- office365/communications/engagement_identity_set.py +16 -0
- office365/communications/guest_identity.py +14 -0
- office365/communications/incoming_call_options.py +10 -0
- office365/communications/invite_new_bot_response.py +14 -0
- office365/communications/join_meeting_id_settings.py +16 -0
- office365/communications/max_work_location_details.py +15 -0
- office365/communications/media_config.py +10 -0
- office365/communications/media_info.py +15 -0
- office365/communications/media_prompt.py +15 -0
- office365/communications/meetings/join_meeting_id_info.py +13 -0
- office365/communications/onlinemeetings/attendance_record.py +62 -0
- office365/communications/onlinemeetings/base.py +86 -5
- office365/communications/onlinemeetings/broadcast_settings.py +6 -1
- office365/communications/onlinemeetings/chatmode.py +8 -9
- office365/communications/onlinemeetings/collection.py +9 -1
- office365/communications/onlinemeetings/engagement_conversation.py +16 -2
- office365/communications/onlinemeetings/meeting_attendance_report.py +64 -0
- office365/communications/onlinemeetings/online_meeting_info.py +6 -0
- office365/communications/onlinemeetings/restricted.py +16 -0
- office365/communications/onlinemeetings/sensitivity_label_assignment.py +14 -0
- office365/communications/operations/comms.py +22 -1
- office365/communications/organizer_meeting_info.py +15 -0
- office365/communications/out_of_office_settings.py +15 -0
- office365/communications/outgoing_call_options.py +10 -0
- office365/communications/participant_joining_response.py +10 -0
- office365/communications/phone_identity.py +10 -0
- office365/communications/presences/presence.py +22 -1
- office365/communications/presences/status_message.py +4 -0
- office365/communications/quotas.py +66 -0
- office365/communications/recording_info.py +17 -0
- office365/communications/reject_join_response.py +15 -0
- office365/communications/removed_state.py +14 -0
- office365/communications/service_hosted_media_config.py +16 -0
- office365/communications/teleconference_device_audio_quality.py +10 -0
- office365/communications/teleconference_device_media_quality.py +38 -0
- office365/communications/teleconference_device_screen_sharing_quality.py +10 -0
- office365/communications/teleconference_device_video_quality.py +17 -0
- office365/communications/teleconferencedevicequality.py +32 -1
- office365/communications/token_meeting_info.py +14 -0
- office365/communications/tone_info.py +16 -0
- office365/communications/user_identity.py +14 -0
- office365/communications/user_work_location.py +18 -0
- office365/communications/virtualevents/external_information.py +15 -0
- office365/communications/virtualevents/external_registration_information.py +15 -0
- office365/communications/virtualevents/presenter.py +35 -0
- office365/communications/virtualevents/presenter_details.py +21 -0
- office365/communications/virtualevents/presenter_info.py +17 -0
- office365/communications/virtualevents/registration.py +109 -0
- office365/communications/virtualevents/registration_configuration.py +52 -0
- office365/communications/virtualevents/registration_custom_question.py +31 -0
- office365/communications/virtualevents/registration_predefined_question.py +25 -0
- office365/communications/virtualevents/registration_question_answer.py +19 -0
- office365/communications/virtualevents/registration_question_base.py +21 -0
- office365/communications/virtualevents/root.py +21 -0
- office365/communications/virtualevents/session.py +35 -0
- office365/communications/virtualevents/settings.py +6 -0
- office365/communications/virtualevents/townhall.py +83 -0
- office365/communications/virtualevents/townhall_registration_configuration.py +7 -0
- office365/communications/virtualevents/virtual_event.py +81 -1
- office365/communications/virtualevents/webinar.py +65 -0
- office365/communications/virtualevents/webinar_registration_configuration.py +7 -0
- office365/copilot/action_result_part.py +4 -1
- office365/copilot/admin_catalog.py +28 -0
- office365/copilot/admin_limited_mode.py +21 -0
- office365/copilot/admin_setting.py +24 -0
- office365/copilot/ai_interaction_history.py +9 -0
- office365/copilot/ai_online_meeting.py +26 -0
- office365/copilot/ai_user.py +39 -0
- office365/copilot/copilot_package_request_status.py +14 -0
- office365/copilot/copilot_package_request_type.py +15 -0
- office365/copilot/package.py +153 -0
- office365/copilot/package_access_entity.py +3 -0
- office365/copilot/package_detail.py +92 -0
- office365/copilot/report_root.py +9 -0
- office365/copilot/retrieval_data_source.py +2 -0
- office365/delta_collection.py +37 -1
- office365/directory/administrative_unit.py +51 -1
- office365/directory/allowed_value.py +16 -0
- office365/directory/application_permission_type.py +13 -0
- office365/directory/application_resource_permission.py +18 -0
- office365/directory/applications/application.py +217 -14
- office365/directory/applications/applications_required_resource_access.py +21 -0
- office365/directory/applications/collection.py +40 -2
- office365/directory/applications/custom_security_attribute_exemption.py +2 -2
- office365/directory/applications/instance_resource_access.py +19 -0
- office365/directory/approval_settings.py +22 -0
- office365/directory/audit/provisioning/object_summary.py +19 -3
- office365/directory/audit/signins/activity.py +2 -2
- office365/directory/authentication/attributecollection/start_custom_extension_handler.py +8 -0
- office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +8 -0
- office365/directory/authentication/authentication.py +124 -4
- office365/directory/authentication/behaviors.py +2 -0
- office365/directory/authentication/conditions/application.py +13 -0
- office365/directory/authentication/conditions/event_listener.py +32 -0
- office365/directory/authentication/error_correction_level.py +2 -0
- office365/directory/authentication/fraud_protection_provider.py +16 -0
- office365/directory/authentication/fraud_protection_provider_configuration.py +8 -0
- office365/directory/authentication/methods/fido.py +46 -1
- office365/directory/authentication/methods/method.py +12 -0
- office365/directory/authentication/methods/microsoft_authenticator.py +34 -0
- office365/directory/authentication/methods/phone.py +30 -0
- office365/directory/authentication/password_reset_response.py +4 -0
- office365/directory/authentication/platform_credential_authentication_method.py +51 -0
- office365/directory/authentication/qr_code_image_details.py +5 -0
- office365/directory/authentication/temporary_access_pass_authentication_method.py +42 -0
- office365/directory/authentication/windows_hello_for_business_authentication_method.py +39 -0
- office365/directory/b2b_registration_metrics.py +42 -0
- office365/directory/b2b_registration_metrics_initial.py +17 -0
- office365/directory/b2b_registration_metrics_recent.py +17 -0
- office365/directory/b2b_sign_in_activity_metrics.py +42 -0
- office365/directory/b2b_sign_in_activity_metrics_initial.py +17 -0
- office365/directory/b2b_sign_in_activity_metrics_recent.py +17 -0
- office365/directory/certificates/auth_pki.py +50 -0
- office365/directory/certificates/authority_detail.py +74 -0
- office365/directory/certificates/x509/authentication_method_configuration.py +98 -0
- office365/directory/certificates/x509/combination_configuration.py +20 -0
- office365/directory/claim_binding.py +17 -0
- office365/directory/claim_binding_source.py +12 -0
- office365/directory/claim_validation.py +15 -0
- office365/directory/credential.py +106 -0
- office365/directory/cross_cloud_azure_active_directory_tenant.py +16 -0
- office365/directory/custom_security_attribute_definition.py +65 -0
- office365/directory/datapolicy/operation.py +2 -1
- office365/directory/delegated_administration_role_assignment.py +24 -0
- office365/directory/delegated_administration_role_assignment_snapshot.py +20 -0
- office365/directory/delegatedadmin/access_assignment.py +60 -0
- office365/directory/delegatedadmin/access_container.py +18 -0
- office365/directory/delegatedadmin/access_details.py +16 -0
- office365/directory/delegatedadmin/customer.py +44 -0
- office365/directory/delegatedadmin/relationship.py +136 -0
- office365/directory/delegatedadmin/relationship_customer_participant.py +15 -0
- office365/directory/delegatedadmin/relationship_operation.py +56 -0
- office365/directory/delegatedadmin/relationship_request.py +48 -0
- office365/directory/delegatedadmin/service_management_detail.py +21 -0
- office365/directory/delegatedadmin/service_provider_constraints.py +28 -0
- office365/directory/device_local_credential_info.py +18 -1
- office365/directory/directory.py +86 -0
- office365/directory/domains/collection.py +57 -0
- office365/directory/domains/dns_cname_record.py +13 -0
- office365/directory/domains/dns_record.py +47 -0
- office365/directory/domains/domain.py +93 -0
- office365/directory/domains/internal_domain_federation.py +78 -0
- office365/directory/drifted_property.py +17 -0
- office365/directory/entity_type_and_ids.py +17 -0
- office365/directory/external_domain_federation.py +16 -0
- office365/directory/external_sponsors.py +10 -0
- office365/directory/external_token_based_sap_iag_connection_info.py +19 -0
- office365/directory/governance_invitation.py +42 -0
- office365/directory/governance_relationship.py +65 -0
- office365/directory/governance_request.py +76 -0
- office365/directory/groups/collection.py +19 -2
- office365/directory/groups/group.py +64 -11
- office365/directory/groups/setting.py +14 -1
- office365/directory/groups/setting_template.py +31 -0
- office365/directory/identities/api_connector.py +18 -0
- office365/directory/identities/authentication_events_flow.py +35 -0
- office365/directory/identities/b2x_identity_user_flow.py +89 -0
- office365/directory/identities/conditional_access_root.py +32 -3
- office365/directory/identities/conditional_access_template.py +47 -0
- office365/directory/identities/container.py +80 -8
- office365/directory/identities/named_location.py +29 -0
- office365/directory/identities/on_otp_send_custom_extension_handler.py +6 -0
- office365/directory/identities/on_password_migration_custom_extension_handler.py +8 -0
- office365/directory/identities/on_token_issuance_start_custom_extension.py +29 -0
- office365/directory/identities/on_token_issuance_start_custom_extension_handler.py +8 -0
- office365/directory/identities/on_verified_id_claim_validation_custom_extension.py +7 -0
- office365/directory/identities/on_verified_id_claim_validation_custom_extension_handler.py +8 -0
- office365/directory/identities/provider.py +16 -0
- office365/directory/identities/providers/saml_or_wsfed.py +32 -1
- office365/directory/identities/riskPrevention/container.py +70 -0
- office365/directory/identities/userflows/attribute.py +44 -0
- office365/directory/identities/userflows/b2x/user_flow.py +0 -10
- office365/directory/identities/userflows/language_configuration.py +11 -0
- office365/directory/identities/userflows/user_attribute_assignment.py +67 -0
- office365/directory/identities/userflows/user_flow.py +22 -1
- office365/directory/identities/verified_id_root.py +28 -0
- office365/directory/identities/web_application_firewall_provider.py +16 -0
- office365/directory/identities/web_application_firewall_verification_model.py +69 -0
- office365/directory/identity_set.py +19 -0
- office365/directory/identitygovernance/access_package_suggestion.py +43 -0
- office365/directory/identitygovernance/accessreview/context_data.py +10 -0
- office365/directory/identitygovernance/accessreview/context_data_base.py +15 -0
- office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +4 -1
- office365/directory/identitygovernance/accessreview/history/definition.py +23 -3
- office365/directory/identitygovernance/accessreview/instance.py +49 -3
- office365/directory/identitygovernance/accessreview/instance_decision_item.py +49 -1
- office365/directory/identitygovernance/accessreview/instance_decision_item_apply_result.py +16 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_custom_data_provided_resource.py +16 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_permission.py +17 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +2 -0
- office365/directory/identitygovernance/accessreview/principal_scope.py +5 -0
- office365/directory/identitygovernance/accessreview/principal_scope_type.py +15 -0
- office365/directory/identitygovernance/accessreview/resource_scope.py +5 -0
- office365/directory/identitygovernance/accessreview/resource_scope_type.py +16 -0
- office365/directory/identitygovernance/accessreview/reviewer_scope.py +5 -0
- office365/directory/identitygovernance/accessreview/reviewer_scope_type.py +18 -0
- office365/directory/identitygovernance/accessreview/schedule_definition.py +64 -3
- office365/directory/identitygovernance/accessreview/set.py +34 -1
- office365/directory/identitygovernance/accessreview/stage.py +31 -1
- office365/directory/identitygovernance/activities_container.py +30 -0
- office365/directory/identitygovernance/apply_decision_context_data.py +10 -0
- office365/directory/identitygovernance/awaited_workflow_processing_result.py +6 -1
- office365/directory/identitygovernance/content_activity.py +35 -0
- office365/directory/identitygovernance/custom_callout_extension_type.py +15 -0
- office365/directory/identitygovernance/custom_extension_resource_type.py +14 -0
- office365/directory/identitygovernance/custom_task_extension.py +18 -1
- office365/directory/identitygovernance/custom_task_extension_callout_data.py +13 -2
- office365/directory/identitygovernance/custom_task_extension_reply_mode.py +14 -0
- office365/directory/identitygovernance/custom_task_extension_response_data.py +1 -1
- office365/directory/identitygovernance/data.py +10 -0
- office365/directory/identitygovernance/data_security_and_governance.py +23 -0
- office365/directory/identitygovernance/deleted_item_container.py +17 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment.py +37 -3
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy.py +109 -3
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request.py +64 -4
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/catalog.py +74 -2
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_file.py +27 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_session.py +80 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/multiple_choice_question.py +18 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/package.py +51 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/question.py +18 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource.py +52 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_environment.py +11 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role.py +11 -1
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_role_scope.py +32 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject.py +31 -1
- office365/directory/identitygovernance/entitlementmanagement/available_access_package.py +42 -0
- office365/directory/identitygovernance/entitlementmanagement/connected_organization.py +16 -1
- office365/directory/identitygovernance/entitlementmanagement/control_configuration.py +37 -0
- office365/directory/identitygovernance/entitlementmanagement/entitlement_management.py +246 -1
- office365/directory/identitygovernance/entitlementmanagement/external_origin_resource_connector.py +58 -0
- office365/directory/identitygovernance/governance.py +39 -5
- office365/directory/identitygovernance/insights.py +3 -1
- office365/directory/identitygovernance/lifecycle_management_settings.py +15 -1
- office365/directory/identitygovernance/lifecycle_workflows_container.py +35 -2
- office365/directory/identitygovernance/lifecycletaskcategory.py +4 -0
- office365/directory/identitygovernance/lifecycleworkflows/category.py +4 -0
- office365/directory/identitygovernance/privilegedaccess/group.py +21 -0
- office365/directory/identitygovernance/privilegedaccess/group_resource.py +7 -0
- office365/directory/identitygovernance/privilegedaccess/role_management_custom_callout_extension.py +43 -0
- office365/directory/identitygovernance/privilegedaccess/root.py +27 -1
- office365/directory/identitygovernance/privilegedaccess/schedule/schedule.py +13 -1
- office365/directory/identitygovernance/privilegedaccess/schedule_request.py +22 -2
- office365/directory/identitygovernance/run.py +36 -5
- office365/directory/identitygovernance/subject_processing_result.py +121 -0
- office365/directory/identitygovernance/subject_type.py +13 -0
- office365/directory/identitygovernance/task_processing_result.py +18 -2
- office365/directory/identitygovernance/termsofuse/agreement.py +26 -4
- office365/directory/identitygovernance/termsofuse/agreement_file.py +4 -2
- office365/directory/identitygovernance/termsofuse/agreement_file_localization.py +4 -2
- office365/directory/identitygovernance/termsofuse/agreement_file_properties.py +15 -1
- office365/directory/identitygovernance/termsofuse/agreement_file_version.py +4 -2
- office365/directory/identitygovernance/user_data_security_and_governance.py +34 -0
- office365/directory/identitygovernance/user_protection_scope_container.py +9 -0
- office365/directory/identitygovernance/workflow/base.py +19 -3
- office365/directory/identitygovernance/workflow/executiontype.py +4 -0
- office365/directory/identitygovernance/workflow/setting.py +17 -0
- office365/directory/identitygovernance/workflow/version.py +28 -0
- office365/directory/identitygovernance/workflow/workflow.py +127 -0
- office365/directory/inheritable_permission.py +28 -0
- office365/directory/insights/identity.py +15 -0
- office365/directory/insights/resource_reference.py +4 -0
- office365/directory/insights/shared.py +27 -0
- office365/directory/insights/sharing_detail.py +4 -0
- office365/directory/insights/trending.py +22 -1
- office365/directory/insights/usage_details.py +4 -0
- office365/directory/insights/used.py +18 -0
- office365/directory/internal/sponsors.py +10 -0
- office365/directory/key_credential.py +9 -23
- office365/directory/licenses/collection.py +30 -0
- office365/directory/licenses/subscribed_sku.py +3 -0
- office365/directory/modified_property.py +16 -0
- office365/directory/multi_tenant_application_metrics.py +42 -0
- office365/directory/multi_tenant_application_metrics_base.py +27 -0
- office365/directory/multi_tenant_application_metrics_initial.py +17 -0
- office365/directory/multi_tenant_application_metrics_recent.py +17 -0
- office365/directory/multi_tenant_applications_to_provision.py +23 -0
- office365/directory/multi_tenant_applications_to_provision_snapshot.py +23 -0
- office365/directory/multi_tenant_organization_identity_sync_policy_template.py +37 -0
- office365/directory/multi_tenant_organization_join_request_record.py +54 -0
- office365/directory/multi_tenant_organization_member.py +76 -0
- office365/directory/multi_tenant_organization_partner_configuration_template.py +88 -0
- office365/directory/o_auth_consent_app_detail.py +17 -0
- office365/directory/objects/object.py +15 -0
- office365/directory/on_premises_directory_synchronization.py +37 -0
- office365/directory/password_credential.py +10 -23
- office365/directory/permissions/grants/condition_set.py +27 -1
- office365/directory/permissions/identity.py +4 -0
- office365/directory/permissions/identity_set.py +7 -25
- office365/directory/permissions/require_permission.py +78 -9
- office365/directory/policies/activity_based_timeout_policy.py +7 -0
- office365/directory/policies/admin_consent_request.py +50 -0
- office365/directory/policies/app_management.py +17 -1
- office365/directory/policies/authentication_flows.py +26 -1
- office365/directory/policies/authorization.py +12 -0
- office365/directory/policies/conditionalaccess/conditional_access.py +82 -0
- office365/directory/policies/crosstenant/access.py +43 -0
- office365/directory/policies/device_registration.py +69 -0
- office365/directory/policies/dlpaction.py +4 -0
- office365/directory/policies/feature_rollout.py +38 -0
- office365/directory/policies/federated_token_validation_policy.py +21 -0
- office365/directory/policies/ownerless_group_policy.py +59 -0
- office365/directory/policies/protected_application_metadata.py +1 -1
- office365/directory/policies/restrict_access_action_base.py +1 -1
- office365/directory/policies/root.py +142 -2
- office365/directory/policies/template.py +45 -0
- office365/directory/policies/tenant_app_management.py +39 -0
- office365/directory/policies/unifiedrolemanagement/policy.py +76 -1
- office365/directory/policies/unifiedrolemanagement/unified_role_assignment_schedule_request.py +145 -0
- office365/directory/policies/verified_id_profile_configuration.py +13 -1
- office365/directory/policies/verified_id_usage_configuration.py +5 -0
- office365/directory/profile_card_annotation.py +19 -0
- office365/directory/profile_source_localization.py +16 -0
- office365/directory/protection/bitlocker.py +32 -0
- office365/directory/protection/bitlocker_recovery_key.py +37 -0
- office365/directory/protection/information.py +18 -0
- office365/directory/protection/policy/base.py +82 -0
- office365/directory/protection/policy/one_drive_for_business.py +42 -0
- office365/directory/protection/riskyusers/risky_service_principal_history_item.py +15 -1
- office365/directory/protection/root.py +42 -0
- office365/directory/protection/rules/base.py +72 -0
- office365/directory/protection/rules/drive.py +13 -0
- office365/directory/protection/threatassessment/requests/email_file.py +26 -1
- office365/directory/protection/threatassessment/requests/file.py +11 -0
- office365/directory/protection/threatassessment/requests/mail.py +32 -0
- office365/directory/protection/threatassessment/requests/request.py +52 -1
- office365/directory/protection/threatassessment/requests/threat_assessment_result.py +36 -0
- office365/directory/protection/threatassessment/requests/url.py +6 -0
- office365/directory/quotas.py +34 -0
- office365/directory/recovery/change_object_base.py +31 -0
- office365/directory/recovery/job.py +26 -0
- office365/directory/recovery/job_base.py +59 -0
- office365/directory/recovery/job_entity_name_and_ids_filter.py +18 -0
- office365/directory/recovery/job_entity_names_filter.py +18 -0
- office365/directory/recovery/job_filtering_criteria_base.py +10 -0
- office365/directory/recovery/preview_job.py +9 -0
- office365/directory/recovery/recovery.py +37 -0
- office365/directory/related_tenant.py +88 -0
- office365/directory/related_tenants_refresh_status.py +17 -0
- office365/directory/relationship_creation_type.py +13 -0
- office365/directory/relationship_policy.py +29 -0
- office365/directory/relationship_status.py +14 -0
- office365/directory/remote_tenant_group.py +37 -0
- office365/directory/request_schedule.py +21 -0
- office365/directory/request_status.py +14 -0
- office365/directory/resource_visualization.py +21 -0
- office365/directory/role_template.py +15 -0
- office365/directory/role_type.py +15 -0
- office365/directory/rolemanagement/app_scope.py +18 -0
- office365/directory/rolemanagement/application.py +120 -0
- office365/directory/rolemanagement/resource_action.py +4 -0
- office365/directory/rolemanagement/roles/collection.py +26 -3
- office365/directory/rolemanagement/roles/permission.py +4 -0
- office365/directory/rolemanagement/unifiedrole/assignment.py +33 -1
- office365/directory/rolemanagement/unifiedrole/definition.py +30 -0
- office365/directory/service_provider_constraints.py +7 -0
- office365/directory/service_storage_quota_breakdown.py +7 -0
- office365/directory/serviceprincipals/approved_client_app.py +16 -0
- office365/directory/serviceprincipals/collection.py +48 -4
- office365/directory/serviceprincipals/identity.py +14 -0
- office365/directory/serviceprincipals/remote_desktop_security_configuration.py +39 -1
- office365/directory/serviceprincipals/service_principal.py +330 -19
- office365/directory/serviceprincipals/target_device_group.py +16 -0
- office365/directory/snapshot.py +50 -0
- office365/directory/status.py +15 -0
- office365/directory/subscriptions/company.py +75 -0
- office365/directory/synchronization/attribute_mapping.py +1 -1
- office365/directory/synchronization/attribute_mapping_function_schema.py +1 -1
- office365/directory/synchronization/directory_definition.py +1 -1
- office365/directory/synchronization/job.py +13 -1
- office365/directory/synchronization/job_subject.py +6 -3
- office365/directory/synchronization/linked_objects.py +8 -9
- office365/directory/synchronization/rule.py +4 -4
- office365/directory/synchronization/schema.py +19 -2
- office365/directory/synchronization/status.py +1 -1
- office365/directory/synchronization/synchronization.py +22 -0
- office365/directory/synchronization/template.py +20 -1
- office365/directory/tenant_governance.py +98 -0
- office365/directory/tenant_governance_policy_template.py +75 -0
- office365/directory/tenant_governance_setting.py +21 -0
- office365/directory/tenantinformation/multi_organization.py +72 -0
- office365/directory/tenantinformation/relationship.py +41 -0
- office365/directory/ticket_info.py +15 -0
- office365/directory/unified_approval_stage.py +25 -0
- office365/directory/unified_rbac_resource_action.py +41 -0
- office365/directory/unified_rbac_resource_namespace.py +37 -0
- office365/directory/unified_role.py +14 -0
- office365/directory/unified_role_assignment_schedule.py +47 -0
- office365/directory/unified_role_assignment_schedule_instance.py +60 -0
- office365/directory/unified_role_eligibility_schedule.py +26 -0
- office365/directory/unified_role_eligibility_schedule_instance.py +32 -0
- office365/directory/unified_role_eligibility_schedule_request.py +133 -0
- office365/directory/unified_role_management_policy_approval_rule.py +21 -0
- office365/directory/unified_role_management_policy_assignment.py +48 -0
- office365/directory/unified_role_management_policy_authentication_context_rule.py +21 -0
- office365/directory/unified_role_management_policy_custom_extension_rule.py +32 -0
- office365/directory/unified_role_management_policy_enablement_rule.py +15 -0
- office365/directory/unified_role_management_policy_expiration_rule.py +24 -0
- office365/directory/unified_role_management_policy_notification_rule.py +37 -0
- office365/directory/unified_role_management_policy_rule.py +25 -0
- office365/directory/unified_role_management_policy_rule_target.py +31 -0
- office365/directory/unified_role_schedule_base.py +96 -0
- office365/directory/unified_role_schedule_instance_base.py +75 -0
- office365/directory/unified_root.py +66 -0
- office365/directory/unified_storage_quota.py +62 -0
- office365/directory/users/activities/activity.py +24 -2
- office365/directory/users/activities/history_item.py +42 -1
- office365/directory/users/collection.py +17 -0
- office365/directory/users/identity.py +4 -0
- office365/directory/users/inference_classification.py +23 -0
- office365/directory/users/inference_classification_override.py +33 -0
- office365/directory/users/item_insights.py +7 -0
- office365/directory/users/note.py +101 -0
- office365/directory/users/provisioned_plan.py +16 -0
- office365/directory/users/settings.py +50 -1
- office365/directory/users/storage.py +15 -0
- office365/directory/users/user.py +146 -16
- office365/directory/users/windows_setting.py +50 -0
- office365/directory/users/windows_setting_instance.py +32 -0
- office365/directory/users/work_hours_and_locations_setting.py +53 -0
- office365/directory/users/work_plan_occurrence.py +56 -0
- office365/directory/users/work_plan_recurrence.py +51 -0
- office365/directory/verified_id_profile.py +91 -0
- office365/directory/visual_info.py +20 -0
- office365/education/challenging_word.py +15 -0
- office365/education/rubric_criterion.py +10 -0
- office365/education/rubric_level.py +15 -0
- office365/education/rubric_quality.py +21 -0
- office365/education/rubric_quality_feedback_model.py +14 -0
- office365/education/rubric_quality_selected_column_model.py +15 -0
- office365/entity.py +72 -3
- office365/entity_collection.py +35 -4
- office365/externalconnectors/acl.py +21 -0
- office365/externalconnectors/activity_settings.py +18 -0
- office365/externalconnectors/connection_operation.py +17 -2
- office365/externalconnectors/connector_type.py +12 -0
- office365/externalconnectors/content_category.py +18 -4
- office365/externalconnectors/display_template.py +20 -0
- office365/externalconnectors/external_activity.py +14 -1
- office365/externalconnectors/external_activity_result.py +12 -0
- office365/externalconnectors/external_group.py +15 -1
- office365/externalconnectors/external_item_content.py +19 -0
- office365/externalconnectors/external_item_information_protection_label.py +14 -0
- office365/externalconnectors/identity.py +19 -0
- office365/externalconnectors/item_id_resolver.py +16 -0
- office365/externalconnectors/principal.py +20 -0
- office365/externalconnectors/properties.py +10 -0
- office365/externalconnectors/property.py +28 -0
- office365/externalconnectors/property_rule.py +22 -0
- office365/externalconnectors/url_match_info.py +16 -0
- office365/externalconnectors/url_to_item_resolver_base.py +14 -0
- office365/graph_client.py +184 -35
- office365/graph_request.py +56 -4
- office365/intune/audit/actor.py +26 -0
- office365/intune/audit/event.py +48 -0
- office365/intune/audit/property.py +15 -0
- office365/intune/audit/resource.py +15 -1
- office365/intune/devices/and_app_management_role_assignment.py +15 -0
- office365/intune/devices/and_app_management_role_definition.py +7 -0
- office365/intune/devices/category.py +18 -0
- office365/intune/devices/compliance/android_compliance_policy.py +134 -0
- office365/intune/devices/compliance/android_work_profile_compliance_policy.py +134 -0
- office365/intune/devices/compliance/compliance.py +7 -0
- office365/intune/devices/compliance/information.py +19 -0
- office365/intune/devices/compliance/ios_compliance_policy.py +99 -0
- office365/intune/devices/compliance/mac_os_compliance_policy.py +114 -0
- office365/intune/devices/compliance/management_partner.py +91 -0
- office365/intune/devices/compliance/management_partner_assignment.py +17 -0
- office365/intune/devices/compliance/policy.py +155 -0
- office365/intune/devices/compliance/policy_state.py +61 -0
- office365/intune/devices/compliance/setting_state_device_summary.py +56 -0
- office365/intune/devices/compliance/windows10_compliance_policy.py +115 -0
- office365/intune/devices/compliance/windows10_mobile_compliance_policy.py +100 -0
- office365/intune/devices/compliance/windows81_compliance_policy.py +75 -0
- office365/intune/devices/compliance/windows_phone81_compliance_policy.py +75 -0
- office365/intune/devices/compliance_action_item.py +41 -0
- office365/intune/devices/compliance_device_overview.py +47 -0
- office365/intune/devices/compliance_device_status.py +52 -0
- office365/intune/devices/compliance_policy_assignment.py +25 -0
- office365/intune/devices/compliance_policy_device_state_summary.py +56 -0
- office365/intune/devices/compliance_policy_setting_state_summary.py +91 -0
- office365/intune/devices/compliance_scheduled_action_for_rule.py +39 -0
- office365/intune/devices/compliance_setting_state.py +72 -0
- office365/intune/devices/compliance_user_overview.py +47 -0
- office365/intune/devices/compliance_user_status.py +42 -0
- office365/intune/devices/configuration_assignment.py +25 -0
- office365/intune/devices/configuration_device_overview.py +47 -0
- office365/intune/devices/configuration_device_state_summary.py +46 -0
- office365/intune/devices/configuration_device_status.py +52 -0
- office365/intune/devices/configuration_state.py +63 -0
- office365/intune/devices/configuration_user_overview.py +47 -0
- office365/intune/devices/configuration_user_status.py +42 -0
- office365/intune/devices/configurations/android/android_lob_app.py +15 -1
- office365/intune/devices/configurations/android/android_store_app.py +15 -1
- office365/intune/devices/configurations/android/custom_configuration.py +22 -0
- office365/intune/devices/configurations/android/general_device_configuration.py +282 -0
- office365/intune/devices/configurations/android/minimum_operating_system.py +29 -0
- office365/intune/devices/configurations/android/mobile_app_identifier.py +14 -0
- office365/intune/devices/configurations/android/work_profile_custom_configuration.py +22 -0
- office365/intune/devices/configurations/android/work_profile_general_device_configuration.py +214 -0
- office365/intune/devices/configurations/configuration.py +136 -0
- office365/intune/devices/configurations/edge_search_engine.py +17 -0
- office365/intune/devices/configurations/edge_search_engine_base.py +10 -0
- office365/intune/devices/configurations/edge_search_engine_custom.py +14 -0
- office365/intune/devices/configurations/ios/certificate_profile.py +7 -0
- office365/intune/devices/configurations/ios/custom_configuration.py +26 -0
- office365/intune/devices/configurations/ios/features_configuration.py +62 -0
- office365/intune/devices/configurations/ios/general/device_configuration.py +761 -0
- office365/intune/devices/configurations/ios/home_screen_app.py +14 -0
- office365/intune/devices/configurations/ios/home_screen_folder.py +20 -0
- office365/intune/devices/configurations/ios/home_screen_folder_page.py +19 -0
- office365/intune/devices/configurations/ios/home_screen_item.py +14 -0
- office365/intune/devices/configurations/ios/home_screen_page.py +21 -0
- office365/intune/devices/configurations/ios/minimum_operating_system.py +21 -0
- office365/intune/devices/configurations/ios/network_usage_rule.py +18 -0
- office365/intune/devices/configurations/ios/notification_settings.py +25 -0
- office365/intune/devices/configurations/ios/update_configuration.py +38 -0
- office365/intune/devices/configurations/macos/mac_os_custom_configuration.py +26 -0
- office365/intune/devices/configurations/macos/mac_os_device_features_configuration.py +7 -0
- office365/intune/devices/configurations/macos/mac_os_general_device_configuration.py +88 -0
- office365/intune/devices/configurations/macos/mac_os_minimum_operating_system.py +25 -0
- office365/intune/devices/configurations/media_content_rating_australia.py +21 -0
- office365/intune/devices/configurations/media_content_rating_canada.py +21 -0
- office365/intune/devices/configurations/media_content_rating_france.py +21 -0
- office365/intune/devices/configurations/media_content_rating_germany.py +21 -0
- office365/intune/devices/configurations/media_content_rating_ireland.py +21 -0
- office365/intune/devices/configurations/media_content_rating_japan.py +21 -0
- office365/intune/devices/configurations/media_content_rating_new_zealand.py +21 -0
- office365/intune/devices/configurations/media_content_rating_united_kingdom.py +21 -0
- office365/intune/devices/configurations/media_content_rating_united_states.py +21 -0
- office365/intune/devices/configurations/oma_setting.py +16 -0
- office365/intune/devices/configurations/oma_setting_base64.py +15 -0
- office365/intune/devices/configurations/oma_setting_boolean.py +14 -0
- office365/intune/devices/configurations/oma_setting_date_time.py +15 -0
- office365/intune/devices/configurations/oma_setting_floating_point.py +14 -0
- office365/intune/devices/configurations/oma_setting_integer.py +14 -0
- office365/intune/devices/configurations/oma_setting_string.py +14 -0
- office365/intune/devices/configurations/oma_setting_string_xml.py +15 -0
- office365/intune/devices/configurations/rgb_color.py +16 -0
- office365/intune/devices/configurations/windows/bit_locker_removable_drive_policy.py +19 -0
- office365/intune/devices/configurations/windows/defender_advanced_threat_protection_configuration.py +21 -0
- office365/intune/devices/configurations/windows/firewall_network_profile.py +28 -0
- office365/intune/devices/configurations/windows/minimum_operating_system.py +16 -0
- office365/intune/devices/configurations/windows/out_of_box_experience_setting.py +25 -0
- office365/intune/devices/configurations/windows/phone81_custom_configuration.py +22 -0
- office365/intune/devices/configurations/windows/phone81_general_configuration.py +172 -0
- office365/intune/devices/configurations/windows/shared_pc_account_manager_policy.py +20 -0
- office365/intune/devices/configurations/windows/update_active_hours_install.py +16 -0
- office365/intune/devices/configurations/windows/update_for_business_configuration.py +253 -0
- office365/intune/devices/configurations/windows/update_install_schedule_type.py +10 -0
- office365/intune/devices/configurations/windows/update_scheduled_install.py +19 -0
- office365/intune/devices/configurations/windows/windows10_custom_configuration.py +22 -0
- office365/intune/devices/configurations/windows/windows10_endpoint_protection_configuration.py +255 -0
- office365/intune/devices/configurations/windows/windows10_enrollment_completion_page_configuration.py +16 -0
- office365/intune/devices/configurations/windows/windows10_enterprise_modern_app_management_configuration.py +16 -0
- office365/intune/devices/configurations/windows/windows10_general_configuration.py +1177 -0
- office365/intune/devices/configurations/windows/windows10_network_proxy_server.py +17 -0
- office365/intune/devices/configurations/windows/windows10_secure_assessment_configuration.py +36 -0
- office365/intune/devices/configurations/windows/windows10_team_general_configuration.py +128 -0
- office365/intune/devices/configurations/windows/windows81_general_configuration.py +210 -0
- office365/intune/devices/data.py +11 -0
- office365/intune/devices/device.py +138 -1
- office365/intune/devices/enrollment/configuration.py +48 -1
- office365/intune/devices/enrollment/configuration_assignment.py +22 -0
- office365/intune/devices/enrollment/limit_configuration.py +13 -0
- office365/intune/devices/enrollment_platform_restrictions_configuration.py +61 -0
- office365/intune/devices/enrollment_windows_hello_for_business_configuration.py +93 -0
- office365/intune/devices/install_state.py +61 -0
- office365/intune/devices/log_collection_response.py +60 -0
- office365/intune/devices/management/action_result.py +19 -0
- office365/intune/devices/management/android_managed_app_registration.py +7 -0
- office365/intune/devices/management/app_management.py +157 -3
- office365/intune/devices/management/apple_push_notification_certificate.py +52 -0
- office365/intune/devices/management/compliance_policy_setting_state.py +28 -0
- office365/intune/devices/management/configuration_manager_client_enabled_features.py +19 -0
- office365/intune/devices/management/configuration_manager_collection_assignment_target.py +14 -0
- office365/intune/devices/management/configuration_setting_state.py +28 -0
- office365/intune/devices/management/defender_detected_malware_actions.py +18 -0
- office365/intune/devices/management/delete_user_from_shared_apple_device_action_result.py +14 -0
- office365/intune/devices/management/detected_app.py +65 -0
- office365/intune/devices/management/enrollment_platform_restriction.py +17 -0
- office365/intune/devices/management/exchange_access_state_summary.py +18 -0
- office365/intune/devices/management/geo_location.py +22 -0
- office365/intune/devices/management/group_peer_outlier_recommendation_insight_settings.py +10 -0
- office365/intune/devices/management/health_attestation_state.py +46 -0
- office365/intune/devices/management/imported_windows_autopilot_device_identity.py +55 -0
- office365/intune/devices/management/imported_windows_autopilot_device_identity_state.py +22 -0
- office365/intune/devices/management/insight_value_double.py +14 -0
- office365/intune/devices/management/insight_value_int.py +14 -0
- office365/intune/devices/management/integer_range.py +15 -0
- office365/intune/devices/management/ios_managed_app_registration.py +7 -0
- office365/intune/devices/management/ios_update_device_status.py +79 -0
- office365/intune/devices/management/localized_notification_message.py +37 -0
- office365/intune/devices/management/locate_device_action_result.py +15 -0
- office365/intune/devices/management/m365_capability_base.py +32 -0
- office365/intune/devices/management/m365_capability_inbound_access.py +18 -0
- office365/intune/devices/management/m365_capability_resource_scope.py +16 -0
- office365/intune/devices/management/m365_capability_resource_scopes.py +23 -0
- office365/intune/devices/management/m365_resource_type.py +14 -0
- office365/intune/devices/management/managed/app/diagnostic_status.py +15 -0
- office365/intune/devices/management/managed/app/operation.py +32 -0
- office365/intune/devices/management/managed/app/protections/android.py +31 -1
- office365/intune/devices/management/managed/app/protections/default.py +34 -2
- office365/intune/devices/management/managed/app/protections/ios.py +34 -2
- office365/intune/devices/management/managed/app/protections/targeted.py +22 -1
- office365/intune/devices/management/managed/app/protections/targeted_managed_app_policy_assignment.py +25 -0
- office365/intune/devices/management/managed/app/protections/windows.py +230 -1
- office365/intune/devices/management/managed/app/registration.py +29 -2
- office365/intune/devices/management/managed/app_policy_deployment_summary.py +50 -0
- office365/intune/devices/management/managed/collection.py +26 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration.py +138 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration_assignment.py +25 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration_device_status.py +52 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration_device_summary.py +47 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration_user_status.py +42 -0
- office365/intune/devices/management/managed/device_mobile_app_configuration_user_summary.py +47 -0
- office365/intune/devices/management/managed/device_overview.py +52 -0
- office365/intune/devices/management/managed/ebook/e_book_assignment.py +33 -0
- office365/intune/devices/management/managed/ebook/ebook.py +72 -1
- office365/intune/devices/management/managed/ebook/install_summary.py +41 -0
- office365/intune/devices/management/managed/ebook/user_install_state_summary.py +48 -0
- office365/intune/devices/management/managed/managed.py +87 -3
- office365/intune/devices/management/managed/mobile_app.py +26 -0
- office365/intune/devices/management/management.py +995 -6
- office365/intune/devices/management/mdm_windows_information_protection_policy.py +7 -0
- office365/intune/devices/management/mobile_threat_defense_connector.py +96 -0
- office365/intune/devices/management/mobileapps/app_configuration_setting_item.py +17 -0
- office365/intune/devices/management/mobileapps/app_list_item.py +17 -0
- office365/intune/devices/management/mobileapps/app_log_collection_download_details.py +19 -0
- office365/intune/devices/management/mobileapps/app_log_collection_request.py +40 -0
- office365/intune/devices/management/mobileapps/apps_installation_options_for_mac.py +15 -0
- office365/intune/devices/management/mobileapps/apps_installation_options_for_windows.py +17 -0
- office365/intune/devices/management/mobileapps/assignment.py +28 -0
- office365/intune/devices/management/mobileapps/content.py +24 -1
- office365/intune/devices/management/mobileapps/ios/ios_mobile_app_configuration.py +18 -1
- office365/intune/devices/management/mobileapps/ios/iosi_pad_os_web_clip.py +21 -0
- office365/intune/devices/management/mobileapps/ios/lob_app.py +58 -0
- office365/intune/devices/management/mobileapps/ios/lob_app_assignment_settings.py +16 -0
- office365/intune/devices/management/mobileapps/ios/lob_app_provisioning_configuration_assignment.py +25 -0
- office365/intune/devices/management/mobileapps/ios/mobile_app_identifier.py +14 -0
- office365/intune/devices/management/mobileapps/ios/store_app.py +47 -0
- office365/intune/devices/management/mobileapps/ios/store_app_assignment_settings.py +16 -0
- office365/intune/devices/management/mobileapps/ios/vpp_app.py +81 -0
- office365/intune/devices/management/mobileapps/ios/vpp_app_assignment_settings.py +15 -0
- office365/intune/devices/management/mobileapps/ios/vpp_e_book.py +53 -0
- office365/intune/devices/management/mobileapps/ios/vpp_e_book_assignment.py +7 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_dmg_app.py +49 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_included_app.py +15 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_lob_app.py +70 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_lob_app_assignment_settings.py +14 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_lob_child_app.py +16 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_microsoft_defender_app.py +7 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_microsoft_edge_app.py +25 -0
- office365/intune/devices/management/mobileapps/macos/mac_os_office_suite_app.py +7 -0
- office365/intune/devices/management/mobileapps/managed/app_policy_deployment_summary_per_app.py +18 -0
- office365/intune/devices/management/mobileapps/microsoft_store_for_business_app_assignment_settings.py +14 -0
- office365/intune/devices/management/mobileapps/mobile_app.py +31 -2
- office365/intune/devices/management/mobileapps/mobile_app_assignment_settings.py +10 -0
- office365/intune/devices/management/mobileapps/mobile_app_identifier.py +10 -0
- office365/intune/devices/management/mobileapps/mobile_app_install_time_settings.py +17 -0
- office365/intune/devices/management/mobileapps/mobile_app_troubleshooting_event.py +28 -0
- office365/intune/devices/management/mobileapps/mobile_lob_app.py +20 -1
- office365/intune/devices/management/mobileapps/vpp_licensing_type.py +15 -0
- office365/intune/devices/management/mobileapps/win32/lob_app.py +115 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_assignment_settings.py +35 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_auto_update_settings.py +19 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_file_system_rule.py +25 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_install_experience.py +21 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_msi_information.py +23 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_power_shell_script_rule.py +32 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_product_code_rule.py +19 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_registry_rule.py +25 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_restart_settings.py +16 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_return_code.py +18 -0
- office365/intune/devices/management/mobileapps/win32/lob_app_rule.py +17 -0
- office365/intune/devices/management/mobileapps/windows/app_x.py +62 -0
- office365/intune/devices/management/mobileapps/windows/app_x_app_assignment_settings.py +14 -0
- office365/intune/devices/management/mobileapps/windows/microsoft_edge_app.py +30 -0
- office365/intune/devices/management/mobileapps/windows/mobile_msi.py +31 -0
- office365/intune/devices/management/mobileapps/windows/universal_app_x.py +93 -0
- office365/intune/devices/management/mobileapps/windows/universal_app_x_app_assignment_settings.py +14 -0
- office365/intune/devices/management/mobileapps/windows/universal_app_x_contained_app.py +16 -0
- office365/intune/devices/management/mobileapps/windows/web_app.py +16 -0
- office365/intune/devices/management/notification_message_template.py +68 -0
- office365/intune/devices/management/obliteration_behavior.py +15 -0
- office365/intune/devices/management/on_premises_conditional_access_settings.py +32 -0
- office365/intune/devices/management/operating_system_summary.py +25 -0
- office365/intune/devices/management/partner_assignment.py +17 -0
- office365/intune/devices/management/remote_lock_action_result.py +14 -0
- office365/intune/devices/management/remoteassistance/partner.py +41 -0
- office365/intune/devices/management/reports/reports.py +27 -0
- office365/intune/devices/management/reset_passcode_action_result.py +15 -0
- office365/intune/devices/management/resource_operation.py +26 -0
- office365/intune/devices/management/rotate_bit_locker_keys_device_action_result.py +14 -0
- office365/intune/devices/management/software_update_status_summary.py +86 -0
- office365/intune/devices/management/system_browser_enabled_on.py +16 -0
- office365/intune/devices/management/targeted_managed_app_configuration.py +68 -0
- office365/intune/devices/management/terms_and_conditions.py +87 -0
- office365/intune/devices/management/terms_and_conditions_acceptance_status.py +50 -0
- office365/intune/devices/management/terms_and_conditions_assignment.py +25 -0
- office365/intune/devices/management/update_windows_device_account_action_parameter.py +22 -0
- office365/intune/devices/management/user_last_sign_in_recommendation_insight_setting.py +22 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_details.py +51 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_app_version_device_id.py +52 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_app_performance_by_os_version.py +56 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_application_performance.py +56 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_model_performance.py +50 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance.py +76 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_device_performance_details.py +47 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_app_health_os_version_performance.py +36 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_autopilot_devices_summary.py +16 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_baseline.py +121 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_category.py +47 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_identity_devices_summary.py +14 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_cloud_management_devices_summary.py +16 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_performance.py +127 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_scores.py +65 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_history.py +101 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process.py +36 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_device_startup_process_performance.py +41 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight.py +26 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_insight_value.py +10 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric.py +21 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_metric_history.py +27 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_model_scores.py +65 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_overview.py +28 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_score_history.py +17 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_windows10_devices_summary.py +14 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_device.py +197 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_devices_summary.py +47 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_hardware_readiness_metric.py +66 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_metric.py +34 -0
- office365/intune/devices/management/userexperienceanalytics/user_experience_analytics_work_from_anywhere_model_performance.py +65 -0
- office365/intune/devices/management/virtualendpoint/virtual_endpoint.py +137 -0
- office365/intune/devices/management/windows_autopilot_deployment_profile.py +106 -0
- office365/intune/devices/management/windows_autopilot_deployment_profile_assignment.py +7 -0
- office365/intune/devices/management/windows_autopilot_device_identity.py +97 -0
- office365/intune/devices/management/windows_defender_scan_action_result.py +14 -0
- office365/intune/devices/management/windows_device_account.py +14 -0
- office365/intune/devices/management/windows_device_ad_account.py +15 -0
- office365/intune/devices/management/windows_device_azure_ad_account.py +14 -0
- office365/intune/devices/management/windows_information_protection_app.py +18 -0
- office365/intune/devices/management/windows_information_protection_app_learning_summary.py +35 -0
- office365/intune/devices/management/windows_information_protection_app_locker_file.py +31 -0
- office365/intune/devices/management/windows_information_protection_data_recovery_certificate.py +18 -0
- office365/intune/devices/management/windows_information_protection_desktop_app.py +16 -0
- office365/intune/devices/management/windows_information_protection_ip_range_collection.py +17 -0
- office365/intune/devices/management/windows_information_protection_network_learning_summary.py +21 -0
- office365/intune/devices/management/windows_information_protection_pin_character_requirements.py +13 -0
- office365/intune/devices/management/windows_information_protection_policy.py +76 -0
- office365/intune/devices/management/windows_information_protection_proxied_domain_collection.py +19 -0
- office365/intune/devices/management/windows_information_protection_resource_collection.py +16 -0
- office365/intune/devices/management/windows_information_protection_store_app.py +10 -0
- office365/intune/devices/management/windows_malware_overview.py +34 -1
- office365/intune/devices/management/windows_protection_state.py +152 -0
- office365/intune/devices/management/windowsmalware/malware_state_for_windows_device.py +58 -0
- office365/intune/devices/management/windowsmalware/windows_device_malware_state.py +99 -0
- office365/intune/devices/management/windowsmalware/windows_malware_category_count.py +22 -0
- office365/intune/devices/management/windowsmalware/windows_malware_execution_state_count.py +20 -0
- office365/intune/devices/management/windowsmalware/windows_malware_information.py +72 -0
- office365/intune/devices/management/windowsmalware/windows_malware_name_count.py +18 -0
- office365/intune/devices/management/windowsmalware/windows_malware_severity_count.py +21 -0
- office365/intune/devices/management/windowsmalware/windows_malware_state_count.py +22 -0
- office365/intune/devices/management_cached_report_configuration.py +7 -0
- office365/intune/devices/management_exchange_connector.py +73 -0
- office365/intune/devices/management_export_job.py +82 -0
- office365/intune/devices/management_partner.py +84 -0
- office365/intune/devices/management_troubleshooting_event.py +22 -0
- office365/intune/organizations/branding.py +29 -0
- office365/intune/organizations/branding_properties.py +187 -0
- office365/intune/organizations/contact.py +132 -0
- office365/intune/organizations/content_customization.py +9 -1
- office365/intune/organizations/organization.py +125 -1
- office365/intune/organizations/organizational_branding_localization.py +7 -0
- office365/intune/print/air_print_settings.py +17 -0
- office365/intune/print/archived_print_job.py +26 -0
- office365/intune/print/certificate_signing_request.py +15 -0
- office365/intune/print/connectors/connector.py +44 -0
- office365/intune/print/document.py +37 -0
- office365/intune/print/document_upload_properties.py +16 -0
- office365/intune/print/job.py +91 -0
- office365/intune/print/job_configuration.py +46 -0
- office365/intune/print/job_status.py +22 -0
- office365/intune/print/margin.py +17 -0
- office365/intune/print/operation.py +28 -0
- office365/intune/print/operation_status.py +18 -0
- office365/intune/print/print.py +65 -0
- office365/intune/print/printers/base.py +66 -0
- office365/intune/print/printers/capabilities.py +82 -0
- office365/intune/print/printers/create_operation.py +28 -0
- office365/intune/print/printers/defaults.py +40 -0
- office365/intune/print/printers/discovery_settings.py +15 -0
- office365/intune/print/printers/location.py +31 -0
- office365/intune/print/printers/printer.py +70 -0
- office365/intune/print/printers/share_viewpoint.py +15 -0
- office365/intune/print/printers/status.py +23 -0
- office365/intune/print/services/endpoint.py +18 -0
- office365/intune/print/settings.py +16 -0
- office365/intune/print/shares/share.py +60 -0
- office365/intune/print/task.py +47 -0
- office365/intune/print/task_definition.py +38 -0
- office365/intune/print/task_status.py +16 -0
- office365/intune/print/task_trigger.py +32 -0
- office365/intune/print/user_print.py +7 -0
- office365/intune/servicecommunications/announcement_base.py +40 -0
- office365/intune/servicecommunications/health/health.py +42 -0
- office365/intune/servicecommunications/issues/issue.py +48 -1
- office365/intune/servicecommunications/messages/update.py +105 -0
- office365/intune/servicecommunications/service_health_issue_post.py +19 -0
- office365/intune/servicecommunications/service_update_message_viewpoint.py +16 -0
- office365/limits.py +66 -0
- office365/migration/__init__.py +30 -3
- office365/migration/adapters/__init__.py +44 -4
- office365/migration/adapters/filesystem.py +4 -1
- office365/migration/assessment/export.py +5 -5
- office365/migration/assessment/issue.py +19 -0
- office365/migration/assessment/report.py +11 -0
- office365/migration/assessment/scanners/base.py +37 -49
- office365/migration/base.py +135 -13
- office365/migration/checkpoint.py +18 -17
- office365/migration/delta.py +205 -0
- office365/migration/fidelity.py +283 -0
- office365/migration/job.py +172 -13
- office365/migration/logging.py +373 -0
- office365/migration/manifest.py +8 -3
- office365/migration/map.py +84 -0
- office365/migration/outlook/assessor.py +4 -4
- office365/migration/package/__init__.py +82 -0
- office365/migration/package/builder.py +669 -0
- office365/migration/package/crypto.py +54 -0
- office365/migration/package/manifest_xml.py +510 -0
- office365/migration/package/staging.py +180 -0
- office365/migration/report.py +7 -2
- office365/migration/report_io.py +79 -0
- office365/migration/runner.py +259 -23
- office365/migration/server_job.py +205 -15
- office365/migration/session.py +450 -50
- office365/migration/settings.py +131 -0
- office365/migration/sharepoint/__init__.py +150 -0
- office365/migration/sharepoint/adapters.py +3010 -75
- office365/migration/sharepoint/assessor.py +45 -9
- office365/migration/sharepoint/branding.py +260 -0
- office365/migration/sharepoint/handoff.py +252 -0
- office365/migration/sharepoint/navigation.py +197 -0
- office365/migration/sharepoint/options.py +57 -0
- office365/migration/sharepoint/package_target.py +338 -0
- office365/migration/sharepoint/pages.py +853 -0
- office365/migration/sharepoint/registry.py +22 -0
- office365/migration/sharepoint/resolvers.py +761 -0
- office365/migration/sharepoint/scanners/__init__.py +29 -0
- office365/migration/sharepoint/scanners/browser_file_handling.py +55 -0
- office365/migration/sharepoint/scanners/checked_out_files.py +57 -0
- office365/migration/sharepoint/scanners/file_versions.py +56 -0
- office365/migration/sharepoint/scanners/files.py +5 -2
- office365/migration/sharepoint/scanners/large_excel_files.py +56 -0
- office365/migration/sharepoint/scanners/large_lists.py +58 -0
- office365/migration/sharepoint/scanners/large_sites.py +4 -3
- office365/migration/sharepoint/scanners/long_onedrive_urls.py +52 -0
- office365/migration/sharepoint/scanners/lookup.py +38 -0
- office365/migration/sharepoint/scanners/paths.py +9 -4
- office365/migration/sharepoint/scanners/permissions.py +20 -2
- office365/migration/sharepoint/scanners/smat.py +51 -0
- office365/migration/sharepoint/scanners/summary.py +1 -0
- office365/migration/sharepoint/scanners/thicket_folders.py +38 -0
- office365/migration/sharepoint/scanners/unsupported_site_templates.py +90 -0
- office365/migration/sharepoint/security.py +504 -0
- office365/migration/sharepoint/site_scope.py +222 -0
- office365/migration/sharepoint/site_settings.py +196 -0
- office365/migration/sharepoint/site_verify.py +207 -0
- office365/migration/sharepoint/structure.py +1426 -0
- office365/migration/sharepoint/tenant_assessor.py +5 -3
- office365/migration/sharepoint/transfer.py +4 -2
- office365/migration/sharepoint/verify.py +186 -0
- office365/migration/tasks.py +121 -0
- office365/migration/teams/_extract.py +2 -1
- office365/migration/teams/models.py +1 -0
- office365/migration/throttling.py +215 -0
- office365/migration/validators.py +249 -31
- office365/onedrive/columns/definition.py +11 -0
- office365/onedrive/contenttypes/content_type.py +24 -0
- office365/onedrive/deleted.py +14 -0
- office365/onedrive/driveitems/collection.py +30 -0
- office365/onedrive/driveitems/copy_result.py +115 -0
- office365/onedrive/driveitems/driveItem.py +413 -35
- office365/onedrive/driveitems/retention_label_settings.py +1 -1
- office365/onedrive/drives/drive.py +8 -9
- office365/onedrive/filestorage/containers/container.py +157 -1
- office365/onedrive/filestorage/containers/custom_property_value.py +2 -0
- office365/onedrive/filestorage/containertypes/registration_settings.py +2 -0
- office365/onedrive/filestorage/containertypes/settings.py +2 -0
- office365/onedrive/filestorage/containertypes/settings_override.py +2 -0
- office365/onedrive/internal/paths/children.py +7 -1
- office365/onedrive/listitems/collection.py +34 -4
- office365/onedrive/listitems/list_item.py +11 -0
- office365/onedrive/lists/list.py +28 -1
- office365/onedrive/operations/long_running.py +34 -2
- office365/onedrive/operations/public_inner_error.py +7 -17
- office365/onedrive/operations/rich_long_running.py +27 -1
- office365/onedrive/permissions/permission.py +10 -0
- office365/onedrive/sharepoint/migration/jobs/error_event.py +35 -1
- office365/onedrive/shares/drive_item.py +2 -3
- office365/onedrive/sitepages/collection.py +34 -4
- office365/onedrive/sitepages/site_page.py +1 -1
- office365/onedrive/sites/site.py +140 -1
- office365/onedrive/sites/sites_with_root.py +21 -2
- office365/onedrive/storage/settings.py +13 -0
- office365/onedrive/termstore/groups/collection.py +24 -11
- office365/onedrive/termstore/groups/group.py +26 -3
- office365/onedrive/termstore/relation.py +8 -0
- office365/onedrive/termstore/sets/collection.py +28 -20
- office365/onedrive/termstore/sets/name.py +4 -0
- office365/onedrive/termstore/sets/set.py +16 -3
- office365/onedrive/termstore/store.py +27 -3
- office365/onedrive/termstore/store_manager.py +42 -10
- office365/onedrive/termstore/terms/collection.py +3 -10
- office365/onedrive/termstore/terms/description.py +4 -0
- office365/onedrive/termstore/terms/label.py +4 -0
- office365/onedrive/termstore/terms/term.py +6 -1
- office365/onedrive/wellknown_list_name.py +11 -0
- office365/onedrive/workbooks/charts/area_format.py +27 -0
- office365/onedrive/workbooks/charts/axis.py +79 -0
- office365/onedrive/workbooks/charts/axis_format.py +32 -0
- office365/onedrive/workbooks/charts/axis_title.py +38 -0
- office365/onedrive/workbooks/charts/axis_title_format.py +22 -0
- office365/onedrive/workbooks/charts/chart.py +44 -1
- office365/onedrive/workbooks/charts/data_label_format.py +30 -0
- office365/onedrive/workbooks/charts/data_labels.py +54 -1
- office365/onedrive/workbooks/charts/fill.py +6 -0
- office365/onedrive/workbooks/charts/font.py +38 -0
- office365/onedrive/workbooks/charts/gridlines.py +33 -0
- office365/onedrive/workbooks/charts/gridlines_format.py +24 -0
- office365/onedrive/workbooks/charts/legend/format.py +27 -0
- office365/onedrive/workbooks/charts/legend/legend.py +24 -1
- office365/onedrive/workbooks/charts/line_format.py +16 -0
- office365/onedrive/workbooks/charts/point.py +31 -0
- office365/onedrive/workbooks/charts/point_format.py +22 -0
- office365/onedrive/workbooks/charts/series/format.py +29 -0
- office365/onedrive/workbooks/charts/series/series.py +13 -0
- office365/onedrive/workbooks/charts/title.py +23 -0
- office365/onedrive/workbooks/charts/title_format.py +27 -0
- office365/onedrive/workbooks/comments/reply.py +18 -0
- office365/onedrive/workbooks/filter.py +4 -0
- office365/onedrive/workbooks/functions/functions.py +6 -0
- office365/onedrive/workbooks/functions/result.py +13 -0
- office365/onedrive/workbooks/names/named_item.py +27 -1
- office365/onedrive/workbooks/operations/workbook.py +2 -1
- office365/onedrive/workbooks/ranges/fill.py +6 -0
- office365/onedrive/workbooks/ranges/format.py +6 -0
- office365/onedrive/workbooks/ranges/format_protection.py +18 -0
- office365/onedrive/workbooks/ranges/range.py +58 -1
- office365/onedrive/workbooks/ranges/sort.py +6 -0
- office365/onedrive/workbooks/ranges/view.py +67 -1
- office365/onedrive/workbooks/tables/columns/column.py +18 -0
- office365/onedrive/workbooks/tables/rows/row.py +6 -0
- office365/onedrive/workbooks/tables/sort.py +22 -1
- office365/onedrive/workbooks/tables/table.py +16 -0
- office365/onedrive/workbooks/workbook.py +11 -0
- office365/onedrive/workbooks/worksheets/protection.py +11 -0
- office365/onedrive/workbooks/worksheets/worksheet.py +16 -0
- office365/onenote/entity_base_model.py +13 -0
- office365/onenote/notebooks/collection.py +38 -0
- office365/onenote/notebooks/notebook.py +45 -4
- office365/onenote/onenote.py +3 -3
- office365/onenote/operations/onenote.py +24 -1
- office365/onenote/pages/collection.py +36 -20
- office365/onenote/pages/page.py +32 -0
- office365/onenote/resources/resource.py +11 -0
- office365/onenote/sectiongroups/section_group.py +20 -5
- office365/onenote/sections/collection.py +47 -0
- office365/onenote/sections/section.py +9 -5
- office365/outlook/attachment_info.py +11 -0
- office365/outlook/calendar/check_in_claim.py +32 -0
- office365/outlook/calendar/events/event.py +29 -2
- office365/outlook/calendar/place.py +56 -1
- office365/outlook/calendar/place_collection.py +34 -0
- office365/outlook/calendar/rooms/room.py +60 -1
- office365/outlook/calendar/rooms/workspace.py +38 -0
- office365/outlook/calendar/sharing_message.py +30 -0
- office365/outlook/contacts/folders/collection.py +24 -13
- office365/outlook/mail/attachments/attachment.py +11 -0
- office365/outlook/mail/attachments/file.py +12 -1
- office365/outlook/mail/attachments/type.py +7 -2
- office365/outlook/mail/export_item_response.py +1 -1
- office365/outlook/mail/folders/collection.py +38 -0
- office365/outlook/mail/folders/folder.py +8 -3
- office365/outlook/mail/messages/event_message.py +71 -0
- office365/outlook/mail/messages/message.py +32 -13
- office365/outlook/mail/post.py +118 -1
- office365/outlook/people/person_type.py +2 -0
- office365/outlook/people/profile_card_property.py +29 -0
- office365/outlook/person.py +29 -1
- office365/partners/billing/billed_reconciliation.py +3 -1
- office365/partners/billing/billed_usage.py +3 -1
- office365/partners/billing/billing.py +1 -1
- office365/partners/billing/blob.py +15 -0
- office365/partners/billing/export_success_operation.py +2 -1
- office365/partners/billing/failed_operation.py +14 -1
- office365/partners/billing/manifest.py +12 -1
- office365/partners/billing/metrics.py +34 -0
- office365/partners/billing/metrics_base.py +53 -0
- office365/partners/billing/metrics_initial.py +17 -0
- office365/partners/billing/metrics_recent.py +17 -0
- office365/partners/billing/operation.py +35 -1
- office365/partners/billing/reconciliation.py +40 -0
- office365/partners/billing/running_operation.py +2 -1
- office365/partners/billing/unbilled_reconciliation.py +3 -1
- office365/partners/billing/unbilled_usage.py +3 -1
- office365/partners/partnertenanttype.py +8 -12
- office365/planner/applied_categories.py +10 -0
- office365/planner/assigned_to_task_board_task_format.py +30 -0
- office365/planner/assignment.py +31 -0
- office365/planner/assignments.py +45 -1
- office365/planner/bucket_task_board_task_format.py +16 -0
- office365/planner/buckets/bucket.py +21 -8
- office365/planner/buckets/collection.py +56 -15
- office365/planner/category_descriptions.py +59 -0
- office365/planner/entity.py +52 -0
- office365/planner/external_reference.py +20 -0
- office365/planner/internal/paths/collections.py +27 -0
- office365/planner/order_hints_by_assignee.py +10 -0
- office365/planner/planner.py +2 -2
- office365/planner/plans/container.py +4 -0
- office365/planner/plans/details.py +6 -2
- office365/planner/plans/plan.py +36 -25
- office365/planner/progress_task_board_task_format.py +16 -0
- office365/planner/tasks/check_list_item.py +28 -1
- office365/planner/tasks/check_list_items.py +46 -9
- office365/planner/tasks/collection.py +67 -32
- office365/planner/tasks/task.py +178 -24
- office365/planner/tasks/task_details.py +54 -5
- office365/planner/user.py +8 -6
- office365/reports/internal/queries/create_report_query.py +3 -24
- office365/reports/partners.py +11 -0
- office365/reports/report.py +4 -0
- office365/reports/report_export.py +197 -0
- office365/reports/report_result.py +55 -0
- office365/reports/root.py +90 -45
- office365/reports/security/root.py +12 -6
- office365/runtime/auth/authentication_context.py +95 -19
- office365/runtime/auth/certificate.py +105 -0
- office365/runtime/auth/entra/authentication_context.py +130 -9
- office365/runtime/client_object.py +163 -5
- office365/runtime/client_object_collection.py +411 -241
- office365/runtime/client_request.py +388 -11
- office365/runtime/client_request_exception.py +191 -41
- office365/runtime/client_result.py +80 -2
- office365/runtime/client_runtime_context.py +739 -31
- office365/runtime/client_value.py +29 -10
- office365/runtime/client_value_collection.py +30 -15
- office365/runtime/converters/csv_writer.py +10 -4
- office365/runtime/converters/dataframe.py +84 -4
- office365/runtime/converters/json_file.py +12 -3
- office365/runtime/converters/parquet.py +67 -0
- office365/runtime/converters/records.py +31 -12
- office365/runtime/converters/registry.py +185 -0
- office365/runtime/converters/scalars.py +58 -0
- office365/runtime/converters/sql.py +69 -0
- office365/runtime/converters/streamers.py +105 -0
- office365/runtime/converters/streams.py +42 -0
- office365/runtime/converters/upsert.py +101 -0
- office365/runtime/converters/value.py +31 -4
- office365/runtime/display.py +232 -0
- office365/runtime/exceptions.py +166 -0
- office365/runtime/http/prefer.py +147 -0
- office365/runtime/http/request_options.py +10 -3
- office365/runtime/http/throttling.py +389 -57
- office365/runtime/imports.py +697 -0
- office365/runtime/limits.py +455 -0
- office365/runtime/lro.py +751 -0
- office365/runtime/odata/batch_util.py +33 -1
- office365/runtime/odata/literals.py +49 -0
- office365/runtime/odata/request.py +20 -6
- office365/runtime/odata/type.py +11 -4
- office365/runtime/odata/v3/batch_request.py +175 -25
- office365/runtime/odata/v4/batch_request.py +164 -18
- office365/runtime/odata/v4/upload_session_request.py +18 -0
- office365/runtime/operations.py +29 -0
- office365/runtime/parallel.py +12 -14
- office365/runtime/paths/alternate_key.py +44 -0
- office365/runtime/paths/appid.py +8 -8
- office365/runtime/paths/builder.py +11 -5
- office365/runtime/paths/v4/entity.py +2 -2
- office365/runtime/persistence.py +71 -0
- office365/runtime/pollable.py +234 -0
- office365/runtime/progress.py +52 -0
- office365/runtime/queries/batch.py +31 -6
- office365/runtime/queries/client_query.py +27 -1
- office365/runtime/queries/deferred.py +7 -0
- office365/runtime/queries/get_or_create.py +125 -0
- office365/runtime/queries/upsert_entity.py +103 -0
- office365/runtime/query_capabilities.py +333 -0
- office365/runtime/record_collection.py +615 -0
- office365/runtime/respond_async.py +132 -0
- office365/runtime/retry.py +200 -21
- office365/runtime/transport/base.py +165 -4
- office365/runtime/transport/httpx_transport.py +263 -0
- office365/runtime/transport/offload.py +156 -0
- office365/runtime/transport/requests_transport.py +166 -17
- office365/runtime/transport/throttled_transport.py +90 -0
- office365/runtime/verification.py +72 -0
- office365/search/acronyms/acronym.py +19 -0
- office365/search/aggregation_option.py +12 -0
- office365/search/alteration_response.py +18 -0
- office365/search/altered_query_token.py +16 -0
- office365/search/answers/keyword.py +17 -0
- office365/search/answers/variant.py +19 -0
- office365/search/bookmarks/bookmark.py +21 -1
- office365/search/bucket.py +4 -0
- office365/search/bucket_aggregation_definition.py +23 -0
- office365/search/bucket_aggregation_range.py +15 -0
- office365/search/collapse_property.py +16 -0
- office365/search/connection_item.py +14 -0
- office365/search/entity_type.py +1 -1
- office365/search/external/connection.py +88 -0
- office365/search/external/item.py +29 -0
- office365/search/external/item_configuration.py +18 -0
- office365/search/external/search_settings.py +11 -1
- office365/search/hits/container.py +4 -0
- office365/search/hits/hit.py +10 -0
- office365/search/identity.py +16 -0
- office365/search/identity_set.py +8 -1
- office365/search/qnas/qna.py +21 -1
- office365/search/query.py +4 -0
- office365/search/recommended_action.py +16 -0
- office365/search/request.py +17 -0
- office365/search/response.py +10 -0
- office365/search/result_template.py +16 -0
- office365/search/result_template_dictionary.py +10 -0
- office365/search/result_template_option.py +14 -0
- office365/search/retrieval_extract.py +15 -0
- office365/search/retrieval_hit.py +27 -0
- office365/search/retrieval_response.py +18 -0
- office365/search/search_alteration.py +21 -0
- office365/search/search_alteration_options.py +15 -0
- office365/search/search_resource_metadata_dictionary.py +10 -0
- office365/search/search_result.py +14 -0
- office365/search/sharepoint_onedrive_options.py +7 -0
- office365/search/sort_property.py +4 -0
- office365/security/account.py +24 -0
- office365/security/account_target_content.py +17 -0
- office365/security/activity_metadata.py +15 -0
- office365/security/address_book_account_target_content.py +15 -0
- office365/security/ai_agent_evidence.py +19 -0
- office365/security/alerts/alert.py +459 -0
- office365/security/alerts/blob_container_evidence.py +17 -0
- office365/security/alerts/blob_evidence.py +21 -0
- office365/security/alerts/collection.py +49 -0
- office365/security/alerts/detection.py +16 -0
- office365/security/alerts/evidence.py +28 -0
- office365/security/alerts/file_security_state.py +23 -0
- office365/security/alerts/history_state.py +31 -0
- office365/security/alerts/malware_evidence.py +22 -0
- office365/security/alerts/process_evidence.py +27 -0
- office365/security/alerts/sas_token_evidence.py +26 -0
- office365/security/alerts/trigger.py +16 -0
- office365/security/analyzed_message_evidence.py +34 -0
- office365/security/article.py +75 -0
- office365/security/assigned_training_info.py +16 -0
- office365/security/attacksimulations/automation.py +90 -0
- office365/security/attacksimulations/automation_run.py +43 -0
- office365/security/attacksimulations/event.py +22 -0
- office365/security/attacksimulations/landing_page.py +105 -0
- office365/security/attacksimulations/landing_page_detail.py +26 -0
- office365/security/attacksimulations/login_page.py +83 -0
- office365/security/attacksimulations/operations/operation.py +37 -0
- office365/security/attacksimulations/payload.py +192 -0
- office365/security/attacksimulations/repeat_offender.py +21 -0
- office365/security/attacksimulations/reports/overview.py +30 -0
- office365/security/attacksimulations/reports/report.py +29 -0
- office365/security/attacksimulations/root.py +124 -0
- office365/security/attacksimulations/simulation.py +220 -0
- office365/security/attacksimulations/training_user_coverage.py +22 -0
- office365/security/attacksimulations/user.py +20 -0
- office365/security/attacksimulations/user_coverage.py +26 -0
- office365/security/attacksimulations/users/details.py +48 -0
- office365/security/attribute_definition.py +37 -0
- office365/security/attribute_mapping.py +11 -0
- office365/security/attribute_mapping_source.py +25 -0
- office365/security/audit/audit_data.py +15 -0
- office365/security/audit/core_root.py +26 -0
- office365/security/audit/log_query.py +114 -0
- office365/security/audit/log_record.py +84 -0
- office365/security/audit/whois_record.py +22 -0
- office365/security/average_comparative_score.py +15 -0
- office365/security/base_end_user_notification.py +20 -0
- office365/security/cases/case.py +48 -0
- office365/security/cases/ediscovery.py +136 -0
- office365/security/cases/operation.py +67 -0
- office365/security/cases/root.py +21 -0
- office365/security/category_template.py +30 -0
- office365/security/certification_control.py +15 -0
- office365/security/cloud_app_security_state.py +16 -0
- office365/security/cloud_application_evidence.py +20 -0
- office365/security/cloud_clipboard_item.py +44 -0
- office365/security/cloud_clipboard_item_payload.py +15 -0
- office365/security/cloud_clipboard_root.py +28 -0
- office365/security/cloud_flare_rule_model.py +16 -0
- office365/security/cloud_flare_ruleset_model.py +16 -0
- office365/security/cloud_flare_verified_details_model.py +25 -0
- office365/security/cloud_flare_web_application_firewall_provider.py +21 -0
- office365/security/cloud_logon_session_evidence.py +24 -0
- office365/security/cloud_pc_audit_event.py +105 -0
- office365/security/cloud_pc_device_image.py +95 -0
- office365/security/cloud_pc_gallery_image.py +71 -0
- office365/security/cloud_pc_on_premises_connection.py +130 -0
- office365/security/cloud_pc_provisioning_policy.py +156 -0
- office365/security/cloud_pc_provisioning_policy_assignment.py +38 -0
- office365/security/cloud_pc_report.py +9 -0
- office365/security/cloud_pc_service_plan.py +31 -0
- office365/security/cloud_pc_user_setting.py +70 -0
- office365/security/cloud_pc_user_setting_assignment.py +31 -0
- office365/security/cloud_video_interop_info.py +16 -0
- office365/security/coachmark_location.py +18 -0
- office365/security/coachmark_location_type.py +17 -0
- office365/security/collaboration/analyzed_email.py +288 -0
- office365/security/collaboration/analyzed_email_attachment.py +25 -0
- office365/security/collaboration/analyzed_email_delivery_detail.py +21 -0
- office365/security/collaboration/analyzed_email_url.py +21 -0
- office365/security/collaboration/collaboration_root.py +22 -0
- office365/security/compromise_indicator.py +17 -0
- office365/security/container_evidence.py +28 -0
- office365/security/container_image_evidence.py +17 -0
- office365/security/control_score.py +17 -0
- office365/security/custom_training_setting.py +24 -0
- office365/security/cvss_summary.py +18 -0
- office365/security/data_source_container.py +44 -0
- office365/security/datasecurity/classifcation_error_base.py +18 -0
- office365/security/datasecurity/classification_error.py +20 -0
- office365/security/datasecurity/compute_rights_and_inheritance_result.py +25 -0
- office365/security/datasecurity/governance.py +42 -0
- office365/security/datasecurity/label_content_right.py +44 -0
- office365/security/datasecurity/policy_scope_base.py +26 -0
- office365/security/datasecurity/policy_tenant_scope.py +15 -0
- office365/security/datasecurity/policy_tip_action.py +16 -0
- office365/security/datasecurity/process_content_batch_request.py +17 -0
- office365/security/datasecurity/process_content_request.py +33 -0
- office365/security/datasecurity/process_content_response.py +24 -0
- office365/security/datasecurity/process_content_responses.py +16 -0
- office365/security/datasecurity/process_file_metadata.py +16 -0
- office365/security/datasecurity/sensitivity_label.py +117 -0
- office365/security/datasecurity/tenant_protection_scope_container.py +9 -0
- office365/security/datasecurity/usage_rights_included.py +31 -0
- office365/security/detonation_details.py +34 -0
- office365/security/device_evidence.py +50 -0
- office365/security/dns_evidence.py +19 -0
- office365/security/ediscovery/case_member.py +31 -0
- office365/security/ediscovery/custodian.py +76 -0
- office365/security/ediscovery/ediscovery_case_settings.py +57 -0
- office365/security/ediscovery/ediscovery_estimate_operation.py +66 -0
- office365/security/ediscovery/ediscovery_export_operation.py +64 -0
- office365/security/ediscovery/ediscovery_index_operation.py +8 -0
- office365/security/ediscovery/ediscovery_review_tag.py +34 -0
- office365/security/ediscovery/noncustodial_data_source.py +37 -0
- office365/security/ediscovery/operations/add_to_review_set.py +64 -0
- office365/security/ediscovery/operations/hold.py +8 -0
- office365/security/ediscovery/operations/hold_policy_sync.py +23 -0
- office365/security/ediscovery/operations/purge_data.py +23 -0
- office365/security/ediscovery/operations/search_export.py +83 -0
- office365/security/ediscovery/operations/tag.py +8 -0
- office365/security/ediscovery/review_set.py +22 -0
- office365/security/ediscovery/review_set_query.py +9 -0
- office365/security/ediscovery/search.py +81 -0
- office365/security/email_payload_detail.py +17 -0
- office365/security/end_user_notification.py +110 -0
- office365/security/end_user_notification_detail.py +46 -0
- office365/security/end_user_notification_setting.py +25 -0
- office365/security/evaluation_outcome.py +13 -0
- office365/security/event_propagation_result.py +18 -0
- office365/security/event_query.py +17 -0
- office365/security/expression_input_object.py +20 -0
- office365/security/file_evidence.py +18 -0
- office365/security/file_hash.py +21 -0
- office365/security/file_hash_evidence.py +16 -0
- office365/security/file_plan_applied_category.py +15 -0
- office365/security/filter.py +22 -0
- office365/security/filter_clause.py +17 -0
- office365/security/filter_group.py +17 -0
- office365/security/formatted_content.py +16 -0
- office365/security/google_cloud_resource_evidence.py +21 -0
- office365/security/health_issue.py +81 -0
- office365/security/host_security_state.py +22 -0
- office365/security/host_ssl_certificate_port.py +17 -0
- office365/security/hunting_query_results.py +24 -0
- office365/security/hyperlink.py +15 -0
- office365/security/identity_accounts.py +47 -0
- office365/security/identity_provider.py +14 -0
- office365/security/incidents/incident.py +148 -0
- office365/security/include_all_account_target_content.py +10 -0
- office365/security/indicator.py +28 -0
- office365/security/intelligence_profile_country_or_region_of_origin.py +15 -0
- office365/security/investigation_security_state.py +15 -0
- office365/security/invoke_action_result.py +24 -0
- office365/security/io_t_device_evidence.py +46 -0
- office365/security/ip_address.py +36 -0
- office365/security/ip_evidence.py +19 -0
- office365/security/kubernetes_cluster_evidence.py +20 -0
- office365/security/kubernetes_controller_evidence.py +19 -0
- office365/security/kubernetes_namespace_evidence.py +18 -0
- office365/security/kubernetes_pod_evidence.py +38 -0
- office365/security/kubernetes_secret_evidence.py +17 -0
- office365/security/kubernetes_service_account_evidence.py +16 -0
- office365/security/kubernetes_service_evidence.py +29 -0
- office365/security/kubernetes_service_port.py +20 -0
- office365/security/labels/retention/collection.py +68 -0
- office365/security/labels/retention/duration_in_days.py +16 -0
- office365/security/labels/retention/fileplan_descriptor.py +104 -0
- office365/security/labels/retention/label.py +158 -0
- office365/security/labels/root.py +83 -0
- office365/security/mailbox_configuration_evidence.py +24 -0
- office365/security/mailbox_evidence.py +18 -0
- office365/security/malware_state.py +18 -0
- office365/security/message_security_state.py +23 -0
- office365/security/microsoft_custom_training_setting.py +26 -0
- office365/security/microsoft_managed_training_setting.py +19 -0
- office365/security/microsoft_training_assignment_mapping.py +26 -0
- office365/security/monitor_mode.py +12 -0
- office365/security/monitor_run_status.py +14 -0
- office365/security/monitor_status.py +13 -0
- office365/security/network_connection.py +39 -0
- office365/security/network_connection_evidence.py +21 -0
- office365/security/nic_evidence.py +18 -0
- office365/security/no_training_notification_setting.py +15 -0
- office365/security/no_training_setting.py +10 -0
- office365/security/object_definition.py +25 -0
- office365/security/object_mapping.py +33 -0
- office365/security/parse_expression_response.py +22 -0
- office365/security/passive_dns_record.py +47 -0
- office365/security/payload_coachmark.py +21 -0
- office365/security/payload_detail.py +20 -0
- office365/security/positive_reinforcement_notification.py +17 -0
- office365/security/process.py +28 -0
- office365/security/processing_error.py +15 -0
- office365/security/registry_key_state.py +26 -0
- office365/security/retention_event.py +98 -0
- office365/security/retention_event_status.py +18 -0
- office365/security/scorecontrol/profile.py +135 -0
- office365/security/search/data_source.py +34 -0
- office365/security/securescores/control_state_update.py +19 -0
- office365/security/securescores/secure_score.py +85 -0
- office365/security/security.py +208 -0
- office365/security/security_resource.py +18 -0
- office365/security/security_vendor_information.py +17 -0
- office365/security/sensitivity_label_info.py +18 -0
- office365/security/sensor.py +84 -0
- office365/security/sensor_candidate_activation_configuration.py +25 -0
- office365/security/sensor_settings.py +20 -0
- office365/security/service_principal_evidence.py +21 -0
- office365/security/settings_container.py +19 -0
- office365/security/simulation_event.py +15 -0
- office365/security/simulation_events_content.py +19 -0
- office365/security/simulation_notification.py +17 -0
- office365/security/ssl_certificate.py +78 -0
- office365/security/ssl_certificate_entity.py +24 -0
- office365/security/string_key_attribute_mapping_source_value_pair.py +19 -0
- office365/security/subdomain.py +26 -0
- office365/security/subjectrightsrequests/authored_note.py +35 -0
- office365/security/subjectrightsrequests/request.py +255 -0
- office365/security/teams_message_evidence.py +52 -0
- office365/security/threatintelligence/host.py +138 -0
- office365/security/threatintelligence/host_component.py +46 -0
- office365/security/threatintelligence/host_cookie.py +41 -0
- office365/security/threatintelligence/host_logon_session_evidence.py +21 -0
- office365/security/threatintelligence/host_pair.py +41 -0
- office365/security/threatintelligence/host_port.py +106 -0
- office365/security/threatintelligence/host_port_component.py +19 -0
- office365/security/threatintelligence/host_reputation.py +43 -0
- office365/security/threatintelligence/host_reputation_rule.py +21 -0
- office365/security/threatintelligence/host_ssl_certificate.py +56 -0
- office365/security/threatintelligence/host_tracker.py +41 -0
- office365/security/threatintelligence/hosts/__init__.py +0 -0
- office365/security/threatintelligence/profile.py +114 -0
- office365/security/threatintelligence/threat_intelligence.py +193 -0
- office365/security/threatintelligence/whoisrecords/__init__.py +0 -0
- office365/security/timeline_event.py +25 -0
- office365/security/training.py +123 -0
- office365/security/training_language_detail.py +64 -0
- office365/security/training_notification_setting.py +21 -0
- office365/security/training_reminder_notification.py +17 -0
- office365/security/training_setting.py +17 -0
- office365/security/triggers/__init__.py +0 -0
- office365/security/triggers/root.py +30 -0
- office365/security/triggertypes/__init__.py +0 -0
- office365/security/triggertypes/collection.py +9 -0
- office365/security/triggertypes/root.py +24 -0
- office365/security/unified_group_source.py +22 -0
- office365/security/uri_click_security_state.py +20 -0
- office365/security/user.py +21 -0
- office365/security/user_account.py +27 -0
- office365/security/user_evidence.py +17 -0
- office365/security/user_security_state.py +33 -0
- office365/security/user_simulation_event_info.py +21 -0
- office365/security/user_source.py +27 -0
- office365/security/user_training_content_event_info.py +19 -0
- office365/security/user_training_event_info.py +22 -0
- office365/security/user_training_status_info.py +19 -0
- office365/security/vm_metadata.py +19 -0
- office365/security/vulnerability.py +134 -0
- office365/security/vulnerability_state.py +16 -0
- office365/security/whois_base_record.py +127 -0
- office365/security/whois_contact.py +20 -0
- office365/security/whois_nameserver.py +21 -0
- office365/sharepoint/activities/entity.py +9 -0
- office365/sharepoint/activities/logger.py +118 -8
- office365/sharepoint/administration/analytics/usage_service.py +15 -7
- office365/sharepoint/administration/sitemove/service.py +857 -5
- office365/sharepoint/administration/sitemove/systemsitelockexpres.py +8 -0
- office365/sharepoint/administration/spfarm.py +8 -0
- office365/sharepoint/administration/spwebapplication.py +23 -1
- office365/sharepoint/alerts/alert.py +89 -0
- office365/sharepoint/approvals/approvals.py +262 -1
- office365/sharepoint/apps/access_requests.py +69 -0
- office365/sharepoint/apps/app_collection.py +25 -0
- office365/sharepoint/apps/appsitecontextutility.py +23 -1
- office365/sharepoint/apps/apptileproperties.py +63 -1
- office365/sharepoint/apps/catalog.py +18 -1
- office365/sharepoint/apps/instance.py +87 -1
- office365/sharepoint/apps/launcher.py +16 -0
- office365/sharepoint/apps/management/principal_info.py +19 -0
- office365/sharepoint/attachments/collection.py +20 -3
- office365/sharepoint/audit/audit.py +5 -0
- office365/sharepoint/authentication/auth_file_detonation_request_response.py +15 -0
- office365/sharepoint/authpolicy/events/event.py +20 -0
- office365/sharepoint/authpolicy/tenant/compliancereport.py +5 -0
- office365/sharepoint/authpolicy/tenant/compliancereportentitydata.py +12 -0
- office365/sharepoint/automations/automations.py +682 -1
- office365/sharepoint/brandcenter/brand_center.py +277 -0
- office365/sharepoint/businessdata/app_bdc_catalog.py +135 -0
- office365/sharepoint/businessdata/entityfieldvaluedictionary.py +65 -0
- office365/sharepoint/businessdata/entityidentifier.py +23 -0
- office365/sharepoint/businessdata/entityinstance.py +52 -0
- office365/sharepoint/businessdata/entityview.py +31 -0
- office365/sharepoint/businessdata/externalsubscriptionstore.py +9 -0
- office365/sharepoint/businessdata/infrastructure/securestore/connection_settings.py +42 -0
- office365/sharepoint/businessdata/runtime/subscription.py +16 -0
- office365/sharepoint/businessdata/typedescriptor.py +37 -0
- office365/sharepoint/changes/alert.py +8 -0
- office365/sharepoint/changes/app_consent_principal.py +9 -0
- office365/sharepoint/changes/change.py +7 -0
- office365/sharepoint/changes/content_type.py +8 -0
- office365/sharepoint/changes/field.py +8 -0
- office365/sharepoint/changes/folder.py +7 -0
- office365/sharepoint/changes/item.py +53 -0
- office365/sharepoint/changes/list.py +23 -0
- office365/sharepoint/client_context.py +329 -35
- office365/sharepoint/clientsidecomponent/hostedapps/add_response.py +19 -0
- office365/sharepoint/clientsidecomponent/hostedapps/app.py +21 -0
- office365/sharepoint/clientsidecomponent/hostedapps/manager.py +16 -0
- office365/sharepoint/comments/collection.py +1 -1
- office365/sharepoint/comments/comment.py +103 -2
- office365/sharepoint/compliance/sensitivitylabels/collection.py +33 -1
- office365/sharepoint/content_solution.py +18 -0
- office365/sharepoint/contentcenter/machinelearning/enabled.py +37 -0
- office365/sharepoint/contentcenter/machinelearning/hub.py +57 -8
- office365/sharepoint/contentcenter/machinelearning/models/entity_data.py +135 -0
- office365/sharepoint/contentcenter/machinelearning/models/model.py +16 -21
- office365/sharepoint/contentcenter/machinelearning/publications/publication.py +6 -8
- office365/sharepoint/contentcenter/machinelearning/samples/entity_data.py +14 -0
- office365/sharepoint/contentcenter/machinelearning/samples/sample.py +6 -13
- office365/sharepoint/contentcenter/machinelearning/workitementitydata.py +7 -0
- office365/sharepoint/contentcenter/machinelearning/workitems/item.py +11 -79
- office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_data.py +25 -0
- office365/sharepoint/contentcenter/sp_machine_learning_column_autofill_prompt_suggestion_result.py +16 -0
- office365/sharepoint/contentcenter/sp_machine_learning_publications_result.py +38 -0
- office365/sharepoint/contentcenter/syntex_models_landing_info.py +24 -0
- office365/sharepoint/contentcenter/template_api.py +195 -0
- office365/sharepoint/contentsolution/template_api.py +148 -0
- office365/sharepoint/contenttypes/collection.py +79 -20
- office365/sharepoint/contenttypes/content_type.py +146 -5
- office365/sharepoint/contenttypes/content_type_id.py +4 -0
- office365/sharepoint/contenttypes/fieldlinks/collection.py +1 -2
- office365/sharepoint/contenttypes/fieldlinks/field_link.py +20 -2
- office365/sharepoint/convergence/addnoliveblobsinodcservicestateapi.py +9 -0
- office365/sharepoint/convergence/consumer_permissions.py +15 -0
- office365/sharepoint/convergence/migration_complete_state_api.py +25 -0
- office365/sharepoint/convergence/odcmetadatacleanedupapi.py +9 -0
- office365/sharepoint/directory/conditional_access_policy.py +5 -0
- office365/sharepoint/directory/group_and_user_status.py +9 -0
- office365/sharepoint/directory/groups/group.py +203 -6
- office365/sharepoint/directory/link.py +20 -0
- office365/sharepoint/directory/members_info.py +15 -0
- office365/sharepoint/directory/multi_conditional_access_policy.py +5 -0
- office365/sharepoint/directory/my_groups_result.py +14 -0
- office365/sharepoint/directory/named_location_policy.py +15 -0
- office365/sharepoint/directory/provider/provider.py +141 -0
- office365/sharepoint/directory/session.py +69 -0
- office365/sharepoint/directory/tenant.py +37 -0
- office365/sharepoint/directory/users/user.py +343 -1
- office365/sharepoint/document_location.py +14 -0
- office365/sharepoint/documentmanagement/document_id.py +12 -0
- office365/sharepoint/documentmanagement/document_set.py +4 -0
- office365/sharepoint/dynamiccontent/updateservice.py +207 -1
- office365/sharepoint/edgeworth_settings_apis.py +7 -0
- office365/sharepoint/engage_distribution_info.py +17 -0
- office365/sharepoint/entity.py +105 -6
- office365/sharepoint/entity_collection.py +88 -3
- office365/sharepoint/esign/digitallegacy.py +371 -1
- office365/sharepoint/eventreceivers/definition.py +26 -0
- office365/sharepoint/exceptions.py +194 -0
- office365/sharepoint/features/definitions/definition.py +8 -0
- office365/sharepoint/fields/builtin_field_id.py +45 -34
- office365/sharepoint/fields/builtin_field_name.py +123 -0
- office365/sharepoint/fields/calculated.py +22 -0
- office365/sharepoint/fields/choice.py +9 -0
- office365/sharepoint/fields/coercion.py +131 -0
- office365/sharepoint/fields/collection.py +112 -41
- office365/sharepoint/fields/field.py +126 -1
- office365/sharepoint/fields/lookup.py +23 -0
- office365/sharepoint/fields/multi_choice.py +7 -0
- office365/sharepoint/fields/multi_line_text.py +12 -0
- office365/sharepoint/fields/name.py +46 -2
- office365/sharepoint/fields/number.py +27 -0
- office365/sharepoint/fields/rating_scale.py +27 -0
- office365/sharepoint/fields/user.py +12 -0
- office365/sharepoint/files/checked_out_file.py +15 -0
- office365/sharepoint/files/collection.py +276 -39
- office365/sharepoint/files/download_operation.py +466 -0
- office365/sharepoint/files/file.py +699 -25
- office365/sharepoint/files/file_url_virus_status_update.py +9 -0
- office365/sharepoint/files/publish/status.py +43 -0
- office365/sharepoint/files/recent_file_collection.py +41 -0
- office365/sharepoint/files/versions/collection.py +1 -1
- office365/sharepoint/files/versions/event.py +13 -0
- office365/sharepoint/files/versions/version.py +38 -13
- office365/sharepoint/flows/synchronization_result.py +13 -1
- office365/sharepoint/folders/collection.py +4 -0
- office365/sharepoint/folders/coloring.py +29 -0
- office365/sharepoint/folders/folder.py +264 -25
- office365/sharepoint/fontpackages/font_package.py +69 -0
- office365/sharepoint/fontpackages/oob_settings.py +47 -0
- office365/sharepoint/forms/form.py +8 -0
- office365/sharepoint/glutamate_controller.py +44 -0
- office365/sharepoint/htmlpages/html_page.py +21 -0
- office365/sharepoint/htmlpages/html_page_service.py +19 -0
- office365/sharepoint/ir/migration.py +9 -0
- office365/sharepoint/item_reference.py +17 -0
- office365/sharepoint/largeoperation/operation.py +26 -1
- office365/sharepoint/likes/user_entity.py +7 -0
- office365/sharepoint/list_creation_information.py +18 -0
- office365/sharepoint/listhome/favorite_lists.py +130 -0
- office365/sharepoint/listhome/favoritelistssubstrate.py +106 -1
- office365/sharepoint/listhome/item2.py +7 -0
- office365/sharepoint/listhome/itemcollection.py +99 -1
- office365/sharepoint/listhome/nucleus.py +15 -1
- office365/sharepoint/listhome/pinneditems.py +127 -1
- office365/sharepoint/listitems/caml/__init__.py +31 -0
- office365/sharepoint/listitems/caml/builder.py +129 -0
- office365/sharepoint/listitems/caml/expressions.py +424 -0
- office365/sharepoint/listitems/caml/fields.py +68 -0
- office365/sharepoint/listitems/caml/guard.py +63 -0
- office365/sharepoint/listitems/caml/query.py +71 -2
- office365/sharepoint/listitems/caml/values.py +113 -0
- office365/sharepoint/listitems/collection.py +48 -19
- office365/sharepoint/listitems/favoriteitemcollection.py +20 -1
- office365/sharepoint/listitems/listitem.py +529 -27
- office365/sharepoint/listitems/relateditemmanager.py +231 -1
- office365/sharepoint/listitems/upsert.py +75 -0
- office365/sharepoint/listitems/versions/version.py +9 -0
- office365/sharepoint/lists/apihubconnector.py +18 -1
- office365/sharepoint/lists/batch_convert_asset_result.py +19 -0
- office365/sharepoint/lists/batch_convert_classic_wiki_page_input.py +15 -0
- office365/sharepoint/lists/batch_convert_item_result.py +21 -1
- office365/sharepoint/lists/bloom_filter.py +33 -0
- office365/sharepoint/lists/collection.py +29 -22
- office365/sharepoint/lists/exporter.py +4 -3
- office365/sharepoint/lists/list.py +1637 -55
- office365/sharepoint/lists/list_forms_api.py +106 -1
- office365/sharepoint/lists/playlist.py +33 -1
- office365/sharepoint/lists/recentlist.py +7 -0
- office365/sharepoint/lists/recentlistcollection.py +76 -1
- office365/sharepoint/lists/recentlistproxy.py +31 -1
- office365/sharepoint/lists/recommendationcollection.py +71 -1
- office365/sharepoint/lists/smart_wiki_library_utility.py +160 -0
- office365/sharepoint/lists/smart_wiki_metadata_update_parameters.py +18 -0
- office365/sharepoint/lists/templates/template.py +58 -0
- office365/sharepoint/lists/version_policy_manager.py +14 -0
- office365/sharepoint/logger/export.py +12 -0
- office365/sharepoint/marketplace/app_metadata.py +97 -1
- office365/sharepoint/marketplace/appstatequeryjobdefinition.py +9 -0
- office365/sharepoint/marketplace/corporatecuratedgallery/carddesigns/card_designs.py +35 -0
- office365/sharepoint/marketplace/sitecollection/appcatalog/allowed_item.py +5 -0
- office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +107 -30
- office365/sharepoint/microfeed/data.py +0 -6
- office365/sharepoint/microservice/manager.py +61 -0
- office365/sharepoint/migrationcenter/agentgroupentity.py +24 -1
- office365/sharepoint/migrationcenter/common/task.py +197 -1
- office365/sharepoint/migrationcenter/common/task_entity_data.py +232 -1
- office365/sharepoint/migrationcenter/common/teams/channel_resource.py +7 -0
- office365/sharepoint/migrationcenter/common/teams/team_resource.py +8 -0
- office365/sharepoint/migrationcenter/common/url_parser.py +37 -1
- office365/sharepoint/migrationcenter/credentialentitydata.py +7 -0
- office365/sharepoint/migrationcenter/deploy_status.py +13 -0
- office365/sharepoint/migrationcenter/device.py +7 -0
- office365/sharepoint/migrationcenter/deviceentitydata.py +8 -0
- office365/sharepoint/migrationcenter/service/credential.py +21 -0
- office365/sharepoint/migrationcenter/service/properties.py +20 -0
- office365/sharepoint/migrationcenter/service/services.py +77 -0
- office365/sharepoint/migrationcenter/service/storage.py +34 -0
- office365/sharepoint/migrationcenter/spflight.py +13 -0
- office365/sharepoint/migrationcenter/urlparseresult.py +77 -0
- office365/sharepoint/mount/folder_info.py +34 -0
- office365/sharepoint/mount/onedriveitemcollection.py +26 -1
- office365/sharepoint/mount/placesinformation.py +18 -1
- office365/sharepoint/multigeo/service/allowed_data_location.py +7 -0
- office365/sharepoint/multigeo/service/cross_geo_user_placement_job.py +7 -0
- office365/sharepoint/multigeo/service/df_deprecation_job.py +18 -0
- office365/sharepoint/multigeo/service/geo_tenant_instance_information.py +7 -0
- office365/sharepoint/multigeo/service/job_entity_data.py +21 -0
- office365/sharepoint/multigeo/service/microfeedpostdefinitionmanager.py +91 -0
- office365/sharepoint/multigeo/service/move_job_entity_data.py +111 -0
- office365/sharepoint/multigeo/service/move_site_ro_state.py +18 -0
- office365/sharepoint/multigeo/service/multigeoservicesbeta.py +55 -13
- office365/sharepoint/multigeo/service/sbsitemovejob.py +26 -0
- office365/sharepoint/multigeo/service/site_move_job_entity_data.py +75 -0
- office365/sharepoint/multigeo/service/spmultigeoproxy.py +13 -0
- office365/sharepoint/multigeo/service/storage_quota.py +49 -0
- office365/sharepoint/multigeo/service/tenant_information.py +40 -0
- office365/sharepoint/multigeo/service/unified_group.py +35 -0
- office365/sharepoint/multigeo/service/user_personal_site_location.py +30 -0
- office365/sharepoint/multigeo/service/usermovejob.py +11 -0
- office365/sharepoint/navigation/home_site_navigation_settings.py +6 -1
- office365/sharepoint/navigation/nodes/creationinformation.py +2 -0
- office365/sharepoint/navigation/nodes/node.py +22 -1
- office365/sharepoint/navigation/quickaccessitemcollection.py +37 -1
- office365/sharepoint/navigation/servicerest.py +127 -0
- office365/sharepoint/news/ngspdatacollection.py +24 -1
- office365/sharepoint/ngsp_ai_settings.py +32 -0
- office365/sharepoint/oauth/authentication.py +13 -0
- office365/sharepoint/oauth/token_response.py +56 -0
- office365/sharepoint/onboarding/job_entity_data.py +14 -0
- office365/sharepoint/onboarding/tenantrename/job.py +7 -0
- office365/sharepoint/onboarding/tenantrename/jobentitydata.py +10 -0
- office365/sharepoint/permissions/irm/effective_settings.py +78 -0
- office365/sharepoint/permissions/irm/file_settings.py +47 -0
- office365/sharepoint/permissions/irm/settings.py +16 -0
- office365/sharepoint/permissions/roles/definitions/definition.py +12 -0
- office365/sharepoint/permissions/securable_object.py +42 -0
- office365/sharepoint/portal/groups/site_manager.py +28 -4
- office365/sharepoint/portal/home/page_context.py +4 -0
- office365/sharepoint/portal/home/service_context.py +57 -0
- office365/sharepoint/portal/organization_news.py +37 -0
- office365/sharepoint/portal/theme_manager.py +137 -8
- office365/sharepoint/portal/userprofiles/sharedwithme/document.py +267 -0
- office365/sharepoint/portal/userprofiles/sharedwithme/item_collection.py +147 -0
- office365/sharepoint/portal/webcontrols/recentdocument.py +7 -0
- office365/sharepoint/principal/groups/group.py +11 -1
- office365/sharepoint/principal/users/user.py +10 -0
- office365/sharepoint/publishing/amplify/clientamplifyanywhereresults.py +1 -1
- office365/sharepoint/publishing/amplify/historyresult.py +1 -1
- office365/sharepoint/publishing/amplify/result.py +1 -1
- office365/sharepoint/publishing/announcements/data.py +2 -2
- office365/sharepoint/publishing/approval/request.py +7 -0
- office365/sharepoint/publishing/campaign/campaign.py +45 -1
- office365/sharepoint/publishing/channelannouncement.py +3 -3
- office365/sharepoint/publishing/customproperties/base.py +19 -0
- office365/sharepoint/publishing/customproperties/bigint.py +9 -0
- office365/sharepoint/publishing/diagnostics/page_result.py +2 -2
- office365/sharepoint/publishing/embed_data_v1.py +7 -0
- office365/sharepoint/publishing/feedvideopage.py +0 -7
- office365/sharepoint/publishing/highlights_info.py +14 -0
- office365/sharepoint/publishing/pagecopywithassets/response.py +79 -0
- office365/sharepoint/publishing/pages/_3d/__init__.py +0 -0
- office365/sharepoint/publishing/pages/_3d/page.py +319 -0
- office365/sharepoint/publishing/pages/campaign/publication.py +104 -16
- office365/sharepoint/publishing/pages/canvas.py +81 -0
- office365/sharepoint/publishing/pages/collection.py +39 -5
- office365/sharepoint/publishing/pages/metadata.py +119 -0
- office365/sharepoint/publishing/pages/move_response.py +64 -0
- office365/sharepoint/publishing/pages/page.py +6 -117
- office365/sharepoint/publishing/pages/reposts/metadata.py +30 -0
- office365/sharepoint/publishing/pages/reposts/repost.py +0 -7
- office365/sharepoint/publishing/pages/topics/topic.py +0 -7
- office365/sharepoint/publishing/person/magazineuserprofile.py +3 -3
- office365/sharepoint/publishing/personmagazine/userprofiledata.py +1 -1
- office365/sharepoint/publishing/point/site_status.py +25 -0
- office365/sharepoint/publishing/point/user.py +7 -0
- office365/sharepoint/publishing/profiledata.py +1 -1
- office365/sharepoint/publishing/profilefullproperties.py +3 -3
- office365/sharepoint/publishing/profilevieweditpolicies.py +24 -24
- office365/sharepoint/publishing/publicationmetadata.py +2 -2
- office365/sharepoint/publishing/ruleerrordetails.py +1 -1
- office365/sharepoint/publishing/ruleresult.py +1 -1
- office365/sharepoint/publishing/search.py +8 -0
- office365/sharepoint/publishing/sitepagstreamdata.py +1 -1
- office365/sharepoint/publishing/spotlightchannel.py +19 -1
- office365/sharepoint/publishing/spotlightvideo.py +19 -1
- office365/sharepoint/publishing/spstatusresponse.py +1 -1
- office365/sharepoint/publishing/statusresponse.py +2 -4
- office365/sharepoint/publishing/subtitlefile.py +0 -40
- office365/sharepoint/publishing/user_info.py +8 -0
- office365/sharepoint/publishing/validations/prepublishvalidationserrorcodesforvivaengage.py +1 -1
- office365/sharepoint/publishing/video/channel.py +7 -0
- office365/sharepoint/publishing/video/item.py +11 -2
- office365/sharepoint/publishing/video/service_manager.py +66 -2
- office365/sharepoint/pushnotifications/subscriber.py +7 -0
- office365/sharepoint/quotamanagement/consumer/consumer_quota_info_api.py +14 -0
- office365/sharepoint/quotamanagement/consumer/non_quota_backfill_api.py +23 -0
- office365/sharepoint/quotamanagement/consumer/nonquotamigrationapi.py +9 -0
- office365/sharepoint/quotamanagement/consumer/quotamigrationapi.py +13 -0
- office365/sharepoint/recyclebin/item.py +16 -0
- office365/sharepoint/recyclebin/item_collection.py +1 -1
- office365/sharepoint/request.py +124 -24
- office365/sharepoint/request_context.py +41 -2
- office365/sharepoint/role_definition_creation_information.py +14 -0
- office365/sharepoint/search/administration/document_crawl_log.py +24 -7
- office365/sharepoint/search/administration/providers/crawl_versions_info.py +29 -0
- office365/sharepoint/search/administration/providers/recycle_bin_info.py +23 -0
- office365/sharepoint/search/administration/providers/site_content_processing_info.py +67 -0
- office365/sharepoint/search/relevant_results.py +7 -0
- office365/sharepoint/search/result.py +6 -0
- office365/sharepoint/search/searchresultitemcollection.py +86 -1
- office365/sharepoint/search/semantic/enqueueproxy.py +68 -1
- office365/sharepoint/search/semantic/itemcollection.py +35 -1
- office365/sharepoint/search/service.py +7 -0
- office365/sharepoint/search/simple_data_row.py +8 -0
- office365/sharepoint/securestore/target_application.py +17 -0
- office365/sharepoint/securestore/target_application_field.py +19 -0
- office365/sharepoint/sharing/information.py +299 -1
- office365/sharepoint/sharing/internal/sharing_restrictions.py +30 -0
- office365/sharepoint/sharing/object_sharing_information.py +35 -0
- office365/sharepoint/sharing/object_sharing_information_user.py +67 -0
- office365/sharepoint/sharing/object_sharing_settings.py +143 -0
- office365/sharepoint/sharing/permission_information.py +22 -0
- office365/sharepoint/sharing/picker_settings.py +24 -0
- office365/sharepoint/sharing/principal_info.py +25 -0
- office365/sharepoint/sharing/shared_document_info.py +161 -0
- office365/sharepoint/sharing/sharepoint_sharing_settings.py +85 -0
- office365/sharepoint/sitedesigns/design_package_menu_contents.py +20 -0
- office365/sharepoint/sitedesigns/principal.py +19 -0
- office365/sharepoint/sitedesigns/run.py +43 -0
- office365/sharepoint/sitedesigns/userfirstrun.py +53 -0
- office365/sharepoint/sites/home/site.py +279 -0
- office365/sharepoint/sites/language_collection.py +18 -0
- office365/sharepoint/sites/migration/job_status.py +15 -0
- office365/sharepoint/sites/site.py +984 -67
- office365/sharepoint/sites/siteprovisioninginfoprovider.py +13 -0
- office365/sharepoint/sites/team_site_data.py +45 -0
- office365/sharepoint/sites/version_policy_manager.py +35 -0
- office365/sharepoint/smartcache/item.py +106 -0
- office365/sharepoint/social/feed/manager.py +208 -1
- office365/sharepoint/social/following/manager.py +82 -1
- office365/sharepoint/social/following/rest_manager.py +186 -0
- office365/sharepoint/social/rest_actor.py +25 -0
- office365/sharepoint/social/rest_thread.py +39 -1
- office365/sharepoint/sp_playlist_subscriber.py +12 -0
- office365/sharepoint/taxonomy/create_xml_parameters.py +5 -5
- office365/sharepoint/taxonomy/field.py +20 -19
- office365/sharepoint/taxonomy/field_value_col.py +21 -0
- office365/sharepoint/taxonomy/groups/collection.py +19 -2
- office365/sharepoint/teams/channel_manager.py +272 -0
- office365/sharepoint/tenant/administration/app_service_principal_public.py +46 -0
- office365/sharepoint/tenant/administration/audit/data.py +4 -1
- office365/sharepoint/tenant/administration/consumer_quota_info_api.py +7 -0
- office365/sharepoint/tenant/administration/container/filterorder.py +1 -1
- office365/sharepoint/tenant/administration/container/properties.py +1 -1
- office365/sharepoint/tenant/administration/container/type/configurationproperties.py +1 -1
- office365/sharepoint/tenant/administration/copilot/reportrow.py +1 -1
- office365/sharepoint/tenant/administration/datagovernance/insight_client.py +292 -23
- office365/sharepoint/tenant/administration/dataset_metadata_request_info.py +4 -1
- office365/sharepoint/tenant/administration/dataset_metadata_response.py +9 -2
- office365/sharepoint/tenant/administration/ddiadapter.py +97 -0
- office365/sharepoint/tenant/administration/endpoints.py +5 -0
- office365/sharepoint/tenant/administration/groups/group.py +130 -0
- office365/sharepoint/tenant/administration/hubsites/hub_site.py +62 -0
- office365/sharepoint/tenant/administration/hubsites/properties.py +53 -0
- office365/sharepoint/tenant/administration/internal/aad/collection.py +20 -0
- office365/sharepoint/tenant/administration/internal/aad/permission_grant.py +35 -15
- office365/sharepoint/tenant/administration/internal/appservice/permission_request.py +79 -1
- office365/sharepoint/tenant/administration/internal/appservice/principal.py +85 -2
- office365/sharepoint/tenant/administration/licensed_onedrives_summary_metrics.py +16 -0
- office365/sharepoint/tenant/administration/malware/file.py +35 -0
- office365/sharepoint/tenant/administration/odb_license_enforcement_service.py +26 -0
- office365/sharepoint/tenant/administration/onedrives_count_and_size.py +15 -0
- office365/sharepoint/tenant/administration/onedrives_summary_metrics.py +23 -0
- office365/sharepoint/tenant/administration/onedrives_summary_metrics_by_unlicensed_reason.py +25 -0
- office365/sharepoint/tenant/administration/owner_not_in_entra_onedrives_summary_metrics.py +22 -0
- office365/sharepoint/tenant/administration/policies/content_security_configuration.py +67 -0
- office365/sharepoint/tenant/administration/settings/service.py +240 -0
- office365/sharepoint/tenant/administration/siteadministratorsfieldsdata.py +1 -1
- office365/sharepoint/tenant/administration/sites/properties.py +578 -1
- office365/sharepoint/tenant/administration/spcontenteventscustomemailproperty.py +1 -1
- office365/sharepoint/tenant/administration/spdatagovernanceinsightresponse.py +6 -6
- office365/sharepoint/tenant/administration/spdatagovernancesarrestapiclient.py +60 -1
- office365/sharepoint/tenant/administration/spofileversionfiletypepolicysettings.py +1 -1
- office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +4 -0
- office365/sharepoint/tenant/administration/storage_usage_metrics_snapshot.py +8 -1
- office365/sharepoint/tenant/administration/syntex/applicationproperties.py +19 -3
- office365/sharepoint/tenant/administration/syntex/getmodifiedlistresponse.py +1 -1
- office365/sharepoint/tenant/administration/tenant.py +5931 -34
- office365/sharepoint/tenant/administration/theme_properties.py +24 -0
- office365/sharepoint/tenant/administration/unlicensed_onedrives_summary_metrics.py +20 -0
- office365/sharepoint/tenant/apps/instance.py +20 -0
- office365/sharepoint/tenant/apps/user_experience_state.py +25 -0
- office365/sharepoint/tenant/insights/reports/manager.py +24 -12
- office365/sharepoint/tenant/insights/reports/metadata.py +8 -0
- office365/sharepoint/tenant/insights/reports/report.py +23 -0
- office365/sharepoint/tenant/management/externalusers/results/remove.py +13 -0
- office365/sharepoint/tenant/management/externalusers/results/session_revocation.py +9 -0
- office365/sharepoint/tenant/management/office365_tenant.py +548 -8
- office365/sharepoint/tenantadministration/catalog_management_collection.py +69 -0
- office365/sharepoint/tenantadministration/catalog_management_custom_properties_collection.py +237 -0
- office365/sharepoint/tenantadministration/catalog_management_restricted_content_discovery_collection.py +56 -0
- office365/sharepoint/tenantadministration/sp_data_governance_client_exception.py +7 -0
- office365/sharepoint/tenantadministration/sp_data_governance_insight_rest_api_client.py +475 -0
- office365/sharepoint/tenantadministration/sp_data_governance_sar_rest_api_client.py +88 -0
- office365/sharepoint/tenantadministration/spo_copilot_agent_insights_rest_api_client.py +170 -0
- office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +4 -1
- office365/sharepoint/tenantadministration/spo_restricted_content_discoverability_client.py +90 -0
- office365/sharepoint/tenantadministration/spom365_agent_insights_rest_api_client.py +166 -0
- office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +11 -0
- office365/sharepoint/tenantmanagement/group_creation_params.py +32 -0
- office365/sharepoint/thresholds.py +529 -0
- office365/sharepoint/token.py +7 -0
- office365/sharepoint/translation/jobs/job.py +72 -2
- office365/sharepoint/translation/jobs/status.py +47 -9
- office365/sharepoint/translation/sync_translator.py +15 -2
- office365/sharepoint/user_ai_tokens.py +56 -0
- office365/sharepoint/user_photos.py +32 -0
- office365/sharepoint/usercustomactions/action.py +109 -1
- office365/sharepoint/userprofiles/followed_content.py +164 -0
- office365/sharepoint/userprofiles/my_site_links.py +22 -0
- office365/sharepoint/userprofiles/people_manager.py +68 -0
- office365/sharepoint/userprofiles/peoplecollection.py +40 -1
- office365/sharepoint/userprofiles/person_properties.py +22 -0
- office365/sharepoint/userprofiles/personal_cache.py +246 -1
- office365/sharepoint/userprofiles/personallistsproxy.py +33 -1
- office365/sharepoint/userprofiles/profile_loader.py +16 -0
- office365/sharepoint/userprofiles/user_profile.py +42 -0
- office365/sharepoint/utilities/file_handler_wopi_properties.py +24 -0
- office365/sharepoint/utilities/move_copy_util.py +46 -4
- office365/sharepoint/utilities/upload_status.py +8 -0
- office365/sharepoint/views/collection.py +135 -14
- office365/sharepoint/views/field_collection.py +3 -0
- office365/sharepoint/views/view.py +113 -0
- office365/sharepoint/viva/app_configuration.py +34 -1
- office365/sharepoint/viva/connections/page.py +27 -0
- office365/sharepoint/viva/employee_engagement.py +149 -1
- office365/sharepoint/viva/employee_experience_controller.py +97 -1
- office365/sharepoint/viva/home.py +38 -0
- office365/sharepoint/viva/knowledgehub.py +37 -1
- office365/sharepoint/viva/learningmanager.py +9 -0
- office365/sharepoint/viva/resource_get_endpoint.py +15 -0
- office365/sharepoint/viva/visualizationappsynchronizationresult.py +18 -1
- office365/sharepoint/viva/vivaresources.py +60 -0
- office365/sharepoint/webhooks/subscription.py +2 -12
- office365/sharepoint/webhooks/subscription_information.py +2 -1
- office365/sharepoint/webparts/client/webpart.py +15 -0
- office365/sharepoint/webparts/definitions/definition.py +13 -0
- office365/sharepoint/webparts/limited_manager.py +29 -7
- office365/sharepoint/webparts/webpart.py +12 -0
- office365/sharepoint/webs/apptile.py +12 -0
- office365/sharepoint/webs/context_web_information.py +14 -9
- office365/sharepoint/webs/dataleakage_prevention_status_info.py +24 -0
- office365/sharepoint/webs/information.py +7 -0
- office365/sharepoint/webs/modernize_homepage_result.py +7 -0
- office365/sharepoint/webs/multilingual_settings.py +19 -1
- office365/sharepoint/webs/regional_settings.py +27 -0
- office365/sharepoint/webs/remote_web.py +19 -0
- office365/sharepoint/webs/templates/__init__.py +11 -0
- office365/sharepoint/webs/templates/template.py +7 -0
- office365/sharepoint/webs/templates/type.py +74 -15
- office365/sharepoint/webs/theme_info.py +14 -0
- office365/sharepoint/webs/time_zone.py +15 -0
- office365/sharepoint/webs/web.py +1167 -0
- office365/sharepoint/workflow/associations/association.py +5 -0
- office365/sharepoint/workflow/definition.py +6 -0
- office365/sharepoint/workflow/deployment_service.py +155 -0
- office365/sharepoint/workflow/instances/instance.py +41 -0
- office365/sharepoint/workflow/instances/service.py +33 -0
- office365/sharepoint/workflow/interopservice.py +68 -0
- office365/sharepoint/workflow/messagingservice.py +24 -0
- office365/sharepoint/workflow/servicesmanager.py +41 -2
- office365/sharepoint/workflow/sp_workflow_task.py +618 -0
- office365/sharepoint/workflow/subscriptions/service.py +67 -0
- office365/sharepoint/workflow/subscriptions/subscription.py +31 -0
- office365/sharepoint/workflow/task.py +425 -0
- office365/sharepoint/workflow/template.py +8 -0
- office365/subscriptions/change_notification.py +17 -0
- office365/subscriptions/change_notification_collection.py +4 -0
- office365/subscriptions/changetype.py +4 -0
- office365/subscriptions/collection.py +10 -6
- office365/subscriptions/subscription.py +57 -1
- office365/teams/admin_root.py +35 -0
- office365/teams/administration/number_assignment.py +74 -1
- office365/teams/administration/telephone_number_long_running_operation.py +26 -3
- office365/teams/administration/telephone_number_management_root.py +20 -1
- office365/teams/administration/user_configuration.py +17 -3
- office365/teams/app_settings.py +21 -0
- office365/teams/apps/app.py +11 -0
- office365/teams/apps/definition.py +38 -0
- office365/teams/apps/installation.py +18 -0
- office365/teams/assignment_type.py +13 -0
- office365/teams/channels/channel.py +59 -0
- office365/teams/channels/collection.py +62 -2
- office365/teams/channels/layout_type.py +13 -0
- office365/teams/channels/shared_team_info.py +6 -0
- office365/teams/chats/chat.py +40 -1
- office365/teams/chats/collection.py +11 -3
- office365/teams/chats/deleted.py +6 -0
- office365/teams/chats/messages/info.py +42 -0
- office365/teams/chats/messages/message.py +39 -1
- office365/teams/chats/pinned_chat_message_info.py +22 -0
- office365/teams/chats/targeted_chat_message.py +21 -0
- office365/teams/collection.py +76 -11
- office365/teams/community_privacy.py +13 -0
- office365/teams/info.py +11 -0
- office365/teams/members/aad_user_conversation.py +16 -0
- office365/teams/members/conversation.py +17 -0
- office365/teams/members/conversation_collection.py +19 -7
- office365/teams/migration_mode.py +13 -0
- office365/teams/operations/async_operation.py +102 -1
- office365/teams/operations/asyncoperationtype.py +10 -15
- office365/teams/policy_assignment.py +23 -0
- office365/teams/schedule/change_request.py +47 -1
- office365/teams/schedule/day_note.py +34 -0
- office365/teams/schedule/groups/group.py +16 -0
- office365/teams/schedule/open_shift.py +38 -0
- office365/teams/schedule/schedule.py +165 -0
- office365/teams/schedule/shifts/open/change_request.py +13 -0
- office365/teams/schedule/shifts/shift.py +23 -0
- office365/teams/schedule/swap_shifts_change_request.py +16 -0
- office365/teams/schedule/time_card.py +74 -0
- office365/teams/schedule/time_off.py +38 -0
- office365/teams/schedule/time_off_reason.py +35 -0
- office365/teams/schedule/time_off_request.py +27 -0
- office365/teams/tabs/tab.py +18 -0
- office365/teams/team.py +2 -2
- office365/teams/teamwork/shiftmanagement/user_solution_root.py +22 -0
- office365/teams/teamwork/shiftmanagement/working_time_schedule.py +9 -0
- office365/teams/teamwork/tags/member.py +16 -0
- office365/teams/telephone_number_long_running_operation_details.py +19 -0
- office365/teams/viva/community.py +42 -1
- office365/teams/viva/employee_experience.py +34 -0
- office365/teams/viva/employee_experience_user.py +19 -0
- office365/teams/viva/engagement/conversation.py +33 -1
- office365/teams/viva/engagement/conversation_message.py +112 -0
- office365/teams/viva/engagement/conversation_message_reaction.py +41 -0
- office365/teams/viva/learning/content.py +111 -0
- office365/teams/viva/learning/courses/activity.py +49 -0
- office365/teams/viva/learning/courses/self_initiated.py +14 -0
- office365/teams/viva/learning/provider.py +60 -0
- office365/teams/work.py +43 -1
- office365/teams/workforce_integration.py +69 -0
- office365/teams/workforce_integration_encryption.py +18 -0
- office365/todo/attachments/base.py +11 -0
- office365/todo/attachments/session.py +4 -0
- office365/todo/attachments/task_file.py +2 -5
- office365/todo/attachments/type.py +7 -10
- office365/todo/linked_resource.py +6 -0
- office365/todo/tasks/collection.py +45 -0
- office365/todo/tasks/lists/collection.py +1 -0
- office365/todo/tasks/task.py +1 -1
- office365_rest_python_client-3.3.0.dist-info/METADATA +635 -0
- office365_rest_python_client-3.3.0.dist-info/RECORD +6789 -0
- office365/directory/identitygovernance/workflow.py +0 -106
- office365/directory/identitygovernance/workflow_setting.py +0 -15
- office365/directory/identitygovernance/workflow_version.py +0 -16
- office365/directory/security/account.py +0 -14
- office365/directory/security/ai_agent_evidence.py +0 -16
- office365/directory/security/alerts/alert.py +0 -205
- office365/directory/security/alerts/blob_container_evidence.py +0 -17
- office365/directory/security/alerts/blob_evidence.py +0 -21
- office365/directory/security/alerts/collection.py +0 -49
- office365/directory/security/alerts/evidence.py +0 -28
- office365/directory/security/alerts/file_security_state.py +0 -5
- office365/directory/security/alerts/history_state.py +0 -16
- office365/directory/security/alerts/malware_evidence.py +0 -22
- office365/directory/security/alerts/process_evidence.py +0 -27
- office365/directory/security/alerts/sas_token_evidence.py +0 -26
- office365/directory/security/analyzed_message_evidence.py +0 -34
- office365/directory/security/article.py +0 -56
- office365/directory/security/attacksimulations/automation.py +0 -30
- office365/directory/security/attacksimulations/automation_run.py +0 -12
- office365/directory/security/attacksimulations/event.py +0 -5
- office365/directory/security/attacksimulations/landing_page.py +0 -5
- office365/directory/security/attacksimulations/operations/operation.py +0 -5
- office365/directory/security/attacksimulations/repeat_offender.py +0 -17
- office365/directory/security/attacksimulations/reports/overview.py +0 -5
- office365/directory/security/attacksimulations/reports/report.py +0 -25
- office365/directory/security/attacksimulations/root.py +0 -67
- office365/directory/security/attacksimulations/simulation.py +0 -23
- office365/directory/security/attacksimulations/user.py +0 -16
- office365/directory/security/attacksimulations/user_coverage.py +0 -10
- office365/directory/security/attacksimulations/users/details.py +0 -20
- office365/directory/security/attribute_definition.py +0 -37
- office365/directory/security/attribute_mapping.py +0 -23
- office365/directory/security/attribute_mapping_source.py +0 -24
- office365/directory/security/audit/audit_data.py +0 -15
- office365/directory/security/audit/whois_record.py +0 -22
- office365/directory/security/cases/case.py +0 -48
- office365/directory/security/cases/ediscovery.py +0 -99
- office365/directory/security/cases/operation.py +0 -10
- office365/directory/security/cases/root.py +0 -21
- office365/directory/security/category_template.py +0 -9
- office365/directory/security/cloud_application_evidence.py +0 -20
- office365/directory/security/cloud_logon_session_evidence.py +0 -24
- office365/directory/security/collaboration/analyzed_email.py +0 -133
- office365/directory/security/collaboration/analyzed_email_attachment.py +0 -22
- office365/directory/security/collaboration/analyzed_email_delivery_detail.py +0 -15
- office365/directory/security/collaboration/analyzed_email_url.py +0 -18
- office365/directory/security/collaboration/collaboration_root.py +0 -22
- office365/directory/security/compromise_indicator.py +0 -14
- office365/directory/security/container_evidence.py +0 -23
- office365/directory/security/container_image_evidence.py +0 -17
- office365/directory/security/cvss_summary.py +0 -15
- office365/directory/security/data_source_container.py +0 -44
- office365/directory/security/datasecurity/classifcation_error_base.py +0 -18
- office365/directory/security/datasecurity/classification_error.py +0 -12
- office365/directory/security/datasecurity/compute_rights_and_inheritance_result.py +0 -17
- office365/directory/security/datasecurity/governance.py +0 -17
- office365/directory/security/datasecurity/policy_scope_base.py +0 -26
- office365/directory/security/datasecurity/policy_tenant_scope.py +0 -15
- office365/directory/security/datasecurity/policy_tip_action.py +0 -16
- office365/directory/security/datasecurity/process_content_batch_request.py +0 -17
- office365/directory/security/datasecurity/process_content_request.py +0 -24
- office365/directory/security/datasecurity/process_content_response.py +0 -24
- office365/directory/security/datasecurity/process_content_responses.py +0 -16
- office365/directory/security/datasecurity/process_file_metadata.py +0 -16
- office365/directory/security/datasecurity/sensitivity_label.py +0 -31
- office365/directory/security/detonation_details.py +0 -34
- office365/directory/security/device_evidence.py +0 -47
- office365/directory/security/dns_evidence.py +0 -19
- office365/directory/security/ediscovery/case_member.py +0 -21
- office365/directory/security/ediscovery/custodian.py +0 -22
- office365/directory/security/ediscovery/ediscovery_case_settings.py +0 -21
- office365/directory/security/ediscovery/ediscovery_estimate_operation.py +0 -54
- office365/directory/security/ediscovery/ediscovery_export_operation.py +0 -50
- office365/directory/security/ediscovery/ediscovery_index_operation.py +0 -7
- office365/directory/security/ediscovery/ediscovery_review_tag.py +0 -34
- office365/directory/security/ediscovery/noncustodial_data_source.py +0 -18
- office365/directory/security/ediscovery/operations/add_to_review_set.py +0 -52
- office365/directory/security/ediscovery/operations/hold.py +0 -7
- office365/directory/security/ediscovery/operations/hold_policy_sync.py +0 -9
- office365/directory/security/ediscovery/operations/purge_data.py +0 -9
- office365/directory/security/ediscovery/operations/search_export.py +0 -62
- office365/directory/security/ediscovery/operations/tag.py +0 -7
- office365/directory/security/ediscovery/review_set.py +0 -22
- office365/directory/security/ediscovery/review_set_query.py +0 -7
- office365/directory/security/ediscovery/search.py +0 -56
- office365/directory/security/event_propagation_result.py +0 -18
- office365/directory/security/event_query.py +0 -14
- office365/directory/security/expression_input_object.py +0 -20
- office365/directory/security/file_evidence.py +0 -18
- office365/directory/security/file_hash.py +0 -16
- office365/directory/security/file_hash_evidence.py +0 -16
- office365/directory/security/file_plan_applied_category.py +0 -15
- office365/directory/security/filter.py +0 -22
- office365/directory/security/filter_clause.py +0 -17
- office365/directory/security/filter_group.py +0 -17
- office365/directory/security/formatted_content.py +0 -16
- office365/directory/security/google_cloud_resource_evidence.py +0 -21
- office365/directory/security/health_issue.py +0 -81
- office365/directory/security/hunting_query_results.py +0 -24
- office365/directory/security/identity_accounts.py +0 -36
- office365/directory/security/incidents/incident.py +0 -59
- office365/directory/security/indicator.py +0 -16
- office365/directory/security/invoke_action_result.py +0 -15
- office365/directory/security/io_t_device_evidence.py +0 -46
- office365/directory/security/ip_address.py +0 -26
- office365/directory/security/ip_evidence.py +0 -19
- office365/directory/security/kubernetes_cluster_evidence.py +0 -20
- office365/directory/security/kubernetes_controller_evidence.py +0 -19
- office365/directory/security/kubernetes_namespace_evidence.py +0 -18
- office365/directory/security/kubernetes_pod_evidence.py +0 -35
- office365/directory/security/kubernetes_secret_evidence.py +0 -17
- office365/directory/security/kubernetes_service_account_evidence.py +0 -16
- office365/directory/security/kubernetes_service_evidence.py +0 -29
- office365/directory/security/kubernetes_service_port.py +0 -20
- office365/directory/security/labels/retention/collection.py +0 -68
- office365/directory/security/labels/retention/duration_in_days.py +0 -16
- office365/directory/security/labels/retention/fileplan_descriptor.py +0 -52
- office365/directory/security/labels/retention/label.py +0 -158
- office365/directory/security/labels/root.py +0 -83
- office365/directory/security/mailbox_configuration_evidence.py +0 -19
- office365/directory/security/mailbox_evidence.py +0 -18
- office365/directory/security/network_connection_evidence.py +0 -18
- office365/directory/security/nic_evidence.py +0 -18
- office365/directory/security/object_definition.py +0 -25
- office365/directory/security/object_mapping.py +0 -26
- office365/directory/security/parse_expression_response.py +0 -19
- office365/directory/security/passive_dns_record.py +0 -47
- office365/directory/security/processing_error.py +0 -15
- office365/directory/security/retention_event.py +0 -63
- office365/directory/security/retention_event_status.py +0 -15
- office365/directory/security/scorecontrol/profile.py +0 -23
- office365/directory/security/search/data_source.py +0 -34
- office365/directory/security/security.py +0 -157
- office365/directory/security/sensor.py +0 -72
- office365/directory/security/sensor_candidate_activation_configuration.py +0 -9
- office365/directory/security/sensor_settings.py +0 -20
- office365/directory/security/service_principal_evidence.py +0 -18
- office365/directory/security/settings_container.py +0 -19
- office365/directory/security/ssl_certificate.py +0 -59
- office365/directory/security/string_key_attribute_mapping_source_value_pair.py +0 -16
- office365/directory/security/subdomain.py +0 -26
- office365/directory/security/subjectrightsrequests/identity.py +0 -21
- office365/directory/security/subjectrightsrequests/request.py +0 -6
- office365/directory/security/teams_message_evidence.py +0 -42
- office365/directory/security/threatintelligence/host.py +0 -138
- office365/directory/security/threatintelligence/host_component.py +0 -46
- office365/directory/security/threatintelligence/host_cookie.py +0 -41
- office365/directory/security/threatintelligence/host_logon_session_evidence.py +0 -21
- office365/directory/security/threatintelligence/host_pair.py +0 -41
- office365/directory/security/threatintelligence/host_port.py +0 -57
- office365/directory/security/threatintelligence/host_port_component.py +0 -19
- office365/directory/security/threatintelligence/host_reputation.py +0 -16
- office365/directory/security/threatintelligence/host_reputation_rule.py +0 -16
- office365/directory/security/threatintelligence/host_ssl_certificate.py +0 -43
- office365/directory/security/threatintelligence/host_tracker.py +0 -41
- office365/directory/security/threatintelligence/profile.py +0 -56
- office365/directory/security/threatintelligence/threat_intelligence.py +0 -193
- office365/directory/security/timeline_event.py +0 -19
- office365/directory/security/triggers/root.py +0 -9
- office365/directory/security/triggertypes/collection.py +0 -9
- office365/directory/security/triggertypes/root.py +0 -24
- office365/directory/security/unified_group_source.py +0 -22
- office365/directory/security/user_account.py +0 -27
- office365/directory/security/user_evidence.py +0 -17
- office365/directory/security/user_source.py +0 -27
- office365/directory/security/vm_metadata.py +0 -16
- office365/directory/security/vulnerability.py +0 -74
- office365/directory/security/whois_base_record.py +0 -59
- office365/externalconnectors/binary_operator.py +0 -12
- office365/externalconnectors/connection_operation_status.py +0 -15
- office365/externalconnectors/connection_state.py +0 -15
- office365/externalconnectors/external_activity_type.py +0 -15
- office365/externalconnectors/external_item_content_type.py +0 -13
- office365/intune/brand.py +0 -21
- office365/intune/instance_resource_access.py +0 -19
- office365/intune/provisioned_plan.py +0 -27
- office365/migration/_util.py +0 -73
- office365/onenote/operations/operation.py +0 -35
- office365/partners/billing/billing_period.py +0 -13
- office365/partners/billing/billing_reconciliation.py +0 -26
- office365/sharepoint/contentcenter/machinelearning/publications/result.py +0 -9
- office365/sharepoint/customactions/action.py +0 -36
- office365/sharepoint/listitems/caml/types.py +0 -70
- office365/sharepoint/publishing/pages/3d/page.py +0 -325
- office365_rest_python_client-3.1.0.dist-info/METADATA +0 -475
- office365_rest_python_client-3.1.0.dist-info/RECORD +0 -5686
- /office365/{directory/security → common}/__init__.py +0 -0
- /office365/{intune → directory/applications}/resource_permission.py +0 -0
- /office365/directory/identitygovernance/{workflow_subject.py → workflow/subject.py} +0 -0
- /office365/{directory/security/alerts → intune/devices/configurations/macos}/__init__.py +0 -0
- /office365/{directory/security/attacksimulations → intune/devices/configurations/windows/_10}/__init__.py +0 -0
- /office365/intune/devices/configurations/windows/{10 → _10}/editiontype.py +0 -0
- /office365/intune/{enrollment_state.py → devices/management/enrollment_state.py} +0 -0
- /office365/{directory/security/attacksimulations/operations → intune/devices/management/mobileapps/macos}/__init__.py +0 -0
- /office365/intune/{package_status.py → devices/management/package_status.py} +0 -0
- /office365/intune/{process_integrity_level.py → devices/management/process_integrity_level.py} +0 -0
- /office365/{directory/security/attacksimulations/reports → planner/internal}/__init__.py +0 -0
- /office365/{directory/security/attacksimulations/users → planner/internal/paths}/__init__.py +0 -0
- /office365/runtime/{decorators.py → deprecated.py} +0 -0
- /office365/{directory/security/audit → security}/__init__.py +0 -0
- /office365/{directory/security → security}/a365_ai_inference_call.py +0 -0
- /office365/{directory/security → security}/a365_ai_invoke_agent.py +0 -0
- /office365/{directory/security → security}/a365_ai_run_summary.py +0 -0
- /office365/{directory/security → security}/a365_span_outputs.py +0 -0
- /office365/{directory/security → security}/action.py +0 -0
- /office365/{directory/security → security}/aed_audit_record.py +0 -0
- /office365/{directory/security → security}/agent_admin_activity_record.py +0 -0
- /office365/{directory/security → security}/agent_setting_admin_activity.py +0 -0
- /office365/{directory/security → security}/ai_agent_platform.py +0 -0
- /office365/{directory/security → security}/aip_discover.py +0 -0
- /office365/{directory/security → security}/aip_file_deleted.py +0 -0
- /office365/{directory/security → security}/aip_heart_beat.py +0 -0
- /office365/{directory/security → security}/aip_protection_action_log_request.py +0 -0
- /office365/{directory/security → security}/aip_scanner_discover_event.py +0 -0
- /office365/{directory/security → security}/aip_sensitivity_label_action_log_request.py +0 -0
- /office365/{directory/security → security}/air_admin_action_investigation_data.py +0 -0
- /office365/{directory/security → security}/air_investigation_data.py +0 -0
- /office365/{directory/security/cases → security/alerts}/__init__.py +0 -0
- /office365/{directory/security → security}/alerts/active_directory_domain_evidence.py +0 -0
- /office365/{directory/security → security}/alerts/antispamteamsdirection.py +0 -0
- /office365/{directory/security → security}/alerts/azure_resource_evidence.py +0 -0
- /office365/{directory/security → security}/alerts/classification.py +0 -0
- /office365/{directory/security → security}/alerts/comment.py +0 -0
- /office365/{directory/security → security}/alerts/connection_direction.py +0 -0
- /office365/{directory/security → security}/alerts/connectionstatus.py +0 -0
- /office365/{directory/security → security}/alerts/defenderavstatus.py +0 -0
- /office365/{directory/security → security}/alerts/detectionsource.py +0 -0
- /office365/{directory/security → security}/alerts/detectionstatus.py +0 -0
- /office365/{directory/security → security}/alerts/determination.py +0 -0
- /office365/{directory/security → security}/alerts/emailrole.py +0 -0
- /office365/{directory/security → security}/alerts/evidenceremediationstatus.py +0 -0
- /office365/{directory/security → security}/alerts/evidencerole.py +0 -0
- /office365/{directory/security → security}/alerts/evidenceverdict.py +0 -0
- /office365/{directory/security → security}/alerts/feedback.py +0 -0
- /office365/{directory/security → security}/alerts/googlecloudlocationtype.py +0 -0
- /office365/{directory/security → security}/alerts/iotdeviceimportancetype.py +0 -0
- /office365/{directory/security → security}/alerts/kubernetesplatform.py +0 -0
- /office365/{directory/security → security}/alerts/kubernetesservicetype.py +0 -0
- /office365/{directory/security → security}/alerts/logontype.py +0 -0
- /office365/{directory/security → security}/alerts/registryhive.py +0 -0
- /office365/{directory/security → security}/alerts/registryoperation.py +0 -0
- /office365/{directory/security → security}/alerts/registryvaluetype.py +0 -0
- /office365/{directory/security → security}/alerts/securitynetworkprotocol.py +0 -0
- /office365/{directory/security → security}/alerts/securityresourcetype.py +0 -0
- /office365/{directory/security → security}/alerts/severity.py +0 -0
- /office365/{directory/security → security}/alerts/status.py +0 -0
- /office365/{directory/security → security}/alerts/useraccountsecuritytype.py +0 -0
- /office365/{directory/security → security}/amazon_resource_evidence.py +0 -0
- /office365/{directory/security → security}/antispam_directionality.py +0 -0
- /office365/{directory/security → security}/artifact.py +0 -0
- /office365/{directory/security/collaboration → security/attacksimulations}/__init__.py +0 -0
- /office365/{directory/security → security}/attacksimulations/account_target_content_type.py +0 -0
- /office365/{directory/security → security}/attacksimulations/clicksource.py +0 -0
- /office365/{directory/security → security}/attacksimulations/endusernotificationpreference.py +0 -0
- /office365/{directory/security → security}/attacksimulations/endusernotificationsettingtype.py +0 -0
- /office365/{directory/security → security}/attacksimulations/endusernotificationtype.py +0 -0
- /office365/{directory/security → security}/attacksimulations/notificationdeliveryfrequency.py +0 -0
- /office365/{directory/security → security}/attacksimulations/notificationdeliverypreference.py +0 -0
- /office365/{directory/security → security}/attacksimulations/oauthappscope.py +0 -0
- /office365/{directory/security/datasecurity → security/attacksimulations/operations}/__init__.py +0 -0
- /office365/{directory/security → security}/attacksimulations/operations/type.py +0 -0
- /office365/{directory/security → security}/attacksimulations/payloadbrand.py +0 -0
- /office365/{directory/security → security}/attacksimulations/payloadcomplexity.py +0 -0
- /office365/{directory/security → security}/attacksimulations/payloaddeliveryplatform.py +0 -0
- /office365/{directory/security → security}/attacksimulations/payloadindustry.py +0 -0
- /office365/{directory/security → security}/attacksimulations/payloadtheme.py +0 -0
- /office365/{directory/security/ediscovery → security/attacksimulations/reports}/__init__.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationattacktechnique.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationattacktype.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationautomationrunstatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationautomationstatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationcontentsource.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationcontentstatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/simulationstatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/targettedusertype.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingassignedto.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingavailabilitystatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingcompletionduration.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingsettingtype.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingstatus.py +0 -0
- /office365/{directory/security → security}/attacksimulations/trainingtype.py +0 -0
- /office365/{directory/security/ediscovery/operations → security/attacksimulations/users}/__init__.py +0 -0
- /office365/{directory/security → security}/attribute_definition_metadata_entry.py +0 -0
- /office365/{directory/security → security}/attribute_mapping_parameter_schema.py +0 -0
- /office365/{directory/security/healthissues → security/audit}/__init__.py +0 -0
- /office365/{directory/security → security}/audit/a365_ai_execute_tool.py +0 -0
- /office365/{directory/security → security}/audit/aad_risk_detection_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_app_interaction_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_execute_tool_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_interactions_change_notification_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_interactions_export_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_interactions_subscription_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_invoke_agent_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ai_span_outputs_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/air_manual_investigation_data.py +0 -0
- /office365/{directory/security → security}/audit/alert_submission_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/alert_submission_result_detail_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/attack_sim_admin_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/attack_sim_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/audit_config_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/audit_log_query_status.py +0 -0
- /office365/{directory/security → security}/audit/audit_record_type_dictionary.py +0 -0
- /office365/{directory/security → security}/audit/audit_search_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/azfw_application_rule_aggregation_event_record.py +0 -0
- /office365/{directory/security → security}/audit/azfw_dns_query_event_record.py +0 -0
- /office365/{directory/security → security}/audit/azfw_network_rule_event_record.py +0 -0
- /office365/{directory/security → security}/audit/azure_active_directory_account_logon_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/azure_active_directory_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/azure_active_directory_sts_logon_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/azure_ai_search_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/campaign_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ccrai_policy_violation_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_classifier_health_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_cold_crawl_status_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_consumption_resource_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_content_explorer_aggregate_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_dlp_sensitive_endpoint_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_log_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_ocr_billing_record.py +0 -0
- /office365/{directory/security → security}/audit/cdp_resource_scope_change_event_record.py +0 -0
- /office365/{directory/security → security}/audit/cdpdlmai_interaction_insights_record.py +0 -0
- /office365/{directory/security → security}/audit/cloud_update_device_config_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/cloud_update_profile_config_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/cloud_update_tenant_config_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_connector_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlm_exchange_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlm_share_point_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_applications_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_applications_classification_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_endpoint_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_endpoint_discovery_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_enforcement_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_exchange_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_exchange_classification_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_exchange_classification_cdp_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_exchange_discovery_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_share_point_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_share_point_classification_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_share_point_classification_cdp_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_dlp_share_point_classification_extended_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_exchange_ocr_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_manager_action_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_policy_grading_share_point_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_settings_change_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_sit_grading_share_point_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/compliance_supervision_exchange_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/connected_ai_app_interaction_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/consumption_resource_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/content_store_metadata_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_agent_management_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_for_security_logging_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_for_security_trigger_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_interaction_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_plugin_setting_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_prompt_book_setting_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_session_sharing_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_setting_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/copilot_workspace_setting_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/core_reporting_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/critical_asset_management_classification_record.py +0 -0
- /office365/{directory/security → security}/audit/crm_entity_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/cross_tenant_access_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/device_discovery_settings_authenticated_scans_record.py +0 -0
- /office365/{directory/security → security}/audit/device_discovery_settings_exclusion_record.py +0 -0
- /office365/{directory/security → security}/audit/device_discovery_settings_record.py +0 -0
- /office365/{directory/security → security}/audit/discovery_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/dlp_endpoint_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/dlp_import_result_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/dragon_copilot_access_record.py +0 -0
- /office365/{directory/security → security}/audit/dragon_copilot_admin_record.py +0 -0
- /office365/{directory/security → security}/audit/dragon_copilot_clinical_data_record.py +0 -0
- /office365/{directory/security → security}/audit/dragon_copilot_session_record.py +0 -0
- /office365/{directory/security → security}/audit/dynamics365_business_central_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/ehr_connector_audit_base_record.py +0 -0
- /office365/{directory/security → security}/audit/eop_submission_feed_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/exchange_admin_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/exchange_aggregated_mailbox_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/exchange_aggregated_operation_record.py +0 -0
- /office365/{directory/security → security}/audit/exchange_mailbox_audit_group_record.py +0 -0
- /office365/{directory/security → security}/audit/exchange_mailbox_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/hosted_rpa_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/hr_signal_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/hygiene_event_record.py +0 -0
- /office365/{directory/security → security}/audit/information_barrier_policy_application_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/information_worker_protection_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/insider_risk_scoped_user_insights_record.py +0 -0
- /office365/{directory/security → security}/audit/insider_risk_scoped_users_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_stream_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_admin_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_analytics_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_device_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_retention_label_action_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_sensitivity_label_action_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_shifts_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/microsoft_teams_user_concern_audit_record.py +0 -0
- /office365/{directory/security → security}/audit/multi_tenant_organization_join_request_transition_details.py +0 -0
- /office365/{directory/security → security}/audit/multi_tenant_organization_member_transition_details.py +0 -0
- /office365/{directory/security → security}/audit/whois_domain_status.py +0 -0
- /office365/{directory/security → security}/audit/whois_history_record.py +0 -0
- /office365/{directory/security → security}/authority_template.py +0 -0
- /office365/{directory/security → security}/auto_auditing_configuration.py +0 -0
- /office365/{directory/security → security}/autonomous_system.py +0 -0
- /office365/{directory/security/incidents → security/cases}/__init__.py +0 -0
- /office365/{directory/security → security}/cases/action.py +0 -0
- /office365/{directory/security → security}/cases/additionaldataoptions.py +0 -0
- /office365/{directory/security → security}/cases/additionaloptions.py +0 -0
- /office365/{directory/security → security}/cases/exportcriteria.py +0 -0
- /office365/{directory/security → security}/cases/exportfilestructure.py +0 -0
- /office365/{directory/security → security}/cases/exportformat.py +0 -0
- /office365/{directory/security → security}/cases/exportlocation.py +0 -0
- /office365/{directory/security → security}/cases/exportoptions.py +0 -0
- /office365/{directory/security → security}/cases/itemstoinclude.py +0 -0
- /office365/{directory/security → security}/cases/operationstatus.py +0 -0
- /office365/{directory/security → security}/cases/reviewsetsettings.py +0 -0
- /office365/{directory/security → security}/cases/statisticsoptions.py +0 -0
- /office365/{directory/security → security}/cases/status.py +0 -0
- /office365/{directory/security → security}/cases/type.py +0 -0
- /office365/{directory/security → security}/childselectability.py +0 -0
- /office365/{directory/security → security}/citation_template.py +0 -0
- /office365/{directory/security → security}/cloud_logon_request_evidence.py +0 -0
- /office365/{directory/security → security}/cloudattachmentversion.py +0 -0
- /office365/{directory/security/labels → security/collaboration}/__init__.py +0 -0
- /office365/{directory/security → security}/collaboration/analyzed_email_authentication_detail.py +0 -0
- /office365/{directory/security → security}/collaboration/analyzed_email_dlp_rule_info.py +0 -0
- /office365/{directory/security → security}/collaboration/analyzed_email_exchange_transport_rule_info.py +0 -0
- /office365/{directory/security → security}/collaboration/analyzed_email_recipient_detail.py +0 -0
- /office365/{directory/security → security}/collaboration/analyzed_email_sender_detail.py +0 -0
- /office365/{directory/security → security}/container_filter.py +0 -0
- /office365/{directory/security → security}/container_registry_evidence.py +0 -0
- /office365/{directory/security → security}/containerportprotocol.py +0 -0
- /office365/{directory/security → security}/contentformat.py +0 -0
- /office365/{directory/security → security}/contentprocessingerrortype.py +0 -0
- /office365/{directory/security → security}/correlation_reason.py +0 -0
- /office365/{directory/security → security}/cortana_briefing_audit_record.py +0 -0
- /office365/{directory/security → security}/custom_security_attribute_comparison_operator.py +0 -0
- /office365/{directory/security → security}/customer_key_service_encryption_audit_record.py +0 -0
- /office365/{directory/security → security}/data_center_security_cmdlet_audit_record.py +0 -0
- /office365/{directory/security → security}/data_governance_audit_record.py +0 -0
- /office365/{directory/security → security}/data_insights_rest_api_audit_record.py +0 -0
- /office365/{directory/security → security}/data_lake_export_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/data_set.py +0 -0
- /office365/{directory/security → security}/data_share_operation_audit_record.py +0 -0
- /office365/{directory/security/labels/retention → security/datasecurity}/__init__.py +0 -0
- /office365/{directory/security → security}/datasecurity/classification_inner_error.py +0 -0
- /office365/{directory/security → security}/datasecurity/custom_metadata_dictionary.py +0 -0
- /office365/{directory/security → security}/datasecurity/dlp_action_info.py +0 -0
- /office365/{directory/security → security}/datasecurity/integrated_application_metadata.py +0 -0
- /office365/{directory/security/data_security_investigation_audit_record.py → security/datasecurity/investigation_audit_record.py} +0 -0
- /office365/{directory/security → security}/datasecurity/policy_binding.py +0 -0
- /office365/{directory/security → security}/datasecurity/policy_location.py +0 -0
- /office365/{directory/security → security}/datasecurity/policy_location_application.py +0 -0
- /office365/{directory/security → security}/datasecurity/policy_location_domain.py +0 -0
- /office365/{directory/security → security}/datasecurity/policy_location_url.py +0 -0
- /office365/{directory/security → security}/datasecurity/policy_user_scope.py +0 -0
- /office365/{directory/security → security}/datasecurity/process_conversation_metadata.py +0 -0
- /office365/{directory/security → security}/datasecurity/protected_content.py +0 -0
- /office365/{directory/security → security}/default_audit_data.py +0 -0
- /office365/{directory/security → security}/defender_case_management_audit_record.py +0 -0
- /office365/{directory/security → security}/defender_preview_features_record.py +0 -0
- /office365/{directory/security → security}/defender_security_for_ai_configuration_audit_record.py +0 -0
- /office365/{directory/security → security}/delivery_action.py +0 -0
- /office365/{directory/security → security}/delivery_location.py +0 -0
- /office365/{directory/security → security}/department_template.py +0 -0
- /office365/{directory/security → security}/deploy_feature_activity_record.py +0 -0
- /office365/{directory/security → security}/deployment_access_key_type.py +0 -0
- /office365/{directory/security → security}/detonation_behaviour_details.py +0 -0
- /office365/{directory/security → security}/detonation_chain.py +0 -0
- /office365/{directory/security → security}/detonation_observables.py +0 -0
- /office365/{directory/security → security}/dictionary.py +0 -0
- /office365/{directory/security → security}/dlp_sensitive_information_type_rule_package_cmdlet_record.py +0 -0
- /office365/{directory/security → security}/dynamic_column_value.py +0 -0
- /office365/{directory/security/scorecontrol → security/ediscovery}/__init__.py +0 -0
- /office365/{directory/security/search → security/ediscovery/operations}/__init__.py +0 -0
- /office365/{directory/security → security}/email_sender.py +0 -0
- /office365/{directory/security → security}/event_source.py +0 -0
- /office365/{directory/security → security}/export_file_metadata.py +0 -0
- /office365/{directory/security → security}/fabric_audit_record.py +0 -0
- /office365/{directory/security → security}/fabric_policy_record.py +0 -0
- /office365/{directory/security → security}/file_details.py +0 -0
- /office365/{directory/security → security}/file_plan_authority.py +0 -0
- /office365/{directory/security → security}/file_plan_citation.py +0 -0
- /office365/{directory/security → security}/file_plan_department.py +0 -0
- /office365/{directory/security → security}/file_plan_descriptor_base.py +0 -0
- /office365/{directory/security → security}/file_plan_descriptor_template.py +0 -0
- /office365/{directory/security → security}/file_plan_reference.py +0 -0
- /office365/{directory/security → security}/file_plan_reference_template.py +0 -0
- /office365/{directory/security → security}/file_plan_subcategory.py +0 -0
- /office365/{directory/security → security}/filehashalgorithm.py +0 -0
- /office365/{directory/security → security}/filter_operand.py +0 -0
- /office365/{directory/security → security}/geo_location.py +0 -0
- /office365/{directory/security → security}/git_hub_organization_evidence.py +0 -0
- /office365/{directory/security → security}/git_hub_repo_evidence.py +0 -0
- /office365/{directory/security → security}/git_hub_user_evidence.py +0 -0
- /office365/{directory/security → security}/group_filter.py +0 -0
- /office365/{directory/security → security}/healthcare_signal_record.py +0 -0
- /office365/{directory/security/securescores → security/healthissues}/__init__.py +0 -0
- /office365/{directory/security → security}/healthissues/deploymentstatus.py +0 -0
- /office365/{directory/security → security}/healthissues/sensorhealthstatus.py +0 -0
- /office365/{directory/security → security}/healthissues/sensortype.py +0 -0
- /office365/{directory/security → security}/healthissues/severity.py +0 -0
- /office365/{directory/security → security}/healthissues/sourcetype.py +0 -0
- /office365/{directory/security → security}/healthissues/status.py +0 -0
- /office365/{directory/security → security}/healthissues/type.py +0 -0
- /office365/{directory/security → security}/hunting_row_result.py +0 -0
- /office365/{directory/security/subjectrightsrequests → security/incidents}/__init__.py +0 -0
- /office365/{directory/security → security}/incidents/status.py +0 -0
- /office365/{directory/security → security}/indicator_source.py +0 -0
- /office365/{directory/security → security}/integrated_apps_app_admin_activity_audit_record.py +0 -0
- /office365/{directory/security → security}/integrated_apps_app_settings_admin_activity_audit_record.py +0 -0
- /office365/{directory/security → security}/intelligence_profile_indicator.py +0 -0
- /office365/{directory/security → security}/intelligence_profile_kind.py +0 -0
- /office365/{directory/security → security}/investigation_state.py +0 -0
- /office365/{directory/security → security}/irm_activity_audit_trail_record.py +0 -0
- /office365/{directory/security → security}/irm_user_defined_detection_record.py +0 -0
- /office365/{directory/security → security}/kaizala_audit_record.py +0 -0
- /office365/{directory/security/threatintelligence → security/labels}/__init__.py +0 -0
- /office365/{directory/security/label_analytics_aggregate_audit_record.py → security/labels/analytics_aggregate_audit_record.py} +0 -0
- /office365/{directory/security/label_content_explorer_audit_record.py → security/labels/content_explorer_audit_record.py} +0 -0
- /office365/{directory/security/threatintelligence/hosts → security/labels/retention}/__init__.py +0 -0
- /office365/{directory/security → security}/labels/retention/actionafterretentionperiod.py +0 -0
- /office365/{directory/security → security}/labels/retention/behaviorduringretentionperiod.py +0 -0
- /office365/{directory/security → security}/labels/retention/defaultrecordbehavior.py +0 -0
- /office365/{directory/security → security}/labels/retention/disposition_review_stage.py +0 -0
- /office365/{directory/security → security}/labels/retention/duration.py +0 -0
- /office365/{directory/security → security}/labels/retention/trigger.py +0 -0
- /office365/{directory/security → security}/large_content_metadata_audit_record.py +0 -0
- /office365/{directory/security → security}/logged_on_user.py +0 -0
- /office365/{directory/security → security}/m365_compliance_connector_audit_record.py +0 -0
- /office365/{directory/security → security}/m365_search_sections_record.py +0 -0
- /office365/{directory/security → security}/m365daad_audit_record.py +0 -0
- /office365/{directory/security → security}/m365odsp_asset_metadata_record.py +0 -0
- /office365/{directory/security → security}/mail_cluster_evidence.py +0 -0
- /office365/{directory/security → security}/mail_submission_data.py +0 -0
- /office365/{directory/security → security}/mailbox_configuration_type.py +0 -0
- /office365/{directory/security → security}/managed_services_audit_record.py +0 -0
- /office365/{directory/security → security}/managed_tenants_audit_record.py +0 -0
- /office365/{directory/security → security}/mapg_alerts_audit_record.py +0 -0
- /office365/{directory/security → security}/mapg_onboard_audit_record.py +0 -0
- /office365/{directory/security → security}/mapg_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/mapg_remediation_audit_record.py +0 -0
- /office365/{directory/security → security}/mcas_alerts_audit_record.py +0 -0
- /office365/{directory/security → security}/mda_audit_record.py +0 -0
- /office365/{directory/security → security}/mda_data_security_signal_record.py +0 -0
- /office365/{directory/security → security}/mdash_audit_record.py +0 -0
- /office365/{directory/security → security}/mdatp_audit_record.py +0 -0
- /office365/{directory/security → security}/mdc_events_record.py +0 -0
- /office365/{directory/security → security}/mdi_audit_record.py +0 -0
- /office365/{directory/security → security}/merge_response.py +0 -0
- /office365/{directory/security → security}/mesh_worlds_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_backup_backup_item_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_backup_backup_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_backup_granular_browse_task_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_backup_restore_item_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_backup_restore_task_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft365_copilot_scheduled_prompt_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft_defender_experts_xdr_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft_flow_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft_forms_audit_record.py +0 -0
- /office365/{directory/security → security}/microsoft_graph_data_connect_consent.py +0 -0
- /office365/{directory/security → security}/microsoft_graph_data_connect_operation.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_data_catalog_operation_record.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_data_map_operation_record.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_metadata_policy_operation_record.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_policy_operation_record.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_privacy_audit_event.py +0 -0
- /office365/{directory/security → security}/microsoft_purview_unified_catalog_operation_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_exchange_item_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_progress_feedback_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_share_point_item_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_share_point_policy_location_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_simulation_share_point_completion_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_simulation_share_point_progress_record.py +0 -0
- /office365/{directory/security → security}/mip_auto_label_simulation_statistics_record.py +0 -0
- /office365/{directory/security → security}/mip_exact_data_match_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_label_analytics_audit_record.py +0 -0
- /office365/{directory/security → security}/mip_label_audit_record.py +0 -0
- /office365/{directory/security → security}/mos_agent_info_record.py +0 -0
- /office365/{directory/security → security}/mos_agent_info_record_v2.py +0 -0
- /office365/{directory/security → security}/ms365d_custom_detection_audit_record.py +0 -0
- /office365/{directory/security → security}/ms365d_incident_audit_record.py +0 -0
- /office365/{directory/security → security}/ms365d_suppression_rule_audit_record.py +0 -0
- /office365/{directory/security → security}/msde_custom_collection_audit_record.py +0 -0
- /office365/{directory/security → security}/msde_general_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/msde_indicators_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/msde_response_actions_audit_record.py +0 -0
- /office365/{directory/security → security}/msde_roles_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/msp_vector_search_content_metadata_audit_record.py +0 -0
- /office365/{directory/security → security}/mstic_nation_state_notification_record.py +0 -0
- /office365/{directory/security → security}/multi_stage_disposition_audit_record.py +0 -0
- /office365/{directory/security → security}/my_analytics_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/network_adapter.py +0 -0
- /office365/{directory/security → security}/noisy_alert_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/oauth_application_evidence.py +0 -0
- /office365/{directory/security → security}/object_definition_metadata_entry.py +0 -0
- /office365/{directory/security → security}/object_mapping_metadata_entry.py +0 -0
- /office365/{directory/security → security}/ocr_settings.py +0 -0
- /office365/{directory/security → security}/office_native_audit_record.py +0 -0
- /office365/{directory/security → security}/ome_portal_audit_record.py +0 -0
- /office365/{directory/security → security}/on_demand_share_point_classification_audit_record.py +0 -0
- /office365/{directory/security → security}/on_premises_file_share_scanner_dlp_audit_record.py +0 -0
- /office365/{directory/security → security}/on_premises_share_point_scanner_dlp_audit_record.py +0 -0
- /office365/{directory/security → security}/onboarding_status.py +0 -0
- /office365/{directory/security → security}/one_drive_audit_record.py +0 -0
- /office365/{directory/security → security}/organizational_data_in_m365_audit_record.py +0 -0
- /office365/{directory/security → security}/outlook_copilot_automation_audit_record.py +0 -0
- /office365/{directory/security → security}/owa_get_access_token_for_resource_audit_record.py +0 -0
- /office365/{directory/security → security}/p4_ai_risk_score_record.py +0 -0
- /office365/{directory/security → security}/p4ai_assessment_category_record.py +0 -0
- /office365/{directory/security → security}/p4ai_assessment_fabric_scanner_record.py +0 -0
- /office365/{directory/security → security}/p4ai_assessment_location_result_record.py +0 -0
- /office365/{directory/security → security}/p4ai_assessment_record.py +0 -0
- /office365/{directory/security → security}/people_admin_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/physical_badging_signal_audit_record.py +0 -0
- /office365/{directory/security → security}/places_directory_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_chat_message_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_chat_message_list_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_copy_plan_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_goal_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_goal_list_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_plan_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_plan_list_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_plan_sensitivity_label_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_roster_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_roster_sensitivity_label_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_task_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_task_list_audit_record.py +0 -0
- /office365/{directory/security → security}/planner_tenant_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/policy_config_change_audit_record.py +0 -0
- /office365/{directory/security → security}/policypivotproperty.py +0 -0
- /office365/{directory/security → security}/power_apps_audit_app_record.py +0 -0
- /office365/{directory/security → security}/power_apps_audit_plan_record.py +0 -0
- /office365/{directory/security → security}/power_apps_audit_resource_record.py +0 -0
- /office365/{directory/security → security}/power_bi_audit_record.py +0 -0
- /office365/{directory/security → security}/power_bi_dlp_audit_record.py +0 -0
- /office365/{directory/security → security}/power_pages_site_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_admin_dlp_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_admin_environment_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_administrator_activity_record.py +0 -0
- /office365/{directory/security → security}/power_platform_lockbox_resource_access_request_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_lockbox_resource_command_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_service_activity_audit_record.py +0 -0
- /office365/{directory/security → security}/power_platform_tenant_isolation_record.py +0 -0
- /office365/{directory/security → security}/priva_privacy_assessment_operation_record.py +0 -0
- /office365/{directory/security → security}/priva_privacy_consent_operation_record.py +0 -0
- /office365/{directory/security → security}/privacy_data_match_audit_record.py +0 -0
- /office365/{directory/security → security}/privacy_data_minimization_record.py +0 -0
- /office365/{directory/security → security}/privacy_digest_email_record.py +0 -0
- /office365/{directory/security → security}/privacy_open_access_audit_record.py +0 -0
- /office365/{directory/security → security}/privacy_portal_audit_record.py +0 -0
- /office365/{directory/security → security}/privacy_remediation_action_record.py +0 -0
- /office365/{directory/security → security}/privacy_remediation_record.py +0 -0
- /office365/{directory/security → security}/project_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_assigned_to_me_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_project_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_project_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_roadmap_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_roadmap_item_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_roadmap_settings_audit_record.py +0 -0
- /office365/{directory/security → security}/project_for_the_web_task_audit_record.py +0 -0
- /office365/{directory/security → security}/protectionscopestate.py +0 -0
- /office365/{directory/security → security}/protocol_type.py +0 -0
- /office365/{directory/security → security}/public_error_response.py +0 -0
- /office365/{directory/security → security}/public_folder_audit_record.py +0 -0
- /office365/{directory/security → security}/purgeareas.py +0 -0
- /office365/{directory/security → security}/purgetype.py +0 -0
- /office365/{directory/security → security}/purview_insider_risk_alerts_record.py +0 -0
- /office365/{directory/security → security}/purview_insider_risk_cases_record.py +0 -0
- /office365/{directory/security → security}/purview_mc_recommendation_record.py +0 -0
- /office365/{directory/security → security}/purview_posture_agent_audit_record.py +0 -0
- /office365/{directory/security → security}/quarantine_audit_record.py +0 -0
- /office365/{directory/security → security}/query_type.py +0 -0
- /office365/{directory/security → security}/recipient_type.py +0 -0
- /office365/{directory/security → security}/records_management_audit_record.py +0 -0
- /office365/{directory/security → security}/redundancy_detection_settings.py +0 -0
- /office365/{directory/security → security}/referenced_object.py +0 -0
- /office365/{directory/security → security}/registry_key_evidence.py +0 -0
- /office365/{directory/security → security}/registry_value_evidence.py +0 -0
- /office365/{directory/security → security}/remediation_action.py +0 -0
- /office365/{directory/security → security}/remediation_severity.py +0 -0
- /office365/{directory/security → security}/report_file_metadata.py +0 -0
- /office365/{directory/security → security}/report_submission.py +0 -0
- /office365/{directory/security → security}/report_submission_result_detail.py +0 -0
- /office365/{directory/security → security}/resource_access_event.py +0 -0
- /office365/{directory/security → security}/restricted_mode_audit_record.py +0 -0
- /office365/{directory/security → security}/restrictionaction.py +0 -0
- /office365/{directory/security → security}/retention_duration_forever.py +0 -0
- /office365/{directory/security → security}/retention_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/riskscore.py +0 -0
- /office365/{directory/security → security}/rti_operations_agent_audit_record.py +0 -0
- /office365/{directory/security → security}/sbp_configuration_event_record.py +0 -0
- /office365/{directory/security → security}/sbp_usage_event_record.py +0 -0
- /office365/{directory/security → security}/score_evidence.py +0 -0
- /office365/{directory/security → security}/score_platform_generic_audit_record.py +0 -0
- /office365/{directory/security/threatintelligence/whoisrecords → security/scorecontrol}/__init__.py +0 -0
- /office365/{directory/security → security}/script_run_audit_record.py +0 -0
- /office365/{directory/security/triggers → security/search}/__init__.py +0 -0
- /office365/{directory/security/search_audit_record.py → security/search/audit_record.py} +0 -0
- /office365/{directory/security → security}/search/datasourcecontainerstatus.py +0 -0
- /office365/{directory/security → security}/search/datasourceholdstatus.py +0 -0
- /office365/{directory/security → security}/search/datasourcescopes.py +0 -0
- /office365/{directory/security → security}/search/documentversion.py +0 -0
- /office365/{directory/security → security}/search.py +0 -0
- /office365/{directory/security/triggertypes → security/securescores}/__init__.py +0 -0
- /office365/{directory/security → security}/security_compliance_alert_record.py +0 -0
- /office365/{directory/security → security}/security_compliance_center_eop_cmdlet_audit_record.py +0 -0
- /office365/{directory/security → security}/security_compliance_insights_audit_record.py +0 -0
- /office365/{directory/security → security}/security_compliance_rbac_audit_record.py +0 -0
- /office365/{directory/security → security}/security_compliance_user_change_audit_record.py +0 -0
- /office365/{directory/security → security}/security_copilot_identity_management_audit_record.py +0 -0
- /office365/{directory/security → security}/security_development_lifecycle_ai_log_audit_record.py +0 -0
- /office365/{directory/security → security}/security_group_evidence.py +0 -0
- /office365/{directory/security → security}/sensitive_info_remediation_agent_data_record.py +0 -0
- /office365/{directory/security → security}/sensitivity_label_action_audit_record.py +0 -0
- /office365/{directory/security → security}/sensitivity_label_policy_match_audit_record.py +0 -0
- /office365/{directory/security → security}/sensitivity_labeled_file_action_audit_record.py +0 -0
- /office365/{directory/security → security}/sensor_candidate.py +0 -0
- /office365/{directory/security → security}/sensor_candidate_activation_mode.py +0 -0
- /office365/{directory/security → security}/sensor_deployment_package.py +0 -0
- /office365/{directory/security → security}/sentinel_ai_tool_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_graph_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_job_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_kql_on_lake_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_lake_data_onboarding_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_lake_encryption_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_lake_onboarding_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_notebook_on_lake_audit_record.py +0 -0
- /office365/{directory/security → security}/sentinel_package_audit_record.py +0 -0
- /office365/{directory/security → security}/service_principal_type.py +0 -0
- /office365/{directory/security → security}/service_source.py +0 -0
- /office365/{directory/security → security}/share_point_app_permission_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_comment_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_content_security_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_content_type_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_e_signature_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_field_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_file_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_list_item_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_list_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/share_point_sharing_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/single_property_schema.py +0 -0
- /office365/{directory/security → security}/site_source.py +0 -0
- /office365/{directory/security → security}/skype_for_business_cmdlets_audit_record.py +0 -0
- /office365/{directory/security → security}/skype_for_business_pstn_usage_audit_record.py +0 -0
- /office365/{directory/security → security}/skype_for_business_users_blocked_audit_record.py +0 -0
- /office365/{directory/security → security}/sonar_detonation_content_metadata.py +0 -0
- /office365/{directory/security → security}/sonar_detonation_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/sonar_file_detonation_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/sonar_submission_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/sonar_url_detonation_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/spark_core_custom_live_pool_record.py +0 -0
- /office365/{directory/security → security}/stream.py +0 -0
- /office365/{directory/security → security}/string_key_long_value_pair.py +0 -0
- /office365/{directory/security → security}/string_key_object_value_pair.py +0 -0
- /office365/{directory/security → security}/string_key_string_value_pair.py +0 -0
- /office365/{directory/security → security}/string_value_dictionary.py +0 -0
- /office365/{directory/security → security}/subcategory_template.py +0 -0
- /office365/{intune/devices/configurations/windows/10 → security/subjectrightsrequests}/__init__.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/all_mailbox_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/all_site_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/data_subject.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/detail.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/enumerated_mailbox_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/enumerated_site_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/history.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/mailbox_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/site_location.py +0 -0
- /office365/{directory/security → security}/subjectrightsrequests/stage_detail.py +0 -0
- /office365/{directory/security → security}/submission_entity_audit_record.py +0 -0
- /office365/{directory/security → security}/submission_mail_evidence.py +0 -0
- /office365/{directory/security → security}/supervisory_review_day_x_insights_audit_record.py +0 -0
- /office365/{directory/security → security}/synthetic_probe_audit_record.py +0 -0
- /office365/{directory/security → security}/tag.py +0 -0
- /office365/{directory/security → security}/team_copilot_interaction_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_delivery_location.py +0 -0
- /office365/{directory/security → security}/teams_easy_approvals_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_eval_data_hub_admin_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_eval_data_hub_data_access_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_eval_data_hub_permission_change_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_healthcare_audit_record.py +0 -0
- /office365/{directory/security → security}/teams_message_delivery_action.py +0 -0
- /office365/{directory/security → security}/teams_updates_audit_record.py +0 -0
- /office365/{directory/security → security}/tenant_allow_block_list_audit_record.py +0 -0
- /office365/{directory/security → security}/threat_detection_detail.py +0 -0
- /office365/{directory/security → security}/threat_finder_audit_record.py +0 -0
- /office365/{directory/security → security}/threat_type.py +0 -0
- /office365/{sharepoint/publishing/pages/3d → security/threatintelligence}/__init__.py +0 -0
- /office365/{directory/security → security}/threatintelligence/article_indicator.py +0 -0
- /office365/{directory/security/threat_intelligence_atp_content_data.py → security/threatintelligence/atp_content_data.py} +0 -0
- /office365/{directory/security/threat_intelligence_export_audit_record.py → security/threatintelligence/export_audit_record.py} +0 -0
- /office365/{directory/security → security}/threatintelligence/host_port_banner.py +0 -0
- /office365/{directory/security → security}/threatintelligence/host_port_protocol.py +0 -0
- /office365/{directory/security → security}/threatintelligence/host_port_status.py +0 -0
- /office365/{directory/security → security}/threatintelligence/host_reputation_classification.py +0 -0
- /office365/{directory/security → security}/threatintelligence/host_reputation_rule_severity.py +0 -0
- /office365/{directory/security → security}/threatintelligence/hostname.py +0 -0
- /office365/{directory/security/threat_intelligence_mail_data.py → security/threatintelligence/mail_data.py} +0 -0
- /office365/{directory/security/threat_intelligence_object_audit_record.py → security/threatintelligence/object_audit_record.py} +0 -0
- /office365/{directory/security/threat_intelligence_url_click_data.py → security/threatintelligence/url_click_data.py} +0 -0
- /office365/{directory/security → security}/timeline_event_type.py +0 -0
- /office365/{directory/security → security}/todo_audit_record.py +0 -0
- /office365/{directory/security → security}/topic_modeling_settings.py +0 -0
- /office365/{directory/security → security}/trainable_classifier_audit_record.py +0 -0
- /office365/{directory/security → security}/triggers/eventpropagationstatus.py +0 -0
- /office365/{directory/security → security}/triggers/eventstatustype.py +0 -0
- /office365/{directory/security → security}/triggertypes/event_type.py +0 -0
- /office365/{directory/security → security}/uam_operation_audit_record.py +0 -0
- /office365/{directory/security → security}/unclassified_artifact.py +0 -0
- /office365/{directory/security → security}/unified_group_audit_record.py +0 -0
- /office365/{directory/security → security}/unified_simulation_matched_item_audit_record.py +0 -0
- /office365/{directory/security → security}/unified_simulation_summary_audit_record.py +0 -0
- /office365/{directory/security → security}/universal_print_management_audit_record.py +0 -0
- /office365/{directory/security → security}/universal_print_print_job_audit_record.py +0 -0
- /office365/{directory/security → security}/urbac_assignment_audit_record.py +0 -0
- /office365/{directory/security → security}/urbac_enable_state_audit_record.py +0 -0
- /office365/{directory/security → security}/urbac_role_audit_record.py +0 -0
- /office365/{directory/security → security}/url_evidence.py +0 -0
- /office365/{directory/security → security}/user_training_audit_record.py +0 -0
- /office365/{directory/security → security}/useractivitytype.py +0 -0
- /office365/{directory/security → security}/useractivitytypes.py +0 -0
- /office365/{directory/security → security}/userscopetype.py +0 -0
- /office365/{directory/security → security}/usx_workspace_onboarding_audit_record.py +0 -0
- /office365/{directory/security → security}/verdict_category.py +0 -0
- /office365/{directory/security → security}/vfam_create_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/vfam_delete_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/vfam_update_policy_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_amplify_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_engage_events_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_engage_network_association_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_engage_segment_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_advanced_configuration_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_agentic_campaign_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_feedback_program_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_organizational_data_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_pulse_program_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_pulse_program_respondent_rate_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_question_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_role_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_rubicon_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_support_access_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_system_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_user_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_glint_user_group_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_goals_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_learning_admin_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_learning_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_pulse_admin_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_pulse_organizer_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_pulse_report_audit_record.py +0 -0
- /office365/{directory/security → security}/viva_pulse_response_audit_record.py +0 -0
- /office365/{directory/security → security}/vm_cloud_provider.py +0 -0
- /office365/{directory/security → security}/vulnerability_component.py +0 -0
- /office365/{directory/security → security}/vulnerability_severity.py +0 -0
- /office365/{directory/security → security}/wdatp_alerts_audit_record.py +0 -0
- /office365/{directory/security → security}/web_content_filtering_audit_record.py +0 -0
- /office365/{directory/security → security}/windows365_customer_lockbox_audit_record.py +0 -0
- /office365/{directory/security → security}/workplace_analytics_audit_record.py +0 -0
- /office365/{directory/security → security}/yammer_audit_record.py +0 -0
- /office365/{directory/security → security}/yammer_user_hiding_audit_record.py +0 -0
- /office365/sharepoint/publishing/pages/{3d → _3d}/types.py +0 -0
- /office365/{intune/print → todo/tasks}/taskstatus.py +0 -0
- {office365_rest_python_client-3.1.0.dist-info → office365_rest_python_client-3.3.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,1426 @@
|
|
|
1
|
+
"""Capture and recreate a SharePoint list's *structure* (columns, content types, views).
|
|
2
|
+
|
|
3
|
+
A whole-site migration recreates each target list container, but content copied
|
|
4
|
+
into a list whose custom columns/content types/views do not exist yet has nowhere
|
|
5
|
+
to land. This module takes a **read-only, serializable snapshot** of a source
|
|
6
|
+
list's structure (:func:`capture_list_structure`) and can replay it onto a target
|
|
7
|
+
list (:func:`provision_list_structure`) before content is copied.
|
|
8
|
+
|
|
9
|
+
``capture_list_structure`` performs GETs only — it never writes. The snapshot is
|
|
10
|
+
a plain tree of dataclasses that round-trips through :meth:`ListStructure.to_dict`
|
|
11
|
+
/ :meth:`ListStructure.from_dict` (JSON-friendly), so a plan can be captured once
|
|
12
|
+
and replayed.
|
|
13
|
+
|
|
14
|
+
Scope, deliberately:
|
|
15
|
+
|
|
16
|
+
* **Fields** — user-defined list columns with their ``SchemaXml`` prepared for
|
|
17
|
+
``CreateFieldAsXml`` (see :meth:`~office365.sharepoint.fields.field.Field.schema_xml_for_copy`).
|
|
18
|
+
Built-in/system columns and framework columns injected by SharePoint features
|
|
19
|
+
(hidden, or not deletable) are skipped — a target list already has them. A
|
|
20
|
+
**lookup** column's schema names the list it points at; replayed verbatim it
|
|
21
|
+
would name the *source* list id, so it is repointed at the matching target list
|
|
22
|
+
(or skipped with a warning when that list is not part of the migration).
|
|
23
|
+
* **Content types** — non-hidden content types with their ordered field links, kept
|
|
24
|
+
to the columns the migration can actually recreate. A link to a framework column
|
|
25
|
+
(``MediaService*``, ``MetaInfo``, ...) is not replayed — the column itself is
|
|
26
|
+
hidden and server-provisioned — so comparing it would report a gap on every
|
|
27
|
+
library the migration provisioned.
|
|
28
|
+
* **Views** — non-hidden, non-personal views with their ordered columns.
|
|
29
|
+
* **List settings** — the container's own policy (versioning and its limits,
|
|
30
|
+
content approval and draft visibility, attachments, item-level read/write
|
|
31
|
+
permissions, list validation, and on a library minor versions and required
|
|
32
|
+
check-out), replayed per property so a setting the target list type cannot
|
|
33
|
+
accept is reported (as a warning) instead of failing the list.
|
|
34
|
+
|
|
35
|
+
Replay is **per list**, because that is as far as REST reaches: a *site* column or
|
|
36
|
+
a *site* content type is a web-level definition, and ``FieldLinks`` refuses to
|
|
37
|
+
attach a column that is not reachable from the list (``Column '<name>' does not
|
|
38
|
+
exist``) while the server assigns content types their own identifiers. A list that
|
|
39
|
+
uses one still gets a list-scoped copy; :func:`compare_web_scope_structure` reports
|
|
40
|
+
the web-level definitions the target web therefore lacks, so the gap is named
|
|
41
|
+
instead of silent.
|
|
42
|
+
|
|
43
|
+
Provisioning is idempotent: with ``on_conflict="skip"`` (default) it only creates
|
|
44
|
+
what is missing, so a re-run is a no-op. The server assigns content type
|
|
45
|
+
identifiers, so content types are matched and recreated **by name** (their
|
|
46
|
+
``Id`` cannot be preserved over REST); field links are reconciled best-effort
|
|
47
|
+
and any column the server refuses to link is reported back to the caller.
|
|
48
|
+
Built-in columns the target list already provides are left alone rather than
|
|
49
|
+
sent as guaranteed link failures.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
from __future__ import annotations
|
|
53
|
+
|
|
54
|
+
import logging
|
|
55
|
+
import re
|
|
56
|
+
from dataclasses import asdict, dataclass
|
|
57
|
+
from dataclasses import field as dc_field
|
|
58
|
+
from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Set, Tuple
|
|
59
|
+
from xml.etree import ElementTree
|
|
60
|
+
|
|
61
|
+
from office365.migration.map import ContentTypeMap
|
|
62
|
+
from office365.runtime.client_request_exception import ClientRequestException
|
|
63
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
64
|
+
from office365.sharepoint.contenttypes.fieldlinks.collection import FieldLinkCollection
|
|
65
|
+
from office365.sharepoint.fields.builtin_field_name import SYSTEM_FIELD_NAMES
|
|
66
|
+
|
|
67
|
+
if TYPE_CHECKING:
|
|
68
|
+
from office365.sharepoint.contenttypes.content_type import ContentType
|
|
69
|
+
from office365.sharepoint.contenttypes.fieldlinks.field_link import FieldLink
|
|
70
|
+
from office365.sharepoint.fields.field import Field
|
|
71
|
+
from office365.sharepoint.lists.list import List as SPList
|
|
72
|
+
from office365.sharepoint.views.view import View
|
|
73
|
+
from office365.sharepoint.webs.web import Web
|
|
74
|
+
|
|
75
|
+
logger = logging.getLogger(__name__)
|
|
76
|
+
|
|
77
|
+
__all__ = [
|
|
78
|
+
"ContentTypeDefinition",
|
|
79
|
+
"FieldDefinition",
|
|
80
|
+
"ListStructure",
|
|
81
|
+
"ViewDefinition",
|
|
82
|
+
"WebScopeProvisionReport",
|
|
83
|
+
"WebScopeStructure",
|
|
84
|
+
"capture_list_structure",
|
|
85
|
+
"compare_web_scope_structure",
|
|
86
|
+
"normalize_guid",
|
|
87
|
+
"provision_list_structure",
|
|
88
|
+
"provision_web_scope_columns",
|
|
89
|
+
"rewrite_lookup_schema",
|
|
90
|
+
"web_scope_note",
|
|
91
|
+
]
|
|
92
|
+
|
|
93
|
+
#: Field properties requested per column. ``SchemaXml`` is explicit because it is
|
|
94
|
+
#: the payload used to recreate the column on another list.
|
|
95
|
+
_FIELD_SELECT = [
|
|
96
|
+
"Id",
|
|
97
|
+
"InternalName",
|
|
98
|
+
"Title",
|
|
99
|
+
"FieldTypeKind",
|
|
100
|
+
"TypeAsString",
|
|
101
|
+
"SchemaXml",
|
|
102
|
+
"Required",
|
|
103
|
+
"Hidden",
|
|
104
|
+
"ReadOnlyField",
|
|
105
|
+
"FromBaseType",
|
|
106
|
+
"CanBeDeleted",
|
|
107
|
+
"Group",
|
|
108
|
+
"Description",
|
|
109
|
+
"CustomFormatter",
|
|
110
|
+
"ClientSideComponentId",
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
#: List container settings captured with the structure, in the order they must be
|
|
114
|
+
#: applied (versioning before its limits, moderation and versioning before the
|
|
115
|
+
#: draft-item policy). Every name is live-verified writable over REST.
|
|
116
|
+
_LIST_SETTING_ORDER = (
|
|
117
|
+
"EnableVersioning",
|
|
118
|
+
"EnableMinorVersions",
|
|
119
|
+
"MajorVersionLimit",
|
|
120
|
+
"MajorWithMinorVersionsLimit",
|
|
121
|
+
"ForceCheckout",
|
|
122
|
+
"EnableModeration",
|
|
123
|
+
"DraftVersionVisibility",
|
|
124
|
+
"EnableAttachments",
|
|
125
|
+
"ReadSecurity",
|
|
126
|
+
"WriteSecurity",
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
#: Minor versions, their limit and required check-out only exist on document
|
|
130
|
+
#: libraries - a plain list rejects them ("The list does not support minor
|
|
131
|
+
#: versioning"), so they are captured only where they can be replayed.
|
|
132
|
+
_LIBRARY_SETTING_NAMES = frozenset({"EnableMinorVersions", "MajorWithMinorVersionsLimit", "ForceCheckout"})
|
|
133
|
+
|
|
134
|
+
#: List validation names columns in its formula, so it is applied only once the
|
|
135
|
+
#: columns have been created.
|
|
136
|
+
_VALIDATION_SETTING_NAMES = ("ValidationFormula", "ValidationMessage")
|
|
137
|
+
|
|
138
|
+
#: A version limit only exists while the matching versioning flavour is on; the
|
|
139
|
+
#: server rejects the write outright ("Versioning must be enabled and the number of
|
|
140
|
+
#: major versions must be between 1 and 50000"), so a limit whose flag is off in the
|
|
141
|
+
#: snapshot is skipped instead of sent to bounce.
|
|
142
|
+
_SETTING_DEPENDS_ON = {
|
|
143
|
+
"MajorVersionLimit": "EnableVersioning",
|
|
144
|
+
"MajorWithMinorVersionsLimit": "EnableMinorVersions",
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
#: SharePoint rewrites a list validation formula on write (it dropped the brackets
|
|
148
|
+
#: around a column reference: ``=IF([Title]="",TRUE,FALSE)`` was stored as
|
|
149
|
+
#: ``=IF(Title="",TRUE,FALSE)``), so both sides are compared without decoration.
|
|
150
|
+
_FORMULA_NOISE = re.compile(r"[\s\[\]]")
|
|
151
|
+
|
|
152
|
+
#: ``SchemaXml`` attributes a faithful re-create legitimately changes: they name the
|
|
153
|
+
#: *containing* site (the owning list, a lookup's target list, a taxonomy column's
|
|
154
|
+
#: hidden note list and its web) or are assigned by the server (column id, storage
|
|
155
|
+
#: column/ordinal). Everything else — type, required/indexed/unique flags, length,
|
|
156
|
+
#: format, rich text, choice list, default, formula, validation — must reproduce.
|
|
157
|
+
_SCHEMA_ATTRIBUTE_NOISE = frozenset({"SourceID", "List", "ListId", "WebId", "TextField", "ID", "ColName", "RowOrdinal"})
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def comparable_setting(name: str, value: Any) -> Any:
|
|
161
|
+
"""A list setting value in the form its own read-back is expected to take."""
|
|
162
|
+
if name == "ValidationFormula" and value is not None:
|
|
163
|
+
return _FORMULA_NOISE.sub("", str(value))
|
|
164
|
+
return value
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _comparable_attribute(name: str, value: str) -> Any:
|
|
168
|
+
"""A schema attribute in the form its own read-back is expected to take."""
|
|
169
|
+
if name in {"ValidationFormula", "Formula"}:
|
|
170
|
+
return _FORMULA_NOISE.sub("", value)
|
|
171
|
+
return value
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def comparable_schema(schema_xml: Optional[str]) -> Dict[str, Any]:
|
|
175
|
+
"""A column's ``SchemaXml`` reduced to the parts a faithful copy reproduces.
|
|
176
|
+
|
|
177
|
+
Returns the column's attributes and its value-bearing child elements
|
|
178
|
+
(``Default``, ``CHOICES``, ``Formula``, ``FieldRefs``) keyed by name, with the
|
|
179
|
+
site-specific and server-assigned attributes dropped (see
|
|
180
|
+
:data:`_SCHEMA_ATTRIBUTE_NOISE`). Values are normalized the way their own
|
|
181
|
+
read-back comes back: a formula without brackets/whitespace and a choice list as
|
|
182
|
+
a tuple of its options. Unparsable schema yields an empty mapping, so an
|
|
183
|
+
unreadable column is never reported as a difference.
|
|
184
|
+
"""
|
|
185
|
+
if not schema_xml:
|
|
186
|
+
return {}
|
|
187
|
+
try:
|
|
188
|
+
root = ElementTree.fromstring(schema_xml)
|
|
189
|
+
except ElementTree.ParseError:
|
|
190
|
+
return {}
|
|
191
|
+
comparable: Dict[str, Any] = {
|
|
192
|
+
f"attribute {name}": _comparable_attribute(name, value)
|
|
193
|
+
for name, value in sorted(root.attrib.items())
|
|
194
|
+
if name not in _SCHEMA_ATTRIBUTE_NOISE
|
|
195
|
+
}
|
|
196
|
+
for child in root:
|
|
197
|
+
tag = child.tag.upper()
|
|
198
|
+
if tag == "CHOICES":
|
|
199
|
+
comparable["choices"] = tuple(choice.text or "" for choice in child)
|
|
200
|
+
elif tag == "FIELDREFS":
|
|
201
|
+
comparable["field references"] = tuple(ref.attrib.get("Name") or "" for ref in child)
|
|
202
|
+
elif tag in {"FORMULA", "VALIDATIONFORMULA"}:
|
|
203
|
+
comparable[tag.lower()] = _FORMULA_NOISE.sub("", child.text or "")
|
|
204
|
+
else:
|
|
205
|
+
comparable[tag.lower()] = (child.text or "").strip()
|
|
206
|
+
return comparable
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def _setting_names(base_type: Optional[int]) -> List[str]:
|
|
210
|
+
"""The container settings worth capturing for a list of this base type."""
|
|
211
|
+
return [name for name in _LIST_SETTING_ORDER if base_type == 1 or name not in _LIBRARY_SETTING_NAMES]
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
@dataclass
|
|
215
|
+
class FieldDefinition:
|
|
216
|
+
"""A single list column, ready to recreate via ``CreateFieldAsXml``."""
|
|
217
|
+
|
|
218
|
+
internal_name: str
|
|
219
|
+
title: Optional[str] = None
|
|
220
|
+
field_type_kind: Optional[int] = None
|
|
221
|
+
type_as_string: Optional[str] = None
|
|
222
|
+
schema_xml: Optional[str] = None
|
|
223
|
+
required: Optional[bool] = None
|
|
224
|
+
hidden: Optional[bool] = None
|
|
225
|
+
read_only: Optional[bool] = None
|
|
226
|
+
from_base_type: Optional[bool] = None
|
|
227
|
+
can_be_deleted: Optional[bool] = None
|
|
228
|
+
group: Optional[str] = None
|
|
229
|
+
description: Optional[str] = None
|
|
230
|
+
custom_formatter: Optional[str] = None
|
|
231
|
+
client_side_component_id: Optional[str] = None
|
|
232
|
+
|
|
233
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
234
|
+
return asdict(self)
|
|
235
|
+
|
|
236
|
+
@classmethod
|
|
237
|
+
def from_dict(cls, data: Dict[str, Any]) -> "FieldDefinition":
|
|
238
|
+
return cls(
|
|
239
|
+
internal_name=data.get("internal_name", ""),
|
|
240
|
+
title=data.get("title"),
|
|
241
|
+
field_type_kind=data.get("field_type_kind"),
|
|
242
|
+
type_as_string=data.get("type_as_string"),
|
|
243
|
+
schema_xml=data.get("schema_xml"),
|
|
244
|
+
required=data.get("required"),
|
|
245
|
+
hidden=data.get("hidden"),
|
|
246
|
+
read_only=data.get("read_only"),
|
|
247
|
+
from_base_type=data.get("from_base_type"),
|
|
248
|
+
can_be_deleted=data.get("can_be_deleted"),
|
|
249
|
+
group=data.get("group"),
|
|
250
|
+
description=data.get("description"),
|
|
251
|
+
custom_formatter=data.get("custom_formatter"),
|
|
252
|
+
client_side_component_id=data.get("client_side_component_id"),
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
@dataclass
|
|
257
|
+
class ContentTypeDefinition:
|
|
258
|
+
"""A content type bound to the list, with its field links in display order."""
|
|
259
|
+
|
|
260
|
+
string_id: str
|
|
261
|
+
name: Optional[str] = None
|
|
262
|
+
group: Optional[str] = None
|
|
263
|
+
description: Optional[str] = None
|
|
264
|
+
hidden: Optional[bool] = None
|
|
265
|
+
sealed: Optional[bool] = None
|
|
266
|
+
read_only: Optional[bool] = None
|
|
267
|
+
field_internal_names: List[str] = dc_field(default_factory=list)
|
|
268
|
+
|
|
269
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
270
|
+
return asdict(self)
|
|
271
|
+
|
|
272
|
+
@classmethod
|
|
273
|
+
def from_dict(cls, data: Dict[str, Any]) -> "ContentTypeDefinition":
|
|
274
|
+
return cls(
|
|
275
|
+
string_id=data.get("string_id", ""),
|
|
276
|
+
name=data.get("name"),
|
|
277
|
+
group=data.get("group"),
|
|
278
|
+
description=data.get("description"),
|
|
279
|
+
hidden=data.get("hidden"),
|
|
280
|
+
sealed=data.get("sealed"),
|
|
281
|
+
read_only=data.get("read_only"),
|
|
282
|
+
field_internal_names=list(data.get("field_internal_names") or []),
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
@dataclass
|
|
287
|
+
class ViewDefinition:
|
|
288
|
+
"""A list view, with its columns in display order."""
|
|
289
|
+
|
|
290
|
+
title: str
|
|
291
|
+
view_type: Optional[str] = None
|
|
292
|
+
row_limit: Optional[int] = None
|
|
293
|
+
paged: Optional[bool] = None
|
|
294
|
+
hidden: Optional[bool] = None
|
|
295
|
+
default_view: Optional[bool] = None
|
|
296
|
+
personal_view: Optional[bool] = None
|
|
297
|
+
view_query: Optional[str] = None
|
|
298
|
+
field_internal_names: List[str] = dc_field(default_factory=list)
|
|
299
|
+
custom_formatter: Optional[str] = None
|
|
300
|
+
|
|
301
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
302
|
+
return asdict(self)
|
|
303
|
+
|
|
304
|
+
@classmethod
|
|
305
|
+
def from_dict(cls, data: Dict[str, Any]) -> "ViewDefinition":
|
|
306
|
+
return cls(
|
|
307
|
+
title=data.get("title", ""),
|
|
308
|
+
view_type=data.get("view_type"),
|
|
309
|
+
row_limit=data.get("row_limit"),
|
|
310
|
+
paged=data.get("paged"),
|
|
311
|
+
hidden=data.get("hidden"),
|
|
312
|
+
default_view=data.get("default_view"),
|
|
313
|
+
personal_view=data.get("personal_view"),
|
|
314
|
+
view_query=data.get("view_query"),
|
|
315
|
+
field_internal_names=list(data.get("field_internal_names") or []),
|
|
316
|
+
custom_formatter=data.get("custom_formatter"),
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
@dataclass
|
|
321
|
+
class ListStructure:
|
|
322
|
+
"""A serializable snapshot of a list's container metadata and structure."""
|
|
323
|
+
|
|
324
|
+
title: Optional[str] = None
|
|
325
|
+
base_template: Optional[int] = None
|
|
326
|
+
base_type: Optional[int] = None
|
|
327
|
+
description: Optional[str] = None
|
|
328
|
+
content_types_enabled: Optional[bool] = None
|
|
329
|
+
settings: Dict[str, Any] = dc_field(default_factory=dict)
|
|
330
|
+
fields: List[FieldDefinition] = dc_field(default_factory=list)
|
|
331
|
+
content_types: List[ContentTypeDefinition] = dc_field(default_factory=list)
|
|
332
|
+
views: List[ViewDefinition] = dc_field(default_factory=list)
|
|
333
|
+
|
|
334
|
+
@property
|
|
335
|
+
def is_document_library(self) -> bool:
|
|
336
|
+
"""Whether the captured list is a document library (``BaseType`` 1)."""
|
|
337
|
+
return self.base_type == 1
|
|
338
|
+
|
|
339
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
340
|
+
"""Return a JSON-friendly dict (nested dataclasses are expanded)."""
|
|
341
|
+
return asdict(self)
|
|
342
|
+
|
|
343
|
+
@classmethod
|
|
344
|
+
def from_dict(cls, data: Dict[str, Any]) -> "ListStructure":
|
|
345
|
+
"""Rebuild a snapshot from :meth:`to_dict` output (unknown keys ignored)."""
|
|
346
|
+
return cls(
|
|
347
|
+
title=data.get("title"),
|
|
348
|
+
base_template=data.get("base_template"),
|
|
349
|
+
base_type=data.get("base_type"),
|
|
350
|
+
description=data.get("description"),
|
|
351
|
+
content_types_enabled=data.get("content_types_enabled"),
|
|
352
|
+
settings=dict(data.get("settings") or {}),
|
|
353
|
+
fields=[FieldDefinition.from_dict(item) for item in data.get("fields") or []],
|
|
354
|
+
content_types=[ContentTypeDefinition.from_dict(item) for item in data.get("content_types") or []],
|
|
355
|
+
views=[ViewDefinition.from_dict(item) for item in data.get("views") or []],
|
|
356
|
+
)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def capture_list_structure(sp_list: SPList) -> ListStructure:
|
|
360
|
+
"""Read a SharePoint list's structure into a :class:`ListStructure` snapshot.
|
|
361
|
+
|
|
362
|
+
Issues only GET requests. Loads the list's scalar properties, its columns,
|
|
363
|
+
the non-hidden content types (with their field links), and the non-hidden
|
|
364
|
+
views (with their columns).
|
|
365
|
+
|
|
366
|
+
Args:
|
|
367
|
+
sp_list: A ``List`` (possibly not yet loaded); it is loaded in place.
|
|
368
|
+
|
|
369
|
+
Returns:
|
|
370
|
+
A fully-populated, serializable snapshot.
|
|
371
|
+
"""
|
|
372
|
+
sp_list.ensure_properties(["Title", "BaseTemplate", "BaseType", "Description", "ContentTypesEnabled"])
|
|
373
|
+
# Container settings (versioning, content approval, attachments, item-level
|
|
374
|
+
# permissions, validation) travel with the columns: a target list created from
|
|
375
|
+
# its template alone keeps the template defaults, so a moderated or
|
|
376
|
+
# version-limited source would lose that policy.
|
|
377
|
+
setting_names = [*_LIST_SETTING_ORDER, *_VALIDATION_SETTING_NAMES]
|
|
378
|
+
sp_list.ensure_properties(setting_names).execute_query()
|
|
379
|
+
|
|
380
|
+
structure = ListStructure(
|
|
381
|
+
title=sp_list.title,
|
|
382
|
+
base_template=sp_list.base_template,
|
|
383
|
+
base_type=sp_list.base_type,
|
|
384
|
+
description=sp_list.description,
|
|
385
|
+
content_types_enabled=sp_list.content_types_enabled,
|
|
386
|
+
settings={
|
|
387
|
+
name: value
|
|
388
|
+
for name in [*_setting_names(sp_list.base_type), *_VALIDATION_SETTING_NAMES]
|
|
389
|
+
if (value := sp_list.properties.get(name)) is not None
|
|
390
|
+
},
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
loaded_fields = sp_list.fields.select(list(_FIELD_SELECT)).get().execute_query()
|
|
394
|
+
structure.fields = [_field_definition(field) for field in loaded_fields if _is_capturable_field(field)]
|
|
395
|
+
replayable = {field.internal_name for field in structure.fields if field.internal_name}
|
|
396
|
+
|
|
397
|
+
for content_type in sp_list.content_types.get().execute_query():
|
|
398
|
+
if not _is_capturable_content_type(content_type):
|
|
399
|
+
continue
|
|
400
|
+
links = content_type.field_links.get().execute_query()
|
|
401
|
+
structure.content_types.append(_content_type_definition(content_type, links, replayable))
|
|
402
|
+
|
|
403
|
+
for view in sp_list.views.get().execute_query():
|
|
404
|
+
if getattr(view, "hidden", False) or getattr(view, "personal_view", False):
|
|
405
|
+
continue
|
|
406
|
+
field_names = list(view.view_fields.get().execute_query())
|
|
407
|
+
structure.views.append(_view_definition(view, field_names))
|
|
408
|
+
|
|
409
|
+
return structure
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
def _is_capturable_field(field: Field) -> bool:
|
|
413
|
+
"""Only recreatable user columns — not built-in, framework, or hidden fields.
|
|
414
|
+
|
|
415
|
+
Built-in/system fields are already present on any target list, and framework
|
|
416
|
+
columns injected by SharePoint features (shortcuts, media, sensitivity
|
|
417
|
+
labels, ...) cannot be recreated meaningfully. A list-scoped, deletable,
|
|
418
|
+
visible column is what a user actually added.
|
|
419
|
+
"""
|
|
420
|
+
name = field.internal_name
|
|
421
|
+
if not name or name in SYSTEM_FIELD_NAMES:
|
|
422
|
+
return False
|
|
423
|
+
if field.from_base_type is True:
|
|
424
|
+
return False
|
|
425
|
+
if field.can_be_deleted is False:
|
|
426
|
+
return False
|
|
427
|
+
return field.hidden is not True
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
def _is_capturable_content_type(content_type: ContentType) -> bool:
|
|
431
|
+
"""Content types that carry useful, recreatable structure (non-hidden, identified)."""
|
|
432
|
+
return bool(content_type.string_id) and not content_type.hidden
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
#: Content types in this length range are base types (Item ``0x01``, Document
|
|
436
|
+
#: ``0x0101``, ...); custom content types append a 32-hex-digit GUID.
|
|
437
|
+
_MIN_CUSTOM_CONTENT_TYPE_ID_LENGTH = 20
|
|
438
|
+
|
|
439
|
+
#: A GUID, optionally wrapped in the braces SharePoint uses in ``SchemaXml``.
|
|
440
|
+
_GUID_RE = re.compile(r"^\{?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\}?$")
|
|
441
|
+
#: ``Type="Lookup"`` / ``Type="LookupMulti"`` — the columns that name their list.
|
|
442
|
+
_LOOKUP_TYPE_RE = re.compile(r'\bType="Lookup(?:Multi)?"')
|
|
443
|
+
#: The ``List="..."`` attribute a lookup column carries in its ``SchemaXml``.
|
|
444
|
+
_LIST_ATTR_RE = re.compile(r'\sList="([^"]*)"')
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
def normalize_guid(value: Any) -> Optional[str]:
|
|
448
|
+
"""A lower-cased, brace-stripped GUID, or ``None`` when not a GUID.
|
|
449
|
+
|
|
450
|
+
Lookup schemas carry ``List="{...}"`` while the migration threads list ids
|
|
451
|
+
around as plain strings; normalizing both sides keeps the lookup keyed by the
|
|
452
|
+
same value regardless of case or brace style.
|
|
453
|
+
"""
|
|
454
|
+
if value is None:
|
|
455
|
+
return None
|
|
456
|
+
text = str(value).strip()
|
|
457
|
+
if text.startswith("{") and text.endswith("}"):
|
|
458
|
+
text = text[1:-1]
|
|
459
|
+
return text.lower() if _GUID_RE.match(text) else None
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
def rewrite_lookup_schema(
|
|
463
|
+
schema_xml: Optional[str], list_id_map: Dict[str, str] | None
|
|
464
|
+
) -> tuple[Optional[str], Optional[str]]:
|
|
465
|
+
"""Repoint a lookup column's ``SchemaXml`` at the target list.
|
|
466
|
+
|
|
467
|
+
A lookup column is recreated from its source ``SchemaXml``, which names the
|
|
468
|
+
*source* list (``List="{source-guid}"``). Replayed verbatim onto another site
|
|
469
|
+
the target column points at a list id that does not exist there, so the column
|
|
470
|
+
is broken and every value written to it is silently dropped. Given a
|
|
471
|
+
``list_id_map`` (normalized source list id -> normalized target list id) this
|
|
472
|
+
rewrites the attribute to the target list.
|
|
473
|
+
|
|
474
|
+
Returns ``(schema, unresolved)``: the rewritten schema (or ``None`` when the
|
|
475
|
+
field must be skipped), and the unresolved source list id when the referenced
|
|
476
|
+
list is not part of the migration (so the caller can warn).
|
|
477
|
+
"""
|
|
478
|
+
if not schema_xml or not _LOOKUP_TYPE_RE.search(schema_xml):
|
|
479
|
+
return schema_xml, None
|
|
480
|
+
match = _LIST_ATTR_RE.search(schema_xml)
|
|
481
|
+
if match is None:
|
|
482
|
+
return schema_xml, None
|
|
483
|
+
referenced = normalize_guid(match.group(1))
|
|
484
|
+
if referenced is None:
|
|
485
|
+
# ``List="UserInfo"`` (the User column's user-information list) is a
|
|
486
|
+
# keyword, portable as-is.
|
|
487
|
+
return schema_xml, None
|
|
488
|
+
target = (list_id_map or {}).get(referenced)
|
|
489
|
+
if target is None:
|
|
490
|
+
return None, referenced
|
|
491
|
+
rewritten = f'{schema_xml[: match.start()]} List="{{{target}}}"{schema_xml[match.end() :]}'
|
|
492
|
+
return rewritten, None
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
#: Managed-metadata column types; recreated through ``TaxonomyField.create`` below.
|
|
496
|
+
_TAXONOMY_TYPES = frozenset({"TaxonomyFieldType", "TaxonomyFieldTypeMulti"})
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
def _is_taxonomy_definition(definition: FieldDefinition) -> bool:
|
|
500
|
+
"""Whether a captured column is a managed-metadata (taxonomy) column."""
|
|
501
|
+
if (definition.type_as_string or "") in _TAXONOMY_TYPES:
|
|
502
|
+
return True
|
|
503
|
+
schema = definition.schema_xml or ""
|
|
504
|
+
return "TaxonomyFieldType" in schema and "<Name>TermSetId</Name>" in schema
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
#: A column bound to an external (BCS) content type. The generated ``FieldType``
|
|
508
|
+
#: model does not carry this member, so the ``TypeAsString``/``SchemaXml``
|
|
509
|
+
#: spelling is what identifies it.
|
|
510
|
+
_EXTERNAL_DATA_TYPE = "BusinessData"
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
def _is_external_data_definition(definition: FieldDefinition) -> bool:
|
|
514
|
+
"""Whether a captured column reads its values from an external (BCS) source."""
|
|
515
|
+
if (definition.type_as_string or "") == _EXTERNAL_DATA_TYPE:
|
|
516
|
+
return True
|
|
517
|
+
return f'Type="{_EXTERNAL_DATA_TYPE}"' in (definition.schema_xml or "")
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
def _taxonomy_property(schema_xml: Optional[str], name: str) -> Optional[str]:
|
|
521
|
+
"""Read a value from a taxonomy column's ``<Customization>`` property bag."""
|
|
522
|
+
if not schema_xml:
|
|
523
|
+
return None
|
|
524
|
+
match = re.search(
|
|
525
|
+
r"<Name>\s*" + re.escape(name) + r"\s*</Name>\s*<Value\b[^>]*>\s*([^<\s]+)\s*</Value>",
|
|
526
|
+
schema_xml,
|
|
527
|
+
re.IGNORECASE,
|
|
528
|
+
)
|
|
529
|
+
return match.group(1).strip() if match else None
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
def _taxonomy_allow_multiple(schema_xml: str) -> bool:
|
|
533
|
+
match = re.search(r'\bMult="(TRUE|FALSE)"', schema_xml, re.IGNORECASE)
|
|
534
|
+
if match:
|
|
535
|
+
return match.group(1).upper() == "TRUE"
|
|
536
|
+
return 'Type="TaxonomyFieldTypeMulti"' in schema_xml
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def _ensure_taxonomy_field(container: SPList | Web, definition: FieldDefinition, warnings: List[str]) -> Optional[Field]:
|
|
540
|
+
"""Recreate a managed-metadata column bound to the same term set on the target.
|
|
541
|
+
|
|
542
|
+
A taxonomy column cannot be replayed from its ``SchemaXml``: that schema names
|
|
543
|
+
the *source* web's hidden TaxonomyHiddenList and note field, so the copy ends
|
|
544
|
+
up pointing at columns that do not exist on the target and every value is
|
|
545
|
+
dropped. ``TaxonomyField.create`` lets SharePoint provision a fresh hidden
|
|
546
|
+
note column and bind ``LookupList`` to the target web's TaxonomyHiddenList.
|
|
547
|
+
|
|
548
|
+
Returns the pending column (its create is only submitted on the context's next
|
|
549
|
+
``execute_query()``), or ``None`` when it could not even be queued.
|
|
550
|
+
"""
|
|
551
|
+
name = definition.internal_name
|
|
552
|
+
term_set = _taxonomy_property(definition.schema_xml, "TermSetId")
|
|
553
|
+
if not term_set:
|
|
554
|
+
warning = f"taxonomy column '{name}' was not recreated: its term set id could not be read"
|
|
555
|
+
logger.debug(warning)
|
|
556
|
+
warnings.append(warning)
|
|
557
|
+
return None
|
|
558
|
+
from office365.sharepoint.taxonomy.field import TaxonomyField
|
|
559
|
+
|
|
560
|
+
try:
|
|
561
|
+
return TaxonomyField.create(
|
|
562
|
+
container.fields,
|
|
563
|
+
name,
|
|
564
|
+
term_set,
|
|
565
|
+
_taxonomy_property(definition.schema_xml, "SspId"),
|
|
566
|
+
_taxonomy_allow_multiple(definition.schema_xml or ""),
|
|
567
|
+
)
|
|
568
|
+
except Exception as exc: # noqa: BLE001 - best effort, surfaced as a warning
|
|
569
|
+
warning = f"taxonomy column '{name}' could not be recreated: {exc}"
|
|
570
|
+
logger.debug(warning)
|
|
571
|
+
warnings.append(warning)
|
|
572
|
+
return None
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
def _is_provisionable_content_type(definition: ContentTypeDefinition) -> bool:
|
|
576
|
+
"""Skip base content types — they already exist on any target list."""
|
|
577
|
+
return len(definition.string_id or "") >= _MIN_CUSTOM_CONTENT_TYPE_ID_LENGTH
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
def _schema_for_copy(field: Field) -> Optional[str]:
|
|
581
|
+
"""``SchemaXml`` stripped of origin attributes (``SourceID``/``Version``)."""
|
|
582
|
+
return field.schema_xml_for_copy()
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
def _field_kind_int(field: Field) -> Optional[int]:
|
|
586
|
+
# ``Field.field_type_kind`` is typed ``FieldType`` but a raw read leaves the
|
|
587
|
+
# JSON integer in the property bag, so accept either shape.
|
|
588
|
+
kind = field.field_type_kind
|
|
589
|
+
if kind is None:
|
|
590
|
+
return None
|
|
591
|
+
value = getattr(kind, "value", kind)
|
|
592
|
+
return value if isinstance(value, int) else None
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
def _field_definition(field: Field) -> FieldDefinition:
|
|
596
|
+
return FieldDefinition(
|
|
597
|
+
internal_name=field.internal_name or "",
|
|
598
|
+
title=field.title,
|
|
599
|
+
field_type_kind=_field_kind_int(field),
|
|
600
|
+
type_as_string=field.type_as_string,
|
|
601
|
+
schema_xml=_schema_for_copy(field),
|
|
602
|
+
required=field.required,
|
|
603
|
+
hidden=field.hidden,
|
|
604
|
+
read_only=field.read_only_field,
|
|
605
|
+
from_base_type=field.from_base_type,
|
|
606
|
+
can_be_deleted=field.can_be_deleted,
|
|
607
|
+
group=field.group,
|
|
608
|
+
description=field.description,
|
|
609
|
+
custom_formatter=field.properties.get("CustomFormatter"),
|
|
610
|
+
client_side_component_id=_component_id(field),
|
|
611
|
+
)
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
#: An "unset" ``ClientSideComponentId`` is the all-zero GUID, not an absent property.
|
|
615
|
+
_EMPTY_GUID = "00000000-0000-0000-0000-000000000000"
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
def _component_id(field: Field) -> Optional[str]:
|
|
619
|
+
"""The SPFx field customizer registered on a column, if any."""
|
|
620
|
+
value = field.properties.get("ClientSideComponentId")
|
|
621
|
+
if not value or normalize_guid(value) == _EMPTY_GUID:
|
|
622
|
+
return None
|
|
623
|
+
return str(value)
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
def _content_type_definition(
|
|
627
|
+
content_type: ContentType, links: Iterable[FieldLink], replayable: Optional[set] = None
|
|
628
|
+
) -> ContentTypeDefinition:
|
|
629
|
+
"""A content type snapshot, with the links this migration can replay.
|
|
630
|
+
|
|
631
|
+
``replayable`` is the set of internal names the snapshot can recreate on another
|
|
632
|
+
list. A link naming anything else (a built-in column, a server-provisioned
|
|
633
|
+
framework column such as ``MediaServiceMetadata``) is dropped: the column is not
|
|
634
|
+
provisioned either, so keeping the link would make every provisioned library
|
|
635
|
+
report a field link it was never going to have.
|
|
636
|
+
"""
|
|
637
|
+
names = [name for name in (link.field_internal_name for link in links) if name]
|
|
638
|
+
if replayable is not None:
|
|
639
|
+
dropped = [name for name in names if name not in replayable]
|
|
640
|
+
if dropped:
|
|
641
|
+
logger.debug(
|
|
642
|
+
"content type %r: %d field link(s) name a column the migration cannot recreate: %s",
|
|
643
|
+
content_type.name,
|
|
644
|
+
len(dropped),
|
|
645
|
+
", ".join(sorted(dropped)),
|
|
646
|
+
)
|
|
647
|
+
names = [name for name in names if name in replayable]
|
|
648
|
+
return ContentTypeDefinition(
|
|
649
|
+
string_id=content_type.string_id or "",
|
|
650
|
+
name=content_type.name,
|
|
651
|
+
group=content_type.group,
|
|
652
|
+
description=content_type.description,
|
|
653
|
+
hidden=content_type.hidden,
|
|
654
|
+
sealed=content_type.sealed,
|
|
655
|
+
read_only=content_type.read_only,
|
|
656
|
+
field_internal_names=names,
|
|
657
|
+
)
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
def _view_definition(view: View, field_names: Iterable[str]) -> ViewDefinition:
|
|
661
|
+
return ViewDefinition(
|
|
662
|
+
title=view.title or "",
|
|
663
|
+
view_type=view.view_type,
|
|
664
|
+
row_limit=view.row_limit,
|
|
665
|
+
paged=view.paged,
|
|
666
|
+
hidden=view.hidden,
|
|
667
|
+
default_view=view.default_view,
|
|
668
|
+
personal_view=view.personal_view,
|
|
669
|
+
view_query=view.view_query,
|
|
670
|
+
field_internal_names=[name for name in field_names if name],
|
|
671
|
+
custom_formatter=view.properties.get("CustomFormatter"),
|
|
672
|
+
)
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
def provision_list_structure(
|
|
676
|
+
sp_list: SPList,
|
|
677
|
+
structure: ListStructure,
|
|
678
|
+
*,
|
|
679
|
+
on_conflict: str = "skip",
|
|
680
|
+
content_type_map: Dict[str, str] | None = None,
|
|
681
|
+
list_id_map: Dict[str, str] | None = None,
|
|
682
|
+
) -> List[str]:
|
|
683
|
+
"""Recreate a captured list structure on ``sp_list`` (idempotent).
|
|
684
|
+
|
|
685
|
+
Ensures the captured user columns exist (creating missing ones from their
|
|
686
|
+
``SchemaXml``), the custom content types exist (with their field links), and
|
|
687
|
+
the views exist. Existing structure is left intact with ``on_conflict="skip"``
|
|
688
|
+
(default); ``"update"`` reconciles content type metadata and view settings
|
|
689
|
+
where supported.
|
|
690
|
+
|
|
691
|
+
The captured container settings (versioning, content approval, attachments,
|
|
692
|
+
item-level read/write policy, list validation, and on libraries minor versions
|
|
693
|
+
and required check-out) are applied as well, one ``MERGE`` per setting so a
|
|
694
|
+
single rejected setting is reported instead of failing the list. Only settings
|
|
695
|
+
that differ from the target's own values are written, so a list created from the
|
|
696
|
+
same template (and a re-run) writes nothing. They are applied regardless of
|
|
697
|
+
``on_conflict`` because the snapshot *is* the wanted policy and the item copy
|
|
698
|
+
depends on it: an item's approval status is only stored on a list that has
|
|
699
|
+
content approval enabled. Settings the target list type does not support come
|
|
700
|
+
back as warnings.
|
|
701
|
+
|
|
702
|
+
Unlike the deferred ``ensure_*`` primitives this executes the requests, so it
|
|
703
|
+
can be called right after creating/resolving the target list and before
|
|
704
|
+
content is copied. Run it again and it is a no-op.
|
|
705
|
+
|
|
706
|
+
Field links are reconciled best-effort: SharePoint Online rejects adding a
|
|
707
|
+
field link for a column that is not already inherited or auto-linked to the
|
|
708
|
+
content type (``Column '<name>' does not exist``). Such columns cannot be
|
|
709
|
+
attached over REST, so they are skipped and returned as warnings rather than
|
|
710
|
+
failing the whole provisioning.
|
|
711
|
+
|
|
712
|
+
Args:
|
|
713
|
+
sp_list: The target SharePoint list (its container must already exist).
|
|
714
|
+
structure: A snapshot from :func:`capture_list_structure`.
|
|
715
|
+
on_conflict: ``"skip"`` (default) or ``"update"``.
|
|
716
|
+
content_type_map: An optional mapping to populate with source→target content
|
|
717
|
+
type identifiers (only where they differ). SharePoint assigns recreated
|
|
718
|
+
list content types a fresh ``StringId``, so this lets a caller rewrite an
|
|
719
|
+
item's ``ContentTypeId`` to the target one (see
|
|
720
|
+
:class:`~office365.migration.map.ContentTypeMap`).
|
|
721
|
+
list_id_map: An optional mapping of **normalized** source list ids to target
|
|
722
|
+
list ids, used to repoint a lookup column's ``SchemaXml`` at the target
|
|
723
|
+
list (see :func:`rewrite_lookup_schema`). When a lookup references a list
|
|
724
|
+
absent from the map, the column is skipped and reported as a warning
|
|
725
|
+
rather than created broken.
|
|
726
|
+
|
|
727
|
+
Returns:
|
|
728
|
+
Human-readable warnings for anything the server would not let us apply
|
|
729
|
+
(unlinked content type columns, or lookup columns into a list that is not
|
|
730
|
+
part of the migration); empty when fully applied.
|
|
731
|
+
"""
|
|
732
|
+
if on_conflict not in ("skip", "update"):
|
|
733
|
+
raise ValueError(f"on_conflict must be 'skip' or 'update', got {on_conflict!r}")
|
|
734
|
+
|
|
735
|
+
warnings: List[str] = []
|
|
736
|
+
|
|
737
|
+
_apply_list_settings(sp_list, structure, warnings, validation=False)
|
|
738
|
+
|
|
739
|
+
if structure.content_types_enabled:
|
|
740
|
+
_ensure_content_types_enabled(sp_list)
|
|
741
|
+
|
|
742
|
+
taxonomy_definitions: List[FieldDefinition] = []
|
|
743
|
+
for definition in structure.fields:
|
|
744
|
+
if not definition.schema_xml:
|
|
745
|
+
continue
|
|
746
|
+
if _is_taxonomy_definition(definition):
|
|
747
|
+
taxonomy_definitions.append(definition)
|
|
748
|
+
continue
|
|
749
|
+
if _is_external_data_definition(definition):
|
|
750
|
+
# An external-data column is a *reference* into a BDC model: replaying
|
|
751
|
+
# its schema would create a column that resolves nothing on the target,
|
|
752
|
+
# so it is reported instead (the list itself is reported as a handoff).
|
|
753
|
+
warning = (
|
|
754
|
+
f"column '{definition.internal_name}' was not recreated: it is bound to an "
|
|
755
|
+
"external (BCS) content type, which a client-side migration cannot provision"
|
|
756
|
+
)
|
|
757
|
+
logger.debug(warning)
|
|
758
|
+
warnings.append(warning)
|
|
759
|
+
continue
|
|
760
|
+
schema_xml, unresolved = rewrite_lookup_schema(definition.schema_xml, list_id_map)
|
|
761
|
+
if unresolved is not None:
|
|
762
|
+
warning = (
|
|
763
|
+
f"column '{definition.internal_name}' was not recreated: it is a lookup into "
|
|
764
|
+
f"list {{{unresolved}}}, which is not part of this migration"
|
|
765
|
+
)
|
|
766
|
+
logger.debug(warning)
|
|
767
|
+
warnings.append(warning)
|
|
768
|
+
continue
|
|
769
|
+
assert schema_xml is not None # a skipped lookup always names its unresolved list id
|
|
770
|
+
sp_list.fields.ensure_xml(schema_xml, definition.internal_name)
|
|
771
|
+
|
|
772
|
+
if taxonomy_definitions:
|
|
773
|
+
# Executes the queued scalar column creates, then loads the resulting fields
|
|
774
|
+
# so an already-present taxonomy column is not recreated (which would add a
|
|
775
|
+
# duplicate hidden note field and a second column with the same name).
|
|
776
|
+
existing = {field.internal_name for field in sp_list.fields.get().execute_query() if field.internal_name}
|
|
777
|
+
for definition in taxonomy_definitions:
|
|
778
|
+
if definition.internal_name in existing:
|
|
779
|
+
continue
|
|
780
|
+
_ensure_taxonomy_field(sp_list, definition, warnings)
|
|
781
|
+
sp_list.execute_query()
|
|
782
|
+
|
|
783
|
+
provisionable = [
|
|
784
|
+
(item.name, item) for item in structure.content_types if item.name and _is_provisionable_content_type(item)
|
|
785
|
+
]
|
|
786
|
+
for name, definition in provisionable:
|
|
787
|
+
sp_list.content_types.ensure(
|
|
788
|
+
name,
|
|
789
|
+
definition.description,
|
|
790
|
+
definition.group,
|
|
791
|
+
content_type_id=definition.string_id,
|
|
792
|
+
on_conflict=on_conflict,
|
|
793
|
+
)
|
|
794
|
+
|
|
795
|
+
# Only captured user columns can be (re)linked. A content type's field links
|
|
796
|
+
# also name every built-in and SharePoint-owned column (``Title``,
|
|
797
|
+
# ``FileLeafRef``, framework columns, ...) which this module deliberately does
|
|
798
|
+
# not recreate — attempting to link one is a guaranteed server error, so they
|
|
799
|
+
# are left to the target list's own defaults.
|
|
800
|
+
available = {definition.internal_name for definition in structure.fields if definition.internal_name}
|
|
801
|
+
|
|
802
|
+
if provisionable or content_type_map is not None:
|
|
803
|
+
# Executes the queued field/content-type creates, then loads the (now
|
|
804
|
+
# created) content types so their field links can be reconciled and item
|
|
805
|
+
# content-type ids can be rewritten.
|
|
806
|
+
loaded = {ct.name: ct for ct in sp_list.content_types.get().execute_query() if ct.name}
|
|
807
|
+
reconcile = [
|
|
808
|
+
(loaded[name], definition.field_internal_names)
|
|
809
|
+
for name, definition in provisionable
|
|
810
|
+
if name in loaded and definition.field_internal_names
|
|
811
|
+
]
|
|
812
|
+
warnings.extend(_reconcile_field_links(reconcile, available))
|
|
813
|
+
if content_type_map is not None:
|
|
814
|
+
content_type_map.update(ContentTypeMap.build(structure.content_types, loaded.values()).entries)
|
|
815
|
+
|
|
816
|
+
for view in structure.views:
|
|
817
|
+
sp_list.views.ensure_view(
|
|
818
|
+
view.title,
|
|
819
|
+
fields=list(view.field_internal_names) or None,
|
|
820
|
+
row_limit=view.row_limit,
|
|
821
|
+
view_type=view.view_type,
|
|
822
|
+
paged=view.paged,
|
|
823
|
+
personal_view=view.personal_view,
|
|
824
|
+
on_conflict=on_conflict,
|
|
825
|
+
)
|
|
826
|
+
|
|
827
|
+
_apply_list_settings(sp_list, structure, warnings, validation=True)
|
|
828
|
+
|
|
829
|
+
sp_list.execute_query()
|
|
830
|
+
_apply_formatting(sp_list, structure, warnings)
|
|
831
|
+
return warnings
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
def _apply_formatting(sp_list: SPList, structure: ListStructure, warnings: List[str]) -> None:
|
|
835
|
+
"""Replay the column and view formatting JSON the target does not carry.
|
|
836
|
+
|
|
837
|
+
Column formatting lives on the column and row formatting on the view, and both
|
|
838
|
+
are a plain ``MERGE`` on the entity — so both run once the columns and views
|
|
839
|
+
exist. A column the server keeps sealed swallows the write without an error, so
|
|
840
|
+
the pass reads both sides back and reports what did not take rather than
|
|
841
|
+
claiming success.
|
|
842
|
+
|
|
843
|
+
An SPFx field customizer is a pointer into a deployed solution: it cannot work
|
|
844
|
+
on a target that does not have that solution, so it is reported, never copied.
|
|
845
|
+
"""
|
|
846
|
+
for definition in structure.fields:
|
|
847
|
+
if definition.client_side_component_id:
|
|
848
|
+
warnings.append(
|
|
849
|
+
f"column '{definition.internal_name}' carries an SPFx field customizer "
|
|
850
|
+
f"({definition.client_side_component_id}), which is not carried: the solution has to be "
|
|
851
|
+
"deployed on the target"
|
|
852
|
+
)
|
|
853
|
+
column_formatters = {
|
|
854
|
+
definition.internal_name: definition.custom_formatter
|
|
855
|
+
for definition in structure.fields
|
|
856
|
+
if definition.custom_formatter and definition.internal_name
|
|
857
|
+
}
|
|
858
|
+
view_formatters = {
|
|
859
|
+
view.title: view.custom_formatter for view in structure.views if view.custom_formatter and view.title
|
|
860
|
+
}
|
|
861
|
+
if not column_formatters and not view_formatters:
|
|
862
|
+
return
|
|
863
|
+
|
|
864
|
+
written = False
|
|
865
|
+
for name, formatter in column_formatters.items():
|
|
866
|
+
field = sp_list.fields.get_by_internal_name_or_title(name).get().execute_query()
|
|
867
|
+
if field.properties.get("CustomFormatter") == formatter:
|
|
868
|
+
continue
|
|
869
|
+
field.set_property("CustomFormatter", formatter)
|
|
870
|
+
field.update()
|
|
871
|
+
written = True
|
|
872
|
+
for title, formatter in view_formatters.items():
|
|
873
|
+
view = sp_list.views.get_by_title(title).get().execute_query()
|
|
874
|
+
if view.properties.get("CustomFormatter") == formatter:
|
|
875
|
+
continue
|
|
876
|
+
view.set_property("CustomFormatter", formatter)
|
|
877
|
+
view.update()
|
|
878
|
+
written = True
|
|
879
|
+
if not written:
|
|
880
|
+
return
|
|
881
|
+
sp_list.execute_query()
|
|
882
|
+
|
|
883
|
+
# A sealed column accepts the MERGE and drops the value: read back, then report.
|
|
884
|
+
current_fields = {
|
|
885
|
+
field.internal_name: field.properties.get("CustomFormatter")
|
|
886
|
+
for field in sp_list.fields.select(["InternalName", "CustomFormatter"]).get().execute_query()
|
|
887
|
+
if field.internal_name
|
|
888
|
+
}
|
|
889
|
+
for name, formatter in column_formatters.items():
|
|
890
|
+
if name in current_fields and current_fields[name] != formatter:
|
|
891
|
+
warnings.append(f"column '{name}' kept its own formatting: the target would not accept the formatter")
|
|
892
|
+
current_views = {view.title: view.properties.get("CustomFormatter") for view in sp_list.views.get().execute_query()}
|
|
893
|
+
for title, formatter in view_formatters.items():
|
|
894
|
+
if title in current_views and current_views[title] != formatter:
|
|
895
|
+
warnings.append(f"view '{title}' kept its own formatting: the target would not accept the formatter")
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
def _apply_list_settings(sp_list: SPList, structure: ListStructure, warnings: List[str], *, validation: bool) -> None:
|
|
899
|
+
"""Apply the captured container settings the target does not already carry.
|
|
900
|
+
|
|
901
|
+
Only *differing* settings are written (one GET reads the target's current
|
|
902
|
+
values first): a target created from the list template already carries most of
|
|
903
|
+
them, and blindly ``MERGE``-ing an equal value is both a needless request and a
|
|
904
|
+
false alarm — SharePoint rejects some of those writes for policy reasons (a
|
|
905
|
+
version limit with versioning off, a system library that grants no write) even
|
|
906
|
+
though the target is already correct.
|
|
907
|
+
|
|
908
|
+
The remaining settings are then written together, in one ``$batch``, instead of
|
|
909
|
+
one round-trip each. A change set is atomic, so a rejection does not produce a
|
|
910
|
+
half-applied list with a misleading ``200`` per survivor: the batch either
|
|
911
|
+
applies in full or does not apply at all, and the caller falls back to writing
|
|
912
|
+
each setting on its own — the same per-setting isolation as before, with the
|
|
913
|
+
same warning text — so a policy the target list type cannot express (minor
|
|
914
|
+
versions on a plain list, for instance) stays a fidelity note, not an error.
|
|
915
|
+
"""
|
|
916
|
+
title = structure.title or sp_list.title
|
|
917
|
+
if not title:
|
|
918
|
+
return
|
|
919
|
+
wanted = {
|
|
920
|
+
name: value
|
|
921
|
+
for name, value in structure.settings.items()
|
|
922
|
+
if (name in _VALIDATION_SETTING_NAMES) is validation
|
|
923
|
+
and not (name in _LIBRARY_SETTING_NAMES and structure.base_type != 1)
|
|
924
|
+
and _setting_is_expressible(name, structure.settings)
|
|
925
|
+
}
|
|
926
|
+
if not wanted:
|
|
927
|
+
return
|
|
928
|
+
current = _current_settings(sp_list, list(wanted))
|
|
929
|
+
differing = {
|
|
930
|
+
name: value
|
|
931
|
+
for name, value in wanted.items()
|
|
932
|
+
if name not in current or comparable_setting(name, current[name]) != comparable_setting(name, value)
|
|
933
|
+
}
|
|
934
|
+
if not differing:
|
|
935
|
+
return
|
|
936
|
+
if len(differing) > 1 and _write_settings_together(sp_list, title, differing):
|
|
937
|
+
return
|
|
938
|
+
for name, value in differing.items():
|
|
939
|
+
_write_setting(sp_list, title, name, value, warnings)
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
def _write_settings_together(sp_list: SPList, title: str, settings: Dict[str, Any]) -> bool:
|
|
943
|
+
"""Try to apply every setting in one ``$batch``; report whether it took.
|
|
944
|
+
|
|
945
|
+
Returns ``False`` when the server refused something, in which case nothing was
|
|
946
|
+
applied: a change set is atomic, so its sub-responses saying ``200`` is not
|
|
947
|
+
evidence that the write survived.
|
|
948
|
+
"""
|
|
949
|
+
with sp_list.context.collect_batch_failures() as failures:
|
|
950
|
+
for name, value in settings.items():
|
|
951
|
+
handle = sp_list.context.web.lists.get_by_title(title)
|
|
952
|
+
handle.set_property(name, value)
|
|
953
|
+
handle.update()
|
|
954
|
+
try:
|
|
955
|
+
sp_list.context.execute_batch()
|
|
956
|
+
except Exception as exc: # noqa: BLE001 - the whole batch failed, nothing landed
|
|
957
|
+
logger.debug("list settings were not applied in one batch: %s", _rejection_reason(exc))
|
|
958
|
+
return False
|
|
959
|
+
return not failures
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
def _write_setting(sp_list: SPList, title: str, name: str, value: Any, warnings: List[str]) -> None:
|
|
963
|
+
"""Write one setting through its own list handle, so a rejection stays its own."""
|
|
964
|
+
handle = sp_list.context.web.lists.get_by_title(title)
|
|
965
|
+
handle.set_property(name, value)
|
|
966
|
+
try:
|
|
967
|
+
handle.update().execute_query()
|
|
968
|
+
except Exception as exc: # noqa: BLE001 - any rejection is a fidelity note
|
|
969
|
+
warning = f"list setting '{name}' was not applied: {_rejection_reason(exc)}"
|
|
970
|
+
logger.debug(warning)
|
|
971
|
+
warnings.append(warning)
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
def _setting_is_expressible(name: str, settings: Dict[str, Any]) -> bool:
|
|
975
|
+
"""Whether a captured setting can be applied given the snapshot's other values."""
|
|
976
|
+
dependency = _SETTING_DEPENDS_ON.get(name)
|
|
977
|
+
return dependency is None or bool(settings.get(dependency))
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
def _current_settings(sp_list: SPList, names: List[str]) -> Dict[str, Any]:
|
|
981
|
+
"""The target list's current values for the settings about to be applied."""
|
|
982
|
+
sp_list.ensure_properties(names)
|
|
983
|
+
sp_list.get().execute_query()
|
|
984
|
+
return {name: sp_list.properties.get(name) for name in names if sp_list.properties.get(name) is not None}
|
|
985
|
+
|
|
986
|
+
|
|
987
|
+
def _rejection_reason(exc: Exception) -> str:
|
|
988
|
+
"""The server's own wording for a rejected write, trimmed for a warning."""
|
|
989
|
+
message = getattr(exc, "message", None) or str(exc)
|
|
990
|
+
return message.strip()[:200]
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
def _ensure_content_types_enabled(sp_list: SPList) -> None:
|
|
994
|
+
"""Turn on content types on the list, only when it is currently off."""
|
|
995
|
+
|
|
996
|
+
def _enable(_: Any) -> None:
|
|
997
|
+
if sp_list.content_types_enabled is not True:
|
|
998
|
+
sp_list.set_property("ContentTypesEnabled", True)
|
|
999
|
+
sp_list.update()
|
|
1000
|
+
|
|
1001
|
+
sp_list.ensure_property("ContentTypesEnabled").after_execute(_enable)
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
def _content_type_label(content_type: ContentType) -> str:
|
|
1005
|
+
"""How a content type is named in warnings."""
|
|
1006
|
+
return content_type.name or content_type.string_id or "<content type>"
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
def _read_field_links(context: Any, content_types: "List[ContentType]") -> "Dict[int, Optional[List[str]]]":
|
|
1010
|
+
"""Read the links of several content types in one round-trip.
|
|
1011
|
+
|
|
1012
|
+
Returns ``{id(content type): [linked column, ...]}``, or ``None`` for a content
|
|
1013
|
+
type whose links could not be read. Fresh collections are used so a re-read
|
|
1014
|
+
cannot append to an already loaded one.
|
|
1015
|
+
"""
|
|
1016
|
+
collections = {
|
|
1017
|
+
id(content_type): FieldLinkCollection(context, ResourcePath("FieldLinks", content_type.resource_path))
|
|
1018
|
+
for content_type in content_types
|
|
1019
|
+
}
|
|
1020
|
+
with context.collect_batch_failures() as failures:
|
|
1021
|
+
for links in collections.values():
|
|
1022
|
+
links.get()
|
|
1023
|
+
context.execute_batch()
|
|
1024
|
+
unreadable = {id(query.return_type) for query, _ in failures if query.return_type is not None}
|
|
1025
|
+
result: Dict[int, Optional[List[str]]] = {}
|
|
1026
|
+
for key, links in collections.items():
|
|
1027
|
+
linked = [link.field_internal_name for link in links]
|
|
1028
|
+
result[key] = None if key in unreadable else [name for name in linked if name is not None]
|
|
1029
|
+
return result
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
def _reconcile_field_links(targets: "List[Tuple[ContentType, List[str]]]", available: set[str]) -> List[str]:
|
|
1033
|
+
"""Link the captured columns to each content type in as few round-trips as possible.
|
|
1034
|
+
|
|
1035
|
+
Only columns in ``available`` (the captured user columns) or already linked
|
|
1036
|
+
are attempted; every other captured link names a built-in/SharePoint-owned
|
|
1037
|
+
column the target list provides itself, so it is skipped rather than sent to
|
|
1038
|
+
the server as a guaranteed failure.
|
|
1039
|
+
|
|
1040
|
+
The content types are reconciled together: their links are read in one
|
|
1041
|
+
``$batch`` and the missing ones are added in a second, so a content type with
|
|
1042
|
+
seven links costs a share of two requests instead of seven round-trips.
|
|
1043
|
+
|
|
1044
|
+
The links are then read back, and that re-read is what the warnings report.
|
|
1045
|
+
It is not redundant: the adds travel in a change set, which the server applies
|
|
1046
|
+
atomically, so one refused column rolls back its siblings while their
|
|
1047
|
+
sub-responses still say ``200``. The order is restored per content type only
|
|
1048
|
+
when the server did not keep the captured one — a ``Reorder`` rejection is
|
|
1049
|
+
therefore attributable to the content type that caused it.
|
|
1050
|
+
|
|
1051
|
+
Returns a list of warnings for content types whose links could not be read and
|
|
1052
|
+
for columns that are not linked afterwards. Adding a link for a ready column
|
|
1053
|
+
is a no-op; adding one for a column SharePoint does not consider part of the
|
|
1054
|
+
content type fails (``Column '<name>' does not exist``), which is a REST
|
|
1055
|
+
limitation rather than a client error, so it is reported instead of raised.
|
|
1056
|
+
"""
|
|
1057
|
+
warnings: List[str] = []
|
|
1058
|
+
if not targets:
|
|
1059
|
+
return warnings
|
|
1060
|
+
context = targets[0][0].context
|
|
1061
|
+
content_types = [content_type for content_type, _ in targets]
|
|
1062
|
+
|
|
1063
|
+
before = _read_field_links(context, content_types)
|
|
1064
|
+
plan: "List[Tuple[ContentType, str, List[str], List[str]]]" = [] # linked, to link
|
|
1065
|
+
for content_type, internal_names in targets:
|
|
1066
|
+
label = _content_type_label(content_type)
|
|
1067
|
+
existing = before.get(id(content_type))
|
|
1068
|
+
if existing is None:
|
|
1069
|
+
warnings.append(f"content type '{label}': field links could not be read")
|
|
1070
|
+
continue
|
|
1071
|
+
skipped = [name for name in internal_names if name not in existing and name not in available]
|
|
1072
|
+
if skipped:
|
|
1073
|
+
logger.debug(
|
|
1074
|
+
"content type %r: left %d built-in column(s) to the target list: %s",
|
|
1075
|
+
label,
|
|
1076
|
+
len(skipped),
|
|
1077
|
+
", ".join(sorted(skipped)),
|
|
1078
|
+
)
|
|
1079
|
+
linkable = [name for name in internal_names if name in existing or name in available]
|
|
1080
|
+
plan.append((content_type, label, existing, linkable))
|
|
1081
|
+
|
|
1082
|
+
if not plan:
|
|
1083
|
+
return warnings
|
|
1084
|
+
|
|
1085
|
+
# One round-trip for every missing link. A rejected sub-request is recorded
|
|
1086
|
+
# rather than raised (see ``collect_batch_failures``), and the re-read below
|
|
1087
|
+
# decides the outcome; the recorded failures are kept for the log.
|
|
1088
|
+
queued: Dict[int, "Tuple[str, str]"] = {}
|
|
1089
|
+
with context.collect_batch_failures() as add_failures:
|
|
1090
|
+
for content_type, label, existing, linkable in plan:
|
|
1091
|
+
for internal_name in linkable:
|
|
1092
|
+
if internal_name not in existing:
|
|
1093
|
+
queued[id(content_type.field_links.add(internal_name))] = (label, internal_name)
|
|
1094
|
+
context.execute_batch()
|
|
1095
|
+
# The server's reason is the useful half of the warning; keep it against the
|
|
1096
|
+
# column it belongs to, and let the re-read decide whether it still applies.
|
|
1097
|
+
refused = {queued[id(query.return_type)]: exc for query, exc in add_failures if id(query.return_type) in queued}
|
|
1098
|
+
|
|
1099
|
+
# Nothing was queued ⇒ nothing can have changed; skip the read-back.
|
|
1100
|
+
after = _read_field_links(context, [content_type for content_type, *_ in plan]) if queued else before
|
|
1101
|
+
for content_type, label, _existing, linkable in plan:
|
|
1102
|
+
linked = after.get(id(content_type))
|
|
1103
|
+
if linked is None:
|
|
1104
|
+
warnings.append(f"content type '{label}': field links could not be read back")
|
|
1105
|
+
continue
|
|
1106
|
+
missing = [name for name in linkable if name not in linked]
|
|
1107
|
+
for internal_name in missing:
|
|
1108
|
+
reason = refused.get((label, internal_name))
|
|
1109
|
+
suffix = f": {_message(reason)}" if reason is not None else ""
|
|
1110
|
+
warning = f"content type '{label}': column '{internal_name}' was not linked{suffix}"
|
|
1111
|
+
logger.debug(warning)
|
|
1112
|
+
warnings.append(warning)
|
|
1113
|
+
if missing or [name for name in linked if name in linkable] == linkable:
|
|
1114
|
+
continue # cannot order a column the server refused, or already in order
|
|
1115
|
+
try:
|
|
1116
|
+
content_type.field_links.reorder(linkable).execute_query()
|
|
1117
|
+
except ClientRequestException as exc:
|
|
1118
|
+
warning = f"content type '{label}': field link order was not applied: {_message(exc)}"
|
|
1119
|
+
logger.debug(warning)
|
|
1120
|
+
warnings.append(warning)
|
|
1121
|
+
return warnings
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
def _message(exc: ClientRequestException) -> str:
|
|
1125
|
+
"""Best-effort short description of a request failure."""
|
|
1126
|
+
return getattr(exc, "message", None) or str(exc)
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
# --- web scope ---------------------------------------------------------------
|
|
1130
|
+
#
|
|
1131
|
+
# A site column and a site content type live at *web* scope. REST can create both
|
|
1132
|
+
# (`web.fields` / `web.content_types`), but it cannot *link* a fresh site column to
|
|
1133
|
+
# a content type (`FieldLinks` answers `Column '<name>' does not exist`), and the
|
|
1134
|
+
# server assigns content types their own identifiers. Provisioning therefore
|
|
1135
|
+
# replays a source list's structure onto the target *list*, which is faithful for
|
|
1136
|
+
# the list and lossy for the web. These helpers name the loss.
|
|
1137
|
+
|
|
1138
|
+
#: Web field properties needed to tell a user-facing column from a system one.
|
|
1139
|
+
_WEB_FIELD_SELECT = ["InternalName", "Group", "Hidden", "FromBaseType", "CanBeDeleted", "Sealed"]
|
|
1140
|
+
|
|
1141
|
+
#: Web content type properties needed to compare presence (ids are not preserved).
|
|
1142
|
+
_WEB_CONTENT_TYPE_SELECT = ["Name", "Hidden"]
|
|
1143
|
+
|
|
1144
|
+
#: Names listed inline in a note before it is truncated.
|
|
1145
|
+
_MAX_WEB_SCOPE_NAMES = 5
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
@dataclass
|
|
1149
|
+
class WebScopeStructure:
|
|
1150
|
+
"""Web-scope definitions the target web lacks after a per-list replay.
|
|
1151
|
+
|
|
1152
|
+
Attributes:
|
|
1153
|
+
columns: Internal names of source web columns with no counterpart on the target web.
|
|
1154
|
+
content_types: Names of source web content types absent from the target web.
|
|
1155
|
+
"""
|
|
1156
|
+
|
|
1157
|
+
columns: List[str] = dc_field(default_factory=list)
|
|
1158
|
+
content_types: List[str] = dc_field(default_factory=list)
|
|
1159
|
+
|
|
1160
|
+
@property
|
|
1161
|
+
def is_empty(self) -> bool:
|
|
1162
|
+
"""Whether the target web already carries every web-scope definition."""
|
|
1163
|
+
return not self.columns and not self.content_types
|
|
1164
|
+
|
|
1165
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
1166
|
+
"""A JSON-serializable form."""
|
|
1167
|
+
return {"columns": list(self.columns), "content_types": list(self.content_types)}
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
def _is_web_scope_column(column: Field) -> bool:
|
|
1171
|
+
"""Whether a web field is a user-facing column rather than platform plumbing."""
|
|
1172
|
+
name = column.internal_name
|
|
1173
|
+
if not name or name in SYSTEM_FIELD_NAMES:
|
|
1174
|
+
return False
|
|
1175
|
+
if column.hidden is True or column.from_base_type is True or column.sealed is True:
|
|
1176
|
+
return False
|
|
1177
|
+
return column.can_be_deleted is not False
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
def _web_scope_columns(web: Web) -> List[str]:
|
|
1181
|
+
"""The user-facing column names registered on ``web`` (one projected GET)."""
|
|
1182
|
+
loaded = web.fields.select(_WEB_FIELD_SELECT).get().execute_query()
|
|
1183
|
+
names: Set[str] = set()
|
|
1184
|
+
for column in loaded:
|
|
1185
|
+
name = column.internal_name
|
|
1186
|
+
if name and _is_web_scope_column(column):
|
|
1187
|
+
names.add(name)
|
|
1188
|
+
return sorted(names)
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
def _web_scope_content_types(web: Web) -> List[str]:
|
|
1192
|
+
"""The content type names registered on ``web`` (one projected GET)."""
|
|
1193
|
+
loaded = web.content_types.select(_WEB_CONTENT_TYPE_SELECT).get().execute_query()
|
|
1194
|
+
return sorted(
|
|
1195
|
+
{content_type.name for content_type in loaded if content_type.name and content_type.hidden is not True}
|
|
1196
|
+
)
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
def compare_web_scope_structure(source_web: Web, target_web: Web) -> WebScopeStructure:
|
|
1200
|
+
"""Web-scope columns/content types of ``source_web`` that ``target_web`` lacks.
|
|
1201
|
+
|
|
1202
|
+
Two projected GETs per web, read-only. The comparison is *by presence*:
|
|
1203
|
+
columns by internal name, content types by name-casefolded (a content type's
|
|
1204
|
+
``string_id`` is assigned by the server and is not preserved by a copy, so it
|
|
1205
|
+
cannot be the key).
|
|
1206
|
+
|
|
1207
|
+
Args:
|
|
1208
|
+
source_web: The web the migration reads structure from.
|
|
1209
|
+
target_web: The web the migration replays it onto.
|
|
1210
|
+
"""
|
|
1211
|
+
source_columns = _web_scope_columns(source_web)
|
|
1212
|
+
target_columns = set(_web_scope_columns(target_web))
|
|
1213
|
+
source_content_types = _web_scope_content_types(source_web)
|
|
1214
|
+
target_content_types = {name.casefold() for name in _web_scope_content_types(target_web)}
|
|
1215
|
+
return WebScopeStructure(
|
|
1216
|
+
columns=[name for name in source_columns if name not in target_columns],
|
|
1217
|
+
content_types=[name for name in source_content_types if name.casefold() not in target_content_types],
|
|
1218
|
+
)
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
def _sample_names(names: List[str]) -> str:
|
|
1222
|
+
"""Name a few entries inline, counting the rest."""
|
|
1223
|
+
shown = ", ".join(names[:_MAX_WEB_SCOPE_NAMES])
|
|
1224
|
+
if len(names) <= _MAX_WEB_SCOPE_NAMES:
|
|
1225
|
+
return shown
|
|
1226
|
+
return f"{shown} (+{len(names) - _MAX_WEB_SCOPE_NAMES} more)"
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
def web_scope_note(missing: WebScopeStructure, source_url: Optional[str] = None) -> Optional[str]:
|
|
1230
|
+
"""A warning line for the web-scope gap, or ``None`` when there is none.
|
|
1231
|
+
|
|
1232
|
+
Args:
|
|
1233
|
+
missing: The result of :func:`compare_web_scope_structure`.
|
|
1234
|
+
source_url: The *source* web's URL. The note names the affected target by
|
|
1235
|
+
its source, because the target web handle is often not URL-loaded and
|
|
1236
|
+
one note is emitted per web pair anyway.
|
|
1237
|
+
"""
|
|
1238
|
+
if missing.is_empty:
|
|
1239
|
+
return None
|
|
1240
|
+
parts: List[str] = []
|
|
1241
|
+
if missing.columns:
|
|
1242
|
+
parts.append(f"{len(missing.columns)} column(s): {_sample_names(missing.columns)}")
|
|
1243
|
+
if missing.content_types:
|
|
1244
|
+
parts.append(f"{len(missing.content_types)} content type(s): {_sample_names(missing.content_types)}")
|
|
1245
|
+
return (
|
|
1246
|
+
f"web-scope structure is incomplete: the target of {source_url or 'this web'} lacks "
|
|
1247
|
+
+ "; ".join(parts)
|
|
1248
|
+
+ " — structure replay is per list, so a list that uses one still gets a list-scoped copy, "
|
|
1249
|
+
"but the web-level definition (and its inheritance by the web's other lists) is missing; "
|
|
1250
|
+
"web-scope columns are replayed when structure provisioning is on, and a web-scope content "
|
|
1251
|
+
"type cannot be attached over REST, so create that out of band (CSOM/PnP)"
|
|
1252
|
+
)
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
@dataclass
|
|
1256
|
+
class WebScopeProvisionReport:
|
|
1257
|
+
"""What web-scope column provisioning did, and what the server would not do.
|
|
1258
|
+
|
|
1259
|
+
Attributes:
|
|
1260
|
+
created: Internal names of the columns now registered on the target web.
|
|
1261
|
+
present: Internal names the target web already carried.
|
|
1262
|
+
skipped: Notes for the source columns deliberately not created — a column
|
|
1263
|
+
bound to a BCS model, a lookup into a list the migration does not carry,
|
|
1264
|
+
or a column whose schema could not be read.
|
|
1265
|
+
failed: Internal name -> why the server would not create it.
|
|
1266
|
+
"""
|
|
1267
|
+
|
|
1268
|
+
created: List[str] = dc_field(default_factory=list)
|
|
1269
|
+
present: List[str] = dc_field(default_factory=list)
|
|
1270
|
+
skipped: List[str] = dc_field(default_factory=list)
|
|
1271
|
+
failed: Dict[str, str] = dc_field(default_factory=dict)
|
|
1272
|
+
|
|
1273
|
+
@property
|
|
1274
|
+
def is_empty(self) -> bool:
|
|
1275
|
+
"""Whether every source column was already present (nothing to do, nothing to say)."""
|
|
1276
|
+
return not self.created and not self.skipped and not self.failed
|
|
1277
|
+
|
|
1278
|
+
def warnings(self) -> List[str]:
|
|
1279
|
+
"""The skipped and failed columns as warning lines."""
|
|
1280
|
+
notes = list(self.skipped)
|
|
1281
|
+
notes.extend(f"web column '{name}' was not created: {reason}" for name, reason in sorted(self.failed.items()))
|
|
1282
|
+
return notes
|
|
1283
|
+
|
|
1284
|
+
def summary(self) -> str:
|
|
1285
|
+
"""One line naming what was created, or ``""`` when nothing was."""
|
|
1286
|
+
if not self.created and not self.failed:
|
|
1287
|
+
return ""
|
|
1288
|
+
parts = [f"{len(self.created)} created"]
|
|
1289
|
+
if self.present:
|
|
1290
|
+
parts.append(f"{len(self.present)} already present")
|
|
1291
|
+
if self.skipped:
|
|
1292
|
+
parts.append(f"{len(self.skipped)} skipped")
|
|
1293
|
+
if self.failed:
|
|
1294
|
+
parts.append(f"{len(self.failed)} failed")
|
|
1295
|
+
return "web-scope columns: " + ", ".join(parts)
|
|
1296
|
+
|
|
1297
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
1298
|
+
"""A JSON-serializable form."""
|
|
1299
|
+
return {
|
|
1300
|
+
"created": list(self.created),
|
|
1301
|
+
"present": list(self.present),
|
|
1302
|
+
"skipped": list(self.skipped),
|
|
1303
|
+
"failed": dict(self.failed),
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
def _web_field_definition(web: Web, name: str) -> Optional[FieldDefinition]:
|
|
1308
|
+
"""One web column's full definition (``SchemaXml`` included), or ``None``."""
|
|
1309
|
+
try:
|
|
1310
|
+
field = web.fields.get_by_internal_name_or_title(name).get().execute_query()
|
|
1311
|
+
except Exception as e: # noqa: BLE001 — an unreadable column is reported by the caller
|
|
1312
|
+
logger.debug("read web column '%s' failed: %s", name, e)
|
|
1313
|
+
return None
|
|
1314
|
+
return _field_definition(field)
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
def _web_column_exists(web: Web, name: str) -> bool:
|
|
1318
|
+
"""Whether ``name`` is a field of ``web`` now (the verification after a create)."""
|
|
1319
|
+
try:
|
|
1320
|
+
web.fields.get_by_internal_name_or_title(name).get().execute_query()
|
|
1321
|
+
except Exception: # noqa: BLE001 — absent or unreadable means "not there"
|
|
1322
|
+
return False
|
|
1323
|
+
return True
|
|
1324
|
+
|
|
1325
|
+
|
|
1326
|
+
def _create_web_column(web: Web, schema_xml: str, name: str, report: WebScopeProvisionReport) -> None:
|
|
1327
|
+
"""Create one column from its schema and verify it by presence.
|
|
1328
|
+
|
|
1329
|
+
SharePoint Online registers the column and *then* raises
|
|
1330
|
+
``SPFieldValidationException`` ("The object has been updated by another user
|
|
1331
|
+
since it was last fetched"), so the exception is not evidence of failure: what
|
|
1332
|
+
the web carries afterwards is.
|
|
1333
|
+
"""
|
|
1334
|
+
error: Optional[BaseException] = None
|
|
1335
|
+
try:
|
|
1336
|
+
web.fields.create_field_as_xml(schema_xml).execute_query()
|
|
1337
|
+
except Exception as e: # noqa: BLE001 — verified by presence below instead
|
|
1338
|
+
error = e
|
|
1339
|
+
logger.debug("create web column '%s' raised: %s", name, e)
|
|
1340
|
+
if _web_column_exists(web, name):
|
|
1341
|
+
report.created.append(name)
|
|
1342
|
+
return
|
|
1343
|
+
report.failed[name] = str(error or "the column is not on the web after the create")
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
def _provision_web_column(
|
|
1347
|
+
source_web: Web,
|
|
1348
|
+
target_web: Web,
|
|
1349
|
+
name: str,
|
|
1350
|
+
list_id_map: Dict[str, str] | None,
|
|
1351
|
+
report: WebScopeProvisionReport,
|
|
1352
|
+
) -> None:
|
|
1353
|
+
"""Create one missing web column, recording in ``report`` why it is not there."""
|
|
1354
|
+
definition = _web_field_definition(source_web, name)
|
|
1355
|
+
if definition is None or not definition.schema_xml:
|
|
1356
|
+
report.skipped.append(f"web column '{name}' was not recreated: its schema could not be read")
|
|
1357
|
+
return
|
|
1358
|
+
schema_xml: str = definition.schema_xml
|
|
1359
|
+
if _is_external_data_definition(definition):
|
|
1360
|
+
report.skipped.append(
|
|
1361
|
+
f"web column '{name}' was not recreated: it is bound to an external (BCS) content type, "
|
|
1362
|
+
"which a client-side migration cannot provision"
|
|
1363
|
+
)
|
|
1364
|
+
return
|
|
1365
|
+
if _is_taxonomy_definition(definition):
|
|
1366
|
+
notes: List[str] = []
|
|
1367
|
+
created = _ensure_taxonomy_field(target_web, definition, notes)
|
|
1368
|
+
if created is not None:
|
|
1369
|
+
try:
|
|
1370
|
+
created.execute_query()
|
|
1371
|
+
except Exception as e: # noqa: BLE001 — verified by presence below instead
|
|
1372
|
+
logger.debug("create web taxonomy column '%s' raised: %s", name, e)
|
|
1373
|
+
if _web_column_exists(target_web, name):
|
|
1374
|
+
report.created.append(name)
|
|
1375
|
+
else:
|
|
1376
|
+
report.failed[name] = notes[-1] if notes else "the taxonomy column is not on the web after the create"
|
|
1377
|
+
return
|
|
1378
|
+
rewritten, unresolved = rewrite_lookup_schema(schema_xml, list_id_map)
|
|
1379
|
+
if unresolved is not None:
|
|
1380
|
+
report.skipped.append(
|
|
1381
|
+
f"web column '{name}' was not recreated: it is a lookup into list {{{unresolved}}}, "
|
|
1382
|
+
"which is not part of this migration"
|
|
1383
|
+
)
|
|
1384
|
+
return
|
|
1385
|
+
_create_web_column(target_web, rewritten or schema_xml, name, report)
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
def provision_web_scope_columns(
|
|
1389
|
+
source_web: Web,
|
|
1390
|
+
target_web: Web,
|
|
1391
|
+
*,
|
|
1392
|
+
list_id_map: Dict[str, str] | None = None,
|
|
1393
|
+
) -> WebScopeProvisionReport:
|
|
1394
|
+
"""Register the source web's site columns on ``target_web`` (idempotent).
|
|
1395
|
+
|
|
1396
|
+
Structure replay is per list, so a column a web defines at *site* scope was
|
|
1397
|
+
recreated as a list column on every target list that happened to have it and
|
|
1398
|
+
nowhere else: the web-level definition, and its inheritance by any other list,
|
|
1399
|
+
stayed missing. This closes that gap for the columns REST can create.
|
|
1400
|
+
|
|
1401
|
+
Run it **before** the per-list replay: a list's ``Fields`` collection includes
|
|
1402
|
+
the site columns it inherits, so a replayed list then uses the web column
|
|
1403
|
+
instead of minting a second, list-scoped copy of it.
|
|
1404
|
+
|
|
1405
|
+
A column is recreated from its source ``SchemaXml`` (origin attributes stripped
|
|
1406
|
+
by :meth:`~office365.sharepoint.fields.field.Field.schema_xml_for_copy`), a
|
|
1407
|
+
lookup is repointed at the target list, and a managed-metadata column goes
|
|
1408
|
+
through ``TaxonomyField.create`` so it binds the target web's own hidden
|
|
1409
|
+
taxonomy list instead of the source's. Content types are deliberately not
|
|
1410
|
+
attempted: SharePoint Online refuses a field link on a site-scope content type
|
|
1411
|
+
over REST, so a recreated one would be empty.
|
|
1412
|
+
|
|
1413
|
+
Args:
|
|
1414
|
+
source_web: The web the migration reads structure from.
|
|
1415
|
+
target_web: The web the columns are registered on.
|
|
1416
|
+
list_id_map: Normalized source list id -> target list id, for a lookup
|
|
1417
|
+
column (see :func:`rewrite_lookup_schema`).
|
|
1418
|
+
"""
|
|
1419
|
+
report = WebScopeProvisionReport()
|
|
1420
|
+
target_names = set(_web_scope_columns(target_web))
|
|
1421
|
+
for name in _web_scope_columns(source_web):
|
|
1422
|
+
if name in target_names:
|
|
1423
|
+
report.present.append(name)
|
|
1424
|
+
continue
|
|
1425
|
+
_provision_web_column(source_web, target_web, name, list_id_map, report)
|
|
1426
|
+
return report
|