Office365-REST-Python-Client 2.4.2__py3-none-any.whl → 2.4.4__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_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/METADATA +65 -31
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/RECORD +401 -259
- office365/base_item.py +27 -5
- office365/booking/business.py +7 -0
- office365/booking/currency.py +5 -0
- office365/booking/solutions_root.py +32 -0
- office365/communications/calls/invitation_participant_info.py +17 -1
- office365/communications/calls/options.py +9 -0
- office365/communications/onlinemeetings/provider_type.py +3 -0
- office365/communications/presences/presence.py +14 -0
- office365/communications/presences/status_message.py +12 -0
- office365/directory/administrative_unit.py +22 -0
- office365/directory/applications/collection.py +2 -1
- office365/directory/applications/roles/assignment.py +45 -5
- office365/directory/applications/roles/assignment_collection.py +8 -0
- office365/directory/applications/roles/role.py +6 -1
- office365/directory/audit/signins/activity.py +31 -0
- office365/directory/audit/signins/location.py +17 -0
- office365/directory/audit/signins/signin.py +33 -0
- office365/directory/authentication/authentication.py +9 -0
- office365/directory/authentication/methods/details.py +25 -0
- office365/directory/authentication/methods/email.py +16 -0
- office365/directory/authentication/methods/root.py +27 -0
- office365/directory/certificates/authority.py +6 -1
- office365/directory/extensions/extended_property.py +8 -1
- office365/directory/extensions/extension.py +1 -1
- office365/directory/extensions/extension_property.py +0 -3
- office365/directory/extensions/open_type.py +8 -0
- office365/directory/groups/collection.py +2 -4
- office365/directory/groups/group.py +18 -4
- office365/directory/identities/governance.py +2 -0
- office365/directory/identities/object_identity.py +3 -3
- office365/directory/insights/resource_reference.py +15 -0
- office365/directory/insights/shared.py +36 -0
- office365/directory/insights/sharing_detail.py +11 -0
- office365/directory/insights/trending.py +8 -0
- office365/directory/insights/usage_details.py +16 -0
- office365/directory/insights/used.py +30 -0
- office365/directory/invitations/invitation.py +33 -1
- office365/directory/licenses/assigned_plan.py +19 -1
- office365/directory/licenses/assignment_state.py +5 -0
- office365/directory/licenses/service_plan_info.py +4 -0
- office365/directory/licenses/subscribed_sku.py +41 -0
- office365/directory/licenses/units_detail.py +11 -0
- office365/directory/object.py +3 -1
- office365/directory/object_collection.py +3 -4
- office365/directory/password_credential.py +5 -1
- office365/directory/permissions/email_identity.py +5 -0
- office365/directory/permissions/grants/condition_set.py +26 -0
- office365/directory/permissions/grants/resource_specific.py +21 -0
- office365/directory/policies/authentication_flows.py +9 -0
- office365/directory/policies/authentication_strength.py +10 -0
- office365/directory/policies/authorization.py +8 -0
- office365/directory/policies/cross_tenant_access.py +5 -0
- office365/directory/policies/root.py +35 -2
- office365/directory/protection/information.py +5 -0
- office365/directory/protection/risk_detection.py +11 -0
- office365/directory/protection/riskyusers/activity.py +5 -0
- office365/directory/protection/riskyusers/collection.py +32 -0
- office365/directory/protection/riskyusers/history_item.py +20 -0
- office365/directory/protection/riskyusers/risky_user.py +26 -0
- office365/directory/protection/root.py +31 -0
- office365/directory/rolemanagement/application.py +35 -0
- office365/directory/{roles → rolemanagement}/management.py +8 -1
- office365/directory/{roles → rolemanagement}/role.py +14 -0
- office365/directory/{roles → rolemanagement}/template.py +8 -0
- office365/directory/rolemanagement/unified_role_assignment.py +45 -0
- office365/directory/rolemanagement/unified_role_definition.py +6 -0
- office365/directory/security/alerts/alert.py +21 -0
- office365/directory/security/alerts/history_state.py +5 -0
- office365/directory/security/attacksimulations/automation.py +21 -0
- office365/directory/security/attacksimulations/automation_run.py +5 -0
- office365/directory/security/attacksimulations/repeat_offender.py +6 -0
- office365/directory/security/attacksimulations/root.py +26 -0
- office365/directory/security/attacksimulations/simulation.py +17 -0
- office365/directory/security/cases/__init__.py +0 -0
- office365/directory/security/cases/ediscovery.py +6 -0
- office365/directory/security/cases/root.py +22 -0
- office365/directory/security/incidents/incident.py +67 -0
- office365/directory/security/security.py +10 -1
- office365/directory/serviceprincipals/service_principal.py +89 -4
- office365/directory/synchronization/__init__.py +0 -0
- office365/directory/synchronization/job.py +16 -0
- office365/directory/synchronization/progress.py +5 -0
- office365/directory/synchronization/status.py +13 -0
- office365/directory/synchronization/synchronization.py +24 -0
- office365/directory/tenant_information.py +17 -0
- office365/directory/tenant_relationship.py +21 -0
- office365/directory/users/activities/activity.py +45 -1
- office365/directory/users/collection.py +8 -0
- office365/directory/users/password_profile.py +18 -2
- office365/directory/users/user.py +254 -29
- office365/entity.py +3 -3
- office365/graph_client.py +64 -12
- office365/intune/audit/actor.py +5 -0
- office365/intune/audit/event.py +21 -24
- office365/intune/audit/event_collection.py +26 -0
- office365/intune/audit/property.py +5 -0
- office365/intune/audit/resource.py +11 -0
- office365/intune/brand.py +6 -0
- office365/intune/devices/compliance/__init__.py +0 -0
- office365/intune/devices/compliance/policy.py +6 -0
- office365/intune/devices/compliance/policy_state.py +5 -0
- office365/intune/devices/data.py +5 -0
- office365/intune/devices/detail.py +10 -0
- office365/intune/devices/enrollment/__init__.py +0 -0
- office365/intune/devices/enrollment/configuration.py +25 -0
- office365/intune/devices/enrollment/configuration_assignment.py +5 -0
- office365/intune/devices/enrollment/limit_configuration.py +5 -0
- office365/intune/devices/managed.py +44 -3
- office365/intune/devices/management/__init__.py +0 -0
- office365/intune/devices/management/management.py +69 -0
- office365/intune/devices/management/reports/__init__.py +0 -0
- office365/intune/devices/management/reports/reports.py +5 -0
- office365/intune/devices/management/settings.py +18 -0
- office365/intune/organizations/branding.py +15 -0
- office365/intune/organizations/organization.py +14 -0
- office365/intune/printing/__init__.py +0 -0
- office365/intune/printing/base.py +11 -0
- office365/intune/printing/capabilities.py +5 -0
- office365/intune/printing/connectors/__init__.py +0 -0
- office365/intune/printing/connectors/connector.py +6 -0
- office365/intune/printing/operations/__init__.py +0 -0
- office365/intune/printing/print.py +24 -0
- office365/intune/printing/printer.py +6 -0
- office365/intune/printing/services/__init__.py +0 -0
- office365/intune/printing/services/endpoint.py +5 -0
- office365/intune/printing/services/service.py +17 -0
- office365/intune/printing/share.py +5 -0
- office365/intune/printing/shares/__init__.py +0 -0
- office365/intune/printing/taskdefinitions/__init__.py +0 -0
- office365/intune/provisioned_plan.py +5 -1
- office365/intune/servicecommunications/__init__.py +0 -0
- office365/intune/servicecommunications/announcement.py +39 -0
- office365/intune/servicecommunications/announcement_base.py +5 -0
- office365/intune/servicecommunications/health/__init__.py +0 -0
- office365/intune/servicecommunications/health/health.py +7 -0
- office365/intune/servicecommunications/issues/__init__.py +0 -0
- office365/intune/servicecommunications/issues/issue.py +29 -0
- office365/intune/servicecommunications/messages/__init__.py +0 -0
- office365/intune/servicecommunications/messages/update.py +10 -0
- office365/intune/termsandconditions/__init__.py +0 -0
- office365/intune/vpp_token.py +10 -0
- office365/onedrive/admin.py +16 -0
- office365/onedrive/columns/content_approval_status.py +5 -0
- office365/onedrive/columns/datetime.py +15 -0
- office365/onedrive/columns/default_value.py +4 -0
- office365/onedrive/columns/definition.py +49 -3
- office365/onedrive/columns/definition_collection.py +17 -6
- office365/onedrive/columns/lookup.py +5 -1
- office365/onedrive/columns/types.py +13 -0
- office365/onedrive/contenttypes/content_type.py +8 -0
- office365/onedrive/driveitems/audio.py +12 -1
- office365/onedrive/driveitems/driveItem.py +147 -69
- office365/onedrive/driveitems/image.py +8 -1
- office365/onedrive/driveitems/item_preview_info.py +20 -2
- office365/onedrive/driveitems/remote_item.py +19 -4
- office365/onedrive/drives/drive.py +7 -1
- office365/onedrive/drives/quota.py +18 -0
- office365/onedrive/drives/recipient.py +4 -0
- office365/onedrive/files/system_info.py +8 -6
- office365/onedrive/folders/folder.py +3 -3
- office365/onedrive/internal/paths/children.py +1 -4
- office365/onedrive/internal/paths/shared.py +7 -2
- office365/onedrive/lists/collection.py +12 -6
- office365/onedrive/lists/list.py +13 -5
- office365/onedrive/operations/long_running.py +7 -0
- office365/onedrive/operations/pending.py +13 -0
- office365/onedrive/operations/pending_content_update.py +5 -0
- office365/onedrive/permissions/collection.py +5 -6
- office365/onedrive/permissions/sharing_link.py +16 -1
- office365/onedrive/sensitivitylabels/__init__.py +0 -0
- office365/onedrive/sensitivitylabels/assignment.py +17 -0
- office365/onedrive/sensitivitylabels/assignment_method.py +4 -0
- office365/onedrive/sensitivitylabels/extract_result.py +13 -0
- office365/onedrive/sharepoint_settings.py +25 -0
- office365/onedrive/sites/sites_with_root.py +11 -1
- office365/onedrive/termstore/groups/collection.py +1 -1
- office365/onedrive/termstore/groups/group.py +1 -0
- office365/onedrive/termstore/sets/collection.py +1 -1
- office365/onenote/operations/operation.py +10 -1
- office365/onenote/resources/resource.py +1 -0
- office365/outlook/calendar/calendar.py +116 -6
- office365/outlook/calendar/dateTimeTimeZone.py +4 -0
- office365/outlook/calendar/email_address.py +7 -0
- office365/outlook/calendar/events/event.py +0 -4
- office365/outlook/calendar/events/reminder.py +22 -3
- office365/outlook/calendar/group.py +0 -2
- office365/outlook/calendar/location_constraint.py +16 -1
- office365/outlook/calendar/meetingtimes/activity_domain.py +10 -0
- office365/outlook/calendar/meetingtimes/suggestion.py +1 -1
- office365/outlook/calendar/meetingtimes/time_constraint.py +18 -0
- office365/outlook/calendar/permissions/__init__.py +0 -0
- office365/outlook/calendar/permissions/collection.py +24 -0
- office365/outlook/calendar/{permission.py → permissions/permission.py} +35 -2
- office365/outlook/calendar/place.py +7 -0
- office365/outlook/calendar/role_type.py +17 -0
- office365/outlook/calendar/schedule/information.py +5 -4
- office365/outlook/calendar/schedule/item.py +20 -1
- office365/outlook/calendar/sharing_message.py +2 -2
- office365/outlook/calendar/time_zone_base.py +3 -0
- office365/outlook/calendar/working_hours.py +17 -1
- office365/outlook/contacts/collection.py +39 -0
- office365/outlook/contacts/contact.py +21 -11
- office365/outlook/geo_coordinates.py +20 -0
- office365/outlook/item.py +5 -4
- office365/outlook/locale_info.py +3 -0
- office365/outlook/mail/automatic_replies_setting.py +14 -0
- office365/outlook/mail/folders/folder.py +52 -3
- office365/outlook/mail/folders/search.py +11 -0
- office365/outlook/mail/importance.py +1 -0
- office365/outlook/mail/item_body.py +3 -0
- office365/outlook/mail/location.py +27 -2
- office365/outlook/mail/location_constraint_item.py +5 -0
- office365/outlook/mail/mailbox_settings.py +13 -1
- office365/outlook/mail/messages/collection.py +7 -0
- office365/outlook/mail/messages/followup_flag.py +21 -0
- office365/outlook/mail/messages/internet_header.py +16 -0
- office365/outlook/mail/messages/message.py +184 -6
- office365/outlook/mail/messages/rules/__init__.py +0 -0
- office365/outlook/mail/messages/rules/actions.py +38 -0
- office365/outlook/mail/messages/rules/predicates.py +5 -0
- office365/outlook/mail/messages/rules/rule.py +32 -0
- office365/outlook/mail/patterned_recurrence.py +14 -1
- office365/outlook/mail/physical_address.py +5 -1
- office365/outlook/mail/recipient.py +3 -0
- office365/outlook/mail/recurrence_pattern.py +18 -1
- office365/outlook/mail/recurrence_range.py +16 -2
- office365/outlook/timezone_information.py +3 -0
- office365/reports/root.py +28 -1
- office365/reports/security/__init__.py +0 -0
- office365/reports/security/root.py +21 -0
- office365/reports/userregistration/__init__.py +0 -0
- office365/reports/userregistration/method_count.py +17 -0
- office365/reports/userregistration/method_summary.py +21 -0
- office365/runtime/auth/authentication_context.py +123 -25
- office365/runtime/auth/client_credential.py +2 -2
- office365/runtime/auth/providers/acs_token_provider.py +6 -3
- office365/runtime/auth/providers/saml_token_provider.py +10 -7
- office365/runtime/auth/token_response.py +3 -3
- office365/runtime/client_object_collection.py +12 -7
- office365/runtime/client_result.py +9 -0
- office365/runtime/client_runtime_context.py +10 -8
- office365/runtime/http/request_options.py +2 -1
- office365/runtime/odata/request.py +4 -4
- office365/runtime/paths/appid.py +2 -1
- office365/runtime/paths/entity.py +2 -2
- office365/{sharepoint/internal/paths/entity.py → runtime/paths/key.py} +5 -3
- office365/runtime/paths/resource_path.py +3 -0
- office365/runtime/types/event_handler.py +6 -0
- office365/search/external/__init__.py +0 -0
- office365/search/external/configuration.py +8 -0
- office365/search/external/connection.py +27 -0
- office365/{external → search/external}/external.py +1 -1
- office365/search/external/search_settings.py +5 -0
- office365/search/query.py +3 -1
- office365/search/request.py +3 -1
- office365/search/sharepoint_onedrive_options.py +3 -0
- office365/search/sort_property.py +9 -0
- office365/sharepoint/activities/client_request.py +4 -1
- office365/sharepoint/activities/logger.py +25 -0
- office365/sharepoint/activities/revision_info.py +9 -0
- office365/sharepoint/addtoonedrive/mount_point.py +25 -0
- office365/sharepoint/addtoonedrive/mounted_folder_info.py +5 -0
- office365/sharepoint/alerts/alert.py +31 -0
- office365/sharepoint/apps/license_collection.py +1 -2
- office365/sharepoint/changes/item.py +14 -0
- office365/sharepoint/client_context.py +91 -30
- office365/sharepoint/clientsidecomponent/component_context_info.py +7 -0
- office365/sharepoint/clientsidecomponent/identifier.py +3 -0
- office365/sharepoint/compliance/tag_info.py +17 -0
- office365/sharepoint/contenttypes/collection.py +6 -7
- office365/sharepoint/contenttypes/content_type.py +49 -1
- office365/sharepoint/contenttypes/fieldlinks/collection.py +5 -6
- office365/sharepoint/features/known_list.py +2 -0
- office365/sharepoint/fields/collection.py +70 -39
- office365/sharepoint/fields/computed.py +5 -2
- office365/sharepoint/fields/creation_information.py +5 -4
- office365/sharepoint/fields/field.py +73 -15
- office365/sharepoint/fields/user.py +3 -3
- office365/sharepoint/files/checked_out_file.py +3 -2
- office365/sharepoint/files/file.py +9 -4
- office365/sharepoint/files/versions/version.py +7 -9
- office365/sharepoint/folders/collection.py +2 -2
- office365/sharepoint/folders/coloring.py +39 -0
- office365/sharepoint/folders/coloring_information.py +15 -0
- office365/sharepoint/folders/folder.py +21 -10
- office365/sharepoint/forms/customization.py +8 -0
- office365/sharepoint/listitems/listitem.py +29 -10
- office365/sharepoint/lists/bloom_filter.py +0 -1
- office365/sharepoint/lists/creation_information.py +18 -4
- office365/sharepoint/lists/list.py +203 -27
- office365/sharepoint/lists/render_data_parameters.py +21 -1
- office365/sharepoint/lists/template_type.py +10 -0
- office365/sharepoint/navigation/configured_metadata_items.py +25 -1
- office365/sharepoint/navigation/metadata_settings.py +6 -4
- office365/sharepoint/permissions/irm/file_settings.py +43 -0
- office365/sharepoint/permissions/securable_object.py +5 -6
- office365/sharepoint/portal/sites/manager.py +5 -6
- office365/sharepoint/portal/userprofiles/documents_shared_with_group.py +3 -0
- office365/sharepoint/publishing/base_custom_property.py +8 -0
- office365/sharepoint/publishing/navigation/structural_navigation_cache_wrapper.py +8 -0
- office365/sharepoint/publishing/pagecopywithassets/__init__.py +0 -0
- office365/sharepoint/publishing/pagecopywithassets/response.py +8 -0
- office365/sharepoint/publishing/pages/campaign_publication.py +7 -0
- office365/sharepoint/publishing/pages/collection.py +1 -1
- office365/sharepoint/publishing/pages/page.py +4 -1
- office365/sharepoint/publishing/pages/reposts/metadata.py +8 -0
- office365/sharepoint/publishing/personmagazine/person_magazine.py +4 -1
- office365/sharepoint/search/administration/tenant_crawl_versions_info_provider.py +8 -1
- office365/sharepoint/search/query/auto_completion_match.py +3 -0
- office365/sharepoint/search/query/property_value.py +18 -0
- office365/sharepoint/search/request.py +16 -2
- office365/sharepoint/sharing/abilities.py +22 -0
- office365/sharepoint/sharing/direct_abilities.py +27 -0
- office365/sharepoint/sharing/link_abilities.py +9 -1
- office365/sharepoint/sharing/links/data.py +26 -1
- office365/sharepoint/sharing/links/info.py +1 -1
- office365/sharepoint/sharing/links/partial_success_response.py +5 -0
- office365/sharepoint/sharing/links/share_settings.py +24 -1
- office365/sharepoint/sharing/object_sharing_information.py +65 -2
- office365/sharepoint/sharing/object_sharing_information_user.py +9 -0
- office365/sharepoint/sharing/object_sharing_settings.py +17 -4
- office365/sharepoint/sharing/principal.py +10 -0
- office365/sharepoint/sharing/securable_object_extensions.py +1 -17
- office365/sharepoint/sharing/site_sharing_report_helper.py +2 -1
- office365/sharepoint/sharing/user_sharing_result.py +18 -8
- office365/sharepoint/sitehealth/result.py +10 -0
- office365/sharepoint/sites/language.py +11 -1
- office365/sharepoint/sites/language_collection.py +1 -0
- office365/sharepoint/sites/site.py +42 -7
- office365/sharepoint/taxonomy/create_xml_parameters.py +22 -15
- office365/sharepoint/taxonomy/field.py +10 -8
- office365/sharepoint/taxonomy/groups/collection.py +8 -1
- office365/sharepoint/taxonomy/groups/group.py +26 -0
- office365/sharepoint/taxonomy/sets/collection.py +15 -0
- office365/sharepoint/taxonomy/sets/name.py +23 -0
- office365/sharepoint/taxonomy/sets/set.py +16 -1
- office365/sharepoint/taxonomy/stores/store.py +0 -8
- office365/sharepoint/tenant/administration/audit/search_request_status.py +8 -0
- office365/sharepoint/tenant/administration/deny_add_and_customize_pages_status.py +3 -0
- office365/sharepoint/tenant/administration/hubsites/permission.py +10 -0
- office365/sharepoint/tenant/administration/sites/properties.py +12 -10
- office365/sharepoint/tenant/administration/tenant.py +2 -1
- office365/sharepoint/tenant/apps/information.py +3 -1
- office365/sharepoint/tenant/management/office365_tenant.py +14 -11
- office365/sharepoint/types/resource_path.py +3 -1
- office365/sharepoint/userprofiles/people_manager.py +0 -2
- office365/sharepoint/userprofiles/sharedwithme/document.py +16 -0
- office365/sharepoint/userprofiles/sharedwithme/document_user.py +12 -0
- office365/sharepoint/userprofiles/sharedwithme/item_collection.py +41 -0
- office365/sharepoint/userprofiles/sharedwithme/items.py +18 -1
- office365/sharepoint/viva/site_manager.py +14 -0
- office365/sharepoint/webhooks/subscription_collection.py +5 -6
- office365/sharepoint/webparts/definition.py +1 -1
- office365/sharepoint/webparts/webpart.py +18 -4
- office365/sharepoint/webs/context_web_information.py +2 -4
- office365/sharepoint/webs/web.py +31 -12
- office365/sharepoint/workflowservices/manager.py +0 -2
- office365/subscriptions/collection.py +42 -0
- office365/subscriptions/subscription.py +120 -2
- office365/teams/apps/catalog.py +23 -0
- office365/teams/associated_info.py +12 -0
- office365/teams/channels/channel.py +2 -3
- office365/teams/channels/collection.py +1 -1
- office365/teams/channels/iIdentity.py +5 -0
- office365/teams/chats/chat.py +12 -2
- office365/teams/chats/collection.py +1 -2
- office365/teams/chats/messages/__init__.py +0 -0
- office365/teams/chats/messages/info.py +14 -0
- office365/teams/chats/{message.py → messages/message.py} +18 -3
- office365/teams/info.py +20 -0
- office365/teams/members/aad_user_conversation.py +2 -2
- office365/teams/members/conversation_collection.py +3 -3
- office365/teams/schedule/change_request.py +4 -2
- office365/teams/schedule/change_tracked_entity.py +11 -2
- office365/teams/summary.py +15 -0
- office365/teams/tabs/configuration.py +12 -1
- office365/teams/tabs/tab.py +0 -1
- office365/teams/team.py +34 -1
- office365/teams/teamwork/__init__.py +0 -0
- office365/teams/teamwork/activity_topic.py +5 -0
- office365/teams/teamwork/tags/__init__.py +0 -0
- office365/teams/teamwork/tags/identity.py +6 -0
- office365/teams/teamwork/tags/member.py +5 -0
- office365/teams/teamwork/tags/tag.py +15 -0
- office365/{directory/security/cases_root.py → teams/viva/employee_experience_user.py} +1 -1
- office365/todo/attachments/session.py +34 -0
- office365/todo/linked_resource.py +10 -1
- office365/todo/tasks/task.py +4 -0
- office365/directory/identities/protection_root.py +0 -5
- office365/directory/rbac/application.py +0 -18
- office365/directory/rbac/unified_role_assignment.py +0 -8
- office365/external/connection.py +0 -5
- office365/intune/devices/management.py +0 -35
- office365/onedrive/internal/queries/download_content.py +0 -26
- office365/onedrive/internal/queries/upload_content.py +0 -23
- office365/outlook/mail/messages/message_rule.py +0 -15
- office365/runtime/auth/providers/oauth_token_provider.py +0 -25
- office365/teams/team_info.py +0 -6
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/LICENSE +0 -0
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/WHEEL +0 -0
- {Office365_REST_Python_Client-2.4.2.dist-info → Office365_REST_Python_Client-2.4.4.dist-info}/top_level.txt +0 -0
- /office365/{directory/rbac → booking}/__init__.py +0 -0
- /office365/directory/{roles → protection}/__init__.py +0 -0
- /office365/{external → directory/protection/riskyusers}/__init__.py +0 -0
- /office365/{teams/messages → directory/rolemanagement}/__init__.py +0 -0
- /office365/outlook/calendar/{time_slot.py → meetingtimes/time_slot.py} +0 -0
- /office365/teams/chats/{message_attachment.py → messages/attachment.py} +0 -0
- /office365/teams/{member_settings.py → members/settings.py} +0 -0
- /office365/teams/{user_teamwork.py → teamwork/user.py} +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from office365.directory.protection.riskyusers.risky_user import RiskyUser
|
|
2
|
+
from office365.entity_collection import EntityCollection
|
|
3
|
+
from office365.runtime.queries.service_operation import ServiceOperationQuery
|
|
4
|
+
from office365.runtime.types.collections import StringCollection
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class RiskyUserCollection(EntityCollection):
|
|
8
|
+
"""RiskyUser's collection"""
|
|
9
|
+
|
|
10
|
+
def __init__(self, context, resource_path=None):
|
|
11
|
+
super(RiskyUserCollection, self).__init__(context, RiskyUser, resource_path)
|
|
12
|
+
|
|
13
|
+
def confirm_compromised(self, user_ids=None):
|
|
14
|
+
"""Confirm one or more riskyUser objects as compromised. This action sets the targeted user's risk level
|
|
15
|
+
to high.
|
|
16
|
+
|
|
17
|
+
:param list[str] user_ids: Specify the risky user IDs to dismiss in the request body.
|
|
18
|
+
"""
|
|
19
|
+
payload = {"userIds": StringCollection(user_ids)}
|
|
20
|
+
qry = ServiceOperationQuery(self, "confirmCompromised", None, payload)
|
|
21
|
+
self.context.add_query(qry)
|
|
22
|
+
return self
|
|
23
|
+
|
|
24
|
+
def dismiss(self, user_ids=None):
|
|
25
|
+
"""Dismiss the risk of one or more riskyUser objects. This action sets the targeted user's risk level to none.
|
|
26
|
+
|
|
27
|
+
:param list[str] user_ids: Specify the risky user IDs to dismiss in the request body.
|
|
28
|
+
"""
|
|
29
|
+
payload = {"userIds": StringCollection(user_ids)}
|
|
30
|
+
qry = ServiceOperationQuery(self, "dismiss", None, payload)
|
|
31
|
+
self.context.add_query(qry)
|
|
32
|
+
return self
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from office365.directory.protection.riskyusers.activity import RiskUserActivity
|
|
2
|
+
from office365.directory.protection.riskyusers.risky_user import RiskyUser
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class RiskyUserHistoryItem(RiskyUser):
|
|
6
|
+
"""Represents the risk history of an Azure Active Directory (Azure AD) user as determined
|
|
7
|
+
by Azure AD Identity Protection."""
|
|
8
|
+
|
|
9
|
+
@property
|
|
10
|
+
def activity(self):
|
|
11
|
+
"""The activity related to user risk level change.
|
|
12
|
+
"""
|
|
13
|
+
return self.properties.get("activity", RiskUserActivity())
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def initiated_by(self):
|
|
17
|
+
"""The ID of actor that does the operation.
|
|
18
|
+
:rtype: str
|
|
19
|
+
"""
|
|
20
|
+
return self.properties.get("initiatedBy", None)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from office365.entity import Entity
|
|
2
|
+
from office365.entity_collection import EntityCollection
|
|
3
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RiskyUser(Entity):
|
|
7
|
+
"""
|
|
8
|
+
Represents Azure AD users who are at risk. Azure AD continually evaluates user risk based on various
|
|
9
|
+
signals and machine learning. This API provides programmatic access to all at-risk users in your Azure AD.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def history(self):
|
|
14
|
+
"""The activity related to user risk level change"""
|
|
15
|
+
from office365.directory.protection.riskyusers.history_item import RiskyUserHistoryItem
|
|
16
|
+
return self.properties.get('history',
|
|
17
|
+
EntityCollection(self.context, RiskyUserHistoryItem,
|
|
18
|
+
ResourcePath("history", self.resource_path)))
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def user_principal_name(self):
|
|
22
|
+
"""
|
|
23
|
+
Risky user principal name.
|
|
24
|
+
:rtype: str or None
|
|
25
|
+
"""
|
|
26
|
+
return self.properties.get('userPrincipalName', None)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from office365.directory.protection.risk_detection import RiskDetection
|
|
2
|
+
from office365.directory.protection.riskyusers.collection import RiskyUserCollection
|
|
3
|
+
from office365.entity import Entity
|
|
4
|
+
from office365.entity_collection import EntityCollection
|
|
5
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class IdentityProtectionRoot(Entity):
|
|
9
|
+
"""Container for the navigation properties for Microsoft Graph identity protection resources."""
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def risk_detections(self):
|
|
13
|
+
"""Risk detection in Azure AD Identity Protection and the associated information about the detection."""
|
|
14
|
+
return self.properties.get('riskDetections',
|
|
15
|
+
EntityCollection(self.context, RiskDetection,
|
|
16
|
+
ResourcePath("riskDetections", self.resource_path)))
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def risky_users(self):
|
|
20
|
+
"""Get the teams in Microsoft Teams that the user is a direct member of."""
|
|
21
|
+
return self.properties.get('riskyUsers',
|
|
22
|
+
RiskyUserCollection(self.context, ResourcePath("riskyUsers", self.resource_path)))
|
|
23
|
+
|
|
24
|
+
def get_property(self, name, default_value=None):
|
|
25
|
+
if default_value is None:
|
|
26
|
+
property_mapping = {
|
|
27
|
+
"riskDetections": self.risk_detections,
|
|
28
|
+
"riskyUsers": self.risky_users
|
|
29
|
+
}
|
|
30
|
+
default_value = property_mapping.get(name, None)
|
|
31
|
+
return super(IdentityProtectionRoot, self).get_property(name, default_value)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from office365.directory.rolemanagement.unified_role_assignment import UnifiedRoleAssignment
|
|
2
|
+
from office365.directory.rolemanagement.unified_role_definition import UnifiedRoleDefinition
|
|
3
|
+
from office365.entity import Entity
|
|
4
|
+
from office365.entity_collection import EntityCollection
|
|
5
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class RbacApplication(Entity):
|
|
9
|
+
"""Role management container for unified role definitions and role assignments for Microsoft 365 role-based
|
|
10
|
+
access control (RBAC) providers. The role assignments support only a single principal and a single scope.
|
|
11
|
+
Currently directory and entitlementManagement are the two RBAC providers supported."""
|
|
12
|
+
|
|
13
|
+
@property
|
|
14
|
+
def role_assignments(self):
|
|
15
|
+
"""Resource to grant access to users or groups."""
|
|
16
|
+
return self.properties.get('roleAssignments',
|
|
17
|
+
EntityCollection(self.context, UnifiedRoleAssignment,
|
|
18
|
+
ResourcePath("roleAssignments", self.resource_path)))
|
|
19
|
+
|
|
20
|
+
def role_definitions(self):
|
|
21
|
+
"""Resource representing the roles allowed by RBAC providers and the permissions assigned to the roles."""
|
|
22
|
+
return self.properties.get('roleDefinitions',
|
|
23
|
+
EntityCollection(self.context, UnifiedRoleDefinition,
|
|
24
|
+
ResourcePath("roleDefinitions", self.resource_path)))
|
|
25
|
+
|
|
26
|
+
def get_property(self, name, default_value=None):
|
|
27
|
+
if default_value is None:
|
|
28
|
+
property_mapping = {
|
|
29
|
+
"roleAssignments": self.role_assignments,
|
|
30
|
+
"roleDefinitions": self.role_definitions
|
|
31
|
+
}
|
|
32
|
+
default_value = property_mapping.get(name, None)
|
|
33
|
+
return super(RbacApplication, self).get_property(name, default_value)
|
|
34
|
+
|
|
35
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from office365.directory.
|
|
1
|
+
from office365.directory.rolemanagement.application import RbacApplication
|
|
2
2
|
from office365.entity import Entity
|
|
3
3
|
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
4
|
|
|
@@ -15,3 +15,10 @@ class RoleManagement(Entity):
|
|
|
15
15
|
def directory(self):
|
|
16
16
|
return self.properties.get('directory',
|
|
17
17
|
RbacApplication(self.context, ResourcePath("directory", self.resource_path)))
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def entitlement_management(self):
|
|
21
|
+
"""Container for roles and assignments for entitlement management resources."""
|
|
22
|
+
return self.properties.get('entitlementManagement',
|
|
23
|
+
RbacApplication(self.context,
|
|
24
|
+
ResourcePath("entitlementManagement", self.resource_path)))
|
|
@@ -5,6 +5,20 @@ from office365.runtime.paths.resource_path import ResourcePath
|
|
|
5
5
|
class DirectoryRole(DirectoryObject):
|
|
6
6
|
"""Represents an Azure AD directory role. Azure AD directory roles are also known as administrator roles """
|
|
7
7
|
|
|
8
|
+
@property
|
|
9
|
+
def description(self):
|
|
10
|
+
"""The description for the directory role.
|
|
11
|
+
:rtype: str or None
|
|
12
|
+
"""
|
|
13
|
+
return self.properties.get("Description", None)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def display_name(self):
|
|
17
|
+
"""The display name for the directory role.
|
|
18
|
+
:rtype: str or None
|
|
19
|
+
"""
|
|
20
|
+
return self.properties.get("displayName", None)
|
|
21
|
+
|
|
8
22
|
@property
|
|
9
23
|
def members(self):
|
|
10
24
|
"""
|
|
@@ -4,3 +4,11 @@ from office365.directory.object import DirectoryObject
|
|
|
4
4
|
class DirectoryRoleTemplate(DirectoryObject):
|
|
5
5
|
"""Represents a directory role template. A directory role template specifies the property values of a directory
|
|
6
6
|
role (directoryRole). """
|
|
7
|
+
|
|
8
|
+
@property
|
|
9
|
+
def display_name(self):
|
|
10
|
+
"""
|
|
11
|
+
The display name to set for the directory role
|
|
12
|
+
:rtype: str
|
|
13
|
+
"""
|
|
14
|
+
return self.properties.get("displayName", None)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from office365.directory.rolemanagement.unified_role_definition import UnifiedRoleDefinition
|
|
2
|
+
from office365.entity import Entity
|
|
3
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class UnifiedRoleAssignment(Entity):
|
|
7
|
+
"""
|
|
8
|
+
A role assignment is used to grant access to resources. It represents a role definition assigned to a principal
|
|
9
|
+
(for example, a user or a role-assignable group) at a particular scope.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def app_scope_id(self):
|
|
14
|
+
"""
|
|
15
|
+
Identifier of the app-specific scope when the assignment scope is app-specific. Either this property or
|
|
16
|
+
directoryScopeId is required. App scopes are scopes that are defined and understood by this application only.
|
|
17
|
+
Use / for tenant-wide app scopes. Use directoryScopeId to limit the scope to particular directory objects,
|
|
18
|
+
for example, administrative units. Supports $filter (eq, in).
|
|
19
|
+
:rtype: str
|
|
20
|
+
"""
|
|
21
|
+
return self.properties.get("appScopeId", None)
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def condition(self):
|
|
25
|
+
"""
|
|
26
|
+
:rtype: str
|
|
27
|
+
"""
|
|
28
|
+
return self.properties.get("condition", None)
|
|
29
|
+
|
|
30
|
+
@property
|
|
31
|
+
def role_definition(self):
|
|
32
|
+
"""
|
|
33
|
+
The roleDefinition the assignment is for. Supports $expand. roleDefinition.Id will be auto expanded.
|
|
34
|
+
"""
|
|
35
|
+
return self.properties.get('roleDefinition',
|
|
36
|
+
UnifiedRoleDefinition(self.context,
|
|
37
|
+
ResourcePath("roleDefinition", self.resource_path)))
|
|
38
|
+
|
|
39
|
+
def get_property(self, name, default_value=None):
|
|
40
|
+
if default_value is None:
|
|
41
|
+
property_mapping = {
|
|
42
|
+
"roleDefinition": self.role_definition,
|
|
43
|
+
}
|
|
44
|
+
default_value = property_mapping.get(name, None)
|
|
45
|
+
return super(UnifiedRoleAssignment, self).get_property(name, default_value)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from office365.entity import Entity
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class UnifiedRoleDefinition(Entity):
|
|
5
|
+
"""A role definition is a collection of permissions in Azure Active Directory (Azure AD) listing the operations
|
|
6
|
+
that can be performed and the resources against which they can performed."""
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from office365.directory.security.alerts.evidence import AlertEvidence
|
|
2
|
+
from office365.directory.security.alerts.history_state import AlertHistoryState
|
|
2
3
|
from office365.entity import Entity
|
|
3
4
|
from office365.runtime.client_value_collection import ClientValueCollection
|
|
4
5
|
|
|
@@ -8,7 +9,27 @@ class Alert(Entity):
|
|
|
8
9
|
representing potential security issues within a customer's tenant that Microsoft 365 Defender,
|
|
9
10
|
or a security provider integrated with Microsoft 365 Defender, has identified."""
|
|
10
11
|
|
|
12
|
+
@property
|
|
13
|
+
def actor_display_name(self):
|
|
14
|
+
"""
|
|
15
|
+
The adversary or activity group that is associated with this alert.
|
|
16
|
+
:rtype: str
|
|
17
|
+
"""
|
|
18
|
+
return self.properties.get("actorDisplayName", None)
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def alert_policy_id(self):
|
|
22
|
+
"""
|
|
23
|
+
:rtype: str
|
|
24
|
+
"""
|
|
25
|
+
return self.properties.get("alertPolicyId", None)
|
|
26
|
+
|
|
11
27
|
@property
|
|
12
28
|
def evidence(self):
|
|
13
29
|
"""Collection of evidence related to the alert."""
|
|
14
30
|
return self.properties.get("evidence", ClientValueCollection(AlertEvidence))
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def history_states(self):
|
|
34
|
+
"""Collection of changes for the alert."""
|
|
35
|
+
return self.properties.get("historyStates", ClientValueCollection(AlertHistoryState))
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from office365.directory.permissions.email_identity import EmailIdentity
|
|
2
|
+
from office365.directory.security.attacksimulations.automation_run import SimulationAutomationRun
|
|
3
|
+
from office365.entity import Entity
|
|
4
|
+
from office365.entity_collection import EntityCollection
|
|
5
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SimulationAutomation(Entity):
|
|
9
|
+
"""Represents simulation automation created to run on a tenant."""
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def created_by(self):
|
|
13
|
+
"""Identity of the user who created the attack simulation automation."""
|
|
14
|
+
return self.properties.get('createdBy', EmailIdentity())
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def runs(self):
|
|
18
|
+
"""A collection of simulation automation runs."""
|
|
19
|
+
return self.properties.get('runs',
|
|
20
|
+
EntityCollection(self.context, SimulationAutomationRun,
|
|
21
|
+
ResourcePath("runs", self.resource_path)))
|
|
@@ -1,6 +1,32 @@
|
|
|
1
|
+
from office365.directory.security.attacksimulations.automation import SimulationAutomation
|
|
2
|
+
from office365.directory.security.attacksimulations.simulation import Simulation
|
|
1
3
|
from office365.entity import Entity
|
|
4
|
+
from office365.entity_collection import EntityCollection
|
|
5
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
2
6
|
|
|
3
7
|
|
|
4
8
|
class AttackSimulationRoot(Entity):
|
|
5
9
|
"""Represents an abstract type that provides the ability to launch a realistic phishing attack that organizations
|
|
6
10
|
can learn from."""
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def simulations(self):
|
|
14
|
+
"""Represents an attack simulation training campaign in a tenant."""
|
|
15
|
+
return self.properties.get('simulations',
|
|
16
|
+
EntityCollection(self.context, Simulation,
|
|
17
|
+
ResourcePath("simulations", self.resource_path)))
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def simulation_automations(self):
|
|
21
|
+
"""Represents simulation automation created to run on a tenant."""
|
|
22
|
+
return self.properties.get('simulationAutomations',
|
|
23
|
+
EntityCollection(self.context, SimulationAutomation,
|
|
24
|
+
ResourcePath("simulationAutomations", self.resource_path)))
|
|
25
|
+
|
|
26
|
+
def get_property(self, name, default_value=None):
|
|
27
|
+
if default_value is None:
|
|
28
|
+
property_mapping = {
|
|
29
|
+
"simulationAutomations": self.simulation_automations,
|
|
30
|
+
}
|
|
31
|
+
default_value = property_mapping.get(name, None)
|
|
32
|
+
return super(AttackSimulationRoot, self).get_property(name, default_value)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from office365.entity import Entity
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Simulation(Entity):
|
|
5
|
+
"""
|
|
6
|
+
Represents an attack simulation training campaign in a tenant.
|
|
7
|
+
|
|
8
|
+
Attack simulation and training is a service available as part of Microsoft Defender for Office 365.
|
|
9
|
+
This service lets tenant users experience a realistic benign phishing attack and learn from it.
|
|
10
|
+
The service enables tenant administrators to simulate, assign trainings, and read derived insights into online
|
|
11
|
+
behaviors of users in the phishing simulations. The service provides attack simulation reports that help tenants
|
|
12
|
+
identify security knowledge gaps, so that they can further train their users to decrease their susceptibility
|
|
13
|
+
to attacks.
|
|
14
|
+
|
|
15
|
+
The attack simulation and training API enables tenant administrators to list launched simulation exercises
|
|
16
|
+
and trainings, and get reports on derived insights into online behaviors of users in the phishing simulations.
|
|
17
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from office365.directory.security.cases.ediscovery import EdiscoveryCase
|
|
2
|
+
from office365.entity import Entity
|
|
3
|
+
from office365.entity_collection import EntityCollection
|
|
4
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CasesRoot(Entity):
|
|
8
|
+
""""""
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def ediscovery_cases(self):
|
|
12
|
+
return self.properties.get('ediscoveryCases',
|
|
13
|
+
EntityCollection(self.context, EdiscoveryCase,
|
|
14
|
+
ResourcePath("ediscoveryCases", self.resource_path)))
|
|
15
|
+
|
|
16
|
+
def get_property(self, name, default_value=None):
|
|
17
|
+
if default_value is None:
|
|
18
|
+
property_mapping = {
|
|
19
|
+
"ediscoveryCases": self.ediscovery_cases
|
|
20
|
+
}
|
|
21
|
+
default_value = property_mapping.get(name, None)
|
|
22
|
+
return super(CasesRoot, self).get_property(name, default_value)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
|
|
3
|
+
from office365.directory.security.alerts.alert import Alert
|
|
4
|
+
from office365.directory.security.alerts.comment import AlertComment
|
|
5
|
+
from office365.entity import Entity
|
|
6
|
+
from office365.entity_collection import EntityCollection
|
|
7
|
+
from office365.runtime.client_value_collection import ClientValueCollection
|
|
8
|
+
from office365.runtime.paths.resource_path import ResourcePath
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Incident(Entity):
|
|
12
|
+
"""
|
|
13
|
+
An incident in Microsoft 365 Defender is a collection of correlated alert instances and associated metadata
|
|
14
|
+
that reflects the story of an attack in a tenant.
|
|
15
|
+
|
|
16
|
+
Microsoft 365 services and apps create alerts when they detect a suspicious or malicious event or activity.
|
|
17
|
+
Individual alerts provide valuable clues about a completed or ongoing attack. However, attacks typically employ
|
|
18
|
+
various techniques against different types of entities, such as devices, users, and mailboxes. The result is
|
|
19
|
+
multiple alerts for multiple entities in your tenant. Because piecing the individual alerts together to gain
|
|
20
|
+
insight into an attack can be challenging and time-consuming, Microsoft 365 Defender automatically aggregates the
|
|
21
|
+
alerts and their associated information into an incident.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def assigned_to(self):
|
|
26
|
+
"""
|
|
27
|
+
Owner of the incident, or null if no owner is assigned. Free editable text.
|
|
28
|
+
:rtype: str or None
|
|
29
|
+
"""
|
|
30
|
+
return self.properties.get("assignedTo", None)
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def classification(self):
|
|
34
|
+
"""
|
|
35
|
+
The specification for the incident.
|
|
36
|
+
Possible values are: unknown, falsePositive, truePositive, informationalExpectedActivity, unknownFutureValue.
|
|
37
|
+
:rtype: str or None
|
|
38
|
+
"""
|
|
39
|
+
return self.properties.get("classification", None)
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def comments(self):
|
|
43
|
+
"""
|
|
44
|
+
Array of comments created by the Security Operations (SecOps) team when the incident is managed.
|
|
45
|
+
"""
|
|
46
|
+
return self.properties.get("comments", ClientValueCollection(AlertComment))
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def created_datetime(self):
|
|
50
|
+
"""
|
|
51
|
+
Time when the incident was first created.
|
|
52
|
+
"""
|
|
53
|
+
return self.properties("createdDateTime", datetime.min)
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def alerts(self):
|
|
57
|
+
"""The list of related alerts. Supports $expand."""
|
|
58
|
+
return self.properties.get('alerts',
|
|
59
|
+
EntityCollection(self.context, Alert, ResourcePath("alerts", self.resource_path)))
|
|
60
|
+
|
|
61
|
+
def get_property(self, name, default_value=None):
|
|
62
|
+
if default_value is None:
|
|
63
|
+
property_mapping = {
|
|
64
|
+
"createdDateTime": self.created_datetime
|
|
65
|
+
}
|
|
66
|
+
default_value = property_mapping.get(name, None)
|
|
67
|
+
return super(Incident, self).get_property(name, default_value)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from office365.directory.security.alerts.alert import Alert
|
|
2
2
|
from office365.directory.security.attacksimulations.root import AttackSimulationRoot
|
|
3
|
-
from office365.directory.security.
|
|
3
|
+
from office365.directory.security.cases.root import CasesRoot
|
|
4
|
+
from office365.directory.security.incidents.incident import Incident
|
|
4
5
|
from office365.directory.security.triggers.root import TriggersRoot
|
|
5
6
|
from office365.entity import Entity
|
|
6
7
|
from office365.entity_collection import EntityCollection
|
|
@@ -37,6 +38,14 @@ class Security(Entity):
|
|
|
37
38
|
AttackSimulationRoot(self.context,
|
|
38
39
|
ResourcePath("attackSimulation", self.resource_path)))
|
|
39
40
|
|
|
41
|
+
@property
|
|
42
|
+
def incidents(self):
|
|
43
|
+
"""A collection of correlated alert instances and associated metadata that reflects the story of
|
|
44
|
+
an attack in a tenant"""
|
|
45
|
+
return self.properties.get('incidents',
|
|
46
|
+
EntityCollection(self.context, Incident,
|
|
47
|
+
ResourcePath("incidents", self.resource_path)))
|
|
48
|
+
|
|
40
49
|
@property
|
|
41
50
|
def triggers(self):
|
|
42
51
|
return self.properties.get('triggers',
|