Office365-REST-Python-Client 3.0.0__py3-none-any.whl → 3.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- office365/admin/baseline_parameter.py +15 -0
- office365/admin/baseline_resource.py +17 -0
- office365/admin/drift_status.py +13 -0
- office365/admin/exchange/exchange_message_trace_status.py +18 -0
- office365/admin/snapshot_job_status.py +16 -0
- office365/backuprestore/artifact_query.py +16 -0
- office365/backuprestore/notification_events_type.py +13 -0
- office365/backuprestore/restorejobtype.py +1 -0
- office365/backuprestore/restorepoints/search_response.py +21 -0
- office365/backuprestore/restorepoints/search_result.py +14 -0
- office365/backuprestore/restoresessions/artifact_count.py +17 -0
- office365/backuprestore/restoresessions/browsable_resource_type.py +15 -0
- office365/backuprestore/restoresessions/browse_query_order.py +15 -0
- office365/backuprestore/restoresessions/browse_query_response_item.py +20 -0
- office365/backuprestore/restoresessions/browse_query_response_item_type.py +16 -0
- office365/backuprestore/restoresessions/browse_session_status.py +14 -0
- office365/backuprestore/restoresessions/browser_shared_cookie_history.py +24 -0
- office365/backuprestore/service_status.py +28 -1
- office365/backuprestore/time_period.py +16 -0
- office365/booking/assigned_place_mode.py +15 -0
- office365/booking/business/import_building_map_setting.py +14 -0
- office365/booking/chedulingpolicy.py +4 -2
- office365/booking/customers/information.py +4 -2
- office365/booking/drop_in_place_mode.py +10 -0
- office365/booking/mailbox_details.py +15 -0
- office365/booking/place_mode.py +10 -0
- office365/booking/place_service_plan_info.py +14 -0
- office365/booking/reservable_place_mode.py +10 -0
- office365/booking/unavailable_place_mode.py +14 -0
- office365/communications/adhoc_call.py +31 -0
- office365/communications/broadcastmeetingaudience.py +9 -1
- office365/communications/callrecords/audio_codec.py +33 -0
- office365/communications/callrecords/media_stream_direction.py +12 -0
- office365/communications/callrecords/modality.py +0 -1
- office365/communications/callrecords/network_connection_type.py +16 -0
- office365/communications/callrecords/network_transport_protocol.py +14 -0
- office365/communications/callrecords/product_family.py +16 -0
- office365/communications/callrecords/pstn_call_duration_source.py +12 -0
- office365/communications/callrecords/service_role.py +32 -0
- office365/communications/callrecords/user_feedback_rating.py +17 -0
- office365/communications/callrecords/video_codec.py +22 -0
- office365/communications/cloud_communications.py +3 -6
- office365/communications/onlinemeetings/attendee_notification_info.py +15 -0
- office365/communications/onlinemeetings/base.py +152 -1
- office365/communications/onlinemeetings/broadcast_settings.py +4 -0
- office365/communications/onlinemeetings/lobby_bypass_settings.py +16 -0
- office365/communications/onlinemeetings/online_meeting.py +48 -23
- office365/communications/onlinemeetings/online_meeting_info.py +22 -0
- office365/communications/onlinemeetings/online_meeting_type.py +16 -0
- office365/communications/onlinemeetings/participants.py +5 -3
- office365/communications/onlinemeetings/watermark_protection_values.py +15 -0
- office365/communications/presences/presence.py +15 -5
- office365/communications/presences/work_location_source.py +15 -0
- office365/communications/presences/work_location_type.py +15 -0
- office365/communications/virtualevents/communications_identity_set.py +23 -0
- office365/copilot/ai_agent_info.py +14 -0
- office365/copilot/ai_interaction_entity.py +16 -0
- office365/copilot/ai_interaction_plugin.py +10 -0
- office365/copilot/package_access_entity.py +14 -0
- office365/copilot/package_element.py +16 -0
- office365/copilot/package_element_detail.py +19 -0
- office365/copilot/retrieval_data_source.py +14 -0
- office365/copilot/retrieval_entity_type.py +17 -0
- office365/count_collection.py +1 -1
- office365/delta_collection.py +41 -2
- office365/directory/applications/all_allowed_scopes.py +10 -0
- office365/directory/applications/custom_security_attribute_exemption.py +18 -0
- office365/directory/applications/custom_security_attribute_string_value_exemption.py +14 -0
- office365/directory/applications/enumerated_scopes.py +15 -0
- office365/directory/applications/identifier_uri_restriction.py +22 -0
- office365/directory/applications/implicitgrantsettings.py +8 -1
- office365/directory/applications/inheritable_scopes.py +15 -0
- office365/directory/applications/key_credential_configuration.py +22 -0
- office365/directory/applications/no_scopes.py +10 -0
- office365/directory/applications/optional_claim.py +14 -1
- office365/directory/applications/password_credential_configuration.py +22 -0
- office365/directory/applications/preauthorized.py +11 -1
- office365/directory/applications/redirecturisettings.py +8 -1
- office365/directory/applications/resource_access.py +4 -0
- office365/directory/applications/template.py +63 -3
- office365/directory/attribute_rule_members.py +15 -0
- office365/directory/audit/directory.py +9 -0
- office365/directory/audit/log_root.py +15 -15
- office365/directory/audit/logs/recordtype.py +476 -1
- office365/directory/audit/logs/usertype.py +16 -1
- office365/directory/audit/provisioning/object_summary.py +67 -3
- office365/directory/audit/signins/authentication_app_device_details.py +17 -0
- office365/directory/audit/signins/governance_insight.py +17 -0
- office365/directory/audit/signins/membership_outlier_insight.py +55 -0
- office365/directory/audit/signins/signin.py +78 -8
- office365/directory/authentication/attributecollection/external_users_self_service_sign_up.py +20 -0
- office365/directory/authentication/attributecollection/handler.py +10 -0
- office365/directory/authentication/attributecollection/method_load_start_handler.py +10 -0
- office365/directory/authentication/attributecollection/start_custom_extension_handler.py +17 -0
- office365/directory/authentication/attributecollection/start_handler.py +10 -0
- office365/directory/authentication/attributecollection/submit_custom_extension_handler.py +17 -0
- office365/directory/authentication/attributecollection/submit_handler.py +10 -0
- office365/directory/authentication/authentication.py +13 -36
- office365/directory/authentication/error_correction_level.py +14 -0
- office365/directory/authentication/fraud_protection_configuration.py +10 -0
- office365/directory/authentication/fraud_protection_provider_configuration.py +12 -0
- office365/directory/authentication/generic_error.py +8 -1
- office365/directory/authentication/methods/configuration.py +17 -0
- office365/directory/authentication/methods/details.py +36 -0
- office365/directory/authentication/methods/mode_detail.py +17 -0
- office365/directory/authentication/methods/passkey_type.py +13 -0
- office365/directory/authentication/methods/root.py +8 -12
- office365/directory/authentication/methods/target.py +17 -0
- office365/directory/authentication/oidc_address_inbound_claims.py +18 -0
- office365/directory/authentication/oidc_client_authentication.py +10 -0
- office365/directory/authentication/oidc_client_secret_authentication.py +14 -0
- office365/directory/authentication/oidc_inbound_claim_mapping_override.py +23 -0
- office365/directory/authentication/oidc_private_jwt_key_client_authentication.py +10 -0
- office365/directory/authentication/signing_certificate_update_status.py +16 -0
- office365/directory/authentication/strength/root.py +39 -0
- office365/directory/authentication/strength/usage.py +4 -0
- office365/directory/certificates/authority.py +5 -0
- office365/directory/certificates/pkcs12_certificate.py +15 -0
- office365/directory/certificates/self_signed.py +4 -0
- office365/directory/certificates/x509/issuer_hints_configuration.py +2 -1
- office365/directory/connected_organization_members.py +15 -0
- office365/directory/connection_info.py +14 -0
- office365/directory/domains/state.py +13 -1
- office365/directory/domains/verified.py +14 -4
- office365/directory/extensions/custom/http_request_endpoint.py +16 -0
- office365/directory/groups/access_type.py +15 -0
- office365/directory/groups/group_members.py +15 -0
- office365/directory/groups/setting_template_value.py +17 -0
- office365/directory/identities/application_context.py +15 -0
- office365/directory/identities/application_enforced_restrictions_session_control.py +10 -0
- office365/directory/identities/auth_context.py +14 -0
- office365/directory/identities/authentication_flow.py +15 -0
- office365/directory/identities/conditional_access_root.py +35 -3
- office365/directory/identities/conditional_access_session_control.py +14 -0
- office365/directory/identities/ip_range.py +10 -0
- office365/directory/identities/on_fraud_protection_load_start_external_users_auth_handler.py +15 -0
- office365/directory/identities/on_interactive_auth_flow_start_external_users_self_service_sign_up.py +14 -0
- office365/directory/identities/on_interactive_auth_flow_start_handler.py +10 -0
- office365/directory/identities/on_otp_send_custom_extension_handler.py +17 -0
- office365/directory/identities/on_otp_send_handler.py +10 -0
- office365/directory/identities/on_password_submit_handler.py +10 -0
- office365/directory/identities/providers/on_authentication_method_load_start_external_users_self_service_sign_up.py +16 -0
- office365/directory/identities/providers/on_fraud_protection_load_start_handler.py +10 -0
- office365/directory/identities/providers/verified_id_profile_state.py +13 -0
- office365/directory/identities/providers/verified_id_usage_configuration_purpose.py +14 -0
- office365/directory/identities/riskPrevention/web_application_firewall_dns_configuration.py +21 -0
- office365/directory/identities/riskPrevention/web_application_firewall_verification_result.py +23 -0
- office365/directory/identities/riskPrevention/web_application_firewall_verified_details.py +8 -1
- office365/directory/identities/sign_in_context.py +10 -0
- office365/directory/identities/userflows/user_attribute_values_item.py +16 -0
- office365/directory/identities/userflows/user_flow_api_connector_configuration.py +16 -0
- office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_session_request.py +12 -0
- office365/directory/identitygovernance/accessreview/custom_data_provided_resource_upload_stats.py +15 -0
- office365/directory/identitygovernance/accessreview/disable_and_delete_user_apply_action.py +10 -0
- office365/directory/identitygovernance/accessreview/error.py +10 -0
- office365/directory/identitygovernance/accessreview/history/definition.py +3 -3
- office365/directory/identitygovernance/accessreview/history_schedule_settings.py +16 -0
- office365/directory/identitygovernance/accessreview/inactive_users_query_scope.py +15 -0
- office365/directory/identitygovernance/accessreview/instance.py +2 -2
- office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_assignment_policy_resource.py +15 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_access_package_resource.py +15 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_azure_role_resource.py +17 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_resource.py +16 -0
- office365/directory/identitygovernance/accessreview/instance_decision_item_service_principal_resource.py +16 -0
- office365/directory/identitygovernance/accessreview/notification_recipient_item.py +20 -0
- office365/directory/identitygovernance/accessreview/notification_recipient_query_scope.py +16 -0
- office365/directory/identitygovernance/accessreview/notification_recipients_type.py +16 -0
- office365/directory/identitygovernance/accessreview/notify_members.py +14 -0
- office365/directory/identitygovernance/accessreview/principal_resource_memberships_scope.py +20 -0
- office365/directory/identitygovernance/accessreview/principal_scope.py +12 -0
- office365/directory/identitygovernance/accessreview/query_scope.py +16 -0
- office365/directory/identitygovernance/accessreview/recommendation_insight_setting.py +10 -0
- office365/directory/identitygovernance/accessreview/remove_access_apply_action.py +10 -0
- office365/directory/identitygovernance/accessreview/resource_scope.py +15 -0
- office365/directory/identitygovernance/accessreview/reviewer_scope.py +17 -0
- office365/directory/identitygovernance/accessreview/schedule/settings.py +33 -1
- office365/directory/identitygovernance/accessreview/stage.py +1 -1
- office365/directory/identitygovernance/accessreview/stage_settings.py +33 -0
- office365/directory/identitygovernance/accessreview/target_owners.py +17 -0
- office365/directory/identitygovernance/activate_processing_result_scope.py +3 -0
- office365/directory/identitygovernance/activate_run_scope.py +2 -0
- office365/directory/identitygovernance/appconsent/request_scope.py +8 -1
- office365/directory/identitygovernance/attribute_set_entry.py +15 -0
- office365/directory/identitygovernance/awaited_workflow_processing_result.py +17 -0
- office365/directory/identitygovernance/cancel_runs_scope.py +16 -0
- office365/directory/identitygovernance/cancel_scope.py +10 -0
- office365/directory/identitygovernance/content_base.py +10 -0
- office365/directory/identitygovernance/content_category.py +24 -0
- office365/directory/identitygovernance/count_based_quarantine_condition.py +14 -0
- office365/directory/identitygovernance/custom_task_extension_callout_data.py +4 -0
- office365/directory/identitygovernance/custom_task_extension_response_data.py +21 -0
- office365/directory/identitygovernance/directory_object_workflow_subject.py +15 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer.py +16 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_choice.py +22 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/answer_string.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/approval_stage.py +36 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/approver_information_visibility.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_approval_settings.py +23 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_policy_scope.py +17 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_callback_data.py +20 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_parameters.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_request_requirements.py +25 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_requestor_settings.py +25 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignment_review_settings.py +29 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentfilterbycurrentuseroptions.py +2 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/assignmentrequestfilterbycurrentuseroptions.py +4 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/automatic_request_settings.py +17 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_data_provided_resource_upload_status.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/custom_extension_callout_instance.py +21 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/dynamic_approval_stage.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/expiration_pattern.py +20 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/localized_text.py +15 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/notification_settings.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/request_approval_stage_callback_configuration.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/requesttype.py +1 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute.py +26 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_destination.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_question.py +15 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/resource_attribute_source.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/subject_lifecycle.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_filter_by_current_user_options.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_reason.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_based.py +17 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_related_people_insight_level.py +14 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/suggestion_self_assignment_history_based.py +16 -0
- office365/directory/identitygovernance/entitlementmanagement/accesspackage/user_directory_attribute_store.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/assignment_request_approval_stage_callback_data.py +17 -0
- office365/directory/identitygovernance/entitlementmanagement/azure_active_directory_tenant.py +15 -0
- office365/directory/identitygovernance/entitlementmanagement/domain_identity_source.py +15 -0
- office365/directory/identitygovernance/entitlementmanagement/fallback_to_microsoft_provider_on_error.py +12 -0
- office365/directory/identitygovernance/entitlementmanagement/identity_source.py +10 -0
- office365/directory/identitygovernance/entitlementmanagement/schedule.py +21 -0
- office365/directory/identitygovernance/entitlementmanagement/social_identity_source.py +18 -0
- office365/directory/identitygovernance/guest_sponsor_trigger.py +14 -0
- office365/directory/identitygovernance/percentage_based_quarantine_condition.py +14 -0
- office365/directory/identitygovernance/preview_failed_task.py +17 -0
- office365/directory/identitygovernance/process_content_metadata_base.py +26 -0
- office365/directory/identitygovernance/provisioning_attribute_mapping.py +10 -0
- office365/directory/identitygovernance/provisioning_object_workflow_subject.py +19 -0
- office365/directory/identitygovernance/quarantine_condition.py +10 -0
- office365/directory/identitygovernance/quarantine_configuration.py +20 -0
- office365/directory/identitygovernance/quarantine_details.py +18 -0
- office365/directory/identitygovernance/resource_access_detail.py +23 -0
- office365/directory/identitygovernance/subject_summary.py +18 -0
- office365/directory/identitygovernance/termsofuse/agreement_file_data.py +14 -0
- office365/directory/identitygovernance/termsofuse/terms_expiration.py +16 -0
- office365/directory/identitygovernance/text_content.py +14 -0
- office365/directory/identitygovernance/workflow.py +23 -0
- office365/directory/identitygovernance/workflow_setting.py +15 -0
- office365/directory/identitygovernance/workflow_subject.py +10 -0
- office365/directory/insights/office_graph.py +7 -6
- office365/directory/invitations/invitation.py +45 -2
- office365/directory/licenses/service_plan_info.py +4 -0
- office365/directory/licenses/units_detail.py +4 -0
- office365/directory/objects/collection.py +34 -8
- office365/directory/objects/service_provisioning_xml_error.py +14 -0
- office365/directory/permissions/comment_action.py +18 -0
- office365/directory/permissions/create_action.py +10 -0
- office365/directory/permissions/default_user_role.py +16 -1
- office365/directory/permissions/delete_action.py +15 -0
- office365/directory/permissions/email_identity.py +7 -9
- office365/directory/policies/all_devices_assignment_target.py +12 -0
- office365/directory/policies/all_domains.py +10 -0
- office365/directory/policies/all_licensed_users_assignment_target.py +10 -0
- office365/directory/policies/allowedtargetscope.py +1 -0
- office365/directory/policies/app_management_application_configuration.py +15 -0
- office365/directory/policies/app_management_configuration.py +22 -0
- office365/directory/policies/app_management_policy_actor_exemptions.py +18 -0
- office365/directory/policies/app_management_service_principal_configuration.py +10 -0
- office365/directory/policies/authentication_combination_configuration.py +18 -0
- office365/directory/policies/authentication_context_class_reference.py +26 -0
- office365/directory/policies/authentication_methods.py +59 -0
- office365/directory/policies/authentication_strength.py +65 -8
- office365/directory/policies/azure_ad_registration_policy.py +16 -0
- office365/directory/policies/ca_policies_deletable_root.py +33 -0
- office365/directory/policies/claims_mapping_policy.py +7 -0
- office365/directory/policies/cloud_app_security_session_control.py +15 -0
- office365/directory/policies/conditionalaccess/all_external_tenants.py +10 -0
- office365/directory/policies/conditionalaccess/applications.py +20 -0
- office365/directory/policies/conditionalaccess/authentication_flows.py +15 -0
- office365/directory/policies/conditionalaccess/client_applications.py +18 -0
- office365/directory/policies/conditionalaccess/condition_set.py +42 -0
- office365/directory/policies/conditionalaccess/device_and_app_management_assignment_target.py +10 -0
- office365/directory/policies/conditionalaccess/device_info.py +43 -0
- office365/directory/policies/conditionalaccess/devices.py +15 -0
- office365/directory/policies/conditionalaccess/enumerated_external_tenants.py +15 -0
- office365/directory/policies/conditionalaccess/external_tenants.py +17 -0
- office365/directory/policies/conditionalaccess/filter.py +16 -0
- office365/directory/policies/conditionalaccess/grant_controls.py +24 -0
- office365/directory/policies/conditionalaccess/grantcontrol.py +1 -0
- office365/directory/policies/conditionalaccess/guests_or_external_users.py +19 -0
- office365/directory/policies/conditionalaccess/locations.py +16 -0
- office365/directory/policies/conditionalaccess/persistent_browser_session_control.py +15 -0
- office365/directory/policies/conditionalaccess/platforms.py +21 -0
- office365/directory/policies/conditionalaccess/policy_deletable_item.py +17 -0
- office365/directory/policies/conditionalaccess/policy_detail.py +19 -0
- office365/directory/policies/conditionalaccess/secure_sign_in_session_control.py +10 -0
- office365/directory/policies/conditionalaccess/service_principal_sign_in.py +14 -0
- office365/directory/policies/conditionalaccess/session_controls.py +32 -0
- office365/directory/policies/conditionalaccess/sign_in_conditions.py +29 -0
- office365/directory/policies/conditionalaccess/sign_in_frequency_session_control.py +24 -0
- office365/directory/policies/conditionalaccess/sign_in_identity.py +10 -0
- office365/directory/policies/conditionalaccess/user_action_context.py +15 -0
- office365/directory/policies/conditionalaccess/user_sign_in.py +19 -0
- office365/directory/policies/conditionalaccess/users.py +29 -0
- office365/directory/policies/crosstenant/app_service_connect_setting.py +19 -0
- office365/directory/policies/crosstenant/b2_b_setting.py +22 -0
- office365/directory/policies/crosstenant/inbound_trust.py +16 -0
- office365/directory/policies/crosstenant/m365_collaboration_inbound_setting.py +17 -0
- office365/directory/policies/crosstenant/m365_collaboration_outbound_setting.py +19 -0
- office365/directory/policies/crosstenant/target.py +16 -0
- office365/directory/policies/crosstenant/target_configuration.py +24 -0
- office365/directory/policies/crosstenant/tenant_restrictions.py +15 -0
- office365/directory/policies/crosstenant/user_sync_inbound.py +14 -0
- office365/directory/policies/custom_app_management_application_configuration.py +15 -0
- office365/directory/policies/custom_app_management_configuration.py +19 -0
- office365/directory/policies/default_invitation_redemption_identity_provider_configuration.py +10 -0
- office365/directory/policies/devices_filter.py +20 -0
- office365/directory/policies/enumerated_domains.py +15 -0
- office365/directory/policies/face_check_configuration.py +15 -0
- office365/directory/policies/group_scope.py +10 -0
- office365/directory/policies/identifier_uri_configuration.py +16 -0
- office365/directory/policies/inbound_outbound_policy_configuration.py +15 -0
- office365/directory/policies/invitation_redemption_identity_provider_configuration.py +19 -0
- office365/directory/policies/match_confidence_level.py +13 -0
- office365/directory/policies/protected_application_metadata.py +15 -0
- office365/directory/policies/protection_policy_artifact_count.py +17 -0
- office365/directory/policies/restrict_access_action.py +10 -0
- office365/directory/policies/restrict_access_action_base.py +15 -0
- office365/directory/policies/retention_setting.py +16 -0
- office365/directory/policies/root.py +14 -1
- office365/directory/policies/scope_base.py +14 -0
- office365/directory/policies/security_defaults.py +16 -0
- office365/directory/policies/self_service_sign_up_authentication_flow_configuration.py +14 -0
- office365/directory/policies/tenant_scope.py +10 -0
- office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_filter_by_current_user_options.py +12 -0
- office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_instance_filter_by_current_user_options.py +12 -0
- office365/directory/policies/unifiedrolemanagement/role_assignment_schedule_request_filter_by_current_user_options.py +14 -0
- office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_filter_by_current_user_options.py +12 -0
- office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_instance_filter_by_current_user_options.py +12 -0
- office365/directory/policies/unifiedrolemanagement/role_eligibility_schedule_request_filter_by_current_user_options.py +14 -0
- office365/directory/policies/user_scope.py +10 -0
- office365/directory/policies/validating_domains.py +15 -0
- office365/directory/policies/verified_id_profile_configuration.py +15 -0
- office365/directory/policies/verified_id_usage_configuration.py +14 -0
- office365/directory/protection/riskyusers/activity.py +7 -1
- office365/directory/protection/riskyusers/risk_service_principal_activity.py +17 -0
- office365/directory/recovery/recovery_action.py +14 -0
- office365/directory/recovery/recovery_status.py +18 -0
- office365/directory/recovery/resource_type_name.py +23 -0
- office365/directory/requestor_manager.py +14 -0
- office365/directory/rolemanagement/unifiedrole/notification_recipients.py +20 -0
- office365/directory/rolemanagement/unifiedrole/permission.py +4 -0
- office365/directory/security/account.py +0 -1
- office365/directory/security/action.py +17 -0
- office365/directory/security/ai_agent_platform.py +15 -0
- office365/directory/security/alerts/alert.py +17 -0
- office365/directory/security/{blob_container_evidence.py → alerts/blob_container_evidence.py} +1 -1
- office365/directory/security/{blob_evidence.py → alerts/blob_evidence.py} +1 -1
- office365/directory/security/alerts/connection_direction.py +14 -0
- office365/directory/security/{sas_token_evidence.py → alerts/sas_token_evidence.py} +1 -1
- office365/directory/security/alerts/status.py +1 -2
- office365/directory/security/analyzed_message_evidence.py +3 -0
- office365/directory/security/antispam_directionality.py +15 -0
- office365/directory/security/attacksimulations/account_target_content_type.py +14 -0
- office365/directory/security/audit/audit_data.py +15 -0
- office365/directory/security/audit/audit_log_query_status.py +16 -0
- office365/directory/security/audit/multi_tenant_organization_join_request_transition_details.py +20 -0
- office365/directory/security/audit/multi_tenant_organization_member_transition_details.py +22 -0
- office365/directory/security/audit/whois_domain_status.py +16 -0
- office365/directory/security/{whois_record.py → audit/whois_record.py} +1 -1
- office365/directory/security/cases/additionaldataoptions.py +1 -0
- office365/directory/security/cases/ediscovery.py +3 -0
- office365/directory/security/cloud_application_evidence.py +3 -1
- office365/directory/security/cloud_logon_session_evidence.py +2 -0
- office365/directory/security/{analyzed_email_attachment.py → collaboration/analyzed_email_attachment.py} +3 -1
- office365/directory/security/{collaboration_root.py → collaboration/collaboration_root.py} +1 -1
- office365/directory/security/container_evidence.py +4 -0
- office365/directory/security/container_image_evidence.py +4 -1
- office365/directory/security/correlation_reason.py +28 -0
- office365/directory/security/datasecurity/classifcation_error_base.py +18 -0
- office365/directory/security/{audit_data.py → datasecurity/classification_error.py} +2 -2
- office365/directory/security/datasecurity/classification_inner_error.py +18 -0
- office365/directory/security/datasecurity/compute_rights_and_inheritance_result.py +17 -0
- office365/directory/security/datasecurity/custom_metadata_dictionary.py +10 -0
- office365/directory/security/datasecurity/dlp_action_info.py +15 -0
- office365/directory/security/{data_security → datasecurity}/governance.py +1 -1
- office365/directory/security/datasecurity/integrated_application_metadata.py +15 -0
- office365/directory/security/datasecurity/policy_binding.py +17 -0
- office365/directory/security/datasecurity/policy_location.py +14 -0
- office365/directory/security/datasecurity/policy_location_application.py +10 -0
- office365/directory/security/datasecurity/policy_location_domain.py +10 -0
- office365/directory/security/datasecurity/policy_location_url.py +10 -0
- office365/directory/security/datasecurity/policy_scope_base.py +26 -0
- office365/directory/security/datasecurity/policy_tenant_scope.py +15 -0
- office365/directory/security/datasecurity/policy_tip_action.py +16 -0
- office365/directory/security/datasecurity/policy_user_scope.py +10 -0
- office365/directory/security/datasecurity/process_content_batch_request.py +17 -0
- office365/directory/security/datasecurity/process_content_request.py +24 -0
- office365/directory/security/datasecurity/process_content_response.py +24 -0
- office365/directory/security/datasecurity/process_content_responses.py +16 -0
- office365/directory/security/datasecurity/process_conversation_metadata.py +27 -0
- office365/directory/security/datasecurity/process_file_metadata.py +16 -0
- office365/directory/security/datasecurity/protected_content.py +16 -0
- office365/directory/security/delivery_action.py +16 -0
- office365/directory/security/delivery_location.py +20 -0
- office365/directory/security/detonation_details.py +11 -0
- office365/directory/security/device_evidence.py +11 -0
- office365/directory/security/dns_evidence.py +6 -1
- office365/directory/security/event_source.py +14 -0
- office365/directory/security/file_plan_applied_category.py +4 -1
- office365/directory/security/formatted_content.py +16 -0
- office365/directory/security/indicator_source.py +14 -0
- office365/directory/security/intelligence_profile_kind.py +13 -0
- office365/directory/security/investigation_state.py +29 -0
- office365/directory/security/invoke_action_result.py +0 -1
- office365/directory/security/io_t_device_evidence.py +6 -1
- office365/directory/security/ip_evidence.py +2 -0
- office365/directory/security/kubernetes_controller_evidence.py +2 -0
- office365/directory/security/kubernetes_pod_evidence.py +10 -0
- office365/directory/security/labels/retention/duration_in_days.py +3 -0
- office365/directory/security/mailbox_configuration_type.py +16 -0
- office365/directory/security/mailbox_evidence.py +3 -1
- office365/directory/security/onboarding_status.py +15 -0
- office365/directory/security/passive_dns_record.py +1 -1
- office365/directory/security/processing_error.py +15 -0
- office365/directory/security/protocol_type.py +13 -0
- office365/directory/security/public_error_response.py +4 -1
- office365/directory/security/query_type.py +13 -0
- office365/directory/security/recipient_type.py +13 -0
- office365/directory/security/remediation_action.py +17 -0
- office365/directory/security/remediation_severity.py +14 -0
- office365/directory/security/security.py +1 -1
- office365/directory/security/sensor_candidate_activation_mode.py +13 -0
- office365/directory/security/service_principal_type.py +15 -0
- office365/directory/security/service_source.py +25 -0
- office365/directory/security/ssl_certificate.py +1 -1
- office365/directory/security/subdomain.py +1 -1
- office365/directory/security/subjectrightsrequests/all_mailbox_location.py +10 -0
- office365/directory/security/subjectrightsrequests/all_site_location.py +10 -0
- office365/directory/security/subjectrightsrequests/data_subject.py +17 -0
- office365/directory/security/subjectrightsrequests/detail.py +26 -0
- office365/directory/security/subjectrightsrequests/enumerated_mailbox_location.py +15 -0
- office365/directory/security/subjectrightsrequests/enumerated_site_location.py +15 -0
- office365/directory/security/subjectrightsrequests/history.py +22 -0
- office365/directory/security/subjectrightsrequests/mailbox_location.py +10 -0
- office365/directory/security/subjectrightsrequests/site_location.py +10 -0
- office365/directory/security/subjectrightsrequests/stage_detail.py +19 -0
- office365/directory/security/teams_delivery_location.py +15 -0
- office365/directory/security/teams_message_delivery_action.py +16 -0
- office365/directory/security/threat_type.py +16 -0
- office365/directory/security/{host.py → threatintelligence/host.py} +8 -8
- office365/directory/security/{host_component.py → threatintelligence/host_component.py} +1 -1
- office365/directory/security/{host_cookie.py → threatintelligence/host_cookie.py} +1 -1
- office365/directory/security/{host_pair.py → threatintelligence/host_pair.py} +1 -1
- office365/directory/security/{host_port.py → threatintelligence/host_port.py} +1 -1
- office365/directory/security/threatintelligence/host_port_banner.py +19 -0
- office365/directory/security/threatintelligence/host_port_component.py +19 -0
- office365/directory/security/threatintelligence/host_port_protocol.py +13 -0
- office365/directory/security/threatintelligence/host_port_status.py +14 -0
- office365/directory/security/threatintelligence/host_reputation_classification.py +15 -0
- office365/directory/security/threatintelligence/host_reputation_rule.py +16 -0
- office365/directory/security/threatintelligence/host_reputation_rule_severity.py +15 -0
- office365/directory/security/{host_ssl_certificate.py → threatintelligence/host_ssl_certificate.py} +1 -1
- office365/directory/security/{host_tracker.py → threatintelligence/host_tracker.py} +1 -1
- office365/directory/security/threatintelligence/hosts/__init__.py +0 -0
- office365/directory/security/threatintelligence/threat_intelligence.py +9 -9
- office365/directory/security/threatintelligence/whoisrecords/__init__.py +0 -0
- office365/directory/security/timeline_event_type.py +20 -0
- office365/directory/security/user_evidence.py +2 -0
- office365/directory/security/verdict_category.py +20 -0
- office365/directory/security/vm_cloud_provider.py +13 -0
- office365/directory/security/vulnerability_severity.py +16 -0
- office365/directory/security/whois_base_record.py +1 -1
- office365/directory/serviceprincipals/delegated_permission_classification.py +27 -0
- office365/directory/serviceprincipals/remote_desktop_security_configuration.py +16 -0
- office365/directory/single_service_principal.py +15 -0
- office365/directory/single_user.py +15 -0
- office365/directory/synchronization/attribute_mapping.py +23 -0
- office365/directory/synchronization/error.py +10 -1
- office365/directory/synchronization/job_application_parameters.py +19 -0
- office365/directory/synchronization/job_restart_criteria.py +7 -1
- office365/directory/synchronization/job_subject.py +17 -0
- office365/directory/synchronization/linked_objects.py +22 -0
- office365/directory/synchronization/metadata_entry.py +16 -0
- office365/directory/synchronization/on_premises_accidental_deletion_prevention.py +20 -0
- office365/directory/synchronization/on_premises_directory_synchronization_configuration.py +19 -0
- office365/directory/synchronization/on_premises_directory_synchronization_feature.py +33 -0
- office365/directory/synchronization/progress.py +4 -0
- office365/directory/synchronization/quarantine.py +11 -0
- office365/directory/synchronization/rule.py +32 -0
- office365/directory/synchronization/schedule.py +18 -0
- office365/directory/synchronization/secret_key_string_value_pair.py +16 -0
- office365/directory/synchronization/status.py +17 -3
- office365/directory/synchronization/task_execution.py +26 -1
- office365/directory/target_agent_identity_sponsors_or_owners.py +10 -0
- office365/directory/target_application_owners.py +10 -0
- office365/directory/target_manager.py +14 -0
- office365/directory/target_user_sponsors.py +10 -0
- office365/directory/tenantinformation/information.py +4 -0
- office365/directory/users/activities/activity.py +42 -8
- office365/directory/users/settings.py +5 -13
- office365/directory/users/user.py +4 -3
- office365/directory/users/work_location_update_scope.py +13 -0
- office365/education/related_contact.py +19 -0
- office365/entity_collection.py +0 -20
- office365/externalconnectors/acl_type.py +16 -0
- office365/externalconnectors/binary_operator.py +12 -0
- office365/externalconnectors/connection_operation_status.py +15 -0
- office365/externalconnectors/connection_state.py +15 -0
- office365/externalconnectors/external_activity_type.py +15 -0
- office365/externalconnectors/external_item_content_type.py +13 -0
- office365/externalconnectors/identity_type.py +14 -0
- office365/externalconnectors/label.py +65 -0
- office365/externalconnectors/property_type.py +22 -0
- office365/externalconnectors/rule_operation.py +19 -0
- office365/graph_client.py +120 -16
- office365/graph_request.py +3 -1
- office365/intune/browser/browser_site_history.py +25 -0
- office365/intune/devices/alternative_security_id.py +5 -0
- office365/intune/devices/cloud_pc_launch_detail.py +22 -0
- office365/intune/devices/cloud_pc_windows_setting.py +14 -0
- office365/intune/devices/device_metadata.py +17 -0
- office365/intune/devices/enumerated_device_registration_membership.py +16 -0
- office365/intune/devices/imported_windows_autopilot_device_identity_import_status.py +15 -0
- office365/intune/devices/imported_windows_autopilot_device_identity_upload_status.py +14 -0
- office365/intune/devices/management/all_device_registration_membership.py +10 -0
- office365/intune/devices/management/device_protection_overview.py +24 -0
- office365/intune/devices/management/managed/managed.py +79 -0
- office365/intune/devices/management/managed/windows/autopilot_device_type.py +13 -0
- office365/intune/devices/management/managed/windows/defender_product_status.py +36 -0
- office365/intune/devices/management/managed/windows/information_protection_enforcement_level.py +14 -0
- office365/intune/devices/management/mobileapps/file_encryption_info.py +20 -0
- office365/intune/devices/management/mobileapps/ios/ios_device_type.py +15 -0
- office365/intune/devices/management/user_experience_analytics_settings.py +14 -0
- office365/intune/devices/management/user_experience_analytics_summarized_by.py +17 -0
- office365/intune/devices/management/virtualendpoint/cloudpcs/exclusion_group_assignment_target.py +10 -0
- office365/intune/devices/management/virtualendpoint/cloudpcs/group_assignment_target.py +16 -0
- office365/intune/devices/management/virtualendpoint/provisioningpolicies/microsoft_managed_desktop.py +18 -0
- office365/intune/devices/management/windows_malware_overview.py +16 -0
- office365/intune/devices/no_device_registration_membership.py +10 -0
- office365/intune/devices/operating_system_specifications.py +15 -0
- office365/intune/enrollment_state.py +15 -0
- office365/intune/instance_resource_access.py +19 -0
- office365/intune/organizations/content_customization.py +15 -0
- office365/intune/organizations/login_page_layout_configuration.py +17 -0
- office365/intune/organizations/login_page_text_visibility_settings.py +19 -0
- office365/intune/organizations/physical_office_address.py +19 -0
- office365/intune/organizations/privacy_profile.py +15 -0
- office365/intune/policies/azure_ad_join_policy.py +18 -0
- office365/intune/policies/local_admin_password_settings.py +14 -0
- office365/intune/policies/local_admin_settings.py +16 -0
- office365/intune/print/printers/incompatible_printer_settings.py +13 -0
- office365/intune/print/user_print.py +0 -2
- office365/intune/process_integrity_level.py +17 -0
- office365/intune/resource_permission.py +15 -0
- office365/migration/__init__.py +122 -7
- office365/migration/_util.py +73 -0
- office365/migration/adapters/__init__.py +94 -0
- office365/migration/adapters/filesystem.py +174 -0
- office365/migration/assessment/__init__.py +27 -0
- office365/migration/assessment/containers.py +24 -0
- office365/migration/assessment/export.py +51 -0
- office365/migration/assessment/registry.py +60 -0
- office365/migration/assessment/report.py +142 -31
- office365/migration/assessment/runner.py +57 -0
- office365/migration/assessment/scanners/__init__.py +13 -0
- office365/migration/assessment/scanners/base.py +135 -0
- office365/migration/base.py +53 -4
- office365/migration/checkpoint.py +76 -0
- office365/migration/job.py +209 -0
- office365/migration/manifest.py +71 -0
- office365/migration/outlook/__init__.py +20 -0
- office365/migration/outlook/assessor.py +73 -0
- office365/migration/outlook/registry.py +27 -0
- office365/migration/outlook/scanner.py +82 -0
- office365/migration/report.py +111 -0
- office365/migration/runner.py +208 -0
- office365/migration/server_job.py +90 -0
- office365/migration/session.py +105 -0
- office365/migration/sharepoint/__init__.py +53 -0
- office365/migration/sharepoint/adapters.py +354 -0
- office365/migration/sharepoint/assessor.py +312 -0
- office365/migration/sharepoint/registry.py +48 -0
- office365/migration/sharepoint/scanners/__init__.py +27 -0
- office365/migration/sharepoint/scanners/fields.py +52 -0
- office365/migration/sharepoint/scanners/files.py +25 -0
- office365/migration/sharepoint/scanners/large_sites.py +124 -0
- office365/migration/sharepoint/scanners/locked_sites.py +38 -0
- office365/migration/sharepoint/scanners/paths.py +45 -0
- office365/migration/sharepoint/scanners/permissions.py +24 -0
- office365/migration/sharepoint/scanners/summary.py +37 -0
- office365/migration/sharepoint/tenant_assessor.py +93 -0
- office365/migration/sharepoint/transfer.py +92 -0
- office365/migration/teams/__init__.py +29 -0
- office365/migration/teams/_extract.py +108 -0
- office365/migration/teams/adapters.py +190 -0
- office365/migration/teams/models.py +73 -0
- office365/migration/validators.py +65 -0
- office365/onedrive/base_item.py +10 -15
- office365/onedrive/contenttypes/content_type.py +8 -13
- office365/onedrive/documentsets/version.py +3 -6
- office365/onedrive/driveitems/audio.py +16 -0
- office365/onedrive/driveitems/bundle.py +4 -0
- office365/onedrive/driveitems/driveItem.py +126 -24
- office365/onedrive/driveitems/image.py +4 -0
- office365/onedrive/driveitems/malware.py +14 -0
- office365/onedrive/driveitems/package.py +14 -0
- office365/onedrive/driveitems/photo.py +13 -1
- office365/onedrive/driveitems/publication_facet.py +4 -0
- office365/onedrive/driveitems/remote_item.py +18 -0
- office365/onedrive/driveitems/special_folder.py +4 -0
- office365/onedrive/driveitems/uploadable_properties.py +2 -2
- office365/onedrive/driveitems/video.py +15 -1
- office365/onedrive/drives/drive.py +9 -0
- office365/onedrive/drives/quota.py +9 -1
- office365/onedrive/files/file.py +4 -0
- office365/onedrive/files/system_info.py +4 -0
- office365/onedrive/filestorage/containertypes/app_permission.py +20 -1
- office365/onedrive/filestorage/containertypes/billing_classification.py +8 -0
- office365/onedrive/filestorage/containertypes/billing_status.py +7 -0
- office365/onedrive/filestorage/containertypes/settings_override.py +17 -0
- office365/onedrive/folders/folder.py +4 -0
- office365/onedrive/internal/paths/shared.py +1 -3
- office365/onedrive/internal/paths/site.py +2 -1
- office365/onedrive/listitems/collection.py +2 -2
- office365/onedrive/lists/info.py +4 -0
- office365/onedrive/operations/pending.py +4 -0
- office365/onedrive/operations/public_inner_error.py +21 -0
- office365/onedrive/sensitivitylabels/usagerights.py +1 -1
- office365/onedrive/share_point_migration_job_error_level.py +15 -0
- office365/onedrive/share_point_migration_object_type.py +20 -0
- office365/onedrive/shares/shared.py +4 -0
- office365/onedrive/sites/collection.py +4 -0
- office365/onedrive/sites/sites_with_root.py +3 -3
- office365/onedrive/sites/website.py +17 -0
- office365/onedrive/sites/website_type.py +15 -0
- office365/onedrive/termstore/groups/collection.py +6 -6
- office365/onedrive/termstore/groups/group.py +6 -1
- office365/onedrive/termstore/relation_type.py +13 -0
- office365/onedrive/termstore/sets/collection.py +6 -6
- office365/onedrive/termstore/store.py +14 -29
- office365/onedrive/termstore/store_manager.py +128 -0
- office365/onedrive/termstore/terms/collection.py +6 -6
- office365/onedrive/workbooks/charts/axes.py +4 -10
- office365/onedrive/workbooks/filter_criteria.py +9 -0
- office365/onedrive/workbooks/filter_datetime.py +15 -0
- office365/onedrive/workbooks/icon.py +7 -1
- office365/onedrive/workbooks/operations/error.py +4 -0
- office365/onedrive/workbooks/ranges/reference.py +4 -0
- office365/onedrive/workbooks/session_info.py +4 -0
- office365/onedrive/workbooks/sort_field.py +5 -0
- office365/onedrive/workbooks/worksheets/protection_options.py +4 -0
- office365/onedrive/workbooks/worksheets/worksheet.py +5 -3
- office365/onenote/pages/collection.py +1 -1
- office365/onenote/pages/page.py +5 -11
- office365/outlook/calendar/attendees/attendee.py +4 -0
- office365/outlook/calendar/attendees/availability.py +4 -0
- office365/outlook/calendar/attendees/base.py +4 -0
- office365/outlook/calendar/collection.py +7 -0
- office365/outlook/calendar/events/event.py +8 -14
- office365/outlook/calendar/events/reminder.py +4 -0
- office365/outlook/calendar/location_constraint.py +4 -0
- office365/outlook/calendar/meetingtimes/suggestion.py +8 -0
- office365/outlook/calendar/meetingtimes/suggestions_result.py +4 -0
- office365/outlook/calendar/meetingtimes/time_constraint.py +4 -0
- office365/outlook/calendar/response_status.py +7 -1
- office365/outlook/calendar/schedule/free_busy_error.py +15 -0
- office365/outlook/calendar/schedule/information.py +4 -0
- office365/outlook/calendar/schedule/item.py +4 -0
- office365/outlook/calendar/sharing/message_action.py +11 -1
- office365/outlook/calendar/timezones/base.py +4 -0
- office365/outlook/calendar/timezones/custom.py +9 -1
- office365/outlook/calendar/timezones/daylight_time_zone_offset.py +14 -0
- office365/outlook/calendar/working_hours.py +4 -0
- office365/outlook/check_in_method.py +15 -0
- office365/outlook/contacts/folders/collection.py +1 -1
- office365/outlook/convert_id_result.py +7 -1
- office365/outlook/item.py +3 -11
- office365/outlook/locale_info.py +4 -0
- office365/outlook/mail/attachments/attachment_item.py +7 -0
- office365/outlook/mail/attachments/collection.py +33 -18
- office365/outlook/mail/automaticreplies/mailtips.py +4 -0
- office365/outlook/mail/automaticreplies/setting.py +4 -0
- office365/outlook/mail/email_details.py +16 -0
- office365/outlook/mail/export_item_response.py +19 -0
- office365/outlook/mail/folders/folder.py +5 -11
- office365/outlook/mail/location.py +1 -1
- office365/outlook/mail/location_constraint_item.py +8 -1
- office365/outlook/mail/mailbox_item_import_session.py +16 -0
- office365/outlook/mail/messages/collection.py +1 -1
- office365/outlook/mail/messages/followup_flag.py +4 -0
- office365/outlook/mail/messages/internet_header.py +4 -0
- office365/outlook/mail/messages/message.py +21 -7
- office365/outlook/mail/messages/rules/actions.py +4 -0
- office365/outlook/mail/messages/rules/predicates.py +29 -0
- office365/outlook/mail/messages/rules/rule.py +1 -1
- office365/outlook/mail/messages/rules/size_range.py +15 -0
- office365/outlook/mail/patterned_recurrence.py +4 -0
- office365/outlook/mail/recurrence_pattern.py +4 -0
- office365/outlook/mail/recurrence_range.py +4 -0
- office365/outlook/mail/tips/error.py +7 -1
- office365/outlook/people/person_type.py +14 -0
- office365/outlook/place_feature_enablement.py +14 -0
- office365/outlook/resource_link.py +17 -0
- office365/outlook/resource_link_type.py +12 -0
- office365/outlook/scored_email_address.py +18 -0
- office365/outlook/timezones/information.py +4 -0
- office365/outlook/timezones/standard_time_zone_offset.py +20 -0
- office365/partners/billing/attribute_set.py +13 -0
- office365/partners/billing/billing_period.py +13 -0
- office365/partners/partners.py +5 -4
- office365/planner/buckets/collection.py +2 -2
- office365/planner/plans/details.py +3 -9
- office365/planner/user.py +6 -4
- office365/reports/internal/queries/create_report_query.py +26 -12
- office365/reports/print_usage.py +67 -0
- office365/reports/print_usage_by_printer.py +21 -0
- office365/reports/print_usage_by_user.py +16 -0
- office365/reports/relying_party_detailed_summary.py +70 -0
- office365/reports/root.py +77 -95
- office365/runtime/auth/authentication_context.py +41 -15
- office365/runtime/auth/entra/authentication_context.py +22 -2
- office365/runtime/auth/providers/acs_token_provider.py +6 -2
- office365/runtime/auth/providers/cookie_provider.py +7 -3
- office365/runtime/auth/providers/saml_token_provider.py +6 -2
- office365/runtime/auth/sts_profile.py +1 -1
- office365/runtime/client_object.py +50 -67
- office365/runtime/client_object_collection.py +297 -14
- office365/runtime/client_request_exception.py +63 -4
- office365/runtime/client_result.py +26 -18
- office365/runtime/client_runtime_context.py +232 -25
- office365/runtime/client_value.py +14 -40
- office365/runtime/client_value_collection.py +4 -8
- office365/runtime/converters/__init__.py +1 -0
- office365/runtime/converters/csv_reader.py +94 -0
- office365/runtime/converters/csv_writer.py +60 -0
- office365/runtime/converters/dataframe.py +122 -0
- office365/runtime/converters/excel.py +44 -0
- office365/runtime/converters/json_file.py +21 -0
- office365/runtime/converters/keyvalue.py +95 -0
- office365/runtime/converters/ndjson.py +17 -0
- office365/runtime/converters/records.py +82 -0
- office365/runtime/converters/scalars.py +128 -0
- office365/runtime/converters/value.py +186 -0
- office365/runtime/decorators.py +27 -0
- office365/runtime/http/mime.py +12 -0
- office365/runtime/http/throttling.py +205 -0
- office365/runtime/http/url.py +36 -0
- office365/runtime/odata/batch_util.py +92 -0
- office365/runtime/odata/query_options.py +26 -1
- office365/runtime/odata/request.py +27 -16
- office365/runtime/odata/type.py +47 -105
- office365/runtime/odata/v3/batch_request.py +88 -1
- office365/runtime/odata/v4/batch_request.py +88 -0
- office365/runtime/odata/v4/upload_session.py +4 -0
- office365/runtime/odata/v4/upload_session_request.py +26 -10
- office365/runtime/operations.py +135 -0
- office365/runtime/parallel.py +96 -0
- office365/runtime/paths/builder.py +4 -2
- office365/runtime/queries/batch.py +23 -14
- office365/runtime/queries/client_query.py +8 -10
- office365/runtime/queries/deferred.py +72 -0
- office365/runtime/queries/delete_entity.py +2 -2
- office365/runtime/queries/function.py +35 -1
- office365/runtime/queries/read_entity.py +23 -4
- office365/runtime/queries/update_entity.py +2 -2
- office365/runtime/queries/upload_session.py +1 -1
- office365/runtime/retry.py +137 -0
- office365/runtime/types/binary_content.py +14 -0
- office365/runtime/types/ipv4_cidr_range.py +14 -0
- office365/runtime/types/ipv6_cidr_range.py +14 -0
- office365/runtime/types/json.py +10 -0
- office365/runtime/types/odata_property.py +7 -0
- office365/runtime/types/public_error.py +23 -0
- office365/runtime/types/public_inner_error.py +21 -0
- office365/runtime/types/setting_value.py +15 -0
- office365/search/request.py +2 -2
- office365/sharepoint/agreements/summarydata.py +15 -5
- office365/sharepoint/authentication/auth_file_detonation_request_response.py +48 -0
- office365/sharepoint/authentication/spo_auth_file_detonation_request.py +7 -0
- office365/sharepoint/brandcenter/brand_font_file_delete_result.py +9 -0
- office365/sharepoint/changes/change.py +6 -0
- office365/sharepoint/changes/collection.py +1 -1
- office365/sharepoint/changes/item.py +4 -10
- office365/sharepoint/client_context.py +78 -33
- office365/sharepoint/clientsidecomponent/agreementssolutionfilecontext.py +1 -0
- office365/sharepoint/clientsidecomponent/spteamsappcomponent.py +3 -0
- office365/sharepoint/comments/comment.py +2 -10
- office365/sharepoint/comments/contentanchor.py +6 -0
- office365/sharepoint/compliance/store_proxy.py +306 -68
- office365/sharepoint/compliance/tags/tag.py +3 -0
- office365/sharepoint/containers/active/properties.py +3 -0
- office365/sharepoint/contentcenter/machinelearning/column_autofill_choice_settings.py +15 -0
- office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_data.py +25 -0
- office365/sharepoint/contentcenter/machinelearning/column_autofill_preview_result.py +12 -0
- office365/sharepoint/contentcenter/machinelearning/hub.py +231 -29
- office365/sharepoint/contentcenter/machinelearning/list_autofill_entity_data.py +15 -0
- office365/sharepoint/contentcenter/machinelearning/list_autofill_item_results.py +18 -0
- office365/sharepoint/contentcenter/machinelearning/modeldependencies.py +4 -3
- office365/sharepoint/contentcenter/machinelearning/models/model.py +254 -0
- office365/sharepoint/contentcenter/machinelearning/publications/publication.py +177 -0
- office365/sharepoint/contentcenter/machinelearning/samples/sample.py +134 -0
- office365/sharepoint/contentcenter/machinelearning/sp_machine_learning_doc_lib_autofill_item_results.py +19 -0
- office365/sharepoint/contentcenter/machinelearning/workitems/item.py +149 -0
- office365/sharepoint/contenttypes/collection.py +9 -10
- office365/sharepoint/contenttypes/content_type.py +4 -10
- office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -7
- office365/sharepoint/directory/helper.py +5 -5
- office365/sharepoint/directory/multi_conditional_access_policy.py +37 -0
- office365/sharepoint/directory/named_location_policy.py +62 -0
- office365/sharepoint/directory/provider/provider.py +1 -1
- office365/sharepoint/entity.py +8 -4
- office365/sharepoint/eventreceivers/definition_collection.py +32 -0
- office365/sharepoint/fields/collection.py +165 -67
- office365/sharepoint/fields/field.py +4 -2
- office365/sharepoint/fields/name.py +11 -0
- office365/sharepoint/files/checked_out_file.py +2 -6
- office365/sharepoint/files/collection.py +75 -8
- office365/sharepoint/files/file.py +68 -6
- office365/sharepoint/files/file_url_virus_status_update.py +22 -0
- office365/sharepoint/files/versionbatchdeleteparameters.py +1 -0
- office365/sharepoint/files/versions/version.py +2 -8
- office365/sharepoint/folders/collection.py +5 -2
- office365/sharepoint/folders/folder.py +198 -26
- office365/sharepoint/internal/image_content_part.py +5 -0
- office365/sharepoint/internal/paths/web.py +3 -1
- office365/sharepoint/internal/sticky_routing_options.py +13 -0
- office365/sharepoint/likes/liked_by_information.py +2 -6
- office365/sharepoint/listitems/collection.py +28 -0
- office365/sharepoint/listitems/compliance_info.py +1 -0
- office365/sharepoint/listitems/form_update_value.py +2 -1
- office365/sharepoint/listitems/listdata_validation_exception_value.py +3 -1
- office365/sharepoint/listitems/listitem.py +5 -5
- office365/sharepoint/listitems/versions/version.py +3 -15
- office365/sharepoint/lists/batch_convert_item_result.py +19 -0
- office365/sharepoint/lists/batch_convert_result.py +17 -0
- office365/sharepoint/lists/collection.py +36 -0
- office365/sharepoint/lists/conversion_loss_item.py +13 -0
- office365/sharepoint/lists/conversion_loss_report.py +18 -0
- office365/sharepoint/lists/extended_share_point_permission_settings.py +17 -0
- office365/sharepoint/lists/list.py +95 -20
- office365/sharepoint/lists/list_forms_api.py +7 -0
- office365/sharepoint/logger/activityrequest.py +3 -0
- office365/sharepoint/marketplace/corporatecuratedgallery/addins/permission_response.py +7 -3
- office365/sharepoint/marketplace/corporatecuratedgallery/available_addins_response.py +3 -1
- office365/sharepoint/marketplace/tenant/appcatalog/accessor.py +4 -10
- office365/sharepoint/microfeed/attachment_store.py +69 -0
- office365/sharepoint/microfeed/data.py +64 -0
- office365/sharepoint/microfeed/manager.py +259 -0
- office365/sharepoint/microfeed/microfeedstore.py +69 -0
- office365/sharepoint/migrationcenter/service/performance/dashboard_data.py +4 -2
- office365/sharepoint/multigeo/service/dfdeprecationjob.py +8 -1
- office365/sharepoint/multigeo/service/geoexperience.py +15 -0
- office365/sharepoint/multigeo/service/groupmovejob.py +9 -0
- office365/sharepoint/multigeo/service/move_job_report.py +23 -0
- office365/sharepoint/multigeo/service/movesiterostate.py +8 -1
- office365/sharepoint/multigeo/service/partner_company_id_lookup.py +22 -0
- office365/sharepoint/multigeo/service/services.py +3 -6
- office365/sharepoint/multigeo/service/sitemovejob.py +9 -0
- office365/sharepoint/navigation/menu/node.py +5 -3
- office365/sharepoint/navigation/menu/state.py +1 -1
- office365/sharepoint/navigation/nodes/collection.py +36 -1
- office365/sharepoint/navigation/service.py +2 -8
- office365/sharepoint/permissions/roles/assignments/assignment.py +2 -8
- office365/sharepoint/permissions/roles/definitions/definition.py +3 -9
- office365/sharepoint/portal/groups/service.py +12 -0
- office365/sharepoint/portal/groups/site_manager.py +283 -32
- office365/sharepoint/portal/linkedsites/manager.py +25 -3
- office365/sharepoint/portal/sites/manager.py +197 -0
- office365/sharepoint/principal/principal.py +3 -8
- office365/sharepoint/principal/users/user.py +5 -6
- office365/sharepoint/publishing/announcements/controller.py +31 -0
- office365/sharepoint/publishing/content_distribution_controller.py +23 -0
- office365/sharepoint/publishing/copytoparams.py +3 -0
- office365/sharepoint/publishing/diagnostics/controller.py +12 -0
- office365/sharepoint/publishing/emailpublishingstatus.py +4 -2
- office365/sharepoint/publishing/engage_distribution_info.py +2 -0
- office365/sharepoint/publishing/feedvideopage.py +358 -0
- office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +40 -0
- office365/sharepoint/publishing/pages/3d/page.py +314 -0
- office365/sharepoint/publishing/pages/campaign/publication.py +549 -7
- office365/sharepoint/publishing/pages/metadata.py +6 -11
- office365/sharepoint/publishing/pages/page.py +469 -0
- office365/sharepoint/publishing/pages/reposts/repost.py +334 -0
- office365/sharepoint/publishing/pages/service.py +95 -43
- office365/sharepoint/publishing/pages/topics/topic.py +314 -0
- office365/sharepoint/publishing/point/post.py +28 -0
- office365/sharepoint/publishing/point/postservicemanager.py +31 -0
- office365/sharepoint/publishing/point/tenantmanager.py +9 -0
- office365/sharepoint/publishing/point/user.py +9 -0
- office365/sharepoint/publishing/portallaunchwavesmanager.py +36 -0
- office365/sharepoint/publishing/portalnavigationcachewrapper.py +21 -0
- office365/sharepoint/publishing/rich_sharing.py +12 -0
- office365/sharepoint/publishing/sites/communication/site.py +14 -6
- office365/sharepoint/publishing/subtitlefile.py +40 -0
- office365/sharepoint/publishing/video/channel.py +112 -0
- office365/sharepoint/publishing/video/item.py +231 -0
- office365/sharepoint/publishing/videopermissiongroup.py +16 -0
- office365/sharepoint/request.py +35 -7
- office365/sharepoint/search/analytics/signal_store.py +15 -0
- office365/sharepoint/search/promoted_result_query_rule.py +6 -2
- office365/sharepoint/search/ranking_labeling.py +11 -0
- office365/sharepoint/search/relevant_results.py +1 -1
- office365/sharepoint/search/reordering_rule_collection.py +30 -0
- office365/sharepoint/search/result.py +1 -1
- office365/sharepoint/search/service.py +61 -0
- office365/sharepoint/search/setting.py +75 -15
- office365/sharepoint/search/simple_data_row.py +1 -1
- office365/sharepoint/sharing/direct_abilities.py +1 -0
- office365/sharepoint/sharing/main_link_audience_role_abilities.py +17 -0
- office365/sharepoint/sharing/mainlinkabilities.py +3 -3
- office365/sharepoint/sharing/mainlinkaudienceabilities.py +4 -0
- office365/sharepoint/sharing/mainlinkinfo.py +4 -0
- office365/sharepoint/sharing/object_sharing_settings.py +4 -10
- office365/sharepoint/sitedesigns/app_settings_in_teams.py +6 -1
- office365/sharepoint/sitedesigns/creation_info.py +1 -1
- office365/sharepoint/sitedesigns/insert_field_response.py +10 -1
- office365/sharepoint/sitedesigns/main_link_details.py +2 -0
- office365/sharepoint/sitedesigns/sectiondesignideasapi.py +26 -0
- office365/sharepoint/sitedesigns/thread_engagement_data.py +2 -0
- office365/sharepoint/sites/home/sharepointhomeservicemanager.py +18 -0
- office365/sharepoint/sites/manager/baaa_request.py +2 -0
- office365/sharepoint/sites/manager/service.py +192 -5
- office365/sharepoint/sites/site.py +12 -0
- office365/sharepoint/sites/version_policy_manager.py +6 -10
- office365/sharepoint/sitescripts/utility.py +1 -1
- office365/sharepoint/social/rest_thread.py +2 -6
- office365/sharepoint/taxonomy/field.py +1 -0
- office365/sharepoint/taxonomy/groups/group.py +2 -6
- office365/sharepoint/taxonomy/item.py +12 -6
- office365/sharepoint/taxonomy/service.py +18 -2
- office365/sharepoint/teams/manage_channel_capabilities_request.py +3 -0
- office365/sharepoint/tenant/administration/bulk_insert_operation_result.py +5 -0
- office365/sharepoint/tenant/administration/catalog_management_category.py +23 -0
- office365/sharepoint/tenant/administration/catalog_management_custom_property_map.py +3 -0
- office365/sharepoint/tenant/administration/catalog_management_group.py +16 -0
- office365/sharepoint/tenant/administration/catalog_management_schema.py +18 -0
- office365/sharepoint/tenant/administration/catalog_management_status.py +23 -0
- office365/sharepoint/tenant/administration/container/properties.py +6 -0
- office365/sharepoint/tenant/administration/dataset_metadata_response.py +6 -0
- office365/sharepoint/tenant/administration/ransomware/activitiesoverview.py +2 -1
- office365/sharepoint/tenant/administration/rcd_categories_map.py +19 -0
- office365/sharepoint/tenant/administration/rcd_category_detail_result.py +17 -0
- office365/sharepoint/tenant/administration/rcd_group_definition.py +19 -0
- office365/sharepoint/tenant/administration/rcd_group_metadata.py +20 -0
- office365/sharepoint/tenant/administration/rcd_save_result.py +12 -0
- office365/sharepoint/tenant/administration/rcd_site_status_detail.py +18 -0
- office365/sharepoint/tenant/administration/secondary_administrators_info.py +0 -7
- office365/sharepoint/tenant/administration/site_property_scope_config.py +1 -0
- office365/sharepoint/tenant/administration/spom365agentinsightsm365agentsonsitesdetails.py +3 -1
- office365/sharepoint/tenant/administration/tenant.py +94 -227
- office365/sharepoint/tenant/administration/tenant_admin_ransomware_event_site_restore_point.py +1 -0
- office365/sharepoint/tenant/administration/tenant_data_loss_prevention_quarantine_settings.py +17 -0
- office365/sharepoint/tenant/cdn_api.py +18 -4
- office365/sharepoint/tenant/management/office365_tenant.py +15 -10
- office365/sharepoint/tenantadministration/spo_file_archive_policy_info.py +28 -0
- office365/sharepoint/tenantadministration/spo_file_archive_policy_report_info.py +20 -0
- office365/sharepoint/tenantadministration/spo_file_archive_policy_site_info.py +15 -0
- office365/sharepoint/tenantadministration/spom365_agent_insights_top20_agents_details.py +14 -0
- office365/sharepoint/types/resource_path.py +2 -1
- office365/sharepoint/usercustomactions/collection.py +41 -0
- office365/sharepoint/userprofiles/person_properties.py +4 -10
- office365/sharepoint/utilities/autofillcolumninfo.py +2 -0
- office365/sharepoint/utilities/llmcolumninfo.py +2 -0
- office365/sharepoint/utilities/move_copy_util.py +284 -10
- office365/sharepoint/viva/site_manager.py +10 -0
- office365/sharepoint/webhooks/subscription.py +41 -1
- office365/sharepoint/webhooks/subscription_information.py +2 -2
- office365/sharepoint/webparts/definitions/definition.py +8 -10
- office365/sharepoint/webparts/limited_manager.py +2 -6
- office365/sharepoint/webs/regional_settings.py +11 -15
- office365/sharepoint/webs/time_zone.py +9 -6
- office365/sharepoint/webs/web.py +57 -10
- office365/sharepoint/webs/web_fetch_result.py +13 -0
- office365/subscriptions/subscription.py +2 -8
- office365/teams/administration/account_type.py +17 -0
- office365/teams/administration/activation_state.py +16 -0
- office365/teams/administration/assignment_category.py +8 -1
- office365/teams/administration/assignment_status.py +18 -0
- office365/teams/administration/customer_action.py +13 -0
- office365/teams/administration/number_capability.py +15 -0
- office365/teams/administration/number_source.py +13 -0
- office365/teams/administration/number_type.py +15 -0
- office365/teams/administration/port_in_status.py +13 -0
- office365/teams/administration/reverse_number_lookup_option.py +12 -0
- office365/teams/apps/app.py +5 -5
- office365/teams/apps/installed_event_message_detail.py +17 -0
- office365/teams/apps/removed_event_message_detail.py +17 -0
- office365/teams/apps/upgraded_event_message_detail.py +17 -0
- office365/teams/archived_event_message_detail.py +16 -0
- office365/teams/channels/channel.py +23 -22
- office365/teams/channels/collection.py +10 -5
- office365/teams/chats/chat.py +36 -27
- office365/teams/chats/collection.py +19 -0
- office365/teams/chats/messages/body.py +32 -0
- office365/teams/chats/messages/collection.py +43 -0
- office365/teams/chats/messages/hosted_content.py +27 -0
- office365/teams/chats/messages/message.py +68 -3
- office365/teams/class_settings.py +14 -0
- office365/teams/collection.py +89 -14
- office365/teams/created_event_message_detail.py +18 -0
- office365/teams/description_updated_event_message_detail.py +17 -0
- office365/teams/joining_disabled_event_message_detail.py +16 -0
- office365/teams/joining_enabled_event_message_detail.py +16 -0
- office365/teams/licensing_details.py +14 -0
- office365/teams/members/aad_user_conversation.py +4 -4
- office365/teams/members/conversation.py +3 -3
- office365/teams/members/conversation_collection.py +7 -9
- office365/teams/members_notification_recipient.py +14 -0
- office365/teams/operations/async_operation.py +59 -8
- office365/teams/operations/type.py +4 -1
- office365/teams/renamed_event_message_detail.py +17 -0
- office365/teams/schedule/entitytheme.py +23 -0
- office365/teams/schedule/time_card_break.py +19 -0
- office365/teams/schedule/time_card_entry.py +19 -0
- office365/teams/schedule/time_card_event.py +18 -0
- office365/teams/schedule/time_card_state.py +14 -0
- office365/teams/schedule/time_clock_settings.py +15 -0
- office365/teams/schedule/time_off_details.py +15 -0
- office365/teams/schedule/time_off_item.py +14 -0
- office365/teams/schedule/time_off_reason_icon_type.py +32 -0
- office365/teams/tabs/updated_event_message_detail.py +16 -0
- office365/teams/team.py +88 -46
- office365/teams/teamwork/application_identity.py +15 -0
- office365/teams/teamwork/shiftmanagement/user_solution_root.py +4 -0
- office365/teams/teamwork/user.py +6 -8
- office365/teams/teamwork/workforce_integration_encryption_protocol.py +12 -0
- office365/teams/teamwork/workforce_integration_supported_entities.py +22 -0
- office365/teams/unarchived_event_message_detail.py +16 -0
- office365/teams/viva/employee_experience_user.py +5 -3
- office365/todo/attachments/collection.py +78 -3
- office365/todo/attachments/info.py +17 -1
- office365/todo/attachments/session.py +74 -0
- office365/todo/attachments/type.py +14 -2
- office365/todo/linked_resource.py +10 -0
- office365/todo/tasks/collection.py +5 -3
- office365/todo/tasks/lists/collection.py +4 -4
- office365/todo/tasks/lists/list.py +36 -0
- office365/todo/tasks/task.py +95 -8
- office365/todo/todo.py +5 -2
- {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/METADATA +13 -3
- {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/RECORD +1179 -598
- office365/migration/assessor.py +0 -243
- office365/onedrive/termstore/store_exporter.py +0 -40
- office365/onedrive/termstore/store_importer.py +0 -34
- office365/runtime/csv_writer.py +0 -77
- office365/runtime/odata/member.py +0 -14
- office365/runtime/odata/method.py +0 -19
- office365/runtime/odata/model.py +0 -54
- office365/runtime/odata/parameter.py +0 -19
- office365/runtime/odata/property.py +0 -19
- office365/runtime/odata/query_options_builder.py +0 -38
- office365/runtime/odata/reader.py +0 -99
- office365/runtime/odata/type_information.py +0 -32
- office365/runtime/odata/v3/metadata_reader.py +0 -52
- office365/runtime/odata/v4/metadata_reader.py +0 -28
- office365/runtime/queries/noop.py +0 -17
- office365/runtime/utilities.py +0 -226
- office365/sharepoint/migration/assessment/scanners/base.py +0 -57
- office365/sharepoint/migration/assessment/scanners/list.py +0 -68
- office365/sharepoint/migration/assessment/scanners/site.py +0 -25
- office365/todo/wellknown_list_name.py +0 -2
- /office365/directory/identitygovernance/accessreview/{access_review_history_instance.py → history_instance.py} +0 -0
- /office365/directory/identitygovernance/accessreview/{access_review_instance_decision_item.py → instance_decision_item.py} +0 -0
- /office365/directory/identitygovernance/accessreview/{access_review_reviewer.py → reviewer.py} +0 -0
- /office365/directory/identitygovernance/accessreview/{access_review_schedule_definition.py → schedule_definition.py} +0 -0
- /office365/directory/identitygovernance/{accessreview/access_package_text_input_question.py → entitlementmanagement/accesspackage/text_input_question.py} +0 -0
- /office365/directory/{security/data_security → recovery}/__init__.py +0 -0
- /office365/directory/security/{active_directory_domain_evidence.py → alerts/active_directory_domain_evidence.py} +0 -0
- /office365/directory/security/{azure_resource_evidence.py → alerts/azure_resource_evidence.py} +0 -0
- /office365/{sharepoint/migration → directory/security/audit}/__init__.py +0 -0
- /office365/directory/security/{a365_ai_execute_tool.py → audit/a365_ai_execute_tool.py} +0 -0
- /office365/directory/security/{aad_risk_detection_audit_record.py → audit/aad_risk_detection_audit_record.py} +0 -0
- /office365/directory/security/{ai_app_interaction_audit_record.py → audit/ai_app_interaction_audit_record.py} +0 -0
- /office365/directory/security/{ai_execute_tool_audit_record.py → audit/ai_execute_tool_audit_record.py} +0 -0
- /office365/directory/security/{ai_interactions_change_notification_audit_record.py → audit/ai_interactions_change_notification_audit_record.py} +0 -0
- /office365/directory/security/{ai_interactions_export_audit_record.py → audit/ai_interactions_export_audit_record.py} +0 -0
- /office365/directory/security/{ai_interactions_subscription_audit_record.py → audit/ai_interactions_subscription_audit_record.py} +0 -0
- /office365/directory/security/{ai_invoke_agent_audit_record.py → audit/ai_invoke_agent_audit_record.py} +0 -0
- /office365/directory/security/{ai_span_outputs_audit_record.py → audit/ai_span_outputs_audit_record.py} +0 -0
- /office365/directory/security/{air_manual_investigation_data.py → audit/air_manual_investigation_data.py} +0 -0
- /office365/directory/security/{alert_submission_audit_record.py → audit/alert_submission_audit_record.py} +0 -0
- /office365/directory/security/{alert_submission_result_detail_audit_record.py → audit/alert_submission_result_detail_audit_record.py} +0 -0
- /office365/directory/security/{attack_sim_admin_audit_record.py → audit/attack_sim_admin_audit_record.py} +0 -0
- /office365/directory/security/{attack_sim_audit_record.py → audit/attack_sim_audit_record.py} +0 -0
- /office365/directory/security/{audit_config_audit_record.py → audit/audit_config_audit_record.py} +0 -0
- /office365/directory/security/{audit_record_type_dictionary.py → audit/audit_record_type_dictionary.py} +0 -0
- /office365/directory/security/{audit_search_audit_record.py → audit/audit_search_audit_record.py} +0 -0
- /office365/directory/security/{azfw_application_rule_aggregation_event_record.py → audit/azfw_application_rule_aggregation_event_record.py} +0 -0
- /office365/directory/security/{azfw_dns_query_event_record.py → audit/azfw_dns_query_event_record.py} +0 -0
- /office365/directory/security/{azfw_network_rule_event_record.py → audit/azfw_network_rule_event_record.py} +0 -0
- /office365/directory/security/{azure_active_directory_account_logon_audit_record.py → audit/azure_active_directory_account_logon_audit_record.py} +0 -0
- /office365/directory/security/{azure_active_directory_audit_record.py → audit/azure_active_directory_audit_record.py} +0 -0
- /office365/directory/security/{azure_active_directory_sts_logon_audit_record.py → audit/azure_active_directory_sts_logon_audit_record.py} +0 -0
- /office365/directory/security/{azure_ai_search_audit_record.py → audit/azure_ai_search_audit_record.py} +0 -0
- /office365/directory/security/{campaign_audit_record.py → audit/campaign_audit_record.py} +0 -0
- /office365/directory/security/{ccrai_policy_violation_record.py → audit/ccrai_policy_violation_record.py} +0 -0
- /office365/directory/security/{cdp_classifier_health_record.py → audit/cdp_classifier_health_record.py} +0 -0
- /office365/directory/security/{cdp_cold_crawl_status_record.py → audit/cdp_cold_crawl_status_record.py} +0 -0
- /office365/directory/security/{cdp_consumption_resource_record.py → audit/cdp_consumption_resource_record.py} +0 -0
- /office365/directory/security/{cdp_content_explorer_aggregate_record.py → audit/cdp_content_explorer_aggregate_record.py} +0 -0
- /office365/directory/security/{cdp_dlp_sensitive_endpoint_audit_record.py → audit/cdp_dlp_sensitive_endpoint_audit_record.py} +0 -0
- /office365/directory/security/{cdp_log_record.py → audit/cdp_log_record.py} +0 -0
- /office365/directory/security/{cdp_ocr_billing_record.py → audit/cdp_ocr_billing_record.py} +0 -0
- /office365/directory/security/{cdp_resource_scope_change_event_record.py → audit/cdp_resource_scope_change_event_record.py} +0 -0
- /office365/directory/security/{cdpdlmai_interaction_insights_record.py → audit/cdpdlmai_interaction_insights_record.py} +0 -0
- /office365/directory/security/{cloud_update_device_config_audit_record.py → audit/cloud_update_device_config_audit_record.py} +0 -0
- /office365/directory/security/{cloud_update_profile_config_audit_record.py → audit/cloud_update_profile_config_audit_record.py} +0 -0
- /office365/directory/security/{cloud_update_tenant_config_audit_record.py → audit/cloud_update_tenant_config_audit_record.py} +0 -0
- /office365/directory/security/{compliance_connector_audit_record.py → audit/compliance_connector_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlm_exchange_audit_record.py → audit/compliance_dlm_exchange_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlm_share_point_audit_record.py → audit/compliance_dlm_share_point_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_applications_audit_record.py → audit/compliance_dlp_applications_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_applications_classification_audit_record.py → audit/compliance_dlp_applications_classification_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_endpoint_audit_record.py → audit/compliance_dlp_endpoint_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_endpoint_discovery_audit_record.py → audit/compliance_dlp_endpoint_discovery_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_enforcement_audit_record.py → audit/compliance_dlp_enforcement_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_exchange_audit_record.py → audit/compliance_dlp_exchange_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_exchange_classification_audit_record.py → audit/compliance_dlp_exchange_classification_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_exchange_classification_cdp_record.py → audit/compliance_dlp_exchange_classification_cdp_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_exchange_discovery_audit_record.py → audit/compliance_dlp_exchange_discovery_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_share_point_audit_record.py → audit/compliance_dlp_share_point_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_share_point_classification_audit_record.py → audit/compliance_dlp_share_point_classification_audit_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_share_point_classification_cdp_record.py → audit/compliance_dlp_share_point_classification_cdp_record.py} +0 -0
- /office365/directory/security/{compliance_dlp_share_point_classification_extended_audit_record.py → audit/compliance_dlp_share_point_classification_extended_audit_record.py} +0 -0
- /office365/directory/security/{compliance_exchange_ocr_audit_record.py → audit/compliance_exchange_ocr_audit_record.py} +0 -0
- /office365/directory/security/{compliance_manager_action_record.py → audit/compliance_manager_action_record.py} +0 -0
- /office365/directory/security/{compliance_policy_grading_share_point_audit_record.py → audit/compliance_policy_grading_share_point_audit_record.py} +0 -0
- /office365/directory/security/{compliance_settings_change_audit_record.py → audit/compliance_settings_change_audit_record.py} +0 -0
- /office365/directory/security/{compliance_sit_grading_share_point_audit_record.py → audit/compliance_sit_grading_share_point_audit_record.py} +0 -0
- /office365/directory/security/{compliance_supervision_exchange_audit_record.py → audit/compliance_supervision_exchange_audit_record.py} +0 -0
- /office365/directory/security/{connected_ai_app_interaction_audit_record.py → audit/connected_ai_app_interaction_audit_record.py} +0 -0
- /office365/directory/security/{consumption_resource_audit_record.py → audit/consumption_resource_audit_record.py} +0 -0
- /office365/directory/security/{content_store_metadata_record.py → audit/content_store_metadata_record.py} +0 -0
- /office365/directory/security/{copilot_agent_management_audit_record.py → audit/copilot_agent_management_audit_record.py} +0 -0
- /office365/directory/security/{copilot_for_security_logging_audit_record.py → audit/copilot_for_security_logging_audit_record.py} +0 -0
- /office365/directory/security/{copilot_for_security_trigger_audit_record.py → audit/copilot_for_security_trigger_audit_record.py} +0 -0
- /office365/directory/security/{copilot_interaction_audit_record.py → audit/copilot_interaction_audit_record.py} +0 -0
- /office365/directory/security/{copilot_plugin_setting_audit_record.py → audit/copilot_plugin_setting_audit_record.py} +0 -0
- /office365/directory/security/{copilot_prompt_book_setting_audit_record.py → audit/copilot_prompt_book_setting_audit_record.py} +0 -0
- /office365/directory/security/{copilot_session_sharing_audit_record.py → audit/copilot_session_sharing_audit_record.py} +0 -0
- /office365/directory/security/{copilot_setting_audit_record.py → audit/copilot_setting_audit_record.py} +0 -0
- /office365/directory/security/{copilot_workspace_setting_audit_record.py → audit/copilot_workspace_setting_audit_record.py} +0 -0
- /office365/directory/security/{core_reporting_settings_audit_record.py → audit/core_reporting_settings_audit_record.py} +0 -0
- /office365/directory/security/{critical_asset_management_classification_record.py → audit/critical_asset_management_classification_record.py} +0 -0
- /office365/directory/security/{crm_entity_operation_audit_record.py → audit/crm_entity_operation_audit_record.py} +0 -0
- /office365/directory/security/{cross_tenant_access_policy_audit_record.py → audit/cross_tenant_access_policy_audit_record.py} +0 -0
- /office365/directory/security/{device_discovery_settings_authenticated_scans_record.py → audit/device_discovery_settings_authenticated_scans_record.py} +0 -0
- /office365/directory/security/{device_discovery_settings_exclusion_record.py → audit/device_discovery_settings_exclusion_record.py} +0 -0
- /office365/directory/security/{device_discovery_settings_record.py → audit/device_discovery_settings_record.py} +0 -0
- /office365/directory/security/{discovery_audit_record.py → audit/discovery_audit_record.py} +0 -0
- /office365/directory/security/{dlp_endpoint_audit_record.py → audit/dlp_endpoint_audit_record.py} +0 -0
- /office365/directory/security/{dlp_import_result_audit_record.py → audit/dlp_import_result_audit_record.py} +0 -0
- /office365/directory/security/{dragon_copilot_access_record.py → audit/dragon_copilot_access_record.py} +0 -0
- /office365/directory/security/{dragon_copilot_admin_record.py → audit/dragon_copilot_admin_record.py} +0 -0
- /office365/directory/security/{dragon_copilot_clinical_data_record.py → audit/dragon_copilot_clinical_data_record.py} +0 -0
- /office365/directory/security/{dragon_copilot_session_record.py → audit/dragon_copilot_session_record.py} +0 -0
- /office365/directory/security/{dynamics365_business_central_audit_record.py → audit/dynamics365_business_central_audit_record.py} +0 -0
- /office365/directory/security/{ehr_connector_audit_base_record.py → audit/ehr_connector_audit_base_record.py} +0 -0
- /office365/directory/security/{eop_submission_feed_entity_audit_record.py → audit/eop_submission_feed_entity_audit_record.py} +0 -0
- /office365/directory/security/{exchange_admin_audit_record.py → audit/exchange_admin_audit_record.py} +0 -0
- /office365/directory/security/{exchange_aggregated_mailbox_audit_record.py → audit/exchange_aggregated_mailbox_audit_record.py} +0 -0
- /office365/directory/security/{exchange_aggregated_operation_record.py → audit/exchange_aggregated_operation_record.py} +0 -0
- /office365/directory/security/{exchange_mailbox_audit_group_record.py → audit/exchange_mailbox_audit_group_record.py} +0 -0
- /office365/directory/security/{exchange_mailbox_audit_record.py → audit/exchange_mailbox_audit_record.py} +0 -0
- /office365/directory/security/{hosted_rpa_audit_record.py → audit/hosted_rpa_audit_record.py} +0 -0
- /office365/directory/security/{hr_signal_audit_record.py → audit/hr_signal_audit_record.py} +0 -0
- /office365/directory/security/{hygiene_event_record.py → audit/hygiene_event_record.py} +0 -0
- /office365/directory/security/{information_barrier_policy_application_audit_record.py → audit/information_barrier_policy_application_audit_record.py} +0 -0
- /office365/directory/security/{information_worker_protection_audit_record.py → audit/information_worker_protection_audit_record.py} +0 -0
- /office365/directory/security/{insider_risk_scoped_user_insights_record.py → audit/insider_risk_scoped_user_insights_record.py} +0 -0
- /office365/directory/security/{insider_risk_scoped_users_record.py → audit/insider_risk_scoped_users_record.py} +0 -0
- /office365/directory/security/{microsoft_stream_audit_record.py → audit/microsoft_stream_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_admin_audit_record.py → audit/microsoft_teams_admin_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_analytics_audit_record.py → audit/microsoft_teams_analytics_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_audit_record.py → audit/microsoft_teams_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_device_audit_record.py → audit/microsoft_teams_device_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_retention_label_action_audit_record.py → audit/microsoft_teams_retention_label_action_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_sensitivity_label_action_audit_record.py → audit/microsoft_teams_sensitivity_label_action_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_shifts_audit_record.py → audit/microsoft_teams_shifts_audit_record.py} +0 -0
- /office365/directory/security/{microsoft_teams_user_concern_audit_record.py → audit/microsoft_teams_user_concern_audit_record.py} +0 -0
- /office365/directory/security/{whois_history_record.py → audit/whois_history_record.py} +0 -0
- /office365/directory/security/{case.py → cases/case.py} +0 -0
- /office365/{sharepoint/migration/assessment → directory/security/collaboration}/__init__.py +0 -0
- /office365/directory/security/{analyzed_email.py → collaboration/analyzed_email.py} +0 -0
- /office365/directory/security/{analyzed_email_authentication_detail.py → collaboration/analyzed_email_authentication_detail.py} +0 -0
- /office365/directory/security/{analyzed_email_delivery_detail.py → collaboration/analyzed_email_delivery_detail.py} +0 -0
- /office365/directory/security/{analyzed_email_dlp_rule_info.py → collaboration/analyzed_email_dlp_rule_info.py} +0 -0
- /office365/directory/security/{analyzed_email_exchange_transport_rule_info.py → collaboration/analyzed_email_exchange_transport_rule_info.py} +0 -0
- /office365/directory/security/{analyzed_email_recipient_detail.py → collaboration/analyzed_email_recipient_detail.py} +0 -0
- /office365/directory/security/{analyzed_email_sender_detail.py → collaboration/analyzed_email_sender_detail.py} +0 -0
- /office365/directory/security/{analyzed_email_url.py → collaboration/analyzed_email_url.py} +0 -0
- /office365/{sharepoint/migration/assessment/scanners → directory/security/datasecurity}/__init__.py +0 -0
- /office365/directory/security/{data_security → datasecurity}/sensitivity_label.py +0 -0
- /office365/directory/security/{host_logon_session_evidence.py → threatintelligence/host_logon_session_evidence.py} +0 -0
- /office365/directory/security/{host_reputation.py → threatintelligence/host_reputation.py} +0 -0
- /office365/directory/security/{hostname.py → threatintelligence/hostname.py} +0 -0
- {office365_rest_python_client-3.0.0.dist-info → office365_rest_python_client-3.1.0.dist-info}/WHEEL +0 -0
office365/reports/root.py
CHANGED
|
@@ -4,8 +4,14 @@ from typing import Optional, Union
|
|
|
4
4
|
from office365.directory.authentication.methods.root import AuthenticationMethodsRoot
|
|
5
5
|
from office365.directory.permissions.require_permission import require_permission
|
|
6
6
|
from office365.entity import Entity
|
|
7
|
+
from office365.entity_collection import EntityCollection
|
|
7
8
|
from office365.partners.partners import Partners
|
|
8
|
-
from office365.reports.internal.queries.create_report_query import
|
|
9
|
+
from office365.reports.internal.queries.create_report_query import (
|
|
10
|
+
create_report_query,
|
|
11
|
+
create_report_stream_query,
|
|
12
|
+
)
|
|
13
|
+
from office365.reports.print_usage_by_printer import PrintUsageByPrinter
|
|
14
|
+
from office365.reports.print_usage_by_user import PrintUsageByUser
|
|
9
15
|
from office365.reports.report import Report
|
|
10
16
|
from office365.reports.security.root import SecurityReportsRoot
|
|
11
17
|
from office365.runtime.client_result import ClientResult
|
|
@@ -84,9 +90,7 @@ class ReportRoot(Entity):
|
|
|
84
90
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
85
91
|
the number of days over which the report is aggregated. Required.
|
|
86
92
|
"""
|
|
87
|
-
|
|
88
|
-
self.context.add_query(qry)
|
|
89
|
-
return qry.return_type
|
|
93
|
+
return create_report_query(self, "getEmailActivityUserCounts", period)
|
|
90
94
|
|
|
91
95
|
def get_email_activity_user_detail(self, period: str) -> ClientResult[bytes]:
|
|
92
96
|
"""Get details about email activity users have performed.
|
|
@@ -96,10 +100,7 @@ class ReportRoot(Entity):
|
|
|
96
100
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
97
101
|
the number of days over which the report is aggregated. Required.
|
|
98
102
|
"""
|
|
99
|
-
|
|
100
|
-
self.context.add_query(qry)
|
|
101
|
-
assert qry.return_type is not None
|
|
102
|
-
return qry.return_type # type: ignore[return-type]
|
|
103
|
+
return create_report_stream_query(self, "getEmailActivityUserDetail", period)
|
|
103
104
|
|
|
104
105
|
def get_email_app_usage_apps_user_counts(self, period: str) -> ClientResult[Report]:
|
|
105
106
|
"""Get the count of unique users per email app.
|
|
@@ -109,10 +110,7 @@ class ReportRoot(Entity):
|
|
|
109
110
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
110
111
|
the number of days over which the report is aggregated. Required.
|
|
111
112
|
"""
|
|
112
|
-
|
|
113
|
-
self.context.add_query(qry)
|
|
114
|
-
assert qry.return_type is not None
|
|
115
|
-
return qry.return_type # type: ignore[return-type]
|
|
113
|
+
return create_report_query(self, "getEmailAppUsageAppsUserCounts", period)
|
|
116
114
|
|
|
117
115
|
def get_email_app_usage_user_counts(self, period) -> ClientResult[bytes]:
|
|
118
116
|
"""Get the count of unique users that connected to Exchange Online using any email app.
|
|
@@ -122,12 +120,8 @@ class ReportRoot(Entity):
|
|
|
122
120
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
123
121
|
the number of days over which the report is aggregated. Required.
|
|
124
122
|
"""
|
|
125
|
-
|
|
126
|
-
self.context.add_query(qry)
|
|
127
|
-
assert qry.return_type is not None
|
|
128
|
-
return qry.return_type # type: ignore[return-type]
|
|
123
|
+
return create_report_stream_query(self, "getEmailAppUsageUserCounts", period)
|
|
129
124
|
|
|
130
|
-
###
|
|
131
125
|
def get_email_app_usage_user_detail(self, period: str) -> ClientResult[bytes]:
|
|
132
126
|
"""Get details about which activities users performed on the various email apps.
|
|
133
127
|
|
|
@@ -136,10 +130,7 @@ class ReportRoot(Entity):
|
|
|
136
130
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
137
131
|
the number of days over which the report is aggregated. Required.
|
|
138
132
|
"""
|
|
139
|
-
|
|
140
|
-
self.context.add_query(qry)
|
|
141
|
-
assert qry.return_type is not None
|
|
142
|
-
return qry.return_type # type: ignore[return-type]
|
|
133
|
+
return create_report_stream_query(self, "getEmailAppUsageUserDetail", period)
|
|
143
134
|
|
|
144
135
|
def get_mailbox_usage_storage(self, period: str) -> ClientResult[bytes]:
|
|
145
136
|
"""Get the amount of storage used in your organization.
|
|
@@ -149,10 +140,7 @@ class ReportRoot(Entity):
|
|
|
149
140
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
150
141
|
the number of days over which the report is aggregated. Required.
|
|
151
142
|
"""
|
|
152
|
-
|
|
153
|
-
self.context.add_query(qry)
|
|
154
|
-
assert qry.return_type is not None
|
|
155
|
-
return qry.return_type # type: ignore[return-type]
|
|
143
|
+
return create_report_stream_query(self, "getMailboxUsageStorage", period)
|
|
156
144
|
|
|
157
145
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
158
146
|
def get_m365_app_user_counts(self, period: Optional[str] = None) -> ClientResult[bytes]:
|
|
@@ -177,16 +165,11 @@ class ReportRoot(Entity):
|
|
|
177
165
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
178
166
|
def get_office365_activation_counts(self):
|
|
179
167
|
"""Get the count of Microsoft 365 activations on desktops and devices."""
|
|
180
|
-
|
|
181
|
-
self.context.add_query(qry)
|
|
182
|
-
return qry.return_type
|
|
168
|
+
return create_report_query(self, "getOffice365ActivationCounts")
|
|
183
169
|
|
|
184
170
|
def get_office365_activations_user_counts(self) -> ClientResult[Report]:
|
|
185
171
|
"""Get the count of Microsoft 365 activations on desktops and devices."""
|
|
186
|
-
|
|
187
|
-
self.context.add_query(qry)
|
|
188
|
-
assert qry.return_type is not None
|
|
189
|
-
return qry.return_type # type: ignore[return-type]
|
|
172
|
+
return create_report_query(self, "getOffice365ActivationsUserCounts")
|
|
190
173
|
|
|
191
174
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
192
175
|
def get_onedrive_activity_file_counts(self, period: str) -> ClientResult[Report]:
|
|
@@ -197,10 +180,7 @@ class ReportRoot(Entity):
|
|
|
197
180
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
198
181
|
the number of days over which the report is aggregated. Required.
|
|
199
182
|
"""
|
|
200
|
-
|
|
201
|
-
self.context.add_query(qry)
|
|
202
|
-
assert qry.return_type is not None
|
|
203
|
-
return qry.return_type # type: ignore[return-type]
|
|
183
|
+
return create_report_query(self, "getOneDriveActivityFileCounts", period)
|
|
204
184
|
|
|
205
185
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
206
186
|
def get_onedrive_activity_user_counts(self, period: str) -> ClientResult[Report]:
|
|
@@ -211,10 +191,7 @@ class ReportRoot(Entity):
|
|
|
211
191
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
212
192
|
the number of days over which the report is aggregated. Required.
|
|
213
193
|
"""
|
|
214
|
-
|
|
215
|
-
self.context.add_query(qry)
|
|
216
|
-
assert qry.return_type is not None
|
|
217
|
-
return qry.return_type # type: ignore[return-type]
|
|
194
|
+
return create_report_query(self, "getOneDriveActivityUserCounts", period)
|
|
218
195
|
|
|
219
196
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
220
197
|
def get_onedrive_activity_user_detail(self, period: str):
|
|
@@ -225,9 +202,7 @@ class ReportRoot(Entity):
|
|
|
225
202
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
226
203
|
the number of days over which the report is aggregated. Required.
|
|
227
204
|
"""
|
|
228
|
-
|
|
229
|
-
self.context.add_query(qry)
|
|
230
|
-
return qry.return_type
|
|
205
|
+
return create_report_query(self, "getOneDriveActivityUserDetail", period)
|
|
231
206
|
|
|
232
207
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
233
208
|
def get_onedrive_usage_file_counts(self, period: str) -> ClientResult[Report]:
|
|
@@ -239,10 +214,7 @@ class ReportRoot(Entity):
|
|
|
239
214
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
240
215
|
the number of days over which the report is aggregated. Required.
|
|
241
216
|
"""
|
|
242
|
-
|
|
243
|
-
self.context.add_query(qry)
|
|
244
|
-
assert qry.return_type is not None
|
|
245
|
-
return qry.return_type # type: ignore[return-type]
|
|
217
|
+
return create_report_query(self, "getOneDriveUsageFileCounts", period)
|
|
246
218
|
|
|
247
219
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
248
220
|
def get_onedrive_usage_storage(self, period) -> ClientResult[bytes]:
|
|
@@ -253,9 +225,7 @@ class ReportRoot(Entity):
|
|
|
253
225
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
254
226
|
the number of days over which the report is aggregated. Required.
|
|
255
227
|
"""
|
|
256
|
-
|
|
257
|
-
self.context.add_query(qry)
|
|
258
|
-
return qry.return_type # type: ignore[return-type]
|
|
228
|
+
return create_report_stream_query(self, "getOneDriveUsageStorage", period)
|
|
259
229
|
|
|
260
230
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
261
231
|
def get_mailbox_usage_detail(self, period) -> ClientResult[Report]:
|
|
@@ -266,9 +236,7 @@ class ReportRoot(Entity):
|
|
|
266
236
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
267
237
|
the number of days over which the report is aggregated. Required.
|
|
268
238
|
"""
|
|
269
|
-
|
|
270
|
-
self.context.add_query(qry)
|
|
271
|
-
return qry.return_type # type: ignore[return-type]
|
|
239
|
+
return create_report_query(self, "getMailboxUsageDetail", period)
|
|
272
240
|
|
|
273
241
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
274
242
|
def get_mailbox_usage_mailbox_counts(self, period: str) -> ClientResult[bytes]:
|
|
@@ -280,10 +248,7 @@ class ReportRoot(Entity):
|
|
|
280
248
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
281
249
|
the number of days over which the report is aggregated. Required.
|
|
282
250
|
"""
|
|
283
|
-
|
|
284
|
-
self.context.add_query(qry)
|
|
285
|
-
assert qry.return_type is not None
|
|
286
|
-
return qry.return_type # type: ignore[return-type]
|
|
251
|
+
return create_report_stream_query(self, "getMailboxUsageMailboxCounts", period)
|
|
287
252
|
|
|
288
253
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
289
254
|
def get_mailbox_usage_quota_status_mailbox_counts(self, period: str):
|
|
@@ -292,9 +257,7 @@ class ReportRoot(Entity):
|
|
|
292
257
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
293
258
|
the number of days over which the report is aggregated. Required.
|
|
294
259
|
"""
|
|
295
|
-
|
|
296
|
-
self.context.add_query(qry)
|
|
297
|
-
return qry.return_type
|
|
260
|
+
return create_report_query(self, "getMailboxUsageQuotaStatusMailboxCounts", period)
|
|
298
261
|
|
|
299
262
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
300
263
|
def get_sharepoint_activity_pages(self, period: str):
|
|
@@ -305,9 +268,7 @@ class ReportRoot(Entity):
|
|
|
305
268
|
for {period_value} are: D7, D30, D90, and D180. These values follow the format Dn where n represents
|
|
306
269
|
the number of days over which the report is aggregated. Required.
|
|
307
270
|
"""
|
|
308
|
-
|
|
309
|
-
self.context.add_query(qry)
|
|
310
|
-
return qry.return_type
|
|
271
|
+
return create_report_query(self, "getSharePointActivityPages", period)
|
|
311
272
|
|
|
312
273
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
313
274
|
def get_teams_user_activity_user_counts(self, period: str) -> ClientResult[Report]:
|
|
@@ -317,10 +278,7 @@ class ReportRoot(Entity):
|
|
|
317
278
|
Args:
|
|
318
279
|
period (str): Specifies the length of time over which the report is aggregated.
|
|
319
280
|
"""
|
|
320
|
-
|
|
321
|
-
self.context.add_query(qry)
|
|
322
|
-
assert qry.return_type is not None
|
|
323
|
-
return qry.return_type # type: ignore[return-type]
|
|
281
|
+
return create_report_query(self, "getTeamsUserActivityUserCounts", period)
|
|
324
282
|
|
|
325
283
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
326
284
|
def get_sharepoint_activity_user_counts(self, period: str):
|
|
@@ -332,9 +290,7 @@ class ReportRoot(Entity):
|
|
|
332
290
|
The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
|
|
333
291
|
format Dn where n represents the number of days over which the report is aggregated. Required.
|
|
334
292
|
"""
|
|
335
|
-
|
|
336
|
-
self.context.add_query(qry)
|
|
337
|
-
return qry.return_type
|
|
293
|
+
return create_report_query(self, "getSharePointActivityUserCounts", period)
|
|
338
294
|
|
|
339
295
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
340
296
|
def get_sharepoint_activity_user_detail(self, period: str):
|
|
@@ -345,9 +301,7 @@ class ReportRoot(Entity):
|
|
|
345
301
|
The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
|
|
346
302
|
format Dn where n represents the number of days over which the report is aggregated. Required.
|
|
347
303
|
"""
|
|
348
|
-
|
|
349
|
-
self.context.add_query(qry)
|
|
350
|
-
return qry.return_type
|
|
304
|
+
return create_report_query(self, "getSharePointActivityUserDetail", period)
|
|
351
305
|
|
|
352
306
|
def get_sharepoint_site_usage_detail(self, period: str) -> ClientResult[Report]:
|
|
353
307
|
"""Get details about SharePoint site usage.
|
|
@@ -357,10 +311,7 @@ class ReportRoot(Entity):
|
|
|
357
311
|
The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the format
|
|
358
312
|
Dn where n represents the number of days over which the report is aggregated. Required.
|
|
359
313
|
"""
|
|
360
|
-
|
|
361
|
-
self.context.add_query(qry)
|
|
362
|
-
assert qry.return_type is not None
|
|
363
|
-
return qry.return_type # type: ignore[return-type]
|
|
314
|
+
return create_report_query(self, "getSharePointSiteUsageDetail", period)
|
|
364
315
|
|
|
365
316
|
def get_sharepoint_site_usage_site_counts(self, period: str) -> ClientResult[Report]:
|
|
366
317
|
"""Get the trend of total and active site count during the reporting period.
|
|
@@ -370,10 +321,7 @@ class ReportRoot(Entity):
|
|
|
370
321
|
The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the format
|
|
371
322
|
Dn where n represents the number of days over which the report is aggregated. Required.
|
|
372
323
|
"""
|
|
373
|
-
|
|
374
|
-
self.context.add_query(qry)
|
|
375
|
-
assert qry.return_type is not None
|
|
376
|
-
return qry.return_type # type: ignore[return-type]
|
|
324
|
+
return create_report_query(self, "getSharePointSiteUsageSiteCounts", period)
|
|
377
325
|
|
|
378
326
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
379
327
|
def get_teams_team_counts(self, period: str) -> ClientResult[bytes]:
|
|
@@ -384,10 +332,7 @@ class ReportRoot(Entity):
|
|
|
384
332
|
The supported values for {period_value} are: D7, D30, D90, and D180. These values follow the
|
|
385
333
|
format Dn where n represents the number of days over which the report is aggregated. Required.
|
|
386
334
|
"""
|
|
387
|
-
|
|
388
|
-
self.context.add_query(qry)
|
|
389
|
-
assert qry.return_type is not None
|
|
390
|
-
return qry.return_type # type: ignore[return-type]
|
|
335
|
+
return create_report_stream_query(self, "getTeamsTeamCounts", period)
|
|
391
336
|
|
|
392
337
|
@require_permission(delegated=["Reports.Read.All"], application=["Reports.Read.All"])
|
|
393
338
|
def get_teams_user_activity_counts(self, period: str) -> ClientResult[bytes]:
|
|
@@ -395,10 +340,7 @@ class ReportRoot(Entity):
|
|
|
395
340
|
Get the number of Microsoft Teams activities by activity type.
|
|
396
341
|
The activities are performed by Microsoft Teams licensed users.
|
|
397
342
|
"""
|
|
398
|
-
|
|
399
|
-
self.context.add_query(qry)
|
|
400
|
-
assert qry.return_type is not None
|
|
401
|
-
return qry.return_type # type: ignore[return-type]
|
|
343
|
+
return create_report_stream_query(self, "getTeamsUserActivityCounts", period)
|
|
402
344
|
|
|
403
345
|
@odata(name="authenticationMethods")
|
|
404
346
|
@property
|
|
@@ -412,15 +354,55 @@ class ReportRoot(Entity):
|
|
|
412
354
|
@property
|
|
413
355
|
def partners(self) -> Partners:
|
|
414
356
|
"""Represents billing details for a Microsoft direct partner."""
|
|
415
|
-
return self.properties.get(
|
|
416
|
-
"partners",
|
|
417
|
-
Partners(self.context, ResourcePath("partners", self.resource_path)),
|
|
418
|
-
)
|
|
357
|
+
return self.properties.get("partners", Partners(self.context, ResourcePath("partners", self.resource_path)))
|
|
419
358
|
|
|
420
359
|
@property
|
|
421
360
|
def security(self) -> SecurityReportsRoot:
|
|
422
361
|
"""Container for navigation properties for Azure AD authentication methods resources."""
|
|
423
362
|
return self.properties.get(
|
|
424
|
-
"security",
|
|
425
|
-
|
|
363
|
+
"security", SecurityReportsRoot(self.context, ResourcePath("security", self.resource_path))
|
|
364
|
+
)
|
|
365
|
+
|
|
366
|
+
@property
|
|
367
|
+
def daily_print_usage_by_printer(self) -> EntityCollection[PrintUsageByPrinter]:
|
|
368
|
+
"""Gets the dailyPrintUsageByPrinter property"""
|
|
369
|
+
return self.properties.get(
|
|
370
|
+
"dailyPrintUsageByPrinter",
|
|
371
|
+
EntityCollection[PrintUsageByPrinter](
|
|
372
|
+
self.context, PrintUsageByPrinter, ResourcePath("dailyPrintUsageByPrinter", self.resource_path)
|
|
373
|
+
),
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
@property
|
|
377
|
+
def daily_print_usage_by_user(self) -> EntityCollection[PrintUsageByUser]:
|
|
378
|
+
"""Gets the dailyPrintUsageByUser property"""
|
|
379
|
+
return self.properties.get(
|
|
380
|
+
"dailyPrintUsageByUser",
|
|
381
|
+
EntityCollection[PrintUsageByUser](
|
|
382
|
+
self.context, PrintUsageByUser, ResourcePath("dailyPrintUsageByUser", self.resource_path)
|
|
383
|
+
),
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
@property
|
|
387
|
+
def monthly_print_usage_by_printer(self) -> EntityCollection[PrintUsageByPrinter]:
|
|
388
|
+
"""Gets the monthlyPrintUsageByPrinter property"""
|
|
389
|
+
return self.properties.get(
|
|
390
|
+
"monthlyPrintUsageByPrinter",
|
|
391
|
+
EntityCollection[PrintUsageByPrinter](
|
|
392
|
+
self.context, PrintUsageByPrinter, ResourcePath("monthlyPrintUsageByPrinter", self.resource_path)
|
|
393
|
+
),
|
|
426
394
|
)
|
|
395
|
+
|
|
396
|
+
@property
|
|
397
|
+
def monthly_print_usage_by_user(self) -> EntityCollection[PrintUsageByUser]:
|
|
398
|
+
"""Gets the monthlyPrintUsageByUser property"""
|
|
399
|
+
return self.properties.get(
|
|
400
|
+
"monthlyPrintUsageByUser",
|
|
401
|
+
EntityCollection[PrintUsageByUser](
|
|
402
|
+
self.context, PrintUsageByUser, ResourcePath("monthlyPrintUsageByUser", self.resource_path)
|
|
403
|
+
),
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
@property
|
|
407
|
+
def entity_type_name(self) -> str:
|
|
408
|
+
return "microsoft.graph.ReportRoot"
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import sys
|
|
5
|
+
import threading
|
|
5
6
|
from datetime import datetime, timedelta, timezone
|
|
6
7
|
from typing import Any, Callable, Dict, List, Union
|
|
7
8
|
|
|
@@ -14,8 +15,9 @@ from office365.runtime.auth.providers.cookie_provider import CookieAuthProvider
|
|
|
14
15
|
from office365.runtime.auth.providers.saml_token_provider import SamlTokenProvider
|
|
15
16
|
from office365.runtime.auth.token_response import TokenResponse
|
|
16
17
|
from office365.runtime.auth.user_credential import UserCredential
|
|
18
|
+
from office365.runtime.decorators import deprecated
|
|
17
19
|
from office365.runtime.http.request_options import RequestOptions
|
|
18
|
-
from office365.runtime.
|
|
20
|
+
from office365.runtime.http.url import get_absolute_url
|
|
19
21
|
|
|
20
22
|
|
|
21
23
|
def _get_authorization_header(token: Any) -> str:
|
|
@@ -31,6 +33,7 @@ class AuthenticationContext:
|
|
|
31
33
|
environment: AzureEnvironment = AzureEnvironment.Global,
|
|
32
34
|
allow_ntlm: bool = False,
|
|
33
35
|
browser_mode: bool = False,
|
|
36
|
+
authority: str | None = None,
|
|
34
37
|
):
|
|
35
38
|
"""
|
|
36
39
|
Initialize authentication context
|
|
@@ -40,14 +43,35 @@ class AuthenticationContext:
|
|
|
40
43
|
environment: Office 365 Cloud Environment endpoint (default: AzureEnvironment.Global)
|
|
41
44
|
allow_ntlm: Whether NTLM authentication is enabled (default: False)
|
|
42
45
|
browser_mode: Enable browser authentication (default: False)
|
|
46
|
+
authority: Override the MSAL authority URL, e.g. for Entra External ID (CIAM):
|
|
47
|
+
https://<tenant>.ciamlogin.com
|
|
43
48
|
"""
|
|
44
49
|
self.url = url.rstrip("/")
|
|
45
50
|
self._authenticate = None
|
|
46
51
|
self._cached_token = None
|
|
47
52
|
self._environment = environment
|
|
53
|
+
self._lock = threading.RLock()
|
|
48
54
|
self._allow_ntlm = allow_ntlm
|
|
49
55
|
self._browser_mode = browser_mode
|
|
50
56
|
self._token_expires = datetime.max.replace(tzinfo=timezone.utc)
|
|
57
|
+
self._authority = authority
|
|
58
|
+
|
|
59
|
+
def _get_authority_url(self, tenant: str) -> str:
|
|
60
|
+
"""MSAL authority URL, overridable for Entra External ID (CIAM) tenants."""
|
|
61
|
+
if self._authority is not None:
|
|
62
|
+
return self._authority
|
|
63
|
+
return f"{get_login_authority(self._environment)}/{tenant}"
|
|
64
|
+
|
|
65
|
+
def with_authority(self, authority: str) -> Self:
|
|
66
|
+
"""Override the MSAL authority URL, e.g. for Entra External ID (CIAM) tenants:
|
|
67
|
+
|
|
68
|
+
https://<tenant>.ciamlogin.com
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
authority: Full authority URL used by all subsequent token acquisitions
|
|
72
|
+
"""
|
|
73
|
+
self._authority = authority
|
|
74
|
+
return self
|
|
51
75
|
|
|
52
76
|
def with_client_secret(
|
|
53
77
|
self,
|
|
@@ -72,7 +96,7 @@ class AuthenticationContext:
|
|
|
72
96
|
scopes = [f"{resource}/.default"]
|
|
73
97
|
|
|
74
98
|
def _acquire_token():
|
|
75
|
-
authority_url =
|
|
99
|
+
authority_url = self._get_authority_url(tenant)
|
|
76
100
|
import msal
|
|
77
101
|
|
|
78
102
|
app = msal.ConfidentialClientApplication(
|
|
@@ -121,7 +145,7 @@ class AuthenticationContext:
|
|
|
121
145
|
private_key = f.read()
|
|
122
146
|
|
|
123
147
|
def _acquire_token():
|
|
124
|
-
authority_url =
|
|
148
|
+
authority_url = self._get_authority_url(tenant)
|
|
125
149
|
credentials = {
|
|
126
150
|
"thumbprint": thumbprint,
|
|
127
151
|
"private_key": private_key,
|
|
@@ -161,7 +185,7 @@ class AuthenticationContext:
|
|
|
161
185
|
|
|
162
186
|
app = msal.PublicClientApplication(
|
|
163
187
|
client_id,
|
|
164
|
-
authority=
|
|
188
|
+
authority=self._get_authority_url(tenant),
|
|
165
189
|
client_credential=None,
|
|
166
190
|
)
|
|
167
191
|
result = app.acquire_token_interactive(scopes=scopes)
|
|
@@ -191,7 +215,7 @@ class AuthenticationContext:
|
|
|
191
215
|
|
|
192
216
|
app = msal.PublicClientApplication(
|
|
193
217
|
client_id,
|
|
194
|
-
authority=
|
|
218
|
+
authority=self._get_authority_url(tenant),
|
|
195
219
|
client_credential=None,
|
|
196
220
|
)
|
|
197
221
|
|
|
@@ -223,15 +247,17 @@ class AuthenticationContext:
|
|
|
223
247
|
request_time = datetime.now(timezone.utc)
|
|
224
248
|
|
|
225
249
|
if self._cached_token is None or request_time > self._token_expires:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
250
|
+
with self._lock:
|
|
251
|
+
if self._cached_token is None or request_time > self._token_expires:
|
|
252
|
+
token_res = token_func()
|
|
253
|
+
if isinstance(token_res, TokenResponse):
|
|
254
|
+
self._cached_token = token_res
|
|
255
|
+
else:
|
|
256
|
+
self._cached_token = TokenResponse.from_json(token_res)
|
|
257
|
+
|
|
258
|
+
if hasattr(self._cached_token, "expiresIn"): # type: ignore[reportAttributeAccessIssue]
|
|
259
|
+
expires_in = self._cached_token.expiresIn # type: ignore[reportAttributeAccessIssue]
|
|
260
|
+
self._token_expires = request_time + timedelta(seconds=int(expires_in))
|
|
235
261
|
request.set_header("Authorization", _get_authorization_header(self._cached_token))
|
|
236
262
|
|
|
237
263
|
self._authenticate = _authenticate
|
|
@@ -271,7 +297,7 @@ class AuthenticationContext:
|
|
|
271
297
|
"""
|
|
272
298
|
import msal
|
|
273
299
|
|
|
274
|
-
authority_url =
|
|
300
|
+
authority_url = self._get_authority_url(tenant)
|
|
275
301
|
|
|
276
302
|
app = msal.PublicClientApplication(
|
|
277
303
|
authority=authority_url,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import sys
|
|
4
|
+
import threading
|
|
4
5
|
from typing import Any, Callable, Dict, List, Optional
|
|
5
6
|
|
|
6
7
|
from typing_extensions import Self
|
|
@@ -22,11 +23,14 @@ class AuthenticationContext:
|
|
|
22
23
|
scopes: List[str] | None = None,
|
|
23
24
|
token_cache: Any = None,
|
|
24
25
|
environment: AzureEnvironment = AzureEnvironment.Global,
|
|
26
|
+
authority: str | None = None,
|
|
25
27
|
):
|
|
26
28
|
"""Args:
|
|
27
29
|
tenant (str): Tenant name, for example: contoso.onmicrosoft.com
|
|
28
30
|
scopes (list[str] or None): Scopes requested to access an API
|
|
29
31
|
token_cache (Any): Default cache is in memory only, Refer https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
|
|
32
|
+
authority (str or None): Override the MSAL authority URL, e.g. for Entra External ID (CIAM):
|
|
33
|
+
https://<tenant>.ciamlogin.com
|
|
30
34
|
"""
|
|
31
35
|
self._tenant = tenant
|
|
32
36
|
if scopes is None:
|
|
@@ -36,12 +40,15 @@ class AuthenticationContext:
|
|
|
36
40
|
self._token_callback = None
|
|
37
41
|
self._environment = environment
|
|
38
42
|
self._client_id: str | None = None
|
|
43
|
+
self._authority = authority
|
|
44
|
+
self._lock = threading.Lock()
|
|
39
45
|
|
|
40
46
|
def acquire_token(self) -> TokenResponse:
|
|
41
|
-
"""Acquire access token"""
|
|
47
|
+
"""Acquire access token (single-flight under concurrent batches)."""
|
|
42
48
|
if not self._token_callback:
|
|
43
49
|
raise ValueError("Token callback is not set.")
|
|
44
|
-
|
|
50
|
+
with self._lock:
|
|
51
|
+
token_resp = self._token_callback()
|
|
45
52
|
token = TokenResponse.from_json(token_resp)
|
|
46
53
|
return token
|
|
47
54
|
|
|
@@ -196,4 +203,17 @@ class AuthenticationContext:
|
|
|
196
203
|
|
|
197
204
|
@property
|
|
198
205
|
def authority_url(self) -> str:
|
|
206
|
+
if self._authority is not None:
|
|
207
|
+
return self._authority
|
|
199
208
|
return f"{get_login_authority(self._environment)}/{self._tenant}"
|
|
209
|
+
|
|
210
|
+
def with_authority(self, authority: str) -> Self:
|
|
211
|
+
"""Override the MSAL authority URL, e.g. for Entra External ID (CIAM) tenants:
|
|
212
|
+
|
|
213
|
+
https://<tenant>.ciamlogin.com
|
|
214
|
+
|
|
215
|
+
Args:
|
|
216
|
+
authority: Full authority URL used by all subsequent token acquisitions
|
|
217
|
+
"""
|
|
218
|
+
self._authority = authority
|
|
219
|
+
return self
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import threading
|
|
3
4
|
from typing import Optional
|
|
5
|
+
from urllib.parse import urlparse
|
|
4
6
|
|
|
5
7
|
import requests
|
|
6
8
|
|
|
@@ -9,7 +11,6 @@ from office365.runtime.auth.authentication_provider import AuthenticationProvide
|
|
|
9
11
|
from office365.runtime.auth.client_credential import ClientCredential
|
|
10
12
|
from office365.runtime.auth.token_response import TokenResponse
|
|
11
13
|
from office365.runtime.http.request_options import RequestOptions
|
|
12
|
-
from office365.runtime.utilities import urlparse
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class ACSTokenProvider(AuthenticationProvider):
|
|
@@ -36,11 +37,14 @@ class ACSTokenProvider(AuthenticationProvider):
|
|
|
36
37
|
self._credential = credential
|
|
37
38
|
self._cached_token: Optional[TokenResponse] = None
|
|
38
39
|
self._environment = environment
|
|
40
|
+
self._lock = threading.Lock()
|
|
39
41
|
|
|
40
42
|
def authenticate_request(self, request: RequestOptions) -> None:
|
|
41
43
|
"""Authenticate the request with an access token."""
|
|
42
44
|
if self._cached_token is None:
|
|
43
|
-
|
|
45
|
+
with self._lock:
|
|
46
|
+
if self._cached_token is None:
|
|
47
|
+
self._cached_token = self.get_app_only_access_token()
|
|
44
48
|
request.set_header("Authorization", self._cached_token.authorization_header)
|
|
45
49
|
|
|
46
50
|
def get_app_only_access_token(self) -> TokenResponse:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import threading
|
|
1
2
|
from datetime import datetime, timedelta, timezone
|
|
2
3
|
from typing import Callable, Dict, Optional, Union
|
|
3
4
|
|
|
@@ -23,6 +24,7 @@ class CookieAuthProvider(AuthenticationProvider):
|
|
|
23
24
|
self._ttl_seconds = ttl_seconds
|
|
24
25
|
self._cached_auth_cookies: Optional[AuthCookies] = None
|
|
25
26
|
self._acquired_at: Optional[datetime] = None
|
|
27
|
+
self._lock = threading.Lock()
|
|
26
28
|
|
|
27
29
|
def refresh(self) -> None:
|
|
28
30
|
"""Clears the cached cookies so that the next request reacquires them."""
|
|
@@ -60,9 +62,11 @@ class CookieAuthProvider(AuthenticationProvider):
|
|
|
60
62
|
def _ensure_cookies_cached(self) -> None:
|
|
61
63
|
now_utc = datetime.now(timezone.utc)
|
|
62
64
|
if self._is_expired(now_utc):
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
with self._lock:
|
|
66
|
+
if self._is_expired(now_utc):
|
|
67
|
+
cookies = self._acquire_from_source()
|
|
68
|
+
self._cached_auth_cookies = cookies
|
|
69
|
+
self._acquired_at = now_utc
|
|
66
70
|
|
|
67
71
|
def authenticate_request(self, request) -> None:
|
|
68
72
|
"""Sets the Cookie header using cached or freshly acquired cookies."""
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
import threading
|
|
2
3
|
import uuid
|
|
3
4
|
from datetime import datetime, timezone
|
|
4
5
|
from typing import Dict, Optional
|
|
@@ -60,6 +61,7 @@ class SamlTokenProvider(AuthenticationProvider, office365.logger.LoggerContext):
|
|
|
60
61
|
self.error = ""
|
|
61
62
|
self._credential = credential
|
|
62
63
|
self._cached_auth_cookies: Optional[AuthCookies] = None
|
|
64
|
+
self._lock = threading.Lock()
|
|
63
65
|
self.__ns_prefixes = {
|
|
64
66
|
"S": "{http://www.w3.org/2003/05/soap-envelope}",
|
|
65
67
|
"s": "{http://www.w3.org/2003/05/soap-envelope}",
|
|
@@ -84,8 +86,10 @@ class SamlTokenProvider(AuthenticationProvider, office365.logger.LoggerContext):
|
|
|
84
86
|
|
|
85
87
|
request_time = datetime.now(timezone.utc)
|
|
86
88
|
if self._cached_auth_cookies is None or request_time >= self._sts_profile.expires:
|
|
87
|
-
self.
|
|
88
|
-
|
|
89
|
+
with self._lock:
|
|
90
|
+
if self._cached_auth_cookies is None or request_time >= self._sts_profile.expires:
|
|
91
|
+
self._sts_profile.reset()
|
|
92
|
+
self._cached_auth_cookies = self.get_authentication_cookie()
|
|
89
93
|
logger.debug_secrets(self._cached_auth_cookies) # type: ignore[reportAttributeAccessIssue]
|
|
90
94
|
request.set_header("Cookie", self._cached_auth_cookies.cookie_header)
|
|
91
95
|
|